将S3存储桶中存在的值传递给AWS Lambda环境变量

时间:2018-09-05 06:44:18

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

我创建了一个Lambda函数,其中定义了3个环境变量。这些变量的值存储在S3存储桶的外部文件中。 如何获取文件中存在的变量的值并触发lambda函数? 我是否需要为此活动创建另一个lambda,以便我总共拥有2个lambda函数?

2 个答案:

答案 0 :(得分:0)

  1. 您可以在S3 put事件上触发一个lambda。请在下面找到一个例子。 s3 upload trigger lambda
  2. 您可以使用cloudformation或terraform将环境变量传递给lambda函数Template for lambda cloudformation 只是为了弄清楚我们
  3. 可以使用terraform读取存储在s3中的text / *正文或application / json文件(只要它是人类可读的)。
  4. 一旦您读取了该值,便可以将其传递给所需的lambda。

    变量“环境” {   默认=“登台” }

    数据“ aws_s3_bucket_object”“ release_id” {   bucket =“ my-s3-bucket”   键=“ myapp / {var.environment} / current” }

    输出“ release_id” {   值=“ $ {data.aws_s3_bucket_object.release_id.body}” }  资源“ aws_lambda_function”“ test_lambda” {   s3_bucket =“ $ {data.aws_s3_bucket_object.lambda.bucket}”   s3_key =“ $ {data.aws_s3_bucket_object.lambda.key}”   s3_object_version =“ $ {data.aws_s3_bucket_object.lambda.version_id}”   function_name =“ lambda_function_name”   角色=“ $ {aws_iam_role.iam_for_lambda.arn}”#(未显示)   handler =“ exports.test”

    lambda_environment_variables_map = {     LOG_LEVEL =“ $ {var.lambda_log_level}”     ENV_NAME =“ $ {var.environment}”     S3_VALUE =“ $ {data.aws_s3_bucket_object.release_id.body}”   } }

  5. 请参考此example

答案 1 :(得分:0)

您需要附加一个s3事件通知配置文件,该文件定义了如何通过s3存储桶事件调用lambda函数。 Amazon S3通知功能使您可以在存储桶中发生某些事件时接收通知。参见Configuring Amazon S3 Event Notifications