Skip to main content

This project provides a CDK construct bootstrapping an AWS account with a S3 Bucket and a DynamoDB table as terraform state backend.

Project description

PRs Welcome GitHub npm (scoped) PyPI Nuget Sonatype Nexus (Releases) GitHub Workflow Status (branch) GitHub release (latest SemVer)

AWS CDK Terraform state backend

This project provides a CDK construct bootstrapping an AWS account with a S3 Bucket and a DynamoDB table as Terraform state backend.

Terraform doesn't come shipped with a cli command bootstrapping the account for State Storage and Locking like AWS CDK provides with cdk bootstrap. While bootstrapping the AWS Organization and Accounts this construct may be used to create:

  • S3 Bucket with blocked public access, versioned, encrypted by SSE-S3
  • DynamoDB Table with pay per request, continuous backups using point-in-time recovery, encrypted by AWS owned key
  • IAM Policy with read/write access to the created S3 Bucket and DynamoDB Table

See API.md

Install

TypeScript

npm install @pepperize/cdk-terraform-state-backend

or

yarn add @pepperize/cdk-terraform-state-backend

Python

pip install pepperize.cdk-terraform-state-backend

C# / .Net

dotnet add package Pepperize.CDK.TerraformStateBackend

Java

<dependency>
  <groupId>com.pepperize</groupId>
  <artifactId>cdk-terraform-state-backend</artifactId>
  <version>${cdkTerraformStateBackend.version}</version>
</dependency>

Example

import { App, Stack } from "@aws-cdk/core";
import { TerraformStateBackend } from "@pepperize/cdk-terraform-state-backend";

const app = new App();
const stack = new Stack(app, "stack", {
  env: {
    account: "123456789012",
    region: "us-east-1",
  },
});

// When
new TerraformStateBackend(stack, "TerraformStateBackend", {
  bucketName: "terraform-state-backend",
  tableName: "terraform-state-backend",
});
terraform {
  backend "s3" {
    bucket = "terraform-state-backend-123456789012-us-east-1"
    dynamodb_table = "terraform-state-backend-123456789012"
    key = "path/to/my/key"
    region = "us-east-1"
  }
}

See Terraform S3 Example Configuration

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file pepperize.cdk-terraform-state-backend-0.1.721.tar.gz.

File metadata

File hashes

Hashes for pepperize.cdk-terraform-state-backend-0.1.721.tar.gz
Algorithm Hash digest
SHA256 0185aed2b3213a5fd54bdfa5848fa1a1e5ab4e7a45789d97ad9515f9579ed44b
MD5 2922c47f57b6130edb1be3490f064154
BLAKE2b-256 b731988d9872fe754f8dbc6f4caaededcbfb0f5d1869c1c76b4684cd7381d691

See more details on using hashes here.

File details

Details for the file pepperize.cdk_terraform_state_backend-0.1.721-py3-none-any.whl.

File metadata

File hashes

Hashes for pepperize.cdk_terraform_state_backend-0.1.721-py3-none-any.whl
Algorithm Hash digest
SHA256 4cf2d2a68fb31a6343821723cc6455642f25203fa91e93a05ae495fa8d427442
MD5 50b2200df49c31c5525f9989e48002d5
BLAKE2b-256 1fb1017557dadcbfb165ac821dd96c85ef72c9b9086c12c4905ed6cd04a2c228

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page