我正在使用AWS SAM
将lambda部署到AWS。我创建了一个template.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
答案 0 :(得分:0)
我认为您不能更改函数名称,但可以动态分配路径,并结合使用Map和Parameters来基于不同的参数值使用不同的值。像这样的东西:
Parameters:
Environment:
Type: String
Default: dev
Mappings:
PathsMap:
dev:
path1: /hello1
path2: /hello2
prd:
path1: hello11
path2: /hello12
在函数定义中,您可以像这样分配路径
Path: !FindInMap [ PathsMap, !Ref Environment, path1]
您可以在部署模板时覆盖参数值