代码之家  ›  专栏  ›  技术社区  ›  rynop

如何在AWS codebuild spec文件中使用“参数存储”的动态键?

  •  2
  • rynop  · 技术社区  · 7 年前

    我的codebuild中有一个buildspec.yml文件,我想从ec2系统管理器参数存储中读取值。codebuild支持通过 parameter-store 规范文件中的属性。

    问题是,我不知道如何使用在buildlspec执行之前设置的environment变量。

    下面是一个例子:

    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:  
          ...
    

    如您所见,我正在为EC2系统管理器参数存储键的名称间距执行AWS最佳实践。我想在我的所有阶段重新使用这个构建规范,所以硬编码不是一个选项。我用在 Value 字符串填充为 EnvironmentVariables 在我的codebuild项目中——所以在规范运行之前它们是可用的。

    如何动态填充 价值 参数存储的 Keys 有什么不是硬编码的?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Jonatan    7 年前

    我找到了 this StackOverflow post -不幸的是,您描述的功能似乎不存在。
    如果能够使用类似于cloudformation模板中的特性的参数和函数,那就太好了。

        2
  •  0
  •   user356900    6 年前

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

    它没有明确地说出来,但我猜你可以用一个!sub在任何用于构建解析字符串的cloudformation模板中,并在参数覆盖中使用它来传递到常规参数块(而不是参数存储块)中的buildspec中。

    推荐文章