【问题标题】:Codepipeline: Insufficient permissions Unable to access the artifact with Amazon S3 object keyCodepipeline:权限不足无法使用 Amazon S3 对象密钥访问工件
【发布时间】:2018-08-03 23:03:32
【问题描述】:

您好,我创建了一个具有以下配置的代码管道项目:

  • 从 Bitbucket 中提取的 S3 中的源代码。
  • 使用 CodeBuild 构建,生成 docker 映像并将其存储到 Amazon ECS 存储库中。
  • 部署提供商 Amazon ECS。

在尝试部署之前,所有过程都可以正常工作,由于某种原因,我在部署期间收到以下错误:

权限不足 无法使用 Amazon S3 访问工件 对象键“FailedScanSubscriber/MyAppBuild/Wmu5kFy”位于 Amazon S3 工件存储桶“codepipeline-us-west-2-913731893217”。这 提供的角色没有足够的权限。

在构建阶段,它甚至可以在 ECS 存储库中创建一个新的 docker 镜像。

我尝试了一切,更改了 IAM 角色和策略,添加了对 S3 的完全访问权限,我什至将 S3 存储桶设置为公开,但没有任何效果。我没有选择,如果有人可以帮助我,那就太好了,我对 AWS 的体验很差,所以任何帮助都值得赞赏。

【问题讨论】:

    标签: amazon-web-services docker amazon-s3 amazon-ecs aws-codepipeline


    【解决方案1】:

    我找到了解决方案。真正的问题是,当部署提供商设置为 Amazon ECS 时,我们需要生成一个输出工件,指示任务定义的名称和图像 uri,例如:

    post_build:
        commands:
          - printf '[{"name":"your.task.definition.name","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json
    
    artifacts:
        files: imagedefinitions.json
    

    【讨论】:

    • 这是一个非常令人困惑的错误消息,但根本问题正是这个,谢谢!
    • 这确实是解决办法,但在我的情况下,name 应该是容器的名称。
    • 可以在here找到图像定义文件的文档,并且可以找到教程here.
    【解决方案2】:

    当 AWS CodeDeploy 无法从 AWS CodeBuild 找到构建工件时会发生这种情况。如果您进入 S3 存储桶并检查路径,您实际上会发现工件对象不存在!

    即使错误说明了权限问题。这可能是由于缺少工件对象而发生的。

    解决方案:正确配置 buildspec.yml 中的 artifacts 部分,并正确配置 AWS Codepipeline 阶段,指定输入和输出工件名称。

    artifacts:
      files:
        - '**/*'
      base-directory: base_dir
      name: build-artifact-name
      discard-paths: no
    

    参考这篇文章-https://medium.com/@shanikae/insufficient-permissions-unable-to-access-the-artifact-with-amazon-s3-247f27e6cdc3

    【讨论】:

    • 谢谢...这正是问题所在。
    【解决方案3】:

    对我来说,问题在于我的 CodeBuild 步骤是使用默认 AWS 托管 S3 密钥加密工件。

    我的部署步骤使用跨账户角色,因此无法检索工件。将 Codebuild 加密密钥更改为我的 CMK 后,我的部署步骤就成功了。

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2012-03-05
      • 1970-01-01
      相关资源
      最近更新 更多