2017-07-04 10 views
2

Swisscom AppCloudのS3ソリューションを使用するDjango Webサービスがあります。これまでのところ問題はありませんでしたが、アプリケーションで何も変更せずにファイルをアップロードしようとしたときにエラーConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))が発生しました。我々はboto3 1.4.4を使用しています。Swisscom Appcloud S3接続がリセットされました

編集:

エラーがsomwhere 10〜30代の後occures。私は自分のローカル開発マシンから試してみるとうまくいきます。

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 

これはバージョンの問題なのでしょうか?

編集:s3cmd 製いくつかのテスト:私はすべてのオブジェクトを一覧表示するか、単に私が後Retrying failed request:/([Errno 54] Connection reset by peer)

+0

アップロードしようとしているファイルのサイズは? – dentemm

+0

@dentemmファイル<1Mbで試しました。サーバー上では、ファイルサイズを10Mbに制限しています。 – chrigu

答えて

1

を取得するバケット内のオブジェクトをリストのような他のすべてのコマンドにはなくへのアクセスを持っているバケットを一覧表示することができますいくつかの調査で私はエラーが見つかりました:

スイスコムのS3の実装は何とかAmazonの最新のものではありません。この問題を解決するには、を1.5.78から1.5.62にダウングレードしなければなりませんでした。

+1

現時点では、EMC Atmosのhttps://en.wikipedia.org/wiki/EMC_Atmosを提供しています。このストレージボックスは、残念ながらAmazon S3とあまり互換性がありません。開発者はかなり多くの否定的なフィードバックを与えました。私たちは現在、S3標準に準拠したEMC ECS統合https://en.wikipedia.org/wiki/EMC_Elastic_Cloud_Storageに取り組んでいます。だから数ヶ月待つと、改善が見えます。 S3は業界標準ですが、RFCでは開かれておらず、また文書化されていません。ストレージベンダーはAmazon S3実装をリバースエンジニアリングする必要があります。 Amazon S3は高速性に優れています。 –

関連する問題