Osamazx
Osamazx

Reputation: 467

Unsupported argument, An argument named "" is not expected here

I am getting the below error when run terraform plan, the idea of this IAM to allow Lambda to run another services in AWS (step-function) once the it will finish executing.

Why does terraform fail with "An argument named "" is not expected here"?

Terraform version

Terraform v0.12.31

The error

Error: Unsupported argument

  on iam.tf line 246, in resource "aws_iam_role" "lambda_role":
 246:   managed_policy_arns = var.managed_policy_arns

An argument named "managed_policy_arns" is not expected here.


Error: Unsupported block type

  on iam.tf line 260, in resource "aws_iam_role" "lambda_role":
 260:   inline_policy {

Blocks of type "inline_policy" are not expected here.

the code for iam.tf:-

resource "aws_iam_role" "lambda_role" {
  name = "${var.name}-role"
  managed_policy_arns = var.managed_policy_arns
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Principal = {
          Service = "lambda.amazonaws.com"
        }
      },
    ]
  })

  inline_policy {
    name    = "step_function_policy"
    policy  = jsonencode({
        Version = "2012-10-17"
        Statement: [
            {
                Effect: "Allow"
                Action: ["states:StartExecution"]
                Resource: "*"
            }
        ]
    })
    }
}

Upvotes: 1

Views: 3258

Answers (1)

Osamazx
Osamazx

Reputation: 467

For the future, I fixed this issue by using a higher version of aws provider

The provider.tf was like the following :-

provider "aws" {
 region  = var.region
 version = "< 3.0"
}

Change it to be like this :-

provider "aws" {
  region  = var.region
  version = "<= 3.37.0"
}

Upvotes: 3

Related Questions