AWS文章中的示例代码如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Effect": "Allow",
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
该示例展示了如何为Lambda函数的执行角色添加一个AWS CloudWatch日志策略。
在Terraform中,您可以在Lambda函数定义块中使用“iam_role”的参数来创建新的IAM角色或将现有角色附加到Lambda函数。
以下是示例代码:
resource "aws_iam_role" "lambda_exec_role" {
name = "lambda_exec_role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Principal = {
Service = "lambda.amazonaws.com"
}
}
]
})
}
resource "aws_lambda_function" "example" {
function_name = "example"
role = aws_iam_role.lambda_exec_role.arn
handler = "handler"
runtime = "nodejs12.x"
filename = "lambda_handler.zip"
source_code_hash = filebase64sha256("lambda_handler.zip")
}
resource "aws_iam_policy" "lambda_policy" {
name = "lambda_policy"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "logs:CreateLogGroup"
Effect = "Allow"
Resource = "*"
},
{
Action = "logs:CreateLogStream"
Effect = "Allow"
Resource = "*"
},
{
Action = "logs:PutLogEvents"
Effect = "Allow"
Resource = "*"
}
]
})
}
resource "aws_iam_role_policy_attachment" "lambda_policy_attach" {
policy_arn = aws_iam_policy.lambda_policy.arn
role = aws_iam_role.lambda_exec_role.name
}
在代码中,我们首先定义了一个新的IAM角色"lambda_exec_role",并定义了一个授予权限执行Lambda函数的策略"lambda_policy"。然后,我们将此策略附加到角色"lambda_exec_role"上,并在Lambda函数定义块中使用"role"参数将IAM角色与Lambda函数相关联。
请注意,您需要为Lambda函数包含代码和其他必要的配置,例如函数名称、运行时、处理程序和日志组。