首页 > 解决方案 > 在存储库的 cloudformation 模板中使用 AWS::CodeBuild::Project 环境变量

问题描述

我想为 Lambda 函数创建一个持续交付管道。

如本文档所示,自定义环境变量AWS::CodeBuild::Project可用于buildspec.yaml

aws cloudformation package --template-file template.yaml --s3-bucket $MYEVVARKEY --output-template-file outputtemplate.yaml

还想在存储库的SAM模板中使用那些 CodeBuild Project 环境变量。如下所示,我尝试使用美元符号,但它没有将其作为键,而是作为文本:

# template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  TimeFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: $MY_FN_NAME_ENV_VAR
      Role: $MY_ROLE_ARN_ENV_VAR
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: ./

那么,是否可以在 SAM 模板中使用 CodeBuild Project 环境变量,如果可以,实现此目的所需的符号是什么?

标签: amazon-web-servicesamazon-cloudformationaws-codebuildaws-sam

解决方案


CloudFormation 不能引用环境变量,不管是 SAM 还是plain。您可以做的是通过 CodeBuildbuildspec.yaml文件 ( --parameters ParameterKey=name,ParameterValue=${MY_ENV_VAR}) 中的 shell 将环境变量作为参数传递。

请记住将相应的参数添加到您的Parameters部分。

如果你使用,aws cloudformation deploy那么你应该使用--parameter-overrides,这是一种更简单的形式:

--parameter-overrides \
    YourParam=${YOUR_ENV_VAR} \
    Foo=Bar \

推荐阅读