如何将参数从CloudFormation传递到S3存储桶中存储的AWS Lambda函数

时间:2019-07-29 20:07:12

标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation

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

Lambda代码段:

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

CloudFormation使用参数将id接受为:

Parameters:

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

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

如何处理?

2 个答案:

答案 0 :(得分:2)

从您的描述看来,您的要求是:

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

参考文献:

答案 1 :(得分:1)

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