如何在 AWS CodeBuild 规范文件中为“parameter-store”使用动态密钥?
How to use dynamic key for `parameter-store` in AWS CodeBuild spec file?
我的 CodeBuild 中有一个 buildspec.yml 文件,我想从 EC2 Systems Manager Parameter Store 中读取值。 CodeBuild 支持通过规范文件中的 parameter-store
属性执行此操作。
问题是,我不知道如何使用在执行 buidlspec 之前设置的环境变量。
这是一个例子:
version: 0.2
env:
variables:
RUNTIME: "nodejs8.10"
#parameter-store vars are in the format /[stage]/[repo]/[branch]/[eyecatcher]/key
parameter-store: #see https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax
LAMBDA_EXECUTION_ROLE_ARN: "/${STAGE}/deep-link/${BRANCH}/GetUri/lambdaExecutionRoleArn"
ENV_SAMPLE_KEY: "/${STAGE}/deep-link/${BRANCH}/GetUri/key1"
phases:
install:
commands:
...
如您所见,我正在执行 AWS 最佳实践以对 EC2 Systems Manager Parameter Store 密钥进行命名空间。我想在所有阶段重复使用此构建规范,因此硬编码不是一种选择。我在 Value
字符串中使用的变量在我的 CodeBuild 项目中填充为 EnvironmentVariables
- 因此它们在规范运行之前可用。
如何使用非硬编码的内容动态填充参数存储 Keys
的 Value
?
我找到了 this Whosebug post - 很遗憾,您描述的功能似乎不存在。
如果能够使用类似于 CloudFormation 模板中的功能的参数和函数,那就太好了。
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
它没有明确说明,但我猜你可以在你用来构建解析字符串的任何 cloudformation 模板中使用 !Sub,并在 ParameterOverride 中使用它以传递到常规参数块中的构建规范而不是参数存储块
参数存储用例的 CodeBuild 现在支持此变量扩展。您可以在构建规范中定义任何环境变量,并在获取参数存储的路径中引用该变量。
version: 0.2
env:
variables:
stage: PRE_PROD
parameter-store:
encryptedVar: CodeBuild-$stage
phases:
build:
commands:
- echo $encryptedVar
我的 CodeBuild 中有一个 buildspec.yml 文件,我想从 EC2 Systems Manager Parameter Store 中读取值。 CodeBuild 支持通过规范文件中的 parameter-store
属性执行此操作。
问题是,我不知道如何使用在执行 buidlspec 之前设置的环境变量。
这是一个例子:
version: 0.2
env:
variables:
RUNTIME: "nodejs8.10"
#parameter-store vars are in the format /[stage]/[repo]/[branch]/[eyecatcher]/key
parameter-store: #see https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax
LAMBDA_EXECUTION_ROLE_ARN: "/${STAGE}/deep-link/${BRANCH}/GetUri/lambdaExecutionRoleArn"
ENV_SAMPLE_KEY: "/${STAGE}/deep-link/${BRANCH}/GetUri/key1"
phases:
install:
commands:
...
如您所见,我正在执行 AWS 最佳实践以对 EC2 Systems Manager Parameter Store 密钥进行命名空间。我想在所有阶段重复使用此构建规范,因此硬编码不是一种选择。我在 Value
字符串中使用的变量在我的 CodeBuild 项目中填充为 EnvironmentVariables
- 因此它们在规范运行之前可用。
如何使用非硬编码的内容动态填充参数存储 Keys
的 Value
?
我找到了 this Whosebug post - 很遗憾,您描述的功能似乎不存在。
如果能够使用类似于 CloudFormation 模板中的功能的参数和函数,那就太好了。
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
它没有明确说明,但我猜你可以在你用来构建解析字符串的任何 cloudformation 模板中使用 !Sub,并在 ParameterOverride 中使用它以传递到常规参数块中的构建规范而不是参数存储块
参数存储用例的 CodeBuild 现在支持此变量扩展。您可以在构建规范中定义任何环境变量,并在获取参数存储的路径中引用该变量。
version: 0.2
env:
variables:
stage: PRE_PROD
parameter-store:
encryptedVar: CodeBuild-$stage
phases:
build:
commands:
- echo $encryptedVar