Swisscom Appcloud S3连接由同行重置

时间:2017-07-04 14:16:55

标签: django python-2.7 amazon-s3 boto3 swisscomdev

我们有一个使用Swisscom AppCloud S3解决方案的Django Web服务。到目前为止,我们没有遇到任何问题,但是在我们尝试上传文件时,如果没有更改应用程序的任何内容,我们会遇到ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))错误。我们正在使用boto3 1.4.4

编辑:

在10到30秒之间发生错误。当我尝试从我的本地开发机器上运行时。

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)

1 个答案:

答案 0 :(得分:1)

经过一番调查后,我发现了错误:

Swisscom对S3的实施在某种程度上与亚马逊并不是最新的。要解决此问题,我必须将botocore1.5.78降级为1.5.62