首页 > 解决方案 > 部署到时 S3 PutObject 访问被拒绝

问题描述

我想创建一个 IAM 用户,其唯一工作是部署到 AWS S3 静态网站。

我有这个政策给我的 DeployUser:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::www.<my-site-name>.com"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutBucketAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::www.<my-site-name>.com/*"
        }
    ]
}

这是我的存储桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::www.<my-site-name>.com/*"
        }
    ]
}

这是我部署时遇到的问题(我为此使用 Github Actions):

upload failed: public/404.html to s3://www.<my-site-name>.com/404.html An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

在 Github 中,我将用户的访问密钥和密码传递给了我的 Action。我很确定它正在使用该用户进行交易。当我提供 S3FullAccess 时,我的用户能够做到这一点。但我想用它只需要的 AWS 操作创建一个用户。

在哪里可以查看有关此 IAM 用户操作的更好日志?

标签: amazon-web-servicesamazon-s3amazon-iam

解决方案


根据评论,解决方案是PutObjectDeployUser.


推荐阅读