terraform backend로 DynamoDB, s3를 설정해서 사용하고 있는 상황
terraform plan시 아래 message가 출력되었다.
╷
│ Error: Error acquiring the state lock
│
│ Error message: operation error DynamoDB: PutItem, https response error StatusCode: 400, RequestID: ${Request_ID}, ConditionalCheckFailedException: The conditional request failed
│ Lock Info:
│ ID: ${LOCK_ID}
│ Path: terraform-state/terraform/eks/dev/terraform.tfstate
│ Operation: OperationTypeApply
│ Who: ${hostname}
│ Version: ${Terraform Version}
│ Created: YYYY-MM-DD HH:24MI:SS.381607249 +0000 UTC
│ Info:
│
│
│ 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.
궁극적으로는 DynamoDB에서 문제를 해결하면 좋겠지만 그런 경우가 아니어서..가볍게 해결할 수 있는 몇가지 방법
Error message에 나온 것 처럼 terraform plan 명령어에 -lock=false option을 추가하여 실행한다.
terraform plan -lock=false
내 PC에서 이전에 수행된 process로 발생한 문제라면 terraform process 목록을 조회한뒤 process를 kill한다.
강제로 unlock을 수행한다.
terraform force-unlock ${LOCK_ID}
위 error message에도 나왔지만 추천하지 않는다. 이전에 관리되고 있던 state를 확실히 무시해도 되는 상황일때만 수행하는것이 좋겠다.