Amazon web services 如何使SAM模板文件适用于两种不同的环境?
我正在使用Amazon web services 如何使SAM模板文件适用于两种不同的环境?,amazon-web-services,aws-lambda,aws-api-gateway,Amazon Web Services,Aws Lambda,Aws Api Gateway,我正在使用AWS SAM将lambda部署到AWS。我创建了一个模板。yaml文件和SAM将使用此文件生成打包的yaml。它工作正常,但我不知道如何为两个环境prod和staging创建相同的模板文件。我想为不同的环境更改lambda函数名和API网关paht。例如,我想将其命名为生产用的mylambda prod,而将其命名为暂存用的mylambda staging。函数名在模板文件中以硬编码方式定义。下面是我的模板文件。如何使函数名和API网关路径成为动态的?我知道我可以定义两个不同的模板文
AWS SAM
将lambda部署到AWS。我创建了一个模板。yaml
文件和SAM
将使用此文件生成打包的yaml。它工作正常,但我不知道如何为两个环境prod
和staging
创建相同的模板文件。我想为不同的环境更改lambda函数名和API网关paht。例如,我想将其命名为生产用的mylambda prod
,而将其命名为暂存用的mylambda staging
。函数名在模板文件中以硬编码方式定义。下面是我的模板文件。如何使函数名和API网关路径成为动态的?我知道我可以定义两个不同的模板文件,但我正在寻找更好的方法
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: hello-world/
Handler: app.lambdaHandler
Runtime: nodejs8.10
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /hello
Method: post
我不认为您可以更改函数名,但是您可以动态地分配路径,并使用映射和参数的组合来根据不同的参数值设置不同的值。大概是这样的:
Parameters:
Environment:
Type: String
Default: dev
Mappings:
PathsMap:
dev:
path1: /hello1
path2: /hello2
prd:
path1: hello11
path2: /hello12
在函数定义中,指定如下路径
Path: !FindInMap [ PathsMap, !Ref Environment, path1]
您可以在部署模板时覆盖参数值