我想为Lambda函数创建一个连续的传递管道。
如本docs所示,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环境变量,如果需要的话,要做什么呢?
答案 0 :(得分:1)
CloudFormation不能引用环境变量,与SAM或Plain无关。您可以做的就是通过Shell在CodeBuild buildspec.yaml
文件(--parameters ParameterKey=name,ParameterValue=${MY_ENV_VAR}
)中将环境变量作为参数传递。
请记住将相应的参数添加到您的Parameters
部分。
如果您使用aws cloudformation deploy
,则应该使用--parameter-overrides
,这是一种更简单的形式:
--parameter-overrides \
YourParam=${YOUR_ENV_VAR} \
Foo=Bar \