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

File details

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

File metadata

File hashes

Hashes for pepperize.cdk-terraform-state-backend-0.1.888.tar.gz
Algorithm Hash digest
SHA256 fd3885c9788b15d059c356d137a73b8891d033b2520a374d8462713995bb2886
MD5 b739affb86e421c21cb7c69f5a629b82
BLAKE2b-256 3c1a9319cfefb6d2b26ed139aece5b2c58c5ff2ac1616ef028ea8dbb476d296d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pepperize.cdk_terraform_state_backend-0.1.888-py3-none-any.whl
Algorithm Hash digest
SHA256 18d056531c05bfaa874a2ffa672ae04cecff6f0da42074e58a7972e3fb53172c
MD5 ac6dd01f5e39b8d7275b3adbbc029ac0
BLAKE2b-256 9654ae94237845268bcacb18a46af78d27143b1a34983a13845a19564d6ccac7

See more details on using hashes here.

Supported by

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