我在我的AWS账户中为一个IAM用户设置了以下访问策略。该策略引用了桶名称,即 "xo-staging"。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccessToGetBucketLocation",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AccessToWebsiteBuckets",
"Effect": "Allow",
"Action": [
"s3:PutBucketWebsite",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::xo-staging",
"arn:aws:s3:::xo-staging/*"
]
},
{
"Sid": "AccessToCloudfront",
"Effect": "Allow",
"Action": [
"cloudfront:GetInvalidation",
"cloudfront:CreateInvalidation"
],
"Resource": "*"
}
]
}
我将一个Gatsby应用程序从本地机器部署到Github,使用Github Actions运行构建和部署脚本。
在我的package.json文件中,我将"deploy"设置为gatsby-plugin-s3 deploy --yes; export AWS_PAGER=\"\"; aws cloudfront create-invalidation --distribution-id E5FDMTLPHUTLTL --paths '/*';
,在我的workflows.yml文件中,我将"deploy"设置为npm run deploy
。
在Github上,我的构建成功了,但是我的部署失败了。我得到的错误提示是"AccessControlListNotSupported: The bucket does not allow ACLs"。
我检查了AWS中实际的Bucket权限并尝试选择不同的选项,但总是返回相同的错误消息。换句话说,我尝试删除所有公共访问和ACL的阻止,但问题仍然存在。
请问有人能够建议我需要更改什么内容才能使这个完整的部署工作吗?