rai*_*pak 5 amazon-web-services aws-lambda terraform
我正在尝试 Udacity 的 AWS 云架构师纳米学位项目中的一个项目。我正在编写代码以使用 Terraform 部署 AWS Lambda 函数。我相信我应该用作greet_lambda.py
通过 terraform 部署的 lambda 函数。文件如下所述,到目前为止已执行以下步骤:
问候_lambda.py
import os
def lambda_handler(event, context):
return "{} from Lambda!".format(os.environ['greeting'])
Run Code Online (Sandbox Code Playgroud)
压缩 lambda 文件:
$zip ../greet_lambda.zip greet_lambda.py
Run Code Online (Sandbox Code Playgroud)
在S3中创建了一个bucket:
$aws s3api create-bucket --bucket=dirai-terraform-lambda --region=us-east-1
Run Code Online (Sandbox Code Playgroud)
将 zip 文件上传到 S3:
$aws s3 cp greet_lambda.zip s3://dirai-terraform-lambda/v1.0.0/greet_lambda.zip
Run Code Online (Sandbox Code Playgroud)
main.tf 文件:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_iam_role" "lambda_role" {
name = "lambda_role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_lambda_function" "test_lambda" {
function_name = "greet_lambda"
s3_bucket = "dirai-terraform-lambda"
s3_key = "v1.0.0/greet_lambda.zip"
handler = "greet_lambda.lambda_handler"
runtime = "python3.7"
role = "aws_iam_role.lambda_role.arn"
}
Run Code Online (Sandbox Code Playgroud)
我在 $terraform apply 上收到以下错误:
Error: error creating Lambda Function (1): ValidationException:
status code: 400, request id: e6289eb7-40f5-4cf2-ba0a-e8b5ae656466
on main.tf line 33, in resource "aws_lambda_function" "test_lambda":
33: resource "aws_lambda_function" "test_lambda" {
Run Code Online (Sandbox Code Playgroud)
请帮助我,我可能做错了什么。lambda 已成功导出到 S3。但 terraform 应用失败。
你的role
将是文字字符串 "aws_iam_role.greet_lambda.arn"
。应该是(没有引号):
role = aws_iam_role.greet_lambda.arn
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12172 次 |
最近记录: |