【发布时间】:2020-04-22 12:08:02
【问题描述】:
我正在尝试创建一个 Lambda 角色并将其附加一个策略以允许所有 ElasticSearch 集群操作。
下面是代码 -
resource "aws_iam_role" "lambda_iam" {
name = "lambda_iam"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [{
"Action": [
"es:*"
],
"Effect": "Allow",
"Resource": "*"
}]
}
EOF
}
resource "aws_lambda_function" "developmentlambda" {
filename = "lambda_function.zip"
function_name = "name"
role = "${aws_iam_role.lambda_iam.arn}"
handler = "exports.handler"
source_code_hash = "${filebase64sha256("lambda_function.zip")}"
runtime = "nodejs10.x"
}
我收到以下错误
Error creating IAM Role lambda_iam: MalformedPolicyDocument: Has prohibited field Resource
关于资源的 Terraform 文档说您可以为所有用户指定一个“*”。 Principal 字段也不是强制性的,所以这不是问题。 我还是改成
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "es.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
但那是说 -
Error creating Lambda function: InvalidParameterValueException: The role defined for the function cannot be assumed by Lambda.
我的 lambda 函数定义很简单
resource "aws_lambda_function" "development_lambda" {
filename = "dev_lambda_function.zip"
function_name = "dev_lambda_function_name"
role = "${aws_iam_role.lambda_iam.arn}"
handler = "exports.test"
source_code_hash = "${filebase64sha256("dev_lambda_function.zip")}"
runtime = "nodejs10.x"
}
lambda 文件本身没有任何内容,但我不知道这是否解释了错误。
这里有什么我遗漏的吗?
【问题讨论】:
标签: aws-lambda terraform amazon-iam