python - 为什么在使用 Terraform 部署 Lambda 函数时出现“错误:必须在 PackageType 为 Zip 时设置处理程序和运行时”?
问题描述
我用 Terraform 定义了一个 Lambda 函数,如下所示:
resource "aws_lambda_function" "this" {
filename = "${path.module}/src/existing-files-lambda.zip"
function_name = "ingest-existing-files-lambda"
role = aws_iam_role.lambda.arn
runtime = "python3.9"
timeout = 900
environment {
variables = {
source_bucket_arn = var.source_bucket_arn
destination_bucket_arn = var.destination_bucket_arn
}
}
}
resource "aws_iam_role" "lambda" {
name = "${var.prefix}-lambda-ingest"
path = "/service-role/"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Effect = "Allow"
Principal = { Service = "lambda.amazonaws.com" }
Action = "sts:AssumeRole"
}]
})
}
我的python文件就是这样的:
import os
def lambda_handler(event, context):
print('Hello world from Terraform')
return {
'statusCode': 200,
}
但是,我目前收到一个错误:
│ Error: handler and runtime must be set when PackageType is Zip
│
│ with module.ingest_lambda.aws_lambda_function.this,
│ on ingest_lambda/main.tf line 8, in resource "aws_lambda_function" "this":
│ 8: resource "aws_lambda_function" "this" {
我在handler
这里放什么?
我已经runtime
指定了。
解决方案
我认为您需要在这里添加一个处理程序:
resource "aws_lambda_function" "this" {
filename = "${path.module}/src/existing-files-lambda.zip"
function_name = "ingest-existing-files-lambda"
handler = "ingest-existing-files-lambda.lambda_handler"
role = aws_iam_role.lambda.arn
runtime = "python3.9"
timeout = 900
environment {
variables = {
source_bucket_arn = var.source_bucket_arn
destination_bucket_arn = var.destination_bucket_arn
}
}
}
检查您的 AWS 控制台,在 lambda 服务中,一旦执行上述语句,处理程序就已正确设置。
推荐阅读
- java - Intellij idea JDK-16 中 Project Lombok 的编译错误
- android - 在 AndroidViewModel 中获取活动参考
- topic-modeling - 如何将派生主题映射回原始数据框
- deep-learning - 如何计算多层感知器中每一层的 in_features?
- c# - PuppeteerSharp - 无法验证强名称签名。程序集可能已被篡改,或者被延迟签署
- database - 使用 Neo4j 将子树节点收集为单独的列表
- java - 如果在使用 postgres 的休眠中不存在,如何进行高性能插入?
- sql - 如何从 Oracle REST API 资源模板中的 Pl/SQL 块返回数据?
- database - 在 oython 中安装 System.Data 时出现错误
- css - 有没有办法通过 CSS 从你的电脑链接图像?