如何用CloudFormation判断SSM参数是否存在并配置Lambda环境变量
Lambda环境变量:SSM参数存在时取值,不存在用默认值"None"
需求:原本通过SecretFeature: "{{resolve:ssm:SecretFeature}}"将SSM参数"SecretFeature"的值作为Lambda环境变量,但部分部署场景下该SSM参数可能未配置,需要实现**参数存在时使用其值,不存在则用默认值"None"**的逻辑。
完整CloudFormation配置
Conditions: # 判断SSM参数SecretFeature是否存在 SSMParameterExists: Fn::Not: - Fn::Equals: - "{{resolve:ssm:SecretFeature:null}}" - "" Resources: MyLambdaFunction: Type: AWS::Lambda::Function Properties: FunctionName: MyLambda Runtime: python3.8 Handler: index.handler # 请自行补充代码包、执行角色等必要配置 Environment: Variables: SecretFeature: Fn::If: - SSMParameterExists - "{{resolve:ssm:SecretFeature}}" - "None"
关键逻辑说明
- 条件判断:
SSMParameterExists通过{{resolve:ssm:SecretFeature:null}}尝试读取参数,若参数不存在则返回空字符串,通过Fn::Not+Fn::Equals组合判断结果是否为空,以此确认参数是否存在。 - 环境变量赋值:使用
Fn::If条件分支,当参数存在时读取SSM参数值;参数不存在时,直接使用默认值"None"。
内容的提问来源于stack exchange,提问作者Varun Gawande
相关产品推荐
相关产品推荐

