[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)
[![GitHub](https://img.shields.io/github/license/pepperize/cdk-terraform-state-backend?style=flat-square)](https://github.com/pepperize/cdk-terraform-state-backend/blob/main/LICENSE)
[![npm (scoped)](https://img.shields.io/npm/v/@pepperize/cdk-terraform-state-backend?style=flat-square)](https://www.npmjs.com/package/@pepperize/cdk-terraform-state-backend)
[![PyPI](https://img.shields.io/pypi/v/pepperize.cdk-terraform-state-backend?style=flat-square)](https://pypi.org/project/pepperize.cdk-terraform-state-backend/)
[![Nuget](https://img.shields.io/nuget/v/Pepperize.CDK.TerraformStateBackend?style=flat-square)](https://www.nuget.org/packages/Pepperize.CDK.TerraformStateBackend/)
[![Sonatype Nexus (Releases)](https://img.shields.io/nexus/r/com.pepperize/cdk-terraform-state-backend?server=https%3A%2F%2Fs01.oss.sonatype.org%2F&style=flat-square)](https://s01.oss.sonatype.org/content/repositories/releases/com/pepperize/cdk-terraform-state-backend/)
[![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/pepperize/cdk-terraform-state-backend/release.yml?banch=main&label=release&style=flat-square)](https://github.com/pepperize/cdk-terraform-state-backend/actions/workflows/release.yml)
[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/pepperize/cdk-terraform-state-backend?sort=semver&style=flat-square)](https://github.com/pepperize/cdk-terraform-state-backend/releases)
# 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](https://www.terraform.io/docs/language/settings/backends/s3.html).
Terraform doesn't come shipped with a cli command bootstrapping the account for [State Storage and Locking](https://www.terraform.io/docs/language/state/backends.html)
like [AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/cli.html#cli-bootstrap) 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](https://github.com/pepperize/cdk-terraform-state-backend/blob/main/API.md)
## Install
### TypeScript
```shell
npm install @pepperize/cdk-terraform-state-backend
```
or
```shell
yarn add @pepperize/cdk-terraform-state-backend
```
### Python
```shell
pip install pepperize.cdk-terraform-state-backend
```
### C# / .Net
```
dotnet add package Pepperize.CDK.TerraformStateBackend
```
### Java
```xml
<dependency>
<groupId>com.pepperize</groupId>
<artifactId>cdk-terraform-state-backend</artifactId>
<version>${cdkTerraformStateBackend.version}</version>
</dependency>
```
## Example
```python
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",
});
```
```hcl
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](https://www.terraform.io/docs/language/settings/backends/s3.html#example-configuration)
Raw data
{
"_id": null,
"home_page": "https://github.com/pepperize/cdk-terraform-state-backend.git",
"name": "pepperize.cdk-terraform-state-backend",
"maintainer": "",
"docs_url": null,
"requires_python": "~=3.8",
"maintainer_email": "",
"keywords": "",
"author": "Patrick Florek<patrick.florek@gmail.com>",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/3c/1a/9319cfefb6d2b26ed139aece5b2c58c5ff2ac1616ef028ea8dbb476d296d/pepperize.cdk-terraform-state-backend-0.1.888.tar.gz",
"platform": null,
"description": "[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)\n[![GitHub](https://img.shields.io/github/license/pepperize/cdk-terraform-state-backend?style=flat-square)](https://github.com/pepperize/cdk-terraform-state-backend/blob/main/LICENSE)\n[![npm (scoped)](https://img.shields.io/npm/v/@pepperize/cdk-terraform-state-backend?style=flat-square)](https://www.npmjs.com/package/@pepperize/cdk-terraform-state-backend)\n[![PyPI](https://img.shields.io/pypi/v/pepperize.cdk-terraform-state-backend?style=flat-square)](https://pypi.org/project/pepperize.cdk-terraform-state-backend/)\n[![Nuget](https://img.shields.io/nuget/v/Pepperize.CDK.TerraformStateBackend?style=flat-square)](https://www.nuget.org/packages/Pepperize.CDK.TerraformStateBackend/)\n[![Sonatype Nexus (Releases)](https://img.shields.io/nexus/r/com.pepperize/cdk-terraform-state-backend?server=https%3A%2F%2Fs01.oss.sonatype.org%2F&style=flat-square)](https://s01.oss.sonatype.org/content/repositories/releases/com/pepperize/cdk-terraform-state-backend/)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/pepperize/cdk-terraform-state-backend/release.yml?banch=main&label=release&style=flat-square)](https://github.com/pepperize/cdk-terraform-state-backend/actions/workflows/release.yml)\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/pepperize/cdk-terraform-state-backend?sort=semver&style=flat-square)](https://github.com/pepperize/cdk-terraform-state-backend/releases)\n\n# AWS CDK Terraform state backend\n\nThis project provides a CDK construct bootstrapping an AWS account with a S3 Bucket and a DynamoDB table as [Terraform state backend](https://www.terraform.io/docs/language/settings/backends/s3.html).\n\nTerraform doesn't come shipped with a cli command bootstrapping the account for [State Storage and Locking](https://www.terraform.io/docs/language/state/backends.html)\nlike [AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/cli.html#cli-bootstrap) provides with `cdk bootstrap`.\nWhile bootstrapping the AWS Organization and Accounts this construct may be used to create:\n\n* S3 Bucket with blocked public access, versioned, encrypted by SSE-S3\n* DynamoDB Table with pay per request, continuous backups using point-in-time recovery, encrypted by AWS owned key\n* IAM Policy with read/write access to the created S3 Bucket and DynamoDB Table\n\nSee [API.md](https://github.com/pepperize/cdk-terraform-state-backend/blob/main/API.md)\n\n## Install\n\n### TypeScript\n\n```shell\nnpm install @pepperize/cdk-terraform-state-backend\n```\n\nor\n\n```shell\nyarn add @pepperize/cdk-terraform-state-backend\n```\n\n### Python\n\n```shell\npip install pepperize.cdk-terraform-state-backend\n```\n\n### C# / .Net\n\n```\ndotnet add package Pepperize.CDK.TerraformStateBackend\n```\n\n### Java\n\n```xml\n<dependency>\n <groupId>com.pepperize</groupId>\n <artifactId>cdk-terraform-state-backend</artifactId>\n <version>${cdkTerraformStateBackend.version}</version>\n</dependency>\n```\n\n## Example\n\n```python\nimport { App, Stack } from \"@aws-cdk/core\";\nimport { TerraformStateBackend } from \"@pepperize/cdk-terraform-state-backend\";\n\nconst app = new App();\nconst stack = new Stack(app, \"stack\", {\n env: {\n account: \"123456789012\",\n region: \"us-east-1\",\n },\n});\n\n// When\nnew TerraformStateBackend(stack, \"TerraformStateBackend\", {\n bucketName: \"terraform-state-backend\",\n tableName: \"terraform-state-backend\",\n});\n```\n\n```hcl\nterraform {\n backend \"s3\" {\n bucket = \"terraform-state-backend-123456789012-us-east-1\"\n dynamodb_table = \"terraform-state-backend-123456789012\"\n key = \"path/to/my/key\"\n region = \"us-east-1\"\n }\n}\n```\n\nSee [Terraform S3 Example Configuration](https://www.terraform.io/docs/language/settings/backends/s3.html#example-configuration)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "This project provides a CDK construct bootstrapping an AWS account with a S3 Bucket and a DynamoDB table as terraform state backend.",
"version": "0.1.888",
"project_urls": {
"Homepage": "https://github.com/pepperize/cdk-terraform-state-backend.git",
"Source": "https://github.com/pepperize/cdk-terraform-state-backend.git"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9654ae94237845268bcacb18a46af78d27143b1a34983a13845a19564d6ccac7",
"md5": "ac6dd01f5e39b8d7275b3adbbc029ac0",
"sha256": "18d056531c05bfaa874a2ffa672ae04cecff6f0da42074e58a7972e3fb53172c"
},
"downloads": -1,
"filename": "pepperize.cdk_terraform_state_backend-0.1.888-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ac6dd01f5e39b8d7275b3adbbc029ac0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.8",
"size": 22834,
"upload_time": "2024-01-01T06:45:40",
"upload_time_iso_8601": "2024-01-01T06:45:40.322982Z",
"url": "https://files.pythonhosted.org/packages/96/54/ae94237845268bcacb18a46af78d27143b1a34983a13845a19564d6ccac7/pepperize.cdk_terraform_state_backend-0.1.888-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3c1a9319cfefb6d2b26ed139aece5b2c58c5ff2ac1616ef028ea8dbb476d296d",
"md5": "b739affb86e421c21cb7c69f5a629b82",
"sha256": "fd3885c9788b15d059c356d137a73b8891d033b2520a374d8462713995bb2886"
},
"downloads": -1,
"filename": "pepperize.cdk-terraform-state-backend-0.1.888.tar.gz",
"has_sig": false,
"md5_digest": "b739affb86e421c21cb7c69f5a629b82",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.8",
"size": 21840,
"upload_time": "2024-01-01T06:45:48",
"upload_time_iso_8601": "2024-01-01T06:45:48.707471Z",
"url": "https://files.pythonhosted.org/packages/3c/1a/9319cfefb6d2b26ed139aece5b2c58c5ff2ac1616ef028ea8dbb476d296d/pepperize.cdk-terraform-state-backend-0.1.888.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-01 06:45:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pepperize",
"github_project": "cdk-terraform-state-backend",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pepperize.cdk-terraform-state-backend"
}