将地形输出作为Lambda函数的环境变量传递

问题描述 投票:3回答:1

我遇到了以下需求,我需要将Terraform输出或Terraform动态创建的资源ID作为环境变量传递给同一terraform模板中的Lambda函数。

我的地形创建了大量资源,例如Lambda函数,API网关,网关方法,网关资源等。我需要将API网关资源ID作为环境变量发送给Lambda函数。不幸的是,我不能在Lambda函数中放置“ Depends on”,因为它是创建周期的依赖项。

无论如何,我们可以将这些动态创建的资源ID作为输入环境变量传递给Lambda函数?

谢谢

aws-lambda terraform terraform-provider-aws
1个回答
0
投票

您可以尝试在lambda代码中利用SSM Parameter Store来避免针对此问题的骇客解决方案。

您可以让Terraform创建一个具有引用某些变量you供应的唯一路径的参数,并将此路径设置为lambda资源声明中的环境变量,以在代码中进行引用。

Terraform面可能看起来像这样:

resource "aws_ssm_parameter" "resource_id" {
  name  = "${var.resource_id_path}" // This is the 'unique key'
  type  = "String"
  value = "${some-apigateway-resource.value}"
}

resource "aws_lambda_function" "my_lambda" {
  ...

  environment {
    variables = {
      ssm_path = "${var.resource_id_path}"
    }
  }
}

Lambda面可能看起来像这样(Python):

import boto3

client = boto3.client('ssm')
response = client.get_parameter(
   Name=os.environ['ssm_path']
   WithDecryption=False
)

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.