【问题标题】:CreateMultipartUpload operation - AWS policy items needed?CreateMultipartUpload 操作 - 需要 AWS 策略项目?
【发布时间】:2019-04-06 00:00:03
【问题描述】:

我正在通过 aws cli 控制台进行分段上传,但出现此错误;

A client error (AccessDenied) occurred when calling the CreateMultipartUpload operation: Access Denied

以下是我的政策,我是否遗漏了什么?

谢谢。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::mybucket"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:CreateMultipartUpload",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": "arn:aws:s3:::mybucket/*"
        }
    ]
}

【问题讨论】:

  • 你能给出你用来上传到 s3 的完整命令吗?

标签: amazon-web-services amazon-s3


【解决方案1】:

“s3:PutObject”处理 CreateMultipartUpload 操作,所以我猜没有像“s3:CreateMultipartUpload”这样的东西。

您必须在 s3 存储桶 ARN 中更改的内容是 还添加“资源”:“arn:aws:s3:::mybucket”

最终政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::mybucket"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                         "arn:aws:s3:::mybucket",
                         "arn:aws:s3:::mybucket/*"
                        ]
        }
    ]
}

【讨论】:

  • 您在最后一个区块中使用了两次"Resource" 键。最后两行。不确定应该是哪一个。
  • 两者都需要。一个是它自己的桶,一个是降压中的对象(结尾 /*)。资源喊是一个数组[],两者都在。
  • 使用资源数组,如"Resource":["arn1","arn2"]
【解决方案2】:

如果是跨账户访问,请检查它是否与此处提到的 ACL 标头无关:https://stackoverflow.com/a/34055538/1736679(此问题线程中的更多信息:https://github.com/aws/aws-cli/issues/1674

还要仔细检查您正在运行的环境/用户,以查看 /etc/environment 或 ~/.aws/credentials 中是否没有覆盖密钥(AWS_ACCESS_KEY 等)

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 2018-05-22
    • 2019-11-16
    • 2020-12-26
    • 2016-11-08
    • 2021-12-15
    • 2013-11-15
    • 2016-07-25
    • 2022-08-17
    相关资源
    最近更新 更多