如何在不同的堆栈中创建相同的Lambda函数名称

时间:2019-05-20 06:46:13

标签: amazon-web-services aws-lambda amazon-cloudformation

我正在尝试使用不同的堆栈来管理不同的环境stagingprod。但是我发现我无法将具有相同名称的lambda函数部署到不同的堆栈。我必须为不同的堆栈使用不同的名称吗?如果是这样,我必须为两个环境创建两个template.yaml文件。有没有一种方法可以使用一个模板文件来管理多个环境?

我正在使用AWS SAM来部署我的lambda。而且我知道我可以通过cli设置不同的堆栈:sam deploy --template-file mytemplate.yml --stack-name YOUR_ENVIRONMENT。但是如何通过命令行更新lambda函数名称?

1 个答案:

答案 0 :(得分:0)

@Vahdet的评论是您问题的正确答案。您应该将功能拆分到不同的环境中,以便可以在功能名称前添加环境名称。

因此,假设您有一个名为image-thumbnail的函数,但想同时将其部署到暂存和生产中,因此函数的名称应分别为staging-image-thumbnailprod-image-thumbnail

您没有提及或标记可能使用的任何框架,但是如果您使用的是AWS SAMServerless Framework,则此功能已内置。如果您不使用框架,我强烈建议您开始使用它,因为这样会使您的生活更轻松,尤其是在CI / CD管道方面。

在SAM中,您只需运行:

sam deploy --template-file mytemplate.yml --stack-name YOUR_ENVIRONMENT

在无服务器框架中,您可以运行:

serverless deploy --stage YOUR_ENVIRONMENT

这两个框架都在后台使用CloudFormation,因此本质上它们将要做的是为不同的环境创建不同的堆栈(以环境名称作为堆栈名称的一部分),因此保证了两者的唯一性堆栈和函数名称。