Aco*_*ike 0 amazon-s3 amazon-web-services amazon-cloudfront aws-codebuild
在 CodeBuild 中,我有 2 个项目。一个用于暂存站点,另一个用于生产站点。当我编译我的网站并通过临时项目运行它时,它工作得很好。它已成功同步到我的暂存站点的 s3 存储桶。但是,当尝试编译它并通过生产项目运行它时,运行同步命令时,它会返回错误:
致命错误:调用 ListObjects 操作时发生错误 (AccessDenied):访问被拒绝
[容器] 2018/09/11 08:40:33 命令未成功退出 aws s3sync public/ s3://$S3_BUCKET 退出状态 1
我做了一些挖掘,我认为问题出在我的存储桶策略上。我使用 CloudFront 作为 S3 存储桶之上的 CDN。我不想修改生产存储桶的存储桶策略,除非我完全确定必须这样做。我担心这可能会对现场产生一些影响。这是我的生产存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket_name]/*"
},
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity [access_code]"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket_name]/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
根据错误描述,缺少列表权限。
在您的存储桶策略中添加以下权限:
"Action": [
"s3:Get*",
"s3:List*"
]
Run Code Online (Sandbox Code Playgroud)
这应该可以解决你的问题。另请检查IAM
创建的用于codebuild
访问S3
存储桶的服务角色。在这种设置中,存储桶策略和角色都控制对存储桶的S3
访问IAM
。S3
您的服务角色应该具有 的列表权限S3
。
{
"Sid": "S3ObjectPolicy",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:List*"
],
"Resource": ["arn:aws:s3:::my_bucket",
"arn:aws:s3:::my_bucket/*"]
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3348 次 |
最近记录: |