Hyv*_*vrt 6 aws-lambda terraform terraform-provider-aws
我遇到了以下要求,我需要将 Terraform 输出或 Terraform 动态创建的资源 ID 作为环境变量传递给同一 terraform 模板中的 Lambda 函数。
我的 terraform 创建了大量资源,例如 Lambda 函数、API 网关、网关方法、网关资源等。我需要将 API 网关资源 ID 作为环境变量发送到 Lambda 函数。不幸的是,我不能在 Lambda 函数中放置“Depends on”,因为它是创建循环依赖项。
无论如何,我们可以将这些动态创建的资源 ID 作为输入环境变量传递给 lambda 函数吗?
谢谢
小智 5
你可以尝试利用SSM Parameter Store在 lambda 代码内部使用,以避免针对此问题的 hack-y 解决方案。
您可以让 Terraform 创建一个具有唯一路径的参数,该路径引用您的某个变量提供的某些变量,然后将此路径设置为 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}"
}
}
}
Run Code Online (Sandbox Code Playgroud)
Lambda 端可能看起来像这样(Python):
import boto3
client = boto3.client('ssm')
response = client.get_parameter(
Name=os.environ['ssm_path']
WithDecryption=False
)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |