用于向 AWS Lambda 添加权限的正确 terraform 语法

Jav*_*sVA 6 aws-lambda terraform

我正在学习 Terraform,并尝试获取正确的语法来为其指定 IAM 角色权限。我想要这些功能:

  1. 可以从我也在 Terraform 中创建的 API 网关调用 Lambda
  2. Lambda 可以写入 Cloudwatch 日志

我有以下内容允许 API 网关调用 Lambda:

resource "aws_iam_role" "my_lambda_execution_role" {
  name = "my_lambda_execution_role"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": [ 
          "lambda.amazonaws.com",
          "apigateway.amazonaws.com"
        ]
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}
Run Code Online (Sandbox Code Playgroud)

我已经看到下面的代码片段允许 Lambda 写入 CloudWatch。我正在尝试组合这些片段以获得所有权限,但我无法做到正确。将所有这些权限授予角色的正确语法是什么?

{
    "Statement": [
        {
            "Action": [
                "logs:CreateLogGroup",
                 "logs:CreateLogStream",
                 "logs:PutLogEvents"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:*:*:*"
        }
    ]
} 
Run Code Online (Sandbox Code Playgroud)

Dan*_*ell 3

https://www.terraform.io/docs/providers/aws/r/iam_role_policy_attachment.html

您需要创建策略,然后将其附加到您的角色。上面的链接包含比 iam 角色页面上更完整的示例。