• Using MinIO instead of a S3 bucket

    4 min read

    Since MinIO is an object storage server that implements the same public API as Amazon S3, can it be used to store terraform's state?


  • DynamoDB table for state locking and consistency checking on terraform

    2 min read

    When using a remote terraform state with S3, it is recomended to use a dynamoDB table for:

    • State locking: Ensures the terrafrom state it is not being modified by two threads at the same time
    • Consistency checking: Makes sure that that terraform it's being used it is the one that it is expected to be used

    For example:

    terraform {
      backend "s3" {
        bucket         = "infra-tfstate"
        key            = "jenkins/terraform.tfstate"
        region         = "eu-west-1"
        dynamodb_table = "terraform_locks"


  • Unlocking remote terraform state

    2 min read

    When you are working with the terraform state on a S3 bucket if you cancel an operation you might end up with the lock not being released so you won't be able to perform any more changes (not even plan a new change!)

    $ terraform plan
    Acquiring state lock. This may take a few moments...
    Error: Error locking state: Error acquiring the state lock: ConditionalCheckFailedException: The conditional request failed
    Lock Info:
      ID:        **6dec3c3f-dea3-4232-60f5-5fe0647a41f6**
      Path:      demo/terraform.tfstate
      Operation: OperationTypePlan
      Who:       jordi.prats@pet2cattle.com
      Version:   0.12.29
      Created:   2020-12-21 21:26:08.295375151 +0000 UTC
    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.



From pet to cattle
Treat your kubernetes clusters like cattle, not pets