尝试使用 aws cli 和带有句点的存储桶时出错

尝试使用 aws cli 和带有句点的存储桶时出错

我正在使用 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

我找不到任何关于指定区域标识符时什么会起作用(或不起作用)的明确帮助,所以这个答案完全是经验性的,可能并非在所有情况下都有帮助。

相关内容