boto3是否支持与S3

时间:2017-09-29 22:47:29

标签: python python-2.7 boto3

我们有一个通过VPC端点连接到Amazon S3的Python客户端。我们的代码使用boto,我们可以从S3连接和下载。

从boto迁移到boto3后,我们注意到VPC端点连接不再有效。下面是一个可以重现问题的副本片段。

python -c "import boto3;s3 = boto3.resource('s3',aws_access_key_id='foo',aws_secret_access_key='bar');s3.Bucket('some-bucket').download_file('hello-remote.txt', 'hello-local.txt')"

得到以下错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Python27\lib\site-packages\boto3-1.4.0-py2.7.egg\boto3\s3\inject.py",
line 163, in bucket_download_file
    ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
  File "C:\Python27\lib\site-packages\boto3-1.4.0-py2.7.egg\boto3\s3\inject.py",
line 125, in download_file
    extra_args=ExtraArgs, callback=Callback)
  File "C:\Python27\lib\site-packages\boto3-1.4.0-py2.7.egg\boto3\s3\transfer.py
", line 269, in download_file
    future.result()
  File "build\bdist.win32\egg\s3transfer\futures.py", line 73, in result
  File "build\bdist.win32\egg\s3transfer\futures.py", line 233, in result
botocore.vendored.requests.exceptions.ConnectionError: ('Connection aborted.', e
rror(10060, 'A connection attempt failed because the connected party did not pro
perly respond after a period of time, or established connection failed because c
onnected host has failed to respond'))

有没有人知道boto3是否支持通过VPC端点与S3的连接和/或是否能够使其工作?我们正在使用boto3-1.4.0。

2 个答案:

答案 0 :(得分:1)

这很可能是您的VPC端点策略中的配置错误。如果您的策略正确,那么Boto3永远不会确切知道它如何到达S3位置,这实际上取决于策略是允许/禁止这种类型的流量。

以下是您可以进行故障排除的快速操作指南:https://aws.amazon.com/premiumsupport/knowledge-center/connect-s3-vpc-endpoint/

其他相关文档:

答案 1 :(得分:0)

这取决于您定义的AWS策略和角色。 使代码运行的最快捷方法是将S3存储桶设为公开[不推荐] 否则,将您的IP添加到安全策略中,然后重新运行代码。 可以在这里找到它的详细信息。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html

使用IP白名单来保护您的AWS Transfer for SFTP服务器 https://aws.amazon.com/blogs/storage/use-ip-whitelisting-to-secure-your-aws-transfer-for-sftp-servers/