Swisscom Appcloud S3 连接由对等方重置
Swisscom Appcloud S3 Connection reset by peer
我们有一个使用 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)
经过一番调查,我发现了错误:
Swisscom 的 S3 实施在某种程度上与 Amazon 的实施不同步。为了解决这个问题,我不得不将 botocore
从 1.5.78
降级到 1.5.62
。
我们有一个使用 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)
经过一番调查,我发现了错误:
Swisscom 的 S3 实施在某种程度上与 Amazon 的实施不同步。为了解决这个问题,我不得不将 botocore
从 1.5.78
降级到 1.5.62
。