terraform-provider-aws: version 2.28.0 return errors

When I run the terraform plan command and the aws provider version property version = 2.27.0 is not set, it returns that error because by default the version 2.28.0 has a bug

#Terraform Version 0.12.8

Affected Resource(s)

  • aws provider version: 2.28.0

Panic Output

Error: missing expected [

Actual Behavior

Error: missing expected [

Steps to Reproduce

terraform init && terraform plan

  1. terraform plan Error: missing expected [

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 32
  • Comments: 16 (1 by maintainers)

Most upvoted comments

Hi folks đź‘‹ Sorry for the trouble here.

The change from https://github.com/terraform-providers/terraform-provider-aws/pull/10013 will require additional work (e.g. state migration) before it can be merged in. I submitted #10093 to revert it and we should be able to cut a 2.28.1 bug fix release today or tomorrow.

Downgrading the aws provider to 2.27 fixed it for my project.

provider "aws" {
  version = "= 2.27"
  region  = "us-east-1"
}

Also experiencing this…

I am also experiencing this. It happens during the state refresh.

To provide a bit more context, it seems to be with the aws_cloudfront_distribution resource. I believe the recent change to the schema, here https://github.com/terraform-providers/terraform-provider-aws/commit/ebdc976ec075ce924a580207b62502c418f26156#diff-a9d90d298f8013ea41caa2d4f3b886a2R698 is causing the state refresh to break.

To reproduce this, I created the above TF resource in our dev env with the 2.27 version of the AWS provider, then updated to the 2.28 and ran the terraform plan command. I was able to create a new resource using 2.28 without issue, and refresh the state.

@bflad

Seeing similar issues even with 2.28.1, still cloudfront but instead:

Error: missing expected {

this time it is a { instead of a [

I tried downgrading but it did not fix the issue.

Thanks!

@chaddjohnson - Wouldn’t your version line still use the newer provider?

From the doc

~> 1.2: any non-beta version >= 1.2.0 and < 2.0.0, e.g. 1.X.Y

I think you might want version = "~> 2.21.0"

Thank you! This fixed it:

provider "aws" {
  version = "= 2.21"
  region  = "us-east-1"
}