amazon-web-services - 如何将参数从 CloudFormation 传递到存储在 S3 存储桶中的 AWS Lambda 函数

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

我的 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/

相关文章:

node.js - AWS Lambda 上 NodeJS EventEmitter 中的异步函数

java - 如何使用 Java 开发 AWS S3 上的静态网页与 AWS Lambda 之间的连接

ruby-on-rails - 使用回形针上传文件到S3,IOError(关闭流)错误

amazon-s3 - Cloudformation - S3 AWS 事件没有被触发?

javascript - 在 lambda.js 中运行 AWS Firehose 会出现未定义的错误

python - 如何在AWS CDK中创建监听器规则?

amazon-web-services - 查找 S3 存储桶所有者

android - Amazon S3 CORS - 仅针对移动应用程序启用

amazon-ec2 - 自定义亚马逊SES-删除amazonses.com

iis - 提供非子域路由