能否将AWS SAM用于已有的CloudFormation栈?
能否使用AWS SAM操作现有CloudFormation栈?
可以用AWS SAM操作已有的CloudFormation栈——SAM本质是CloudFormation的超集,完全兼容标准CFN资源,具体操作步骤如下:
导出并适配现有栈模板
先用CloudFormation命令导出现有栈的模板:aws cloudformation get-template --stack-name YOUR_STACK_NAME > existing-stack-template.json接着在模板最顶层添加SAM的Transform字段,完成模板的SAM适配(不需要修改原有资源定义也能正常使用):
Transform: AWS::Serverless-2016-10-31你也可以按需将部分标准CFN资源替换为SAM简化资源(比如把
AWS::Lambda::Function改成AWS::Serverless::Function),进一步利用SAM的语法糖。用SAM CLI关联并更新现有栈
直接使用SAM deploy命令指定现有栈名称即可完成操作:sam deploy --stack-name YOUR_EXISTING_STACK_NAME --template-file sam-adapted-template.yaml --no-fail-on-empty-changeset该命令会自动对比SAM模板与现有栈的配置差异,生成变更集并应用到现有栈上。
操作注意要点
- 操作前先用
sam validate验证SAM模板合法性,避免语法错误。 - 可添加
--no-execute-changeset参数预览变更内容,确认不会误删或替换关键资源后再执行部署。 - 如果现有栈开启了终止保护,确保操作不会触发栈删除动作,必要时先调整保护设置。
- 操作前先用
内容的提问来源于stack exchange,提问作者RussCoder
相关产品推荐
相关产品推荐

