【问题标题】:Unable to create access key for AWS S3 data transfer无法为 AWS S3 数据传输创建访问密钥
【发布时间】:2020-08-20 16:51:28
【问题描述】:

我最近开始使用 AWS S3 存储桶并遇到一些问题,因为我想使用 Boto I Python 将文件从 S3 存储桶传输到另一台服务器。

当我尝试为 API 创建访问密钥和秘密密钥时,访问时出现错误,我没有创建访问密钥的权限。

我正在尝试更改政策,如下所示,但出现错误:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::s3-sample/*"
        },
        {
            "Sid": "ViewAndUpdateAccessKeys",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "iam:UpdateAccessKey",
                "iam:CreateAccessKey",
                "iam:ListAccessKeys"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
        
    ]
}

这会导致以下错误:

Policy has invalid action

有人能指出如何正确设置策略,以便能够创建 API 访问密钥以及将文件传输到另一台服务器吗?

谢谢。

【问题讨论】:

  • 当您说“我尝试为 API 创建访问密钥和密钥”时,您是如何做到的?您是否在 IAM 管理控制台中创建了 IAM 用户?
  • John..我正在尝试为自己创建它,以便可以将数据移动到另一台服务器。我尝试使用 My Security Credentials --> Create Key 创建密钥,但看到一条消息说我没有权限,需要请求管理员创建一个
  • 在这种情况下,您无法创建访问密钥。您需要请公司中的某个人(例如 AWS 管理员)为您做这件事。如果你不能通过控制台来做,你就不能通过 Boto3 来做。

标签: amazon-web-services amazon-s3


【解决方案1】:

IAM identity-Based Policies 没有原则。当您将策略附加到 IAM 用户、角色或组时,将自动推导出它们的原则。

但是,在我看来,您正在创建bucket policies,它具有原则。但是,存储桶策略不适用于iam:* 权限。这可以解释你的错误。

因此,我认为您应该将存储桶策略保留在其原始状态:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::s3-sample/*"
        }        
    ]
}

并创建IAM customer managed policy,您可以将其附加到需要它的 IAM 用户:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ViewAndUpdateAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:UpdateAccessKey",
                "iam:CreateAccessKey",
                "iam:ListAccessKeys"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}

【讨论】:

  • 谢谢 Marcin...当您说将其附加给需要它的 IAM 用户时...我应该怎么做?我是为自己申请的
  • @Ravi 您可以在 IAM 控制台中执行此操作。只需转到您正在使用的 IAM 用户,就会有添加策略的选项。
猜你喜欢
  • 2017-12-29
  • 2020-12-19
  • 1970-01-01
  • 2016-10-19
  • 2019-04-22
  • 2018-01-31
  • 2020-10-02
  • 1970-01-01
  • 2016-01-16
相关资源
最近更新 更多