如何在AWS CodeBuild规范文件中使用`parameter-store`的动态密钥?

问题描述 投票:2回答:2

我在CodeBuild中有一个buildspec.yml文件,我想从EC2 Systems Manager参数存储中读取值。 CodeBuild支持通过spec文件中的parameter-store属性执行此操作。

问题是,我无法弄清楚如何使用在buildspec执行之前设置的环境变量。

这是一个例子:

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参数存储键命名。我想为我的所有阶段重用这个构建规范,因此硬编码不是一种选择。我在Value字符串中使用的变量在我的CodeBuild项目中填充为EnvironmentVariables - 因此它们在规范运行之前可用。

如何使用非硬编码的东西动态填充参数存储ValueKeys

amazon-web-services amazon-ec2 aws-codepipeline aws-codebuild aws-parameter-store
2个回答
3
投票

我找到了this StackOverflow post - 遗憾的是你描述的功能似乎并不存在。 如果能够使用类似于CloudFormation模板中的功能的参数和功能,那将是很好的。


0
投票

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html

它没有明确说明,但我猜你可以在你用来构建解析字符串的任何cloudformation模板中使用!Sub,并在ParameterOverride中使用它来传递到常规参数块中的buildspec而不是参数 - 商店街区

© www.soinside.com 2019 - 2024. All rights reserved.