Amazon web services 使用代码构建时的S3策略
首先,我为我的英语感到抱歉。我正在使用CodeBuild开发一个CodePipeline,以将React应用程序部署到S3。在测试环境中可以,但当我在登台环境中部署它时,我遇到了拒绝访问错误: 调用PutObject操作时发生错误(AccessDenied):拒绝访问 这是因为在暂存环境中,S3存储桶已经有了一些策略。事情是这样的:Amazon web services 使用代码构建时的S3策略,amazon-web-services,amazon-s3,aws-codebuild,Amazon Web Services,Amazon S3,Aws Codebuild,首先,我为我的英语感到抱歉。我正在使用CodeBuild开发一个CodePipeline,以将React应用程序部署到S3。在测试环境中可以,但当我在登台环境中部署它时,我遇到了拒绝访问错误: 调用PutObject操作时发生错误(AccessDenied):拒绝访问 这是因为在暂存环境中,S3存储桶已经有了一些策略。事情是这样的: { "Version": "2008-10-17", "Id": "Polic
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront ABC"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3staging/*"
},
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::s3staging/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"11.11.1.11/11" *VPN Address
.... Another Ip range (s)
]
}
}
}
]
}
我知道它只允许从CloudFront请求和从VPN地址部署。但现在我需要从CodeBuild部署它。因此,在不修改现有策略的情况下,我尝试通过在aws:SourceIp中添加来自我所在区域13.112.191.184/29的CodeBuild的IP来修复它,希望它能够允许CodeBuild在S3上删除和创建文件。遗憾的是,它不起作用
我尝试了很多方法,比如允许CodeBuild的serviceRole的ARN,但它也不起作用
{
"Sid": "Stmt1599214911530",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::s3test-resopa-pwa/*",
"Principal": {
"AWS": [
"arn:aws:iam::123456:role/service-role/AWSCodePipelineServiceRole-ap-northeast-1-staging"
]
}
}
有经验的人能帮我解决这个问题吗。如果能给我一些建议,我真的很感激。非常感谢。修复了它
"Condition": {
"ArnNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::codebuild-role"
},
"NotIpAddress": {
"aws:SourceIp": [
"153.156.28.29/32",
... Others IP Range
对于非源自
11.11.1.11/11
的所有请求,由于您的bucket策略中存在明确拒绝,因此,NoAllow
将起作用。您是如何获得13.112.191.184/29
范围的?@Marcin AWS在这里公布了他们服务的IP地址,男士:如果您将IP范围添加到bucket策略中,那么您还需要一个allow。额外政策中有AWSCodePipelineServiceRole-ap-northeast-1-noe-denki-admin-stg
角色。这是CP角色,请注意基于其名称的CB角色。您需要允许CB角色。“你试过了吗?”“谢谢你的支持,先生。”。!非常感谢:D@Marcin添加额外的策略不起作用。我通过在以下条件下添加这些行来修复它:“ArnNotEquals”:{“aws:PrincipalArn”:“arn:aws:iam::codebuild role”}由于缺乏知识,我花了几乎一天的时间。。。再次谢谢你的建议,先生:D