如何在多AWS SAM模板文件间传递参数并在部署时覆盖默认值
SAM嵌套子模板参数传递失效解决方案
参数不生效的核心原因是:sam deploy传入的参数默认只会传递给根模板(也就是你的template.yaml),不会自动下发到嵌套的子模板,需要你手动在根模板中配置参数透传逻辑。
步骤1:修改主模板template.yaml,新增参数定义与透传配置
修改后的主模板参考如下:
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: > Sample SAM Template # 新增:主模板先定义和子模板一致的参数 Parameters: Environment: Description: 部署环境 Type: String Default: 'develop' Resources: MyLambda: Type: AWS::Serverless::Application Properties: Location: ./lambda_template.yaml # 新增:将主模板接收的参数透传给子模板 Parameters: Environment: !Ref Environment
步骤2:执行部署命令即可生效
你之前的两种命令写法都是合法的,配置完主模板后直接执行即可覆盖默认值:
sam deploy ... --parameter-overrides Environment=QA
如果需要传递多个参数,用空格分隔即可:
sam deploy ... --parameter-overrides Environment=QA OtherParam=test
- 注意事项:如果子模板有多个自定义参数,需要在主模板中同步定义所有参数,并且在嵌套应用的
Parameters字段中逐个透传,才能实现命令行覆盖。
内容的提问来源于stack exchange,提问作者Mason Caiby
相关产品推荐
相关产品推荐

