【发布时间】:2020-05-09 01:04:46
【问题描述】:
更新:
不确定这是什么时候发生的,但正如现在描述的那样。
以及在 Pipeline 构建操作中直接设置密钥的选项。
原问题:
我在 AWS CodePipeline 的构建阶段为 secret-id 设置了一个环境变量。例如。 $SECRET_ID.
我想在 CodeBuild buildspec.yml 中使用它来根据我的环境从 Secrets Manager 中获取一组密钥。是否可以在 buildspec 文件中自引用其他变量?
这是我预期它会起作用的方式,但事实并非如此。
version: 0.2
env:
secrets-manager:
MY_SECRET: ${SECRET_ID}
phases:
build:
commands:
- echo $MY_SECRET
我在构建日志中收到以下错误。
Secrets Manager Error Message: ValidationException: Invalid name. Must be a valid name containing alphanumeric characters, or any of the following: -/_+=.@!
【问题讨论】:
-
这应该是可能的,因为 MY_SECRET 毕竟是一个环境变量。运行构建阶段是否会将预期的秘密放入容器中?
-
@sash 糟糕,应该添加了构建日志错误。感谢更新。
-
从错误看来 ${SECRET_ID} 无效。你能在你的 ${SECRET_ID} 上做一个 echo @hyperdrive 并检查它是否符合
secret-id:json-key:version-stage:version-id的格式,如文档docs.aws.amazon.com/codebuild/latest/userguide/… 中所述。 -
是的,如果我删除 secrets-manager,$SECRET_ID 或 ${SECRET_ID} 是正确的值。如果我对 id 进行硬编码,我确实会得到秘密值。我感觉 secrets-manager 的 codebuild 实现不支持这样做。
-
${SECRET_ID} 应该采用这种格式
secret-id:json-key,假设你有demo秘密管理器和key秘密和content,那么你需要使用demo:key和它将返回 JSON 格式。参考docs.aws.amazon.com/codebuild/latest/userguide/…
标签: amazon-web-services aws-codepipeline aws-secrets-manager