首页 > 解决方案 > 如何使用 Maven 和 Nexus 从 CodeBuild 正确访问 AWS Secrets Manager

问题描述

对于 buildspec.yml(通用)

version: 0.2

env:
  secrets-manager:
    User: CodeBuild/Auth:User_Name
    Password: CodeBuild/Auth:Password

  pre_build:
    commands:
      - echo ${User}
      - echo ${Password}

  post_build:
    commands:
      - mvn clean deploy -Dnexus.user=$User -Dnexus.password=$Password

echo 命令给了我 *** ,它被屏蔽了,所以我认为到目前为止我还不错。此外,我正在为 AWS Secrets manager 使用 DefaultEncryptionKey。

在 Maven 的 settings.xml 中,我拥有 <username>${nexus.user}</username><password>${nexus.password}</password>

但是当 mvn 命令运行时,它会返回 401 授权错误...我将 AdministratorAccess 添加到 CodeBuild 角色以防万一,同样的 401 错误。

如果我以明文形式声明变量,则 mvn 命令有效。我只是错过了一件事,但我找不到任何关于如何解决这个问题的文档。任何帮助将不胜感激。

更新:我将所有内容都切换到参数存储,并且只需进行最小的调整即可。我想知道我在设置 secrets-manager 时做错了什么,但我成功地解决了这个问题。我会把它留在这里,以防其他人为此而苦苦挣扎。

标签: amazon-web-servicesmavennexusaws-code-deployaws-secrets-manager

解决方案


您用于从秘密管理器中指定秘密的格式看起来有点不对劲。这是文档:https ://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax 。

秘密被引用为: key: secret-id:json-key:version-stage:version-id


推荐阅读