Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用代码构建时的S3策略_Amazon Web Services_Amazon S3_Aws Codebuild - Fatal编程技术网

Amazon web services 使用代码构建时的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

首先,我为我的英语感到抱歉。我正在使用CodeBuild开发一个CodePipeline,以将React应用程序部署到S3。在测试环境中可以,但当我在登台环境中部署它时,我遇到了拒绝访问错误:

调用PutObject操作时发生错误(AccessDenied):拒绝访问

这是因为在暂存环境中,S3存储桶已经有了一些策略。事情是这样的:

{
    "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策略中存在
明确拒绝
,因此,No
Allow
将起作用。您是如何获得
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