【问题标题】:AWS CodePipeline permission error on Release change action发布更改操作上的 AWS CodePipeline 权限错误
【发布时间】:2019-07-13 17:26:57
【问题描述】:
我最近在 AWS codePipeline 控制台的发布更改操作中开始收到以下错误。还附上截图
动作执行失败
权限不足 提供的角色没有权限
执行此操作。潜在错误:拒绝访问(服务:
亚马逊 S3;状态码:403;错误代码:拒绝访问;请求编号:
CA26EF93E3DAF8F0; S3 扩展请求 ID:
mKkobqLGbj4uco8h9wDOBjPeWrRA2ybCrEsVoSq/MA4IFZqJb6QJSrlNrKk/EQK40TfLbTbqFuQ=)
我在任何地方都找不到此错误代码的任何在线资源。
【问题讨论】:
标签:
amazon-web-services
aws-codepipeline
【解决方案1】:
您的管道正在尝试访问 S3 存储桶,但 AWS CodePipeline ServiceRole 无权访问它。创建一个 IAM 策略以提供对 S3 的访问并将其附加到 CodePipeline 服务角色。
【解决方案2】:
正如@Jeevagan 所说,您必须创建一个新的 IAM 策略来授予对管道存储桶的访问权限。
不要忘记添加以下操作:
Action:
- "s3:GetObject"
- "s3:List*"
- "s3:GetObjectVersion"
特别是因为这个,我损失了几分钟:GetObjectVersion
通过检查您的 codedeploy-output,您将能够看到该进程正在使用参数“versionId”下载您的工件的特定版本。
希望它会有所帮助。
【解决方案3】:
在引用 S3 的此错误背后伪装的另一个潜在罪魁祸首是缺少对 CodePipeline 的 IAM 角色的 KMS 权限。如果您将 CodePipeline 配置为使用 KMS 加密,则与 CodePipeline 使用/关联的服务角色也需要对该 KMS 密钥的 KMS 权限,以便与 S3 中的 KMS 加密对象进行交互。根据我的经验,缺少 KMS 权限会导致出现引用 S3 的相同错误消息。