我正在尝试使用此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相关的条件,所以我不确定接下来要看什么。
有什么想法吗?