我正在使用 aws cli ( aws-cli/1.3.23 Python/2.7.5 Darwin/13.2.0
) 访问我的 s3 存储桶,如果存储桶名称中包含句点,则会失败并出现以下错误。
$ aws s3 ls s3://my.bucket
HTTPSConnectionPool(host='s3-us-east-1a.amazonaws.com', port=443): Max retries exceeded with url: /my.bucket?delimiter=/&prefix= (Caused by <class 'socket.gaierror'>: [Errno 8] nodename nor servname provided, or not known)
如果存储桶没有句点,则一切都正常:
$ aws s3 ls s3://mybucket
根据 aws 文档,时间没问题,我可以通过网站毫无问题地访问存储桶。
答案1
今天遇到了同样的问题。解决方案是指定您的区域。
不起作用的是:
aws s3 sync --acl public-read dist/ s3://some.bucket.name/
现在有效的是:
aws s3 --region us-east-1 sync --acl public-read dist/ s3://some.bucket.name/
编辑:如果所有存储桶都存在于同一区域,请转到命令行(在 OSX 中):
aws configure
如果您尚未提供 AWS 密钥,请提供。问题 3 应该是默认区域。在我的情况下,我输入的是:
us-east-1
现在我不再需要指定区域,除非存储桶位于我的默认区域之外。
答案2
...我的帐户也遇到了类似的问题。
我发现(通过反复试验)当我使用错误的区域标识符时,我会得到 Errno 8。
以下是有效的方法:
- 美国西部-2
以下是不起作用的内容:
- 美国西部
- 美国西部-2a
我找不到任何关于指定区域标识符时什么会起作用(或不起作用)的明确帮助,所以这个答案完全是经验性的,可能并非在所有情况下都有帮助。