【问题标题】:Trying to access a s3 bucket using boto3, but getting 403尝试使用 boto3 访问 s3 存储桶,但得到 403
【发布时间】:2017-05-29 12:40:29
【问题描述】:

我编写了一个 python 脚本来从 s3 存储桶中下载一些文件。该脚本在一台机器上运行良好,但在另一台机器上中断。 这是我得到的异常:botocore.exceptions.ClientError: An error occurred (403) when calling HeadObject operation: Forbidden.

我很确定它与某些系统配置有关,或者与注册表有关,但不知道具体是什么。两台机器都运行 Windows 7 和 python 3.5。 有什么建议。

【问题讨论】:

  • 您是否正确设置了 was 凭据?
  • 检查每个实例启动时选择的角色。它将定义实例上的应用程序可用的权限。此外,检查是否已在其中一台计算机的配置文件中本地提供凭据。
  • @JohnRotenstein 凭据在脚本中是硬编码的。角色应该无关紧要,因为这些文件无论如何都是公开的。
  • 为什么这个问题被否决了?
  • 这个问题可能被否决了,因为它不是严格与编程相关的。如果人们有兴趣为这些类型的问题创建一个场所,请帮助支持dedicated Cloud Computing site on StackExchange 的提案。

标签: python windows amazon-web-services amazon-s3 boto3


【解决方案1】:

这个问题实际上是由系统时间不正确引起的。我修复了系统时间,问题就解决了。

【讨论】:

  • 天哪,这正是我的问题!你是怎么想出来的?
  • 这里也一样,我只是执行sudo -S timedatectl set-ntp true,一切正常
【解决方案2】:

所以禁止意味着您无权执行该操作。检查您是否有权在该特定存储桶上执行读取,并且您是否提供了有效的 IAM 密钥。以下是获取对存储桶的读取和列表访问权限的示例策略。

{
 "Version":"2012-10-17",
 "Statement":[
  {
     "Sid":"statement1",

     "Effect":"Allow",
     "Action":[
        "s3:List*",
        "s3:GetObject"
     ],
     "Resource":[
        "arn:aws:s3:::bucketname/*"
     ]
   }
]
}

更多信息在这里:

【讨论】:

  • Resource 部分中的“/*”部分对于访问存储桶中的任何对象都是必不可少的。我花了很多时间解决没有路径的问题“arn:aws:s3:::bucketname”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2017-02-07
  • 2016-11-01
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
相关资源
最近更新 更多