Terraform Error: Error locking state: Error acquiring the state lock: 2 errors occurred:

33.7k views Asked by At

I tried terraform versions v0.12.26 and v0.13.3. Both failed.

terraform plan

Acquiring state lock. This may take a few moments...

Error: Error locking state: Error acquiring the state lock: 2 errors occurred: * ResourceNotFoundException: Requested resource not found * ResourceNotFoundException: Requested resource not found

Terraform acquires a state lock to protect the state from being written by multiple users at the same time. Please resolve the issue above and try again. For most commands, you can disable locking with the "-lock=false" flag, but this is not recommended.

Related source code:

terraform {
  backend "s3" {
    encrypt        = false
    bucket         = "dev-terraform-state"
    key            = "dev/Oregon/eks/terraform.tfstate"
    region         = "us-west-2"
    dynamodb_table = "dev-lock-table"
  }
  required_version = ">= 0.12.0"
}
9

There are 9 answers

5
Marcin On BEST ANSWER

The error is ResourceNotFoundException, which suggests that your dev-lock-table does not exist.

Terraform does not create it. Instead it must exist before you will use it. From docs:

dynamodb_table field to an existing DynamoDB table name.

1
Mahesh Gaikwad On

Issue: AWS S3 with Dynamodb backend IF got such error Error loading state: failed to lock s3 state: 2 errors occurred: * operation error DynamoDB: PutItem, https response error StatusCode: 400, RequestID: XXXXXXXXXXXXXXX, api error ValidationException: One or more parameter values were invalid: Missing the key LockId in the item

Error loading state: failed to lock s3 state: 2 errors occurred: * operation error DynamoDB: PutItem, https response error StatusCode: 400, RequestID: XXXXXXXXXXXXXXXXXXX, api error ValidationException: One or more parameter values were invalid: Missing the key LockId in the item

Solution is: while creation bucket i have primary LockId insteand LockID after fix such my issue resolved. Thanks

0
Rajmohan On

Check if you're using the same AWS account and correct region. DynamoDB Table must be in the same region as CLI/SDK configuration

0
Nicholas Goh On

I ran terraform force-unlock <LOCK_ID> (docs) to delete the lock.

Lots of discussion here

0
Joe On

I had this exact error message after I modified my backend.tfvars file and then tried to run terraform plan. To fix it, I reinitialized the IaC:

terraform init -backend-config=backend.tfvars

which generated another error message that instructed me to migrate the existing state:

terraform init -backend-config=backend.tfvars -migrate-state

Migrating the existing state allowed the backend to reconfigure successfully, and I could then run terraform plan.

0
denmely On

It remains to create the table to work, so it will be able to save the state.

enter image description here

IAM

enter image description here

0
Sasank Irugu On

Make sure you are using the particular environment Access & Security Credentials.

And also if your profile is set as default make sure you are running the terraform apply for that particular account or you might need to configure the keys again.

0
agrawalramakant On

In my case, as I took forked it from some other repo which operates in some other AWS account, I was having the wrong dynamodb_table. I updated the the dynamodb_table field in my backend config, then it worked fine.

terraform {
  backend "s3" {
    key = <VALID_KEY_NAME>
    region = 'eu-central-1'
    dynamodb_table = <A table which exists>
    encrypt = true
  }
}

This is my problem, you may check if the table exists in dynamodb already or not.

0
Sandeep_Jaina On

Make sure the table created and region specified in below code are same

terraform { backend "s3" { bucket = "" key = "" region = "us-east-1" dynamodb_table =