From 1471ce0dac91524a53ff269c3b2e7bc642b9ce57 Mon Sep 17 00:00:00 2001 From: Doris <107772913+Doris-Siu@users.noreply.github.com> Date: Sun, 3 Mar 2024 18:13:31 +0000 Subject: [PATCH] create terraform s3 --- .DS_Store | Bin 8196 -> 8196 bytes .gitignore | 3 +- client/.DS_Store | Bin 0 -> 6148 bytes terraform-s3/.gitignore | 34 +++++++++++++ terraform-s3/.terraform.lock.hcl | 25 +++++++++ terraform-s3/main.tf | 85 +++++++++++++++++++++++++++++++ terraform-s3/variables.tf | 10 ++++ 7 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 client/.DS_Store create mode 100644 terraform-s3/.gitignore create mode 100644 terraform-s3/.terraform.lock.hcl create mode 100644 terraform-s3/main.tf create mode 100644 terraform-s3/variables.tf diff --git a/.DS_Store b/.DS_Store index 3efedacf2610c90531e4f967be6f5f0fd7aad266..154aa6fad1672cbc9447b5257e460c96b047a41f 100644 GIT binary patch delta 39 vcmZp1XmOa}&nUPtU^hRb;AS3y0w&Is;^ds9{QMlo%{fBr7&jY>T;v7-`Tq>6 delta 34 qcmZp1XmOa}&nU1lU^hRbz-AtS0;bJVh2}ACmg0HKyqR6%FFOFkBMUA7 diff --git a/.gitignore b/.gitignore index 1dcef2d9f2..190fbf31ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -.env \ No newline at end of file +.env +client/build \ No newline at end of file diff --git a/client/.DS_Store b/client/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..16d875f048b003f89438f610b00ecfc05d69253a GIT binary patch literal 6148 zcmeH~J&pn~427Thk&tL8DbsL(y+MTF1YBUnPJ=WO#fm;h=h<(?J6KYLuU74ZjM<6h0 J5P^Rs@C1L66M6su literal 0 HcmV?d00001 diff --git a/terraform-s3/.gitignore b/terraform-s3/.gitignore new file mode 100644 index 0000000000..dc825268a9 --- /dev/null +++ b/terraform-s3/.gitignore @@ -0,0 +1,34 @@ +# Local .terraform directories +**/.terraform/* + +# .tfstate files +*.tfstate +*.tfstate.* + +# Crash log files +crash.log +crash.*.log + +# Exclude all .tfvars files, which are likely to contain sensitive data, such as +# password, private keys, and other secrets. These should not be part of version +# control as they are data points which are potentially sensitive and subject +# to change depending on the environment. +*.tfvars +*.tfvars.json + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json + +# Include override files you do wish to add to version control using negated pattern +# !example_override.tf + +# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan +# example: *tfplan* + +# Ignore CLI configuration files +.terraformrc +terraform.rc \ No newline at end of file diff --git a/terraform-s3/.terraform.lock.hcl b/terraform-s3/.terraform.lock.hcl new file mode 100644 index 0000000000..31563677d1 --- /dev/null +++ b/terraform-s3/.terraform.lock.hcl @@ -0,0 +1,25 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/aws" { + version = "5.39.0" + constraints = "~> 5.0" + hashes = [ + "h1:1/IdEllzG5FDg+voHrUnYvyoOd321v/ihzWKtNh62SI=", + "zh:01e405306470ed784bc9d38dbaeff394bd2c0f7d58e5592c5d0165c87d84e4b0", + "zh:0328fbd42a91e50601318d2c364a80ebd3b4e5755c85df6fafd2fed80bc54598", + "zh:042420e08d1ef1e2ed51c394539a6db27e031bedb9eaa19db9ccaf9fa93b9b36", + "zh:47dee460b2c06676e16f5070fff71e5e9eb24b74bcd7b4f7b53eea8ebd3c972f", + "zh:49c34f21a05bf5150e3a0a87c997fcd831ae81e3f2df86191e2fdd231525b585", + "zh:4d5a98726216e260296bdc13e562179a743ef4738b65154da697c2d9e9eb5c9b", + "zh:7fb08af13c868d8d20519b373eeb6707a0cea078495123e28e71727993474f53", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:a57e7e44f79991e55be02f2b147a433b5a2690188be0510409b79e9b00e37009", + "zh:aeeb120cd6245f67ae3e52e13005c2dc1f091787564dd6b39ee6c05b2c239c53", + "zh:b5d39c6e55d0355f9fd93a802355166bd27edaf9acb753b190562474447674b2", + "zh:cfcc1922b380db5f90fd5ffc1e49fb9f316e6c41de4603f65b05d20ace72e15e", + "zh:d221d8cea09229743d2647944c0420a8e9e5d7e3ff088b30cbce85a8b051dcab", + "zh:dccca0239df6d39686b0f0947040b3c0e1270a4bab268c402b742cf5a7759296", + "zh:ef0564fb70e8210db9bf472f662e093a1a1f204a1c1cb46467231be1a78882f3", + ] +} diff --git a/terraform-s3/main.tf b/terraform-s3/main.tf new file mode 100644 index 0000000000..9f31c4cd38 --- /dev/null +++ b/terraform-s3/main.tf @@ -0,0 +1,85 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 5.0" + } + } +} + +provider "aws" { + region = "eu-west-2" + access_key = var.aws_access_key_id + secret_key = var.aws_secret_access_key +} + +module "template_files" { + source = "hashicorp/dir/template" + base_dir = "${path.module}/../client/build" +} + +#create a s3 bucket, attach bucket policy +resource "aws_s3_bucket" "bucket" { + bucket = "my-video-app" + force_destroy = true +} + +resource "aws_s3_bucket_website_configuration" "hosting_bucket_website_configuration" { + bucket = aws_s3_bucket.bucket.id + index_document { + suffix = "index.html" + } + error_document { + key = "error.html" + } +} +#enable public acl +resource "aws_s3_bucket_ownership_controls" "bucket" { + bucket = aws_s3_bucket.bucket.id + rule { + object_ownership = "BucketOwnerPreferred" + } +} + +resource "aws_s3_bucket_public_access_block" "bucket" { + bucket = aws_s3_bucket.bucket.id + + block_public_acls = false + block_public_policy = false + ignore_public_acls = false + restrict_public_buckets = false +} + +resource "aws_s3_bucket_policy" "my_bucket_policy" { + bucket = aws_s3_bucket.bucket.id + + policy = <