2017-07-04 4 views
2

Nous disposons d'un service Web Django utilisant la solution S3 de Swisscom AppCloud. Jusqu'à présent, nous n'avons eu aucun problème, mais sans rien changer sur l'application, nous éprouvons des erreurs ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer')) lorsque nous essayons de télécharger des fichiers. Nous utilisons boto3 1.4.4.Swisscom Appcloud S3 Connexion réinitialisée par l'homologue

Edit:

L'erreur a lieu après somwhere entre 10 et 30 ans. Quand j'essaye de ma machine de développement locale cela fonctionne.

from django.conf import settings 
from boto3 import session 
from botocore.exceptions import ClientError 

class S3Client(object): 

    def __init__(self): 
     s3_session = session.Session() 

     self.s3_client = s3_session.client(
      service_name='s3', 
      aws_access_key_id=settings.AWS_ACCESS_KEY, 
      aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, 
      endpoint_url=settings.S3_ENDPOINT, 
     ) 

    . 
    . 
    . 

    def add_file(self, bucket, fileobj, file_name): 
     self.s3_client.upload_fileobj(fileobj, bucket, file_name) 

     url = self.s3_client.generate_presigned_url(
      ClientMethod='get_object', 
      Params={ 
       'Bucket': bucket, 
       'Key': file_name 
      }, 
      ExpiresIn=60*24*356*10 # signed for 10 years. Should be enough.. 
     ) 

     url, signature = self._split_signed_url(url) 

     return url, signature, file_name 

Cela pourrait-il être un problème de version ou quoi que ce soit d'autre de notre côté?

Edit: a fait quelques essais avec s3cmd: Je peux énumérer les seaux que j'ai accès mais pour toutes les autres commandes comme la liste de tous les objets ou une simple liste des objets dans un seau, je reçois un Retrying failed request:/([Errno 54] Connection reset by peer)

+0

Quelle est la taille des fichiers que vous essayez de télécharger? – dentemm

+0

@dentemm J'ai essayé avec des fichiers <1Mb. Sur le serveur, nous limitons la taille du fichier à 10Mb. – chrigu

Répondre

1

Après une enquête j'ai trouvé l'erreur:

La mise en œuvre de S3 par Swisscom n'est pas à jour avec Amazon. Pour résoudre le problème, j'ai dû rétrograder botocore de 1.5.78 à 1.5.62.

+1

En ce moment nous offrons EMC Atmos https://en.wikipedia.org/wiki/EMC_Atmos. Cette boîte de stockage n'est malheureusement pas très compatible avec Amazon S3. Les développeurs ont donné beaucoup de commentaires négatifs. Nous travaillons actuellement sur une intégration EMC ECS https://en.wikipedia.org/wiki/EMC_Elastic_Cloud_Storage qui est plus conforme à la norme S3. Alors attendez quelques mois et vous verrez des améliorations. S3 est et standard de l'industrie, mais pas ouvert ou documenté dans un RFC. Les fournisseurs de stockage ont besoin de désosser l'implémentation Amazon S3. Amazon S3 envole à haute vitesse. –