Terraform Backends defines where Terraform's state snapshots are stored. Amazon S3 Backend stores the Terraform state as a given key in a given bucket on Amazon S3. This backend also supports state locking and consistency checking via Dynamo DB.
This is an example Terraform bootstrap script.
-
Modify
terraform.tfvars
. Make sure to provide desired values for:region
--> Target AWS Regions3_statebucket_name
--> Globally unique Amazon S3 bucket namedynamo_locktable_name
--> DynamoDB table name used for state locking
-
Modify
provider.tf
. Comment out thebackend
section.# backend "s3" { # ... # }
- cd to
bootstrap
folder. - Execute
terraform init
to initialize Terraform. - Execute
terraform plan
and verify the changes. - Execute
terraform apply
and approve the changes. - Switch to using Amazon S3 backend by un-commenting the
backend "S3"
section withinprovider.tf
- Modify
backend "S3"
section with correct values forregion
,bucket
,dynamodb_table
, andkey
. Use provided values as guidance.
- Modify
- Execute
terraform init
to re-initialize Terraform with new backend.- This will ask you to move your state to Amazon S3. Enter 'yes'.
- Once you have your Terraform state on Amazon S3, you can continue to make updates to bootstrap as needed, using the Amazon S3 as backend.
Name | Version |
---|---|
terraform | >= v1.1.9 |
aws | >= 4.13.0 |
No providers.
Name | Source | Version |
---|---|---|
bootstrap | ../modules/aws/bootstrap | n/a |
No resources.
Name | Description | Type | Default | Required |
---|---|---|---|---|
region | The AWS Region e.g. us-east-1 for the environment | string |
n/a | yes |
s3_statebucket_name | Globally unique name of the S3 bucket used for storing Terraform state files. | string |
n/a | yes |
tags | Mandatory tags for the resources | map(string) |
n/a | yes |
dynamo_locktable_name | Name of the DynamoDB table used for Terraform state locking. | string |
"" |
no |
Name | Description |
---|---|
backend_config | Define the backend configuration with following values |