3

我的 Lambda 代码存储在 S3 存储桶中。我使用 CloudFormation 部署在子帐户中。

Lambda 代码片段:

def lambda_handler(event,context):
  ids = ["${id}"]

CloudFormation 使用以下参数获取id

Parameters:

    id:  
      Type: String
      Description: Name of id. 
      Default: abc

但是,id由于代码存储在 S3 存储桶中,因此不会在 lambda 中填充。

怎么办?

4

2 回答 2

14

根据您的描述,您的要求似乎是:

  • 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'])

参考:

于 2019-07-29T22:38:36.990 回答
2

另一种方法是将参数存储在系统管理器的参数存储中,也可以在 cloudformation 脚本中进行管理。

于 2019-07-31T00:47:16.917 回答