Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在存储库的cloudformation模板中使用AWS::CodeBuild::Project环境变量_Amazon Web Services_Amazon Cloudformation_Aws Codebuild_Aws Sam - Fatal编程技术网

Amazon web services 在存储库的cloudformation模板中使用AWS::CodeBuild::Project环境变量

Amazon web services 在存储库的cloudformation模板中使用AWS::CodeBuild::Project环境变量,amazon-web-services,amazon-cloudformation,aws-codebuild,aws-sam,Amazon Web Services,Amazon Cloudformation,Aws Codebuild,Aws Sam,我想为Lambda函数创建一个连续的传递管道 如图所示,的自定义环境变量可以在buildspec.yaml中使用,如: aws cloudformation package --template-file template.yaml --s3-bucket $MYEVVARKEY --output-template-file outputtemplate.yaml 还希望在存储库的模板中使用这些CodeBuild项目环境变量。如下图所示,我尝试使用美元符号,但它没有将其作为键,而是作为文本:

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

如图所示,的自定义环境变量可以在
buildspec.yaml
中使用,如:

aws cloudformation package --template-file template.yaml --s3-bucket $MYEVVARKEY --output-template-file outputtemplate.yaml
还希望在存储库的模板中使用这些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或平原无关。您可以做的是通过CodeBuild
buildspec.yaml
文件中的shell将环境变量作为参数传递(
--parameters ParameterKey=name,ParameterValue=${MY\u ENV\u VAR}

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

如果使用
aws cloudformation deploy
,则应使用
--参数覆盖
,这是一种更简单的形式:

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

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

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

如果使用
aws cloudformation deploy
,则应使用
--参数覆盖
,这是一种更简单的形式:

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

谢谢,但是你能告诉我在哪里可以使用这个
参数
标志吗?对于
aws cloudformation软件包
,请勿将其作为选项。
软件包
仅处理模板并解析部署软件包引用。之后,您需要调用
deploy
,它实际执行模板,这是传递参数的时刻。我编辑了答案以包含SAM参数。是的,我使用了
cloudformation deploy
,附录似乎是我想要感谢的,但是您能告诉我在哪里可以使用这个
参数
标志吗?对于
aws cloudformation软件包
,请勿将其作为选项。
软件包
仅处理模板并解析部署软件包引用。之后,您需要调用
deploy
,它实际执行模板,这是传递参数的时刻。我编辑了答案以包含SAM参数。是的,我使用了
cloudformation deploy
,附录似乎就是我想要的