我的 Lambda 代码存储在 S3 存储桶中。我使用 CloudFormation 在 child 帐户中进行部署。
Lambda 代码片段:
def lambda_handler(event,context):
ids = ["${id}"]
CloudFormation 使用参数将 id
接收为:
Parameters:
id:
Type: String
Description: Name of id.
Default: abc
但是 id
不会填充到 lambda 中,因为代码存储在 S3 存储桶中。
如何去做?
最佳答案
从您的描述来看,您的要求是:
- CloudFormation 模板采用输入参数
- 您希望使该输入参数的值可供同一模板中定义的 AWS Lambda 函数的所有调用使用
您可以通过通过环境变量将参数传递给 Lambda 函数来实现此目的。
在CloudFormation模板中定义Lambda函数时,可以提供环境变量:
Type: AWS::Lambda::Function
Properties:
Code:
Code
Environment:
Variables:
id:
Ref: PARAMETER-NAME
...
在这种情况下,变量的值来自参数。
在您的 Lambda 代码中,您将访问环境变量。这是一个 Python 示例:
import os
def lambda_handler(event, context):
print("environment variable: " + os.environ['id'])
引用文献:
关于amazon-web-services - 如何将参数从 CloudFormation 传递到存储在 S3 存储桶中的 AWS Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57260726/