我正在尝试使用不同的堆栈来管理不同的环境staging
和prod
。但是我发现我无法将具有相同名称的lambda函数部署到不同的堆栈。我必须为不同的堆栈使用不同的名称吗?如果是这样,我必须为两个环境创建两个template.yaml
文件。有没有一种方法可以使用一个模板文件来管理多个环境?
我正在使用AWS SAM
来部署我的lambda。而且我知道我可以通过cli设置不同的堆栈:sam deploy --template-file mytemplate.yml --stack-name YOUR_ENVIRONMENT
。但是如何通过命令行更新lambda函数名称?
答案 0 :(得分:0)
@Vahdet的评论是您问题的正确答案。您应该将功能拆分到不同的环境中,以便可以在功能名称前添加环境名称。
因此,假设您有一个名为image-thumbnail
的函数,但想同时将其部署到暂存和生产中,因此函数的名称应分别为staging-image-thumbnail
和prod-image-thumbnail
。
您没有提及或标记可能使用的任何框架,但是如果您使用的是AWS SAM或Serverless Framework,则此功能已内置。如果您不使用框架,我强烈建议您开始使用它,因为这样会使您的生活更轻松,尤其是在CI / CD管道方面。
在SAM中,您只需运行:
sam deploy --template-file mytemplate.yml --stack-name YOUR_ENVIRONMENT
在无服务器框架中,您可以运行:
serverless deploy --stage YOUR_ENVIRONMENT
这两个框架都在后台使用CloudFormation
,因此本质上它们将要做的是为不同的环境创建不同的堆栈(以环境名称作为堆栈名称的一部分),因此保证了两者的唯一性堆栈和函数名称。