使用Terraform脚本部署简单helloworld lambda函数(python)-创建时出错;测试λ“;
我正在尝试使用terraform脚本创建lambda函数 我得到错误,说“错误创建lambda函数”,我把屏幕截图的错误也 这是地形脚本: 我在AWS管理控制台中创建了一个角色,并命名为“欢迎Lambda角色”。这就是我在下面的脚本中提到的角色。我不知道这是否是问题所在使用Terraform脚本部署简单helloworld lambda函数(python)-创建时出错;测试λ“;,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我正在尝试使用terraform脚本创建lambda函数 我得到错误,说“错误创建lambda函数”,我把屏幕截图的错误也 这是地形脚本: 我在AWS管理控制台中创建了一个角色,并命名为“欢迎Lambda角色”。这就是我在下面的脚本中提到的角色。我不知道这是否是问题所在 provider "aws" { region = "us-west-2" access_key = "xxz" secret_key = &qu
provider "aws" {
region = "us-west-2"
access_key = "xxz"
secret_key = "yyyydtEyZtOaQVGF5h"
}
data "archive_file" "welcome" {
type = "zip"
source_file = "welcome.py"
output_path = "outputs/welcome.zip"
}
resource "aws_lambda_function" "test_lambda" {
filename = "outputs/welcome.zip"
function_name = "welcome"
handler = "welcome.hello"
//created this role manually in AWS console and referred to that role in the next line
role = "Welcome-Lambda-Role"
//source_code_hash = filebase64sha256("lambda_function_payload.zip")
runtime = "python3.7"
}
欢迎使用.py文件内容
def hello(event, context):
print("Welcome to terraform")
角色
应该是该角色的ARN,而不仅仅是其名称:
data "aws_iam_role" "role" {
name = "Welcome-Lambda-Role"
}
resource "aws_lambda_function" "test_lambda" {
filename = "welcome.zip"
function_name = "welcome"
handler = "welcome.lambda_handler"
role = data.aws_iam_role.role.arn
runtime = "python3.7"
}
或者,如果您只是想硬编码:
resource "aws_lambda_function" "test_lambda" {
filename = "welcome.zip"
function_name = "welcome"
handler = "welcome.lambda_handler"
role = "arn:aws:iam::xxxx:role/service-role/Welcome-Lambda-Role"
runtime = "python3.7"
}
谢谢你,马辛。这个错误消失了。出于某种原因,添加到welcome.zip文件的welcome.py文件没有任何内容。这就是为什么我会遇到这个错误。@Jason您没有显示您的
欢迎.py
,可能是它是空的,或者它在不同的位置?您的archive\u文件
是正确的。很抱歉,我忘了放welcome.py。我把它添加到上面的原始帖子中。对不起,只是在地形上加快了速度。为什么我需要上传welcome.zip。为什么不能是welcome.py文件本身?@Jason Zip是你的。除了角色
问题之外,您的代码或lambda函数没有任何问题。如果您有其他问题(emptywelcome.py
),则您的问题中不会出现此问题。谢谢。我将通过你共享的链接。感谢你的帮助。一个问题。使用Terraform脚本部署Lambda函数正常吗?我构建了一个CI/CD Jenkins管道来部署terraform脚本。我的计划是使用该管道通过terraform脚本部署Lambda函数。