Aws lambda 是否可以在lambda的环境变量中使用SSM参数?
我知道在Cloudformation中可以使用SSM创建参数,但我真的想知道是否可以在lambda的环境变量中使用SSM。 我知道我可以在代码中放置SSM路径并使用sdk来获取这些值,但也许有一种方法可以自动实现,而无需从代码中获取值Aws lambda 是否可以在lambda的环境变量中使用SSM参数?,aws-lambda,amazon-cloudformation,ssm,aws-ssm,Aws Lambda,Amazon Cloudformation,Ssm,Aws Ssm,我知道在Cloudformation中可以使用SSM创建参数,但我真的想知道是否可以在lambda的环境变量中使用SSM。 我知道我可以在代码中放置SSM路径并使用sdk来获取这些值,但也许有一种方法可以自动实现,而无需从代码中获取值 感谢您可以直接从参数存储中获取CloudFormation中的值,并使用动态引用将其作为环境变量传递给lambda 例如: ServerlessTestLambda: Type: AWS::Serverless::Function Proper
感谢您可以直接从参数存储中获取CloudFormation中的值,并使用动态引用将其作为环境变量传递给lambda 例如:
ServerlessTestLambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: src
Handler: test-env-var.handler
Role: !GetAtt BasicLambdaRole.Arn
Environment:
Variables:
ParamStoreVar: "{{resolve:ssm:/test/ssmparam:3}}"
Events:
LambdaSchedule:
Type: Schedule
Properties:
Schedule: rate(3 minutes)
这是我为测试而创建的lambda,正如您所看到的,环境变量ParamStoreVar
注意-由于明显的安全原因,您无法替换环境变量中的ssm securestring
有关更多信息:
您还可以将其定义为参数,然后在模板中引用它。这样做的一个好处是,您不必担心指定版本号。(我可以想象,在某些情况下,人们可能会说:“没有版本号是一种优势?呸!”)
参数:
某些参数:
类型:AWS::SSM::参数::值
默认值:'/path/to/my param'
...
我的职能:
类型:AWS::Serverless::Function
特性:
...
环境:
变量:
我的_环境_变量:!Ref SomeParameter
当您查看CloudFormation中的参数选项卡(在AWS控制台中)时,现在只会看到键SomeParameter旁边的字符串“/path/to/my param”;但是,当您查看Lambda函数(在“环境变量”部分中)时,您将看到它已解析为名为/path/to/my param的参数存储的任何值。安全字符串呢?我收到错误“失败。原因:[AWS::Lambda::Function/Properties/Environment/Variables/API_KEY]中不支持SSM安全引用”我已经在回答您的问题时添加了一条说明,ssm secure不支持明显的安全问题。对于安全ssm,您需要在lambdaYou中解决它可以加密环境变量:ttps://docs.aws.amazon.com/whitepapers/latest/kms-best-practices/encrypting-lambda-environment-variables.htmlwhat 如果SSM参数的值在创建CFT后修改eter?因为您没有指定参数值的版本,它引用的是哪个版本?
Parameters:
SomeParameter:
Type: AWS::SSM::Parameter::Value<String>
Default: '/path/to/my-param'
...
MyFunction:
Type: AWS::Serverless::Function
Properties:
...
Environment:
Variables:
MY_ENVIRONMENT_VAR: !Ref SomeParameter