maven - 在 CodeBuild maven 作业上使用适当的 ECS 凭据

标签 maven aws-codebuild

我正在尝试在我的 mvn 命令中使用 CodeBuild 服务角色,但它似乎没有获得适当的 IAM 权限。我正在使用 s3-wagon-private plugin它似乎确实使用了包含 EC2ContainerCredentialsProviderWrapper 的最新版本的 DefaultAWSCredentialsProviderChain,因此我认为它应该在 CodeBuild 容器上使用 CodeBuild 角色。该角色对我尝试使用 s3-wagon-private 访问的 S3 存储库具有适当的权限。

但看起来如果不使用 Clojure 项目和 project.cloj,那么默认情况下它不会使用 DefaultAWSCredentialsProviderChain。我看过Spring AWS MavenMaven S3 Wagon但两者都在添加 ECS 凭证(AWS SDK ~1.11.14)之前使用 DefaultAWSCredentialsProviderChain 版本,并且没有看到太多更新,所以我们不能过于自信我们可以获得 SDK版本更新/测试/发布。

有谁知道使用 S3 作为最新版本的 DefaultCredentialProviderChain 的 Maven 存储库的简单方法?

最佳答案

我的解决方法是将 settings.xml 文件放入仅限我的 CodeBuild 角色使用的 S3 存储桶中。然后在我的 buildspec.yaml 文件中,添加以下内容:

phases:
  build:
    commands:
      - aws s3 cp s3://MY_SECURE_BUCKET/settings.xml ~/.m2/settings.xml
      - ls -lhr ~/.m2/settings.xml
      - mvn -s ~/.m2/settings.xml package

CodeBuild 用户可以毫无问题地从具有容器 IAM 角色的 S3 获取 settings.xml 文件,并且 settings.xml 包含一个 AWS key / secret ,供只能访问 S3 maven 存储库的用户使用:

    <server>
        <id>s3repo</id>
        <username>MYKEY</username>
        <password>MYSECRET</password>
    </server>

然后我使用 maven-s3-wagon plugin并声明 <repository><id>s3repo</id>我的 Maven 依赖项解决得很好。

此解决方案涉及构建中的一个额外步骤,创建一个额外的 maven-repo-only IAM 用户(尽管您可能已经有一个),并在 S3 中存储一个额外的文件;但它工作正常并且看起来很安全。但是,如果有人能想出一种使用容器的 IAM 凭据从 S3 maven 存储库中提取数据的方法,请发布另一个解决方案。

关于maven - 在 CodeBuild maven 作业上使用适当的 ECS 凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42794486/

相关文章:

terraform - 具有多个源和构建操作的 AWS Codepipeline

java - 在 Kotlin 中开发的 Android 库模块在 Java 应用程序中引用,获取 : Lkotlin/jvm/internal/Intrinsics exception

javascript - Angular2 的 TypeScript 到 JavaScript 转译器

amazon-web-services - Fn::ImportValue 未扩展

amazon-web-services - "start a build under these conditions"的 AWS CodeBuild CloudFormation YAML Webhook 事件

amazon-web-services - 将 codebuild 操作中创建的环境传递给 codepipeline 中的下游操作

java - 由 : org. apache.camel.NoTypeConversionAvailableException 引起:没有可用于从类型 POJO 转换为 byte[] 的类型转换器

java - Maven 构建配置文件激活

java - 即使安装了 m2e,Maven 也没有出现在 Eclipse (Kepler) 中

amazon-web-services - AWS 代码构建 | docker |无法拉取客户的容器镜像 |基于 Windows 版本 10.0.17763 的镜像与 10.0.14393 主机不兼容