amazon-web-services - 如何使用 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 时做错了什么,但我成功地解决了这个问题。我会把它留在这里,以防其他人为此而苦苦挣扎。
解决方案
您用于从秘密管理器中指定秘密的格式看起来有点不对劲。这是文档: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