如何将 Terraform 对象放入 AWS Lambda 环境
How to get a Terraform object into an AWS Lambda environment
Lambda 函数支持 environment
参数,可以轻松定义键值对。但是如何将对象(由模块变量定义)放入函数的环境中呢?
我在 python 3.7 中尝试完成的快速示例:
地形:
# variable definition
variable foo {
type = map(any)
default = {
a = "b"
c = "d"
}
}
resource "aws_lambda_function" "lambda" {
.
.
.
environment {
foo = jsonencode(foo)
}
}
然后在我的函数中:
def bar:
for k in os.environ["foo"]:
print(k)
谢谢!
在python中,你必须获取json字符串并将其转换为字典:
import json
def bar:
for k in json.loads(os.environ["foo"]):
print(k)
同样的问题
resource "aws_lambda_function" "test_lambda" {
filename = var.filename
function_name = var.function_name
role = var.iam_lambda
handler = "lambda_handler"
source_code_hash = filebase64sha256("lambda_function.zip")
runtime = "python3.9"
environment {
variables = {
instances = "${var.instances}",
region = "us-east-2"
}
}
}
lambda_function.zip
import boto3
region = 'region'
instances = ['i-092222222222', 'i-00433333333','i-09b24444444444']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
如何正确定义 Python 代码中的变量?
我找到了一个更优雅的解决方案here
Lambda 函数支持 environment
参数,可以轻松定义键值对。但是如何将对象(由模块变量定义)放入函数的环境中呢?
我在 python 3.7 中尝试完成的快速示例:
地形:
# variable definition
variable foo {
type = map(any)
default = {
a = "b"
c = "d"
}
}
resource "aws_lambda_function" "lambda" {
.
.
.
environment {
foo = jsonencode(foo)
}
}
然后在我的函数中:
def bar:
for k in os.environ["foo"]:
print(k)
谢谢!
在python中,你必须获取json字符串并将其转换为字典:
import json
def bar:
for k in json.loads(os.environ["foo"]):
print(k)
同样的问题
resource "aws_lambda_function" "test_lambda" {
filename = var.filename
function_name = var.function_name
role = var.iam_lambda
handler = "lambda_handler"
source_code_hash = filebase64sha256("lambda_function.zip")
runtime = "python3.9"
environment {
variables = {
instances = "${var.instances}",
region = "us-east-2"
}
}
}
lambda_function.zip
import boto3
region = 'region'
instances = ['i-092222222222', 'i-00433333333','i-09b24444444444']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
如何正确定义 Python 代码中的变量?
我找到了一个更优雅的解决方案here