AWS S3 File Sync因Github Action而失败,但在本地运行良好

时间:2020-11-09 18:50:55

标签: amazon-web-services docker amazon-s3 aws-cli github-actions

我正在尝试使用此Github操作(https://github.com/jakejarvis/s3-sync-action)运行aws cli s3 sync命令将静态网站的文件推送到S3存储桶。

我设置了存储桶策略,以允许sync命令使用所需的操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadAccess",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Sid": "GithubDeploymentA",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::163936899089:user/my-deploy-user"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::my-bucket"
        },
        {
            "Sid": "GithubDeploymentB",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::163936899089:user/my-deploy-user"
            },
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket*"
        }
    ]
}

现在,当我使用“ my-deploy-user”凭据在本地运行同步命令时,该同步命令将起作用。如果我在本地运行Github Action的docker映像,它甚至可以工作,因此我已验证脚本可以工作,用户设置正确并且存储桶策略设置正确。但是,当从Github Action运行时,该脚本将失败,并使用s3 sync命令,并且PutObject操作上的访问被拒绝:

upload failed: build/favicon.ico to s3://my-bucket/favicon.ico An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

这是我第一次真正使用AWS,所以也许我错过了明显的东西,但到目前为止找不到任何可以搜索的东西。由于Github Action使用的脚本凭据与在本地运行时相同,并且我没有为权限设置任何与IP相关的条件,所以我不确定接下来要看什么。

有什么想法吗?

0 个答案:

没有答案