Terraform CDK(CDKTF) create aws s3 bucket
since too many company need to know Terraform this tools, so i want to try Terraform CDK, then i record this experience
Before link, please read before the link to learn some idea
Here is CDK for terraform installation doc
Install CDK for Terraform and run a quick start demo | Terraform | HashiCorp Developer
i used homebrew to install Terraform cli and cdktf, because cdktf need to call terraform, so i used same method to install two tools
Gen the new Project use like awscdk command
cdktf init --template="typescript" --providers="aws@~>4.0"
Go to the main.ts(i used typescript) and rewrite the code
import {Construct} from "constructs"; import {App, TerraformOutput, TerraformStack} from "cdktf"; import {AwsProvider} from "@cdktf/provider-aws/lib/provider"; import {S3Bucket} from "@cdktf/provider-aws/lib/s3-bucket"; class MyStack extends TerraformStack { constructor(scope: Construct, id: string) { super(scope, id); new AwsProvider(this, "AWS", { region: "us-west-1", accessKey: "", // Please add your aws accessKey secretKey: "" // Please add your aws secretKey }); const S3_bucket = new S3Bucket(this, 'my-bucket', { bucket: 'happy170066982', serverSideEncryptionConfiguration: { rule: { applyServerSideEncryptionByDefault: { sseAlgorithm: 'AES256', }, }, } }); new TerraformOutput(this, 's3-bucket-arn', { value: S3_bucket.arn, }); } } const app = new App(); new MyStack(app, "learn-cdktf"); app.synth();
After please deploy
cdktf deploy --auto-approve
here is the progress and will be change item
then, it successfully deployed to aws
Let us check in the cloud
let’s go directory and read ./cdktf.out/stacks/learn-cdktf/cdk.tf.json
here is my cdktf.json
{ "//": { "metadata": { "backend": "local", "stackName": "learn-cdktf", "version": "0.17.2" }, "outputs": { "learn-cdktf": { "s3-bucket-arn": "s3-bucket-arn" } } }, "output": { "s3-bucket-arn": { "value": "${aws_s3_bucket.my-bucket.arn}" } }, "provider": { "aws": [ { "access_key": "it should be your access_key", "region": "us-west-1", "secret_key": "it should be your secret_key" } ] }, "resource": { "aws_s3_bucket": { "my-bucket": { "//": { "metadata": { "path": "learn-cdktf/my-bucket", "uniqueId": "my-bucket" } }, "bucket": "happy170066982", "server_side_encryption_configuration": { "rule": { "apply_server_side_encryption_by_default": { "sse_algorithm": "AES256" } } } } } }, "terraform": { "backend": { "local": { "path": ".../learn-cdktf/terraform.learn-cdktf.tfstate" } }, "required_providers": { "aws": { "source": "aws", "version": "5.9.0" } } } }
I think all to know what is this, it is terraform code, it will help you to generate origin terraform code, so i think it can help some people to overcome terraform this tools
This tools logic more like origin terraform , not like too much AWSCDK logic, in my learning this tools, is little bit hard
Welcome all provide some comment to improve the doc
Top comments (0)