适用于多环境的 AWS SAM/Cloudformation - 将逗号分隔列表转换为 ARN
AWS SAM/Cloudformation for multi environment - convert comma delimited list to ARNs
我正在使用 AWS SAM 为多环境设置生成基础代码。我想为 dev/test/prod 使用相同的 template.yaml 文件和单独的配置文件(即 samconfig.yaml)。
我如何将现有层 ARN 分配给 lambda 函数,因为这些层具有不同的名称和版本?
SAM 模板:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
Client:
Type: String
Stage:
Type: String
Layers:
Type: CommaDelimitedList
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${Client}-${Stage}-lambda
Layers:
# - !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:request-layer:2'
samconfig.toml:
version = 0.1
[default]
[default.deploy]
[default.deploy.parameters]
.
.
.
parameter_overrides = "Layers=\"request-layer:2,pandas-layer:5\""
我的方法是使用逗号分隔的参数,我想使用内部函数将其转换为 ARN 列表,但我不能。
由于Layers
是你的CommaDelimitedList
类型的参数,你可以按如下方式使用它:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${Client}-${Stage}-lambda
Layers: !Ref Layers
我正在使用 AWS SAM 为多环境设置生成基础代码。我想为 dev/test/prod 使用相同的 template.yaml 文件和单独的配置文件(即 samconfig.yaml)。 我如何将现有层 ARN 分配给 lambda 函数,因为这些层具有不同的名称和版本?
SAM 模板:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
Client:
Type: String
Stage:
Type: String
Layers:
Type: CommaDelimitedList
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${Client}-${Stage}-lambda
Layers:
# - !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:request-layer:2'
samconfig.toml:
version = 0.1
[default]
[default.deploy]
[default.deploy.parameters]
.
.
.
parameter_overrides = "Layers=\"request-layer:2,pandas-layer:5\""
我的方法是使用逗号分隔的参数,我想使用内部函数将其转换为 ARN 列表,但我不能。
由于Layers
是你的CommaDelimitedList
类型的参数,你可以按如下方式使用它:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${Client}-${Stage}-lambda
Layers: !Ref Layers