如何解决在DownloadBundle阶段的代码部署中拒绝访问的问题

时间:2019-01-24 08:37:28

标签: aws-code-deploy

随附的屏幕截图是错误。没有任何标准错误消息可供我进行故障排除。我已经设置了对S3的必要EC2 IAM访问。那么可能是什么问题?

[1] [2]

我还添加了IAM的用户要求,所以我不确定什么地方不对

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::codepipeline-ap-southeast-1-617020163322/*",
                "arn:aws:s3:::aws-codedeploy-us-east-2/*",
                "arn:aws:s3:::aws-codedeploy-us-east-1/*",
                "arn:aws:s3:::aws-codedeploy-us-west-1/*",
                "arn:aws:s3:::aws-codedeploy-us-west-2/*",
                "arn:aws:s3:::aws-codedeploy-ca-central-1/*",
                "arn:aws:s3:::aws-codedeploy-eu-west-1/*",
                "arn:aws:s3:::aws-codedeploy-eu-west-2/*",
                "arn:aws:s3:::aws-codedeploy-eu-west-3/*",
                "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
                "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
                "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
                "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",
                "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
                "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
                "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
            ]
        }
    ]
}

4 个答案:

答案 0 :(得分:5)

发生相同的问题,并通过查找目标实例IAM角色(在“实例描述”选项卡下)和附加的S3访问策略来解决。

答案 1 :(得分:1)

与DownloadBundle生命周期事件相关的错误是:

  1. 存储桶与管道位于不同的区域(我可以 不是从您的屏幕截图中看到的。)
  2. 因为附加到您的EC2实例的IAM instance profile没有访问该应用程序的权限 S3中进行修订。

存储包的存储桶是“ arn:aws:s3 ::: codepipeline-ap-southeast-1-617020163322”吗?此文件夹是由CodePipeline创建的吗?

如果是,我的建议是使用与CodePipeline使用的存储桶不同的存储桶。尤其是因为您将需要拥有bucket policy才能为实例授予下载应用程序修订版所需的权限。

答案 2 :(得分:0)

我遇到了同样的问题,并且能够解决。我忘记在我的EC2承担角色中向KMS添加权限。我的S3工件存储桶使用KMS加密,因此,由于CodePipeline使用KMS,它将向S3存储桶抛出ACCESS DENIED。该错误虽然不够友好,无法告诉用户实际的问题是什么。

答案 3 :(得分:0)

今天我刚遇到这个问题时,只需添加更多可能的解决方案即可。

我的问题是使用了一个自定义工件存储桶(又名不是CodePipeline创建的存储桶),该存储桶应具有版本控制(已暂停),并且我的EC2配置文件具有以下权限:

          "Effect": 
           "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetEncryptionConfiguration",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": "*"

在我的CodeDeploy框的EC2策略中添加s3:GetObjectVersion可以解决此问题。

关闭版本控制功能后,这非常令人困惑。

tldr;如有疑问,请授予版本控制权限。