是否可以在 lambda 的环境变量中使用 SSM 参数?
Is it possible to use SSM parameters in environment variables for a lambda?
我知道在 Cloudformation 中您可以使用 SSM 创建参数,但我真的想知道您是否可以在 lambda 的环境变量中使用 SSM。
我知道我可以放置 SSM 路径并在代码中使用 sdk 来获取这些值,但也许有一种方法可以自动实现,而无需从代码中获取值。
谢谢
您可以直接从参数存储中获取 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。
更多信息:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
您也可以将其定义为参数,然后在您的模板中引用它。这样做的一个好处是您不必担心指定版本号。 (我可以想象,在某些情况下,人们可能会说“¿没有版本号是 优势?呸!”。)
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
当您查看 CloudFormation 中的“参数”选项卡(在 AWS 控制台中)时,您现在只会看到键 SomeParameter 旁边的字符串“/path/to/my-param”;但是,当您查看 Lambda 函数(在环境变量部分)时,您会发现它已解析为名为 /path/to/my-param.
的参数存储的任何值。
我知道在 Cloudformation 中您可以使用 SSM 创建参数,但我真的想知道您是否可以在 lambda 的环境变量中使用 SSM。 我知道我可以放置 SSM 路径并在代码中使用 sdk 来获取这些值,但也许有一种方法可以自动实现,而无需从代码中获取值。
谢谢
您可以直接从参数存储中获取 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。
更多信息: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
您也可以将其定义为参数,然后在您的模板中引用它。这样做的一个好处是您不必担心指定版本号。 (我可以想象,在某些情况下,人们可能会说“¿没有版本号是 优势?呸!”。)
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
当您查看 CloudFormation 中的“参数”选项卡(在 AWS 控制台中)时,您现在只会看到键 SomeParameter 旁边的字符串“/path/to/my-param”;但是,当您查看 Lambda 函数(在环境变量部分)时,您会发现它已解析为名为 /path/to/my-param.
的参数存储的任何值。