python - 如何在 python 代码中访问 terraform 变量?
问题描述
所以在我的顶级 main.tf 文件中,我有以下内容
module "aws_lambda" {
...
envs = {
bucket_name = "bucket_name"
prefix = "prefix"
}
}
模块 main.tf
resource "aws_lambda_function" "descriptive_name" {
function_name = "${var.prefix}-name
handler = "lambda_function.lambda_handler"
runtime = "python3.8
filename = "${path.module}/../../package.zip
role = var.role_arn
timeout = 300
tags = local.default_tags
vpc_config {
security_group_ids = var.lambda_security_group_ids
subnet_ids = var.lambda_subnet_ids
}
}
locals {
default_tags = {
Deployment = var.prefix
}
{
我想在 python 代码中访问 bucket_name。我怎样才能做到这一点?我使用打印print(os.environ)
但看不到值。我也试过print(os.getenv("bucket_name"))
,但它返回无。我需要访问存储桶名称才能将文件写入其中。
任何帮助,将不胜感激。
解决方案
您需要在执行期间将希望从函数代码访问的环境变量映射传递到aws_lambda_function
资源中:
resource "aws_lambda_function" "descriptive_name" {
function_name = "${var.prefix}-name"
handler = "lambda_function.lambda_handler"
runtime = "python3.8"
filename = "${path.module}/../../package.zip"
role = var.role_arn
timeout = 300
tags = local.default_tags
vpc_config {
security_group_ids = var.lambda_security_group_ids
subnet_ids = var.lambda_subnet_ids
}
environment {
variables = var.envs
}
}
请参阅Terraform 文档以获取aws_lambda_function
.
推荐阅读
- google-cloud-platform - GKE 日志存储在哪里?
- java - 同一个数据库的不同应用
- mongodb - MongoDB 中的 $nin 运算符是否有最大限制?
- python - 从 Github 运行安装和导入时出错
- sql - 基于另一个组在组中插入或更新行
- llvm - 获取 DIGlobalVariable 的类型 - LLVM
- html - HTML/CSS 浮动问题
- reactjs - 为什么 {app-url}/reset-password/{token} url 显示在部署在谷歌云上的反应应用程序中找不到页面,它在本地工作?
- javascript - 通过快速切换 DOM 中的 SVG 元素来创建“GIF”的性能问题
- postgresql - Postgres查找数字以