在存储库的云形成模板中使用 AWS::CodeBuild::P roject 环境变量



我想为 Lambda 函数创建一个连续的传输管道。

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

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

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

# 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 项目环境变量,如果是这样,实现这一点需要什么符号?

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

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

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

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

最新更新