From 499a4f848076e92cc1a1ea6c2e2c497ce3f03be8 Mon Sep 17 00:00:00 2001 From: Emanuele Date: Sat, 25 May 2024 15:03:17 +0200 Subject: [PATCH] Multi ENV deploy working on dev and prod --- .gitignore | 4 +- .terraform.lock.hcl | 32 +- deploy-dev.sh | 8 + deploy-prod.sh | 8 + master.tf | 35 +- plans/dev.plan | Bin 0 -> 20680 bytes plans/prod.plan | Bin 0 -> 21200 bytes terraform.tfstate.d/dev/terraform.tfstate | 1183 +++++++++++++++++ .../dev/terraform.tfstate.backup | 1161 ++++++++++++++++ terraform.tfstate.d/prod/terraform.tfstate | 1161 ++++++++++++++++ .../prod/terraform.tfstate.backup | 1139 ++++++++++++++++ variable.tf | 9 + 12 files changed, 4707 insertions(+), 33 deletions(-) create mode 100755 deploy-dev.sh create mode 100755 deploy-prod.sh create mode 100644 plans/dev.plan create mode 100644 plans/prod.plan create mode 100644 terraform.tfstate.d/dev/terraform.tfstate create mode 100644 terraform.tfstate.d/dev/terraform.tfstate.backup create mode 100644 terraform.tfstate.d/prod/terraform.tfstate create mode 100644 terraform.tfstate.d/prod/terraform.tfstate.backup create mode 100644 variable.tf diff --git a/.gitignore b/.gitignore index f7ca195..6bb73cb 100644 --- a/.gitignore +++ b/.gitignore @@ -165,8 +165,8 @@ cython_debug/ **/.terraform/* # .tfstate files -*.tfstate -*.tfstate.* +#*.tfstate +#*.tfstate.* # Crash log files crash.log diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl index e22665b..7d42850 100644 --- a/.terraform.lock.hcl +++ b/.terraform.lock.hcl @@ -21,24 +21,24 @@ provider "registry.terraform.io/hashicorp/archive" { } provider "registry.terraform.io/hashicorp/aws" { - version = "5.45.0" + version = "5.51.1" constraints = "~> 5.0" hashes = [ - "h1:4Vgk51R7iTY1oczaTQDG+DkA9nE8TmjlUtecqXX6qDU=", - "zh:1379bcf45aef3d486ee18b4f767bfecd40a0056510d26107f388be3d7994c368", - "zh:1615a6f5495acfb3a0cb72324587261dd4d72711a3cc51aff13167b14531501e", - "zh:18b69a0f33f8b1862fbd3f200756b7e83e087b73687085f2cf9c7da4c318e3e6", - "zh:2c5e7aecd197bc3d3b19290bad8cf4c390c2c6a77bb165da4e11f53f2dfe2e54", - "zh:3794da9bef97596e3bc60e12cdd915bda5ec2ed62cd1cd93723d58b4981905fe", - "zh:40a5e45ed91801f83db76dffd467dcf425ea2ca8642327cf01119601cb86021c", - "zh:4abfc3f53d0256a7d5d1fa5e931e4601b02db3d1da28f452341d3823d0518f1a", - "zh:4eb0e98078f79aeb06b5ff6115286dc2135d12a80287885698d04036425494a2", - "zh:75470efbadea4a8d783642497acaeec5077fc4a7f3df3340defeaa1c7de29bf7", - "zh:8861a0b4891d5fa2fa7142f236ae613cea966c45b5472e3915a4ac3abcbaf487", - "zh:8bf6f21cd9390b742ca0b4393fde92616ca9e6553fb75003a0999006ad233d35", + "h1:ESfxP2tCO6IZldSQnepXmIm+x+VtaQt/bKgGjYE+0BY=", + "zh:03d524b70ab300d90dc4dccad0c28b18d797b8986722b7a93e40a41500450eaa", + "zh:04dbcb7ab52181a784877c409f6c882df34bda686d8c884d511ebd4abf493f0c", + "zh:2b068f7838e0f3677829258df05d8b9d73fe6434a1a809f8710956cc1c01ea03", + "zh:41a4b1e4adbf7c90015ebff17a719fc08133b8a2c4dcefd2fa281552126e59a8", + "zh:48b1adf57f695a72c88c598f99912171ef7067638fd63fb0c6ad3fa397b3f7c3", + "zh:5c2fb26ecb83adac90d06dcf5f97edbc944824c2821816b1653e1a2b9d37b3c4", + "zh:93df05f53702df829d9b9335e559ad8b313808dbd2fad8b2ff14f176732e693d", "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", - "zh:ad73008a044e75d337acda910fb54d8b81a366873c8a413fec1291034899a814", - "zh:bf261713b0b8bebfe8c199291365b87d9043849f28a2dc764bafdde73ae43693", - "zh:da3bafa1fd830be418dfcc730e85085fe67c0d415c066716f2ac350a2306f40a", + "zh:b5da39898602e44551b56e2803a42d92ea7115e35b1792efbf6649da37ef597b", + "zh:b7ab7f743f864ed8d479a7cb04fd3ce00c376f867ee5b53c4c1acaef6e286c54", + "zh:e7e7b2d8ee486415481a25ac7bdded20bd2897d5dd0790741798f31935b9528d", + "zh:e8008e3f5ef560fd9004d1ed1738f0f53e99b0ce961d967e95fc7c02e5954e4e", + "zh:f1296f648b8608ffa930b52519b00ed01eebedde9fdaf94205b365536e6c3916", + "zh:f8539960fd978a54990740ee984c6f7f743c9c32c7734e2601e92abfe54367e9", + "zh:fd182e6e20bb52982752a5d8c4b16887565f413a9d50d9d394d2c06eea8a195e", ] } diff --git a/deploy-dev.sh b/deploy-dev.sh new file mode 100755 index 0000000..7c44ca8 --- /dev/null +++ b/deploy-dev.sh @@ -0,0 +1,8 @@ +# Select Development workspace +terraform workspace select dev + +# Plan the current execution with variables and verify +terraform plan -var-file dev.tfvars -out plans/dev.plan + +# Apply Configuration +terraform apply plans/dev.plan diff --git a/deploy-prod.sh b/deploy-prod.sh new file mode 100755 index 0000000..d8f8e2c --- /dev/null +++ b/deploy-prod.sh @@ -0,0 +1,8 @@ +# Select Development workspace +terraform workspace select prod + +# Plan the current execution with variables and verify +terraform plan -var-file prod.tfvars -out plans/prod.plan + +# Apply Configuration +terraform apply plans/prod.plan diff --git a/master.tf b/master.tf index 365abf1..69093a1 100644 --- a/master.tf +++ b/master.tf @@ -9,24 +9,24 @@ terraform { # Configure the AWS Provider provider "aws" { - region = "eu-west-1" + region = var.region profile = "StandOut_Terraform" } # Create a VPC resource "aws_vpc" "vpc_standout" { - cidr_block = "10.0.0.0/16" + cidr_block = var.env == "dev" ? "10.0.0.0/16" : "10.10.0.0/16" } # create an s3 bucket for config resource "aws_s3_bucket" "s3_standout_config" { - bucket = "standout-config" + bucket = "standout-config-${var.env}" force_destroy = false } # create an s3 bucket for data resource "aws_s3_bucket" "s3_standout" { - bucket = "standout-data" + bucket = "standout-data-${var.env}" force_destroy = true } @@ -135,30 +135,35 @@ data "aws_iam_policy_document" "lambda_role" { } resource "aws_iam_role" "iam_for_lambda" { - name = "iam_for_lambda" + name = "iam_for_lambda-${var.env}" assume_role_policy = data.aws_iam_policy_document.lambda_role.json } +resource "aws_iam_role_policy_attachment" "iam_for_lambda_allow_logs" { + role = aws_iam_role.iam_for_lambda.name + policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" +} + data "archive_file" "lambda_standout_code" { type = "zip" source_dir = "./lambda_redirect" - output_path = "./lambda_zip/standout_lambda_redirect.zip" + output_path = "./lambda_zip/standout_lambda_redirect-${var.env}.zip" } data "archive_file" "lambda_standout_config_code" { type = "zip" source_dir = "./lambda_config" - output_path = "./lambda_zip/standout_lambda_config.zip" + output_path = "./lambda_zip/standout_lambda_config-${var.env}.zip" } data "archive_file" "lambda_layer_deps" { type = "zip" source_dir = "./lambda_layer" - output_path = "./lambda_zip/lambda_layer.zip" + output_path = "./lambda_zip/lambda_layer-${var.env}.zip" } resource "aws_lambda_layer_version" "lambda_layer" { - filename = "./lambda_zip/lambda_layer.zip" + filename = "./lambda_zip/lambda_layer-${var.env}.zip" layer_name = "lambda_deps" compatible_runtimes = ["python3.12"] } @@ -166,8 +171,8 @@ resource "aws_lambda_layer_version" "lambda_layer" { resource "aws_lambda_function" "lambda_standout_redirect" { # If the file is not in the current working directory you will need to include a # path.module in the filename. - filename = "./lambda_zip/standout_lambda_redirect.zip" - function_name = "standout-redirect" + filename = "./lambda_zip/standout_lambda_redirect-${var.env}.zip" + function_name = "standout-redirect-${var.env}" role = aws_iam_role.iam_for_lambda.arn handler = "lambda_redirect.lambda_handler" @@ -190,8 +195,8 @@ resource "aws_lambda_function" "lambda_standout_redirect" { resource "aws_lambda_function" "lambda_standout_config" { # If the file is not in the current working directory you will need to include a # path.module in the filename. - filename = "./lambda_zip/standout_lambda_config.zip" - function_name = "standout-config" + filename = "./lambda_zip/standout_lambda_config-${var.env}.zip" + function_name = "standout-config-${var.env}" role = aws_iam_role.iam_for_lambda.arn handler = "lambda_config.lambda_handler" @@ -233,7 +238,7 @@ resource "aws_s3_bucket_notification" "bucket_notification" { # create API gateway for lambda triger and connect resource "aws_apigatewayv2_api" "api_standout_gateway" { - name = "standout-api" + name = "standout-api-${var.env}" protocol_type = "HTTP" } @@ -251,7 +256,7 @@ resource "aws_apigatewayv2_integration" "api_standout_integration" { resource "aws_apigatewayv2_stage" "api_standout_lambda_stage" { api_id = aws_apigatewayv2_api.api_standout_gateway.id - name = "dev" + name = var.env auto_deploy = true } diff --git a/plans/dev.plan b/plans/dev.plan new file mode 100644 index 0000000000000000000000000000000000000000..fdc066e2654d1bf9513d3a7d698d84d69d1e9183 GIT binary patch literal 20680 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 literal 0 HcmV?d00001 diff --git a/plans/prod.plan b/plans/prod.plan new file mode 100644 index 0000000000000000000000000000000000000000..000f365abf88ffd953bd509ea004a3686f73578d GIT binary patch literal 21200 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 literal 0 HcmV?d00001 diff --git a/terraform.tfstate.d/dev/terraform.tfstate b/terraform.tfstate.d/dev/terraform.tfstate new file mode 100644 index 0000000..67a6ba4 --- /dev/null +++ b/terraform.tfstate.d/dev/terraform.tfstate @@ -0,0 +1,1183 @@ +{ + "version": 4, + "terraform_version": "1.8.3", + "serial": 86, + "lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8", + "outputs": {}, + "resources": [ + { + "mode": "data", + "type": "archive_file", + "name": "lambda_layer_deps", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_base64sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "output_base64sha512": "PUsXQzofQAKQshK6yW9WuQRbTUbjdNjA+VBVJBTNgHr4lBhe4ZelmAnlisiQVM6uY36RD9CNRLD7aT/V8YVY5Q==", + "output_file_mode": null, + "output_md5": "f4f31334a8bc343ab1b8848f5fb96e9d", + "output_path": "./lambda_zip/lambda_layer-dev.zip", + "output_sha": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_sha256": "850678bd5833ced376067fa14c718a0d3039929f476eb6509ae9debe0b0f8406", + "output_sha512": "3d4b17433a1f400290b212bac96f56b9045b4d46e374d8c0f950552414cd807af894185ee197a59809e58ac89054ceae637e910fd08d44b0fb693fd5f18558e5", + "output_size": 3470735, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_layer", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_base64sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "output_base64sha512": "R+OeVTikvIPAsYIjKtRdZdFCZQWLp/PUtIvpTIwc726mIuccBlur53ethzlJezoXubQmtF9CEiUdjzsrfb3/pQ==", + "output_file_mode": null, + "output_md5": "6971a02ee30cd8591ded93920a6b994a", + "output_path": "./lambda_zip/standout_lambda_redirect-dev.zip", + "output_sha": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_sha256": "9a41356c2426097b20764a495f5cac7086c034b626716953c802f37f1d81a9b2", + "output_sha512": "47e39e5538a4bc83c0b182232ad45d65d14265058ba7f3d4b48be94c8c1cef6ea622e71c065babe777ad8739497b3a17b9b426b45f4212251d8f3b2b7dbdffa5", + "output_size": 51368, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_redirect", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_config_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_base64sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "output_base64sha512": "oUyZrUKNQPvZt3crReW69Vapq3IGvHD5hk617XXamv8G99f62CoJO1lsd07gaVlf5ln2EyPj+cQleaXg5w3JCg==", + "output_file_mode": null, + "output_md5": "e97ce8be22567986c9fcff5165b4afdb", + "output_path": "./lambda_zip/standout_lambda_config-dev.zip", + "output_sha": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_sha256": "edca42403d4b7fa403c123e4fde7426bc5c3651794bbbad186109a827a280227", + "output_sha512": "a14c99ad428d40fbd9b7772b45e5baf556a9ab7206bc70f9864eb5ed75da9aff06f7d7fad82a093b596c774ee069595fe659f61323e3f9c42579a5e0e70dc90a", + "output_size": 4639, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_config", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "lambda_role", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "2690255455", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"lambda.amazonaws.com\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"sts:AssumeRole\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "sts:AssumeRole" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "lambda.amazonaws.com" + ], + "type": "Service" + } + ], + "resources": [], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "867140593", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-data-dev/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-data-dev/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-data-dev/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_config_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "134226879", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-config-dev/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-config-dev/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-config-dev/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_api", + "name": "api_standout_gateway", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_endpoint": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com", + "api_key_selection_expression": "$request.header.x-api-key", + "arn": "arn:aws:apigateway:eu-west-1::/apis/sel2p8wy6c", + "body": null, + "cors_configuration": [], + "credentials_arn": null, + "description": "", + "disable_execute_api_endpoint": false, + "execution_arn": "arn:aws:execute-api:eu-west-1:654654203111:sel2p8wy6c", + "fail_on_warnings": null, + "id": "sel2p8wy6c", + "name": "standout-api-dev", + "protocol_type": "HTTP", + "route_key": null, + "route_selection_expression": "$request.method $request.path", + "tags": {}, + "tags_all": {}, + "target": null, + "version": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_integration", + "name": "api_standout_integration", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "sel2p8wy6c", + "connection_id": "", + "connection_type": "INTERNET", + "content_handling_strategy": "", + "credentials_arn": "", + "description": "Lambda example", + "id": "82x2elk", + "integration_method": "POST", + "integration_response_selection_expression": "", + "integration_subtype": "", + "integration_type": "AWS_PROXY", + "integration_uri": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev/invocations", + "passthrough_behavior": "", + "payload_format_version": "1.0", + "request_parameters": {}, + "request_templates": {}, + "response_parameters": [], + "template_selection_expression": "", + "timeout_milliseconds": 30000, + "tls_config": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_route", + "name": "api_standout_route", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "sel2p8wy6c", + "api_key_required": false, + "authorization_scopes": [], + "authorization_type": "NONE", + "authorizer_id": "", + "id": "q0f3982", + "model_selection_expression": "", + "operation_name": "", + "request_models": {}, + "request_parameter": [], + "route_key": "GET /api", + "route_response_selection_expression": "", + "target": "integrations/82x2elk" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_integration.api_standout_integration", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_stage", + "name": "api_standout_lambda_stage", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_log_settings": [], + "api_id": "sel2p8wy6c", + "arn": "arn:aws:apigateway:eu-west-1::/apis/sel2p8wy6c/stages/dev", + "auto_deploy": true, + "client_certificate_id": "", + "default_route_settings": [ + { + "data_trace_enabled": false, + "detailed_metrics_enabled": false, + "logging_level": "", + "throttling_burst_limit": 0, + "throttling_rate_limit": 0 + } + ], + "deployment_id": "5hzo6h", + "description": "", + "execution_arn": "arn:aws:execute-api:eu-west-1:654654203111:sel2p8wy6c/dev", + "id": "dev", + "invoke_url": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com/dev", + "name": "dev", + "route_settings": [], + "stage_variables": {}, + "tags": {}, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_role", + "name": "iam_for_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:iam::654654203111:role/iam_for_lambda-dev", + "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}],\"Version\":\"2012-10-17\"}", + "create_date": "2024-05-25T12:28:31Z", + "description": "", + "force_detach_policies": false, + "id": "iam_for_lambda-dev", + "inline_policy": [], + "managed_policy_arns": [], + "max_session_duration": 3600, + "name": "iam_for_lambda-dev", + "name_prefix": "", + "path": "/", + "permissions_boundary": "", + "tags": {}, + "tags_all": {}, + "unique_id": "AROAZQ3DOMTTRQMSNNGQF" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_role_policy_attachment", + "name": "iam_for_lambda_allow_logs", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "iam_for_lambda-dev-20240525125938547100000001", + "policy_arn": "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + "role": "iam_for_lambda-dev" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_iam_role.iam_for_lambda", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", + "code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-dev", + "BUCKET_DATA": "standout-data-dev", + "FUNCTION_URL": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com/dev" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_config-dev.zip", + "function_name": "standout-config-dev", + "handler": "lambda_config.lambda_handler", + "id": "standout-config-dev", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:28:52.179+0000", + "layers": [ + "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-config-dev", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-dev", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 4639, + "tags": {}, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_redirect", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev", + "code_sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-dev", + "BUCKET_DATA": "standout-data-dev" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_redirect-dev.zip", + "function_name": "standout-redirect-dev", + "handler": "lambda_redirect.lambda_handler", + "id": "standout-redirect-dev", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:28:45.157+0000", + "layers": [ + "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-redirect-dev", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-dev", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 51368, + "tags": {}, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_layer_version", + "name": "lambda_layer", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7", + "code_sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "compatible_architectures": [], + "compatible_runtimes": [ + "python3.12" + ], + "created_date": "2024-05-25T12:28:36.059+0000", + "description": "", + "filename": "./lambda_zip/lambda_layer-dev.zip", + "id": "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7", + "layer_arn": "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps", + "layer_name": "lambda_deps", + "license_info": "", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "source_code_hash": "", + "source_code_size": 3470735, + "version": "7" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "api_lambda_permission", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "standout-redirect-dev", + "function_url_auth_type": null, + "id": "AllowExecutionFromAPIGateway", + "principal": "apigateway.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:execute-api:eu-west-1:654654203111:sel2p8wy6c/*/*", + "statement_id": "AllowExecutionFromAPIGateway", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "lambda_config_s3_trigger_allow", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", + "function_url_auth_type": null, + "id": "AllowExecutionFromS3Bucket", + "principal": "s3.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:s3:::standout-data-dev", + "statement_id": "AllowExecutionFromS3Bucket", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-data-dev", + "bucket": "standout-data-dev", + "bucket_domain_name": "standout-data-dev.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-data-dev.s3.eu-west-1.amazonaws.com", + "cors_rule": [], + "force_destroy": true, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z1BKCTXD74EZPE", + "id": "standout-data-dev", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-data-dev/*\"}],\"Version\":\"2012-10-17\"}", + "region": "eu-west-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": {}, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-config-dev", + "bucket": "standout-config-dev", + "bucket_domain_name": "standout-config-dev.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-config-dev.s3.eu-west-1.amazonaws.com", + "cors_rule": [], + "force_destroy": false, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z1BKCTXD74EZPE", + "id": "standout-config-dev", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-config-dev/*\"}],\"Version\":\"2012-10-17\"}", + "region": "eu-west-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": {}, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_acl", + "name": "s3_standout_public_acl", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_control_policy": [ + { + "grant": [ + { + "grantee": [ + { + "display_name": "lisa", + "email_address": "", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "type": "CanonicalUser", + "uri": "" + } + ], + "permission": "FULL_CONTROL" + } + ], + "owner": [ + { + "display_name": "lisa", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802" + } + ] + } + ], + "acl": "public-read", + "bucket": "standout-data-dev", + "expected_bucket_owner": "", + "id": "standout-data-dev,public-read" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout", + "aws_s3_bucket_ownership_controls.s3_standout_ownership", + "aws_s3_bucket_public_access_block.s3_standout_public_access" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_notification", + "name": "bucket_notification", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-dev", + "eventbridge": false, + "id": "standout-data-dev", + "lambda_function": [ + { + "events": [ + "s3:ObjectCreated:*", + "s3:ObjectRemoved:*" + ], + "filter_prefix": "", + "filter_suffix": "", + "id": "tf-s3-lambda-20240525122853270300000001", + "lambda_function_arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev" + } + ], + "queue": [], + "topic": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_config_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-dev", + "id": "standout-config-dev", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-dev", + "id": "standout-data-dev", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "s3_standout_config_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-dev", + "id": "standout-config-dev", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-config-dev/*\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config", + "data.aws_iam_policy_document.s3_standout_config_allow_lambda" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "s3_standout_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-dev", + "id": "standout-data-dev", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-data-dev/*\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout", + "data.aws_iam_policy_document.s3_standout_allow_lambda" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_config_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-config-dev", + "id": "standout-config-dev", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-data-dev", + "id": "standout-data-dev", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_vpc", + "name": "vpc_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-1:654654203111:vpc/vpc-099af40f390d1e802", + "assign_generated_ipv6_cidr_block": false, + "cidr_block": "10.0.0.0/16", + "default_network_acl_id": "acl-041cbb8ac4bd93b39", + "default_route_table_id": "rtb-074010f113e505814", + "default_security_group_id": "sg-0759ed695320a6250", + "dhcp_options_id": "dopt-0408012a40d65503d", + "enable_dns_hostnames": false, + "enable_dns_support": true, + "enable_network_address_usage_metrics": false, + "id": "vpc-099af40f390d1e802", + "instance_tenancy": "default", + "ipv4_ipam_pool_id": null, + "ipv4_netmask_length": null, + "ipv6_association_id": "", + "ipv6_cidr_block": "", + "ipv6_cidr_block_network_border_group": "", + "ipv6_ipam_pool_id": "", + "ipv6_netmask_length": 0, + "main_route_table_id": "rtb-074010f113e505814", + "owner_id": "654654203111", + "tags": {}, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] + } + ], + "check_results": null +} diff --git a/terraform.tfstate.d/dev/terraform.tfstate.backup b/terraform.tfstate.d/dev/terraform.tfstate.backup new file mode 100644 index 0000000..5591189 --- /dev/null +++ b/terraform.tfstate.d/dev/terraform.tfstate.backup @@ -0,0 +1,1161 @@ +{ + "version": 4, + "terraform_version": "1.8.3", + "serial": 84, + "lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8", + "outputs": {}, + "resources": [ + { + "mode": "data", + "type": "archive_file", + "name": "lambda_layer_deps", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_base64sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "output_base64sha512": "PUsXQzofQAKQshK6yW9WuQRbTUbjdNjA+VBVJBTNgHr4lBhe4ZelmAnlisiQVM6uY36RD9CNRLD7aT/V8YVY5Q==", + "output_file_mode": null, + "output_md5": "f4f31334a8bc343ab1b8848f5fb96e9d", + "output_path": "./lambda_zip/lambda_layer-dev.zip", + "output_sha": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_sha256": "850678bd5833ced376067fa14c718a0d3039929f476eb6509ae9debe0b0f8406", + "output_sha512": "3d4b17433a1f400290b212bac96f56b9045b4d46e374d8c0f950552414cd807af894185ee197a59809e58ac89054ceae637e910fd08d44b0fb693fd5f18558e5", + "output_size": 3470735, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_layer", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_base64sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "output_base64sha512": "R+OeVTikvIPAsYIjKtRdZdFCZQWLp/PUtIvpTIwc726mIuccBlur53ethzlJezoXubQmtF9CEiUdjzsrfb3/pQ==", + "output_file_mode": null, + "output_md5": "6971a02ee30cd8591ded93920a6b994a", + "output_path": "./lambda_zip/standout_lambda_redirect-dev.zip", + "output_sha": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_sha256": "9a41356c2426097b20764a495f5cac7086c034b626716953c802f37f1d81a9b2", + "output_sha512": "47e39e5538a4bc83c0b182232ad45d65d14265058ba7f3d4b48be94c8c1cef6ea622e71c065babe777ad8739497b3a17b9b426b45f4212251d8f3b2b7dbdffa5", + "output_size": 51368, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_redirect", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_config_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_base64sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "output_base64sha512": "oUyZrUKNQPvZt3crReW69Vapq3IGvHD5hk617XXamv8G99f62CoJO1lsd07gaVlf5ln2EyPj+cQleaXg5w3JCg==", + "output_file_mode": null, + "output_md5": "e97ce8be22567986c9fcff5165b4afdb", + "output_path": "./lambda_zip/standout_lambda_config-dev.zip", + "output_sha": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_sha256": "edca42403d4b7fa403c123e4fde7426bc5c3651794bbbad186109a827a280227", + "output_sha512": "a14c99ad428d40fbd9b7772b45e5baf556a9ab7206bc70f9864eb5ed75da9aff06f7d7fad82a093b596c774ee069595fe659f61323e3f9c42579a5e0e70dc90a", + "output_size": 4639, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_config", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "lambda_role", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "2690255455", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"lambda.amazonaws.com\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"sts:AssumeRole\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "sts:AssumeRole" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "lambda.amazonaws.com" + ], + "type": "Service" + } + ], + "resources": [], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "867140593", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-data-dev/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-data-dev/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-data-dev/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_config_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "134226879", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-config-dev/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-config-dev/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-config-dev/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_api", + "name": "api_standout_gateway", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_endpoint": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com", + "api_key_selection_expression": "$request.header.x-api-key", + "arn": "arn:aws:apigateway:eu-west-1::/apis/sel2p8wy6c", + "body": null, + "cors_configuration": [], + "credentials_arn": null, + "description": "", + "disable_execute_api_endpoint": false, + "execution_arn": "arn:aws:execute-api:eu-west-1:654654203111:sel2p8wy6c", + "fail_on_warnings": null, + "id": "sel2p8wy6c", + "name": "standout-api-dev", + "protocol_type": "HTTP", + "route_key": null, + "route_selection_expression": "$request.method $request.path", + "tags": {}, + "tags_all": {}, + "target": null, + "version": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_integration", + "name": "api_standout_integration", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "sel2p8wy6c", + "connection_id": "", + "connection_type": "INTERNET", + "content_handling_strategy": "", + "credentials_arn": "", + "description": "Lambda example", + "id": "82x2elk", + "integration_method": "POST", + "integration_response_selection_expression": "", + "integration_subtype": "", + "integration_type": "AWS_PROXY", + "integration_uri": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev/invocations", + "passthrough_behavior": "", + "payload_format_version": "1.0", + "request_parameters": {}, + "request_templates": {}, + "response_parameters": [], + "template_selection_expression": "", + "timeout_milliseconds": 30000, + "tls_config": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_route", + "name": "api_standout_route", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "sel2p8wy6c", + "api_key_required": false, + "authorization_scopes": [], + "authorization_type": "NONE", + "authorizer_id": "", + "id": "q0f3982", + "model_selection_expression": "", + "operation_name": "", + "request_models": {}, + "request_parameter": [], + "route_key": "GET /api", + "route_response_selection_expression": "", + "target": "integrations/82x2elk" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_integration.api_standout_integration", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_stage", + "name": "api_standout_lambda_stage", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_log_settings": [], + "api_id": "sel2p8wy6c", + "arn": "arn:aws:apigateway:eu-west-1::/apis/sel2p8wy6c/stages/dev", + "auto_deploy": true, + "client_certificate_id": "", + "default_route_settings": [ + { + "data_trace_enabled": false, + "detailed_metrics_enabled": false, + "logging_level": "", + "throttling_burst_limit": 0, + "throttling_rate_limit": 0 + } + ], + "deployment_id": "5hzo6h", + "description": "", + "execution_arn": "arn:aws:execute-api:eu-west-1:654654203111:sel2p8wy6c/dev", + "id": "dev", + "invoke_url": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com/dev", + "name": "dev", + "route_settings": [], + "stage_variables": {}, + "tags": {}, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_role", + "name": "iam_for_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:iam::654654203111:role/iam_for_lambda-dev", + "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}],\"Version\":\"2012-10-17\"}", + "create_date": "2024-05-25T12:28:31Z", + "description": "", + "force_detach_policies": false, + "id": "iam_for_lambda-dev", + "inline_policy": [], + "managed_policy_arns": [], + "max_session_duration": 3600, + "name": "iam_for_lambda-dev", + "name_prefix": "", + "path": "/", + "permissions_boundary": "", + "tags": {}, + "tags_all": {}, + "unique_id": "AROAZQ3DOMTTRQMSNNGQF" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", + "code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-dev", + "BUCKET_DATA": "standout-data-dev", + "FUNCTION_URL": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com/dev" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_config-dev.zip", + "function_name": "standout-config-dev", + "handler": "lambda_config.lambda_handler", + "id": "standout-config-dev", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:28:52.179+0000", + "layers": [ + "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-config-dev", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-dev", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 4639, + "tags": {}, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_redirect", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev", + "code_sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-dev", + "BUCKET_DATA": "standout-data-dev" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_redirect-dev.zip", + "function_name": "standout-redirect-dev", + "handler": "lambda_redirect.lambda_handler", + "id": "standout-redirect-dev", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:28:45.157+0000", + "layers": [ + "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-redirect-dev", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:654654203111:function:standout-redirect-dev:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-dev", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 51368, + "tags": {}, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_layer_version", + "name": "lambda_layer", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7", + "code_sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "compatible_architectures": [], + "compatible_runtimes": [ + "python3.12" + ], + "created_date": "2024-05-25T12:28:36.059+0000", + "description": "", + "filename": "./lambda_zip/lambda_layer-dev.zip", + "id": "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7", + "layer_arn": "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps", + "layer_name": "lambda_deps", + "license_info": "", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "source_code_hash": "", + "source_code_size": 3470735, + "version": "7" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "api_lambda_permission", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "standout-redirect-dev", + "function_url_auth_type": null, + "id": "AllowExecutionFromAPIGateway", + "principal": "apigateway.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:execute-api:eu-west-1:654654203111:sel2p8wy6c/*/*", + "statement_id": "AllowExecutionFromAPIGateway", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "lambda_config_s3_trigger_allow", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", + "function_url_auth_type": null, + "id": "AllowExecutionFromS3Bucket", + "principal": "s3.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:s3:::standout-data-dev", + "statement_id": "AllowExecutionFromS3Bucket", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-data-dev", + "bucket": "standout-data-dev", + "bucket_domain_name": "standout-data-dev.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-data-dev.s3.eu-west-1.amazonaws.com", + "cors_rule": [], + "force_destroy": true, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z1BKCTXD74EZPE", + "id": "standout-data-dev", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-data-dev/*\"}],\"Version\":\"2012-10-17\"}", + "region": "eu-west-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": {}, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-config-dev", + "bucket": "standout-config-dev", + "bucket_domain_name": "standout-config-dev.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-config-dev.s3.eu-west-1.amazonaws.com", + "cors_rule": [], + "force_destroy": false, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z1BKCTXD74EZPE", + "id": "standout-config-dev", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-config-dev/*\"}],\"Version\":\"2012-10-17\"}", + "region": "eu-west-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": {}, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_acl", + "name": "s3_standout_public_acl", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_control_policy": [ + { + "grant": [ + { + "grantee": [ + { + "display_name": "lisa", + "email_address": "", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "type": "CanonicalUser", + "uri": "" + } + ], + "permission": "FULL_CONTROL" + } + ], + "owner": [ + { + "display_name": "lisa", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802" + } + ] + } + ], + "acl": "public-read", + "bucket": "standout-data-dev", + "expected_bucket_owner": "", + "id": "standout-data-dev,public-read" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout", + "aws_s3_bucket_ownership_controls.s3_standout_ownership", + "aws_s3_bucket_public_access_block.s3_standout_public_access" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_notification", + "name": "bucket_notification", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-dev", + "eventbridge": false, + "id": "standout-data-dev", + "lambda_function": [ + { + "events": [ + "s3:ObjectCreated:*", + "s3:ObjectRemoved:*" + ], + "filter_prefix": "", + "filter_suffix": "", + "id": "tf-s3-lambda-20240525122853270300000001", + "lambda_function_arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev" + } + ], + "queue": [], + "topic": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_config_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-dev", + "id": "standout-config-dev", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-dev", + "id": "standout-data-dev", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "s3_standout_config_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-dev", + "id": "standout-config-dev", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-config-dev/*\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config", + "data.aws_iam_policy_document.s3_standout_config_allow_lambda" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "s3_standout_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-dev", + "id": "standout-data-dev", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-data-dev/*\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout", + "data.aws_iam_policy_document.s3_standout_allow_lambda" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_config_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-config-dev", + "id": "standout-config-dev", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-data-dev", + "id": "standout-data-dev", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_vpc", + "name": "vpc_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-1:654654203111:vpc/vpc-099af40f390d1e802", + "assign_generated_ipv6_cidr_block": false, + "cidr_block": "10.0.0.0/16", + "default_network_acl_id": "acl-041cbb8ac4bd93b39", + "default_route_table_id": "rtb-074010f113e505814", + "default_security_group_id": "sg-0759ed695320a6250", + "dhcp_options_id": "dopt-0408012a40d65503d", + "enable_dns_hostnames": false, + "enable_dns_support": true, + "enable_network_address_usage_metrics": false, + "id": "vpc-099af40f390d1e802", + "instance_tenancy": "default", + "ipv4_ipam_pool_id": null, + "ipv4_netmask_length": null, + "ipv6_association_id": "", + "ipv6_cidr_block": "", + "ipv6_cidr_block_network_border_group": "", + "ipv6_ipam_pool_id": "", + "ipv6_netmask_length": 0, + "main_route_table_id": "rtb-074010f113e505814", + "owner_id": "654654203111", + "tags": {}, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] + } + ], + "check_results": null +} diff --git a/terraform.tfstate.d/prod/terraform.tfstate b/terraform.tfstate.d/prod/terraform.tfstate new file mode 100644 index 0000000..af3d85d --- /dev/null +++ b/terraform.tfstate.d/prod/terraform.tfstate @@ -0,0 +1,1161 @@ +{ + "version": 4, + "terraform_version": "1.8.3", + "serial": 34, + "lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9", + "outputs": {}, + "resources": [ + { + "mode": "data", + "type": "archive_file", + "name": "lambda_layer_deps", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_base64sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "output_base64sha512": "PUsXQzofQAKQshK6yW9WuQRbTUbjdNjA+VBVJBTNgHr4lBhe4ZelmAnlisiQVM6uY36RD9CNRLD7aT/V8YVY5Q==", + "output_file_mode": null, + "output_md5": "f4f31334a8bc343ab1b8848f5fb96e9d", + "output_path": "./lambda_zip/lambda_layer-prod.zip", + "output_sha": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_sha256": "850678bd5833ced376067fa14c718a0d3039929f476eb6509ae9debe0b0f8406", + "output_sha512": "3d4b17433a1f400290b212bac96f56b9045b4d46e374d8c0f950552414cd807af894185ee197a59809e58ac89054ceae637e910fd08d44b0fb693fd5f18558e5", + "output_size": 3470735, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_layer", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_base64sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "output_base64sha512": "R+OeVTikvIPAsYIjKtRdZdFCZQWLp/PUtIvpTIwc726mIuccBlur53ethzlJezoXubQmtF9CEiUdjzsrfb3/pQ==", + "output_file_mode": null, + "output_md5": "6971a02ee30cd8591ded93920a6b994a", + "output_path": "./lambda_zip/standout_lambda_redirect-prod.zip", + "output_sha": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_sha256": "9a41356c2426097b20764a495f5cac7086c034b626716953c802f37f1d81a9b2", + "output_sha512": "47e39e5538a4bc83c0b182232ad45d65d14265058ba7f3d4b48be94c8c1cef6ea622e71c065babe777ad8739497b3a17b9b426b45f4212251d8f3b2b7dbdffa5", + "output_size": 51368, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_redirect", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_config_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_base64sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "output_base64sha512": "oUyZrUKNQPvZt3crReW69Vapq3IGvHD5hk617XXamv8G99f62CoJO1lsd07gaVlf5ln2EyPj+cQleaXg5w3JCg==", + "output_file_mode": null, + "output_md5": "e97ce8be22567986c9fcff5165b4afdb", + "output_path": "./lambda_zip/standout_lambda_config-prod.zip", + "output_sha": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_sha256": "edca42403d4b7fa403c123e4fde7426bc5c3651794bbbad186109a827a280227", + "output_sha512": "a14c99ad428d40fbd9b7772b45e5baf556a9ab7206bc70f9864eb5ed75da9aff06f7d7fad82a093b596c774ee069595fe659f61323e3f9c42579a5e0e70dc90a", + "output_size": 4639, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_config", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "lambda_role", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "2690255455", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"lambda.amazonaws.com\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"sts:AssumeRole\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "sts:AssumeRole" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "lambda.amazonaws.com" + ], + "type": "Service" + } + ], + "resources": [], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "3177051619", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-data-prod/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-data-prod/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-data-prod/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_config_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "738342612", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-config-prod/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-config-prod/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-config-prod/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_api", + "name": "api_standout_gateway", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_endpoint": "https://2kvqe64ca1.execute-api.eu-central-1.amazonaws.com", + "api_key_selection_expression": "$request.header.x-api-key", + "arn": "arn:aws:apigateway:eu-central-1::/apis/2kvqe64ca1", + "body": null, + "cors_configuration": [], + "credentials_arn": null, + "description": "", + "disable_execute_api_endpoint": false, + "execution_arn": "arn:aws:execute-api:eu-central-1:654654203111:2kvqe64ca1", + "fail_on_warnings": null, + "id": "2kvqe64ca1", + "name": "standout-api-prod", + "protocol_type": "HTTP", + "route_key": null, + "route_selection_expression": "$request.method $request.path", + "tags": {}, + "tags_all": {}, + "target": null, + "version": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_integration", + "name": "api_standout_integration", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "2kvqe64ca1", + "connection_id": "", + "connection_type": "INTERNET", + "content_handling_strategy": "", + "credentials_arn": "", + "description": "Lambda example", + "id": "shduzq4", + "integration_method": "POST", + "integration_response_selection_expression": "", + "integration_subtype": "", + "integration_type": "AWS_PROXY", + "integration_uri": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod/invocations", + "passthrough_behavior": "", + "payload_format_version": "1.0", + "request_parameters": {}, + "request_templates": {}, + "response_parameters": [], + "template_selection_expression": "", + "timeout_milliseconds": 30000, + "tls_config": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_route", + "name": "api_standout_route", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "2kvqe64ca1", + "api_key_required": false, + "authorization_scopes": [], + "authorization_type": "NONE", + "authorizer_id": "", + "id": "xsd9e7k", + "model_selection_expression": "", + "operation_name": "", + "request_models": {}, + "request_parameter": [], + "route_key": "GET /api", + "route_response_selection_expression": "", + "target": "integrations/shduzq4" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_integration.api_standout_integration", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_stage", + "name": "api_standout_lambda_stage", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_log_settings": [], + "api_id": "2kvqe64ca1", + "arn": "arn:aws:apigateway:eu-central-1::/apis/2kvqe64ca1/stages/prod", + "auto_deploy": true, + "client_certificate_id": "", + "default_route_settings": [ + { + "data_trace_enabled": false, + "detailed_metrics_enabled": false, + "logging_level": "", + "throttling_burst_limit": 0, + "throttling_rate_limit": 0 + } + ], + "deployment_id": "7vgrat", + "description": "", + "execution_arn": "arn:aws:execute-api:eu-central-1:654654203111:2kvqe64ca1/prod", + "id": "prod", + "invoke_url": "https://2kvqe64ca1.execute-api.eu-central-1.amazonaws.com/prod", + "name": "prod", + "route_settings": [], + "stage_variables": {}, + "tags": {}, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_role", + "name": "iam_for_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:iam::654654203111:role/iam_for_lambda-prod", + "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}],\"Version\":\"2012-10-17\"}", + "create_date": "2024-05-25T12:33:48Z", + "description": "", + "force_detach_policies": false, + "id": "iam_for_lambda-prod", + "inline_policy": [], + "managed_policy_arns": [], + "max_session_duration": 3600, + "name": "iam_for_lambda-prod", + "name_prefix": "", + "path": "/", + "permissions_boundary": "", + "tags": {}, + "tags_all": {}, + "unique_id": "AROAZQ3DOMTTRSXZ5VXRN" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", + "code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-prod", + "BUCKET_DATA": "standout-data-prod", + "FUNCTION_URL": "https://2kvqe64ca1.execute-api.eu-central-1.amazonaws.com/prod" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_config-prod.zip", + "function_name": "standout-config-prod", + "handler": "lambda_config.lambda_handler", + "id": "standout-config-prod", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:34:13.337+0000", + "layers": [ + "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-config-prod", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-prod", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 4639, + "tags": {}, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_redirect", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod", + "code_sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-prod", + "BUCKET_DATA": "standout-data-prod" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_redirect-prod.zip", + "function_name": "standout-redirect-prod", + "handler": "lambda_redirect.lambda_handler", + "id": "standout-redirect-prod", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:34:06.514+0000", + "layers": [ + "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-redirect-prod", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-prod", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 51368, + "tags": {}, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_layer_version", + "name": "lambda_layer", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2", + "code_sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "compatible_architectures": [], + "compatible_runtimes": [ + "python3.12" + ], + "created_date": "2024-05-25T12:33:52.492+0000", + "description": "", + "filename": "./lambda_zip/lambda_layer-prod.zip", + "id": "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2", + "layer_arn": "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps", + "layer_name": "lambda_deps", + "license_info": "", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "source_code_hash": "", + "source_code_size": 3470735, + "version": "2" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "api_lambda_permission", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "standout-redirect-prod", + "function_url_auth_type": null, + "id": "AllowExecutionFromAPIGateway", + "principal": "apigateway.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:execute-api:eu-central-1:654654203111:2kvqe64ca1/*/*", + "statement_id": "AllowExecutionFromAPIGateway", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "lambda_config_s3_trigger_allow", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", + "function_url_auth_type": null, + "id": "AllowExecutionFromS3Bucket", + "principal": "s3.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:s3:::standout-data-prod", + "statement_id": "AllowExecutionFromS3Bucket", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-data-prod", + "bucket": "standout-data-prod", + "bucket_domain_name": "standout-data-prod.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-data-prod.s3.eu-central-1.amazonaws.com", + "cors_rule": [], + "force_destroy": true, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z21DNDUVLTQW6Q", + "id": "standout-data-prod", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "", + "region": "eu-central-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": {}, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-config-prod", + "bucket": "standout-config-prod", + "bucket_domain_name": "standout-config-prod.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-config-prod.s3.eu-central-1.amazonaws.com", + "cors_rule": [], + "force_destroy": false, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z21DNDUVLTQW6Q", + "id": "standout-config-prod", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-config-prod/*\"}],\"Version\":\"2012-10-17\"}", + "region": "eu-central-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": {}, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_acl", + "name": "s3_standout_public_acl", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_control_policy": [ + { + "grant": [ + { + "grantee": [ + { + "display_name": "", + "email_address": "", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "type": "CanonicalUser", + "uri": "" + } + ], + "permission": "FULL_CONTROL" + } + ], + "owner": [ + { + "display_name": "", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802" + } + ] + } + ], + "acl": "public-read", + "bucket": "standout-data-prod", + "expected_bucket_owner": "", + "id": "standout-data-prod,public-read" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout", + "aws_s3_bucket_ownership_controls.s3_standout_ownership", + "aws_s3_bucket_public_access_block.s3_standout_public_access" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_notification", + "name": "bucket_notification", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-prod", + "eventbridge": false, + "id": "standout-data-prod", + "lambda_function": [ + { + "events": [ + "s3:ObjectCreated:*", + "s3:ObjectRemoved:*" + ], + "filter_prefix": "", + "filter_suffix": "", + "id": "tf-s3-lambda-20240525123414441100000001", + "lambda_function_arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod" + } + ], + "queue": [], + "topic": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_config_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-prod", + "id": "standout-config-prod", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-prod", + "id": "standout-data-prod", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "s3_standout_config_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-prod", + "id": "standout-config-prod", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-config-prod/*\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config", + "data.aws_iam_policy_document.s3_standout_config_allow_lambda" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "s3_standout_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-prod", + "id": "standout-data-prod", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-data-prod/*\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout", + "data.aws_iam_policy_document.s3_standout_allow_lambda" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_config_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-config-prod", + "id": "standout-config-prod", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-data-prod", + "id": "standout-data-prod", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_vpc", + "name": "vpc_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-central-1:654654203111:vpc/vpc-0c76f662122e14900", + "assign_generated_ipv6_cidr_block": false, + "cidr_block": "10.10.0.0/16", + "default_network_acl_id": "acl-006d8ca334439dfb4", + "default_route_table_id": "rtb-0af448a1cbae5f0bc", + "default_security_group_id": "sg-00435589d7f47e516", + "dhcp_options_id": "dopt-04a6953777f159bfd", + "enable_dns_hostnames": false, + "enable_dns_support": true, + "enable_network_address_usage_metrics": false, + "id": "vpc-0c76f662122e14900", + "instance_tenancy": "default", + "ipv4_ipam_pool_id": null, + "ipv4_netmask_length": null, + "ipv6_association_id": "", + "ipv6_cidr_block": "", + "ipv6_cidr_block_network_border_group": "", + "ipv6_ipam_pool_id": "", + "ipv6_netmask_length": 0, + "main_route_table_id": "rtb-0af448a1cbae5f0bc", + "owner_id": "654654203111", + "tags": {}, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] + } + ], + "check_results": null +} diff --git a/terraform.tfstate.d/prod/terraform.tfstate.backup b/terraform.tfstate.d/prod/terraform.tfstate.backup new file mode 100644 index 0000000..49bc6e1 --- /dev/null +++ b/terraform.tfstate.d/prod/terraform.tfstate.backup @@ -0,0 +1,1139 @@ +{ + "version": 4, + "terraform_version": "1.8.3", + "serial": 32, + "lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9", + "outputs": {}, + "resources": [ + { + "mode": "data", + "type": "archive_file", + "name": "lambda_layer_deps", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_base64sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "output_base64sha512": "PUsXQzofQAKQshK6yW9WuQRbTUbjdNjA+VBVJBTNgHr4lBhe4ZelmAnlisiQVM6uY36RD9CNRLD7aT/V8YVY5Q==", + "output_file_mode": null, + "output_md5": "f4f31334a8bc343ab1b8848f5fb96e9d", + "output_path": "./lambda_zip/lambda_layer-prod.zip", + "output_sha": "f2e1b4a2359b092eb66a365d0e17bd4d7ef2c174", + "output_sha256": "850678bd5833ced376067fa14c718a0d3039929f476eb6509ae9debe0b0f8406", + "output_sha512": "3d4b17433a1f400290b212bac96f56b9045b4d46e374d8c0f950552414cd807af894185ee197a59809e58ac89054ceae637e910fd08d44b0fb693fd5f18558e5", + "output_size": 3470735, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_layer", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_base64sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "output_base64sha512": "R+OeVTikvIPAsYIjKtRdZdFCZQWLp/PUtIvpTIwc726mIuccBlur53ethzlJezoXubQmtF9CEiUdjzsrfb3/pQ==", + "output_file_mode": null, + "output_md5": "6971a02ee30cd8591ded93920a6b994a", + "output_path": "./lambda_zip/standout_lambda_redirect-prod.zip", + "output_sha": "bf96d8f34aad3a86e985be53a3a6682d62164e73", + "output_sha256": "9a41356c2426097b20764a495f5cac7086c034b626716953c802f37f1d81a9b2", + "output_sha512": "47e39e5538a4bc83c0b182232ad45d65d14265058ba7f3d4b48be94c8c1cef6ea622e71c065babe777ad8739497b3a17b9b426b45f4212251d8f3b2b7dbdffa5", + "output_size": 51368, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_redirect", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_config_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_base64sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "output_base64sha512": "oUyZrUKNQPvZt3crReW69Vapq3IGvHD5hk617XXamv8G99f62CoJO1lsd07gaVlf5ln2EyPj+cQleaXg5w3JCg==", + "output_file_mode": null, + "output_md5": "e97ce8be22567986c9fcff5165b4afdb", + "output_path": "./lambda_zip/standout_lambda_config-prod.zip", + "output_sha": "a401470a001300338fa7d09cdffe3f16277971d8", + "output_sha256": "edca42403d4b7fa403c123e4fde7426bc5c3651794bbbad186109a827a280227", + "output_sha512": "a14c99ad428d40fbd9b7772b45e5baf556a9ab7206bc70f9864eb5ed75da9aff06f7d7fad82a093b596c774ee069595fe659f61323e3f9c42579a5e0e70dc90a", + "output_size": 4639, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_config", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "lambda_role", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "2690255455", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"lambda.amazonaws.com\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"sts:AssumeRole\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "sts:AssumeRole" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "lambda.amazonaws.com" + ], + "type": "Service" + } + ], + "resources": [], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "3177051619", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-data-prod/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-data-prod/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-data-prod/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_iam_policy_document", + "name": "s3_standout_config_allow_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "738342612", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:Put*\",\n \"s3:List*\",\n \"s3:Get*\"\n ],\n \"Resource\": \"arn:aws:s3:::standout-config-prod/*\",\n \"Principal\": {\n \"AWS\": \"*\"\n }\n }\n ]\n}", + "minified_json": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Resource\":\"arn:aws:s3:::standout-config-prod/*\",\"Principal\":{\"AWS\":\"*\"}}]}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*", + "s3:List*", + "s3:Put*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [ + { + "identifiers": [ + "*" + ], + "type": "AWS" + } + ], + "resources": [ + "arn:aws:s3:::standout-config-prod/*" + ], + "sid": "" + } + ], + "version": "2012-10-17" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_api", + "name": "api_standout_gateway", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_endpoint": "https://2kvqe64ca1.execute-api.eu-central-1.amazonaws.com", + "api_key_selection_expression": "$request.header.x-api-key", + "arn": "arn:aws:apigateway:eu-central-1::/apis/2kvqe64ca1", + "body": null, + "cors_configuration": [], + "credentials_arn": null, + "description": "", + "disable_execute_api_endpoint": false, + "execution_arn": "arn:aws:execute-api:eu-central-1:654654203111:2kvqe64ca1", + "fail_on_warnings": null, + "id": "2kvqe64ca1", + "name": "standout-api-prod", + "protocol_type": "HTTP", + "route_key": null, + "route_selection_expression": "$request.method $request.path", + "tags": null, + "tags_all": {}, + "target": null, + "version": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_integration", + "name": "api_standout_integration", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "2kvqe64ca1", + "connection_id": "", + "connection_type": "INTERNET", + "content_handling_strategy": "", + "credentials_arn": "", + "description": "Lambda example", + "id": "shduzq4", + "integration_method": "POST", + "integration_response_selection_expression": "", + "integration_subtype": "", + "integration_type": "AWS_PROXY", + "integration_uri": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod/invocations", + "passthrough_behavior": "", + "payload_format_version": "1.0", + "request_parameters": null, + "request_templates": null, + "response_parameters": [], + "template_selection_expression": "", + "timeout_milliseconds": 30000, + "tls_config": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_route", + "name": "api_standout_route", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_id": "2kvqe64ca1", + "api_key_required": false, + "authorization_scopes": null, + "authorization_type": "NONE", + "authorizer_id": "", + "id": "xsd9e7k", + "model_selection_expression": "", + "operation_name": "", + "request_models": null, + "request_parameter": [], + "route_key": "GET /api", + "route_response_selection_expression": "", + "target": "integrations/shduzq4" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_integration.api_standout_integration", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_apigatewayv2_stage", + "name": "api_standout_lambda_stage", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_log_settings": [], + "api_id": "2kvqe64ca1", + "arn": "arn:aws:apigateway:eu-central-1::/apis/2kvqe64ca1/stages/prod", + "auto_deploy": true, + "client_certificate_id": "", + "default_route_settings": [ + { + "data_trace_enabled": false, + "detailed_metrics_enabled": false, + "logging_level": "", + "throttling_burst_limit": 0, + "throttling_rate_limit": 0 + } + ], + "deployment_id": "", + "description": "", + "execution_arn": "arn:aws:execute-api:eu-central-1:654654203111:2kvqe64ca1/prod", + "id": "prod", + "invoke_url": "https://2kvqe64ca1.execute-api.eu-central-1.amazonaws.com/prod", + "name": "prod", + "route_settings": [], + "stage_variables": null, + "tags": null, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_role", + "name": "iam_for_lambda", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:iam::654654203111:role/iam_for_lambda-prod", + "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"}}],\"Version\":\"2012-10-17\"}", + "create_date": "2024-05-25T12:33:48Z", + "description": "", + "force_detach_policies": false, + "id": "iam_for_lambda-prod", + "inline_policy": [], + "managed_policy_arns": [], + "max_session_duration": 3600, + "name": "iam_for_lambda-prod", + "name_prefix": "", + "path": "/", + "permissions_boundary": "", + "tags": null, + "tags_all": {}, + "unique_id": "AROAZQ3DOMTTRSXZ5VXRN" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", + "code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-prod", + "BUCKET_DATA": "standout-data-prod", + "FUNCTION_URL": "https://2kvqe64ca1.execute-api.eu-central-1.amazonaws.com/prod" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_config-prod.zip", + "function_name": "standout-config-prod", + "handler": "lambda_config.lambda_handler", + "id": "standout-config-prod", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:34:06.568+0000", + "layers": [ + "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-config-prod", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-prod", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 4639, + "tags": null, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "lambda_standout_redirect", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architectures": [ + "x86_64" + ], + "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod", + "code_sha256": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "code_signing_config_arn": "", + "dead_letter_config": [], + "description": "", + "environment": [ + { + "variables": { + "BUCKET_CONFIG": "standout-config-prod", + "BUCKET_DATA": "standout-data-prod" + } + } + ], + "ephemeral_storage": [ + { + "size": 512 + } + ], + "file_system_config": [], + "filename": "./lambda_zip/standout_lambda_redirect-prod.zip", + "function_name": "standout-redirect-prod", + "handler": "lambda_redirect.lambda_handler", + "id": "standout-redirect-prod", + "image_config": [], + "image_uri": "", + "invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod/invocations", + "kms_key_arn": "", + "last_modified": "2024-05-25T12:33:56.589+0000", + "layers": [ + "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" + ], + "logging_config": [ + { + "application_log_level": "", + "log_format": "Text", + "log_group": "/aws/lambda/standout-redirect-prod", + "system_log_level": "" + } + ], + "memory_size": 128, + "package_type": "Zip", + "publish": false, + "qualified_arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod:$LATEST", + "qualified_invoke_arn": "arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-central-1:654654203111:function:standout-redirect-prod:$LATEST/invocations", + "replace_security_groups_on_destroy": null, + "replacement_security_group_ids": null, + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::654654203111:role/iam_for_lambda-prod", + "runtime": "python3.12", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "snap_start": [], + "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", + "source_code_size": 51368, + "tags": null, + "tags_all": {}, + "timeout": 10, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "$LATEST", + "vpc_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_iam_role.iam_for_lambda", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_layer_version", + "name": "lambda_layer", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2", + "code_sha256": "hQZ4vVgzztN2Bn+hTHGKDTA5kp9HbrZQmunevgsPhAY=", + "compatible_architectures": null, + "compatible_runtimes": [ + "python3.12" + ], + "created_date": "2024-05-25T12:33:52.492+0000", + "description": "", + "filename": "./lambda_zip/lambda_layer-prod.zip", + "id": "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2", + "layer_arn": "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps", + "layer_name": "lambda_deps", + "license_info": "", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "signing_job_arn": "", + "signing_profile_version_arn": "", + "skip_destroy": false, + "source_code_hash": "", + "source_code_size": 3470735, + "version": "2" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "api_lambda_permission", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "standout-redirect-prod", + "function_url_auth_type": null, + "id": "AllowExecutionFromAPIGateway", + "principal": "apigateway.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:execute-api:eu-central-1:654654203111:2kvqe64ca1/*/*", + "statement_id": "AllowExecutionFromAPIGateway", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_redirect", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_permission", + "name": "lambda_config_s3_trigger_allow", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "action": "lambda:InvokeFunction", + "event_source_token": null, + "function_name": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", + "function_url_auth_type": null, + "id": "AllowExecutionFromS3Bucket", + "principal": "s3.amazonaws.com", + "principal_org_id": null, + "qualifier": "", + "source_account": null, + "source_arn": "arn:aws:s3:::standout-data-prod", + "statement_id": "AllowExecutionFromS3Bucket", + "statement_id_prefix": "" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-data-prod", + "bucket": "standout-data-prod", + "bucket_domain_name": "standout-data-prod.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-data-prod.s3.eu-central-1.amazonaws.com", + "cors_rule": [], + "force_destroy": true, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z21DNDUVLTQW6Q", + "id": "standout-data-prod", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "", + "region": "eu-central-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": null, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket", + "name": "s3_standout_config", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "acceleration_status": "", + "acl": null, + "arn": "arn:aws:s3:::standout-config-prod", + "bucket": "standout-config-prod", + "bucket_domain_name": "standout-config-prod.s3.amazonaws.com", + "bucket_prefix": "", + "bucket_regional_domain_name": "standout-config-prod.s3.eu-central-1.amazonaws.com", + "cors_rule": [], + "force_destroy": false, + "grant": [ + { + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "permissions": [ + "FULL_CONTROL" + ], + "type": "CanonicalUser", + "uri": "" + } + ], + "hosted_zone_id": "Z21DNDUVLTQW6Q", + "id": "standout-config-prod", + "lifecycle_rule": [], + "logging": [], + "object_lock_configuration": [], + "object_lock_enabled": false, + "policy": "", + "region": "eu-central-1", + "replication_configuration": [], + "request_payer": "BucketOwner", + "server_side_encryption_configuration": [ + { + "rule": [ + { + "apply_server_side_encryption_by_default": [ + { + "kms_master_key_id": "", + "sse_algorithm": "AES256" + } + ], + "bucket_key_enabled": false + } + ] + } + ], + "tags": null, + "tags_all": {}, + "timeouts": null, + "versioning": [ + { + "enabled": false, + "mfa_delete": false + } + ], + "website": [], + "website_domain": null, + "website_endpoint": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInJlYWQiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_acl", + "name": "s3_standout_public_acl", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_control_policy": [ + { + "grant": [ + { + "grantee": [ + { + "display_name": "", + "email_address": "", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802", + "type": "CanonicalUser", + "uri": "" + } + ], + "permission": "FULL_CONTROL" + } + ], + "owner": [ + { + "display_name": "", + "id": "e390796e7f2278ad899eab76ebe355965ffe543f3a8f2f6b08179216bbedf802" + } + ] + } + ], + "acl": "public-read", + "bucket": "standout-data-prod", + "expected_bucket_owner": "", + "id": "standout-data-prod,public-read" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout", + "aws_s3_bucket_ownership_controls.s3_standout_ownership", + "aws_s3_bucket_public_access_block.s3_standout_public_access" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_notification", + "name": "bucket_notification", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-prod", + "eventbridge": false, + "id": "standout-data-prod", + "lambda_function": [ + { + "events": [ + "s3:ObjectCreated:*", + "s3:ObjectRemoved:*" + ], + "filter_prefix": "", + "filter_suffix": "", + "id": "tf-s3-lambda-20240525123414441100000001", + "lambda_function_arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod" + } + ], + "queue": [], + "topic": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_apigatewayv2_api.api_standout_gateway", + "aws_apigatewayv2_stage.api_standout_lambda_stage", + "aws_iam_role.iam_for_lambda", + "aws_lambda_function.lambda_standout_config", + "aws_lambda_layer_version.lambda_layer", + "aws_s3_bucket.s3_standout", + "aws_s3_bucket.s3_standout_config", + "data.archive_file.lambda_standout_code", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_config_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-prod", + "id": "standout-config-prod", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_ownership_controls", + "name": "s3_standout_ownership", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-data-prod", + "id": "standout-data-prod", + "rule": [ + { + "object_ownership": "BucketOwnerPreferred" + } + ] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_policy", + "name": "s3_standout_config_policy", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "standout-config-prod", + "id": "standout-config-prod", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-config-prod/*\"}],\"Version\":\"2012-10-17\"}" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config", + "data.aws_iam_policy_document.s3_standout_config_allow_lambda" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_config_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-config-prod", + "id": "standout-config-prod", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout_config" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_s3_bucket_public_access_block", + "name": "s3_standout_public_access", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "block_public_acls": false, + "block_public_policy": false, + "bucket": "standout-data-prod", + "id": "standout-data-prod", + "ignore_public_acls": true, + "restrict_public_buckets": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.s3_standout" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_vpc", + "name": "vpc_standout", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-central-1:654654203111:vpc/vpc-0c76f662122e14900", + "assign_generated_ipv6_cidr_block": false, + "cidr_block": "10.10.0.0/16", + "default_network_acl_id": "acl-006d8ca334439dfb4", + "default_route_table_id": "rtb-0af448a1cbae5f0bc", + "default_security_group_id": "sg-00435589d7f47e516", + "dhcp_options_id": "dopt-04a6953777f159bfd", + "enable_dns_hostnames": false, + "enable_dns_support": true, + "enable_network_address_usage_metrics": false, + "id": "vpc-0c76f662122e14900", + "instance_tenancy": "default", + "ipv4_ipam_pool_id": null, + "ipv4_netmask_length": null, + "ipv6_association_id": "", + "ipv6_cidr_block": "", + "ipv6_cidr_block_network_border_group": "", + "ipv6_ipam_pool_id": "", + "ipv6_netmask_length": 0, + "main_route_table_id": "rtb-0af448a1cbae5f0bc", + "owner_id": "654654203111", + "tags": null, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] + } + ], + "check_results": null +} diff --git a/variable.tf b/variable.tf new file mode 100644 index 0000000..748b013 --- /dev/null +++ b/variable.tf @@ -0,0 +1,9 @@ +variable "region" { + type = string + default = "eu-west-1" +} + +variable "env" { + type = string + default = "dev" +}