terraform dynamoDB state lock

김세영·2024년 12월 3일

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에서 문제를 해결하면 좋겠지만 그런 경우가 아니어서..가볍게 해결할 수 있는 몇가지 방법

1. 명령어에 option 추가

Error message에 나온 것 처럼 terraform plan 명령어에 -lock=false option을 추가하여 실행한다.

terraform plan -lock=false

2. process kill

내 PC에서 이전에 수행된 process로 발생한 문제라면 terraform process 목록을 조회한뒤 process를 kill한다.

3. unlock 수행

강제로 unlock을 수행한다.

terraform force-unlock ${LOCK_ID}

위 error message에도 나왔지만 추천하지 않는다. 이전에 관리되고 있던 state를 확실히 무시해도 되는 상황일때만 수행하는것이 좋겠다.

0개의 댓글