diff --git a/lambda_config/lambda_config.py b/lambda_config/lambda_config.py index b3d49a6..892261f 100644 --- a/lambda_config/lambda_config.py +++ b/lambda_config/lambda_config.py @@ -6,10 +6,11 @@ from pydantic import BaseModel from typing import Dict, Optional from redirects_base import Content, Customer, Redirects, Tag -s3_client = None bucket_config = '' bucket_data = '' function_url = '' +s3_client = None +redirects: Redirects | None = None class S3Bucket(BaseModel): name: str @@ -34,7 +35,7 @@ class Record(BaseModel): s3: S3Event def lambda_handler(event: dict, context): - global s3_client, bucket_config, bucket_data, function_url + global s3_client, bucket_config, bucket_data, function_url, redirects if s3_client is None: print("Init Function") @@ -45,33 +46,28 @@ def lambda_handler(event: dict, context): print(f' Bucket Data: {bucket_data}') s3_client = boto3.client('s3') - ## Download redirects file - redirects: Redirects - try: - if context is not None: - resp = s3_client.get_object( - Bucket=bucket_config, - Key='redirects.json' - ) - redirects = Redirects.model_validate_json(resp['Body'].read()) - else: - with open('/home/emanuele/dev/StandOut/lambda_config/redirects.json', 'r') as f: - redirects = Redirects.model_validate_json(f.read(), strict=False) - except s3_client.exceptions.NoSuchKey as e: - print(e) - # Oppure pagina "siamo spiacenti ma il contenuto non e' disponibile" - return { - "statusCode": 404 - } - - # Proces records + ### Process records for r in event["Records"]: record = Record(**r) if record.eventSource != "aws:s3": return False + ## Stampa info di debug print(f"Action: {record.eventName}") - print(f"Object: {record.s3}") + print(f"Object: {record.s3.object}") + + ## Ritorna se la chiave non e' un file + if record.s3.object.key.endswith('/') and record.s3.object.size == 0: + print(f"Skip, folder only: {record.s3.object.key}") + continue + + ## Scarica il redirects solo il primo giro + if redirects is None: + try: + redirects = downloadRedirects(client = s3_client, context = context) + except s3_client.exceptions.NoSuchKey as e: + print(e) + return False match record.eventName: case "ObjectCreated:Put" | "ObjectCreated:CompleteMultipartUpload": @@ -86,16 +82,30 @@ def lambda_handler(event: dict, context): case _: print("Unknown action") - if context is not None: - resp = s3_client.put_object(Bucket=bucket_config, - Key='redirects.json', - Body=redirects.model_dump_json(indent=2)) - print(f"New redirects version: {resp['ETag']}") + if redirects is not None: + if context is not None: + resp = s3_client.put_object(Bucket=bucket_config, + Key='redirects.json', + Body=redirects.model_dump_json(indent=2)) + print(f"New redirects version: {resp['ETag']}") + else: + with open('/home/emanuele/dev/StandOut/lambda_config/redirects.json', 'w') as f: + f.write(redirects.model_dump_json(indent=2)) else: - with open('/home/emanuele/dev/StandOut/lambda_config/redirects.json', 'w') as f: - f.write(redirects.model_dump_json(indent=2)) + print("No Action") return True + +def downloadRedirects(client, context) -> Redirects: + if context is not None: + resp = client.get_object( + Bucket=bucket_config, + Key='redirects.json' + ) + return Redirects.model_validate_json(resp['Body'].read()) + else: + with open('/home/emanuele/dev/StandOut/lambda_config/redirects.json', 'r') as f: + return Redirects.model_validate_json(f.read(), strict=False) def getObjectKeys(record: Record) -> list[str]: keys = [v for v in record.s3.object.key.split('/') if v != ''] @@ -206,7 +216,7 @@ def processDelete(record: Record, redirects: Redirects) -> None: print("Unexpected") return - print(f"Object remove: {record.s3.object.key}") + print(f"Object Remove: {record.s3.object.key}") if __name__ == "__main__": with open('/home/emanuele/dev/StandOut/lambda_config/test.json', 'r') as f: diff --git a/lambda_config/redirects.json b/lambda_config/redirects.json index d9e0320..0f3674d 100644 --- a/lambda_config/redirects.json +++ b/lambda_config/redirects.json @@ -1,17 +1,38 @@ { "customers": { - "customer3": { + "8eb763ceacec418cb48c81dae40bcde0": { "status": "active", + "name": "cliente-test", "tags": { + "tag1": { + "status": "active", + "content": { + "type": "url", + "key": "url.txt", + "url": "https://www.instagram.com/lisavarano?igsh=M2V6ZHhqMG91cmF1&utm_source=qr", + "tag_url": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com/dev/api?id=8eb763ceacec418cb48c81dae40bcde0&tag_id=tag1" + } + }, "tag2": { "status": "active", "content": { "type": "s3", - "key": "foo.txt", - "url": null + "key": "f3", + "url": null, + "tag_url": "https://api.standout.it/dev/api?id=8eb763ceacec418cb48c81dae40bcde0&tag_id=tag2" } } } + }, + "0ef1d0acb1bf4ebab77f5a8c9c56d6b5": { + "status": "active", + "name": "foo", + "tags": { + "help": { + "status": "active", + "content": null + } + } } } } \ No newline at end of file diff --git a/lambda_config/test.json b/lambda_config/test.json index 1d891cb..d743bbc 100644 --- a/lambda_config/test.json +++ b/lambda_config/test.json @@ -27,8 +27,8 @@ "arn": "arn:aws:s3:::standout-data" }, "object": { - "key": "customer3/tag2/foo.txt", - "size": 2844326, + "key": "cliente-test/tag2/f3/", + "size": 0, "eTag": "7039e5338840f289d0510dc9149bf0b5", "sequencer": "00662A206F99CD2E09" } diff --git a/master.tf b/master.tf index d873876..90b1167 100644 --- a/master.tf +++ b/master.tf @@ -207,12 +207,12 @@ resource "aws_lambda_function" "lambda_standout_config" { layers = [aws_lambda_layer_version.lambda_layer.arn] timeout = 10 - + environment { variables = { BUCKET_CONFIG = aws_s3_bucket.s3_standout_config.bucket, BUCKET_DATA = aws_s3_bucket.s3_standout.bucket - FUNCTION_URL = aws_apigatewayv2_stage.api_standout_lambda_stage.invoke_url + FUNCTION_URL = var.redirect_url } } } diff --git a/terraform.tfstate.d/dev/terraform.tfstate b/terraform.tfstate.d/dev/terraform.tfstate index 5ea9619..f3f8ac6 100644 --- a/terraform.tfstate.d/dev/terraform.tfstate +++ b/terraform.tfstate.d/dev/terraform.tfstate @@ -1,7 +1,7 @@ { "version": 4, - "terraform_version": "1.8.3", - "serial": 97, + "terraform_version": "1.8.4", + "serial": 107, "lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8", "outputs": {}, "resources": [ @@ -48,16 +48,16 @@ "attributes": { "exclude_symlink_directories": null, "excludes": null, - "id": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", - "output_base64sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", - "output_base64sha512": "39KD5BHf3LEcSJpNUHrQ6R9mzmNWSVojgsdDlZIHAhy7c5tjNepQbdaquHGE18mVEAuOXc0mD8wSQrTO5kIcEA==", + "id": "515512e32678f33a54e5966a8129eda5c3760a1d", + "output_base64sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=", + "output_base64sha512": "12CUIHQhDkHp43k1q5Gy4hXXoxGDNIu29F7ie5pCVd32UVpbTqSDauPSmlt4g8sKir0wvcfbZaYXoTbGrqZPAw==", "output_file_mode": null, - "output_md5": "1b73b73d80a3b5095ea415fd5665b397", + "output_md5": "d84a656b31cd286363d787c80b6abfaf", "output_path": "./lambda_zip/standout_lambda_config-dev.zip", - "output_sha": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", - "output_sha256": "dc18155352d92003464aa151b30b5f70a38f6546d0467b725e4601bda954a3f6", - "output_sha512": "dfd283e411dfdcb11c489a4d507ad0e91f66ce6356495a2382c743959207021cbb739b6335ea506dd6aab87184d7c995100b8e5dcd260fcc1242b4cee6421c10", - "output_size": 4619, + "output_sha": "515512e32678f33a54e5966a8129eda5c3760a1d", + "output_sha256": "079272356231dddc3e1b519c54e99fadd1869e11ef64059860fdfca045f77699", + "output_sha512": "d760942074210e41e9e37935ab91b2e215d7a31183348bb6f45ee27b9a4255ddf6515a5b4ea4836ae3d29a5b7883cb0a8abd30bdc7db65a617a136c6aea64f03", + "output_size": 4971, "source": [], "source_content": null, "source_content_filename": null, @@ -475,7 +475,7 @@ "x86_64" ], "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", - "code_sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", + "code_sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=", "code_signing_config_arn": "", "dead_letter_config": [], "description": "", @@ -484,7 +484,7 @@ "variables": { "BUCKET_CONFIG": "standout-config-dev", "BUCKET_DATA": "standout-data-dev", - "FUNCTION_URL": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com/dev" + "FUNCTION_URL": "https://nfc.standout.it/dev" } } ], @@ -502,7 +502,7 @@ "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-25T13:16:55.000+0000", + "last_modified": "2024-05-26T08:30:30.000+0000", "layers": [ "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" ], @@ -531,8 +531,8 @@ "signing_profile_version_arn": "", "skip_destroy": false, "snap_start": [], - "source_code_hash": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", - "source_code_size": 4619, + "source_code_hash": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=", + "source_code_size": 4971, "tags": {}, "tags_all": {}, "timeout": 10, @@ -548,8 +548,6 @@ "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", @@ -754,8 +752,6 @@ "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", @@ -987,8 +983,6 @@ "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", diff --git a/terraform.tfstate.d/dev/terraform.tfstate.backup b/terraform.tfstate.d/dev/terraform.tfstate.backup index 717a6c2..934f5ed 100644 --- a/terraform.tfstate.d/dev/terraform.tfstate.backup +++ b/terraform.tfstate.d/dev/terraform.tfstate.backup @@ -1,7 +1,7 @@ { "version": 4, - "terraform_version": "1.8.3", - "serial": 95, + "terraform_version": "1.8.4", + "serial": 105, "lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8", "outputs": {}, "resources": [ @@ -48,16 +48,16 @@ "attributes": { "exclude_symlink_directories": null, "excludes": null, - "id": "a401470a001300338fa7d09cdffe3f16277971d8", - "output_base64sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", - "output_base64sha512": "oUyZrUKNQPvZt3crReW69Vapq3IGvHD5hk617XXamv8G99f62CoJO1lsd07gaVlf5ln2EyPj+cQleaXg5w3JCg==", + "id": "b71f32517224e8488af8a6261e0d77faa07b322c", + "output_base64sha256": "CvOhFoZXqUcFozUduJh8QZOOrf5veK1m8vK9wvV559g=", + "output_base64sha512": "I6CznERTeZVSL1wZrJsLNNuehUKF7z7hcJJIGUDzsNahiznOWxzYdSDAONuDeZeiVVUiWEgLzdIWwqH+k1CkUA==", "output_file_mode": null, - "output_md5": "e97ce8be22567986c9fcff5165b4afdb", + "output_md5": "44112bffcda59ca0e2f0b975518a9942", "output_path": "./lambda_zip/standout_lambda_config-dev.zip", - "output_sha": "a401470a001300338fa7d09cdffe3f16277971d8", - "output_sha256": "edca42403d4b7fa403c123e4fde7426bc5c3651794bbbad186109a827a280227", - "output_sha512": "a14c99ad428d40fbd9b7772b45e5baf556a9ab7206bc70f9864eb5ed75da9aff06f7d7fad82a093b596c774ee069595fe659f61323e3f9c42579a5e0e70dc90a", - "output_size": 4639, + "output_sha": "b71f32517224e8488af8a6261e0d77faa07b322c", + "output_sha256": "0af3a1168657a94705a3351db8987c41938eadfe6f78ad66f2f2bdc2f579e7d8", + "output_sha512": "23a0b39c44537995522f5c19ac9b0b34db9e854285ef3ee17092481940f3b0d6a18b39ce5b1cd87520c038db837997a255552258480bcdd216c2a1fe9350a450", + "output_size": 4993, "source": [], "source_content": null, "source_content_filename": null, @@ -475,7 +475,7 @@ "x86_64" ], "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", - "code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "code_sha256": "CvOhFoZXqUcFozUduJh8QZOOrf5veK1m8vK9wvV559g=", "code_signing_config_arn": "", "dead_letter_config": [], "description": "", @@ -484,7 +484,7 @@ "variables": { "BUCKET_CONFIG": "standout-config-dev", "BUCKET_DATA": "standout-data-dev", - "FUNCTION_URL": "https://sel2p8wy6c.execute-api.eu-west-1.amazonaws.com/dev" + "FUNCTION_URL": "https://nfc.standout.it/dev" } } ], @@ -502,7 +502,7 @@ "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-25T13:15:18.000+0000", + "last_modified": "2024-05-26T08:26:41.000+0000", "layers": [ "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" ], @@ -531,8 +531,8 @@ "signing_profile_version_arn": "", "skip_destroy": false, "snap_start": [], - "source_code_hash": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", - "source_code_size": 4639, + "source_code_hash": "CvOhFoZXqUcFozUduJh8QZOOrf5veK1m8vK9wvV559g=", + "source_code_size": 4993, "tags": {}, "tags_all": {}, "timeout": 10, @@ -548,8 +548,6 @@ "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", @@ -754,8 +752,6 @@ "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", @@ -987,8 +983,6 @@ "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", diff --git a/terraform.tfstate.d/prod/terraform.tfstate b/terraform.tfstate.d/prod/terraform.tfstate index eb9faee..7f0b2b4 100644 --- a/terraform.tfstate.d/prod/terraform.tfstate +++ b/terraform.tfstate.d/prod/terraform.tfstate @@ -1,7 +1,7 @@ { "version": 4, - "terraform_version": "1.8.3", - "serial": 37, + "terraform_version": "1.8.4", + "serial": 39, "lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9", "outputs": {}, "resources": [ @@ -48,16 +48,16 @@ "attributes": { "exclude_symlink_directories": null, "excludes": null, - "id": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", - "output_base64sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", - "output_base64sha512": "39KD5BHf3LEcSJpNUHrQ6R9mzmNWSVojgsdDlZIHAhy7c5tjNepQbdaquHGE18mVEAuOXc0mD8wSQrTO5kIcEA==", + "id": "515512e32678f33a54e5966a8129eda5c3760a1d", + "output_base64sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=", + "output_base64sha512": "12CUIHQhDkHp43k1q5Gy4hXXoxGDNIu29F7ie5pCVd32UVpbTqSDauPSmlt4g8sKir0wvcfbZaYXoTbGrqZPAw==", "output_file_mode": null, - "output_md5": "1b73b73d80a3b5095ea415fd5665b397", + "output_md5": "d84a656b31cd286363d787c80b6abfaf", "output_path": "./lambda_zip/standout_lambda_config-prod.zip", - "output_sha": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", - "output_sha256": "dc18155352d92003464aa151b30b5f70a38f6546d0467b725e4601bda954a3f6", - "output_sha512": "dfd283e411dfdcb11c489a4d507ad0e91f66ce6356495a2382c743959207021cbb739b6335ea506dd6aab87184d7c995100b8e5dcd260fcc1242b4cee6421c10", - "output_size": 4619, + "output_sha": "515512e32678f33a54e5966a8129eda5c3760a1d", + "output_sha256": "079272356231dddc3e1b519c54e99fadd1869e11ef64059860fdfca045f77699", + "output_sha512": "d760942074210e41e9e37935ab91b2e215d7a31183348bb6f45ee27b9a4255ddf6515a5b4ea4836ae3d29a5b7883cb0a8abd30bdc7db65a617a136c6aea64f03", + "output_size": 4971, "source": [], "source_content": null, "source_content_filename": null, @@ -420,7 +420,9 @@ "force_detach_policies": false, "id": "iam_for_lambda-prod", "inline_policy": [], - "managed_policy_arns": [], + "managed_policy_arns": [ + "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ], "max_session_duration": 3600, "name": "iam_for_lambda-prod", "name_prefix": "", @@ -473,7 +475,7 @@ "x86_64" ], "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", - "code_sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", + "code_sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=", "code_signing_config_arn": "", "dead_letter_config": [], "description": "", @@ -482,7 +484,7 @@ "variables": { "BUCKET_CONFIG": "standout-config-prod", "BUCKET_DATA": "standout-data-prod", - "FUNCTION_URL": "https://2kvqe64ca1.execute-api.eu-central-1.amazonaws.com/prod" + "FUNCTION_URL": "https://nfc.standout.it/prod" } } ], @@ -500,7 +502,7 @@ "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-25T13:19:36.000+0000", + "last_modified": "2024-05-26T08:43:12.000+0000", "layers": [ "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" ], @@ -529,8 +531,8 @@ "signing_profile_version_arn": "", "skip_destroy": false, "snap_start": [], - "source_code_hash": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", - "source_code_size": 4619, + "source_code_hash": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=", + "source_code_size": 4971, "tags": {}, "tags_all": {}, "timeout": 10, @@ -546,8 +548,6 @@ "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", @@ -752,8 +752,6 @@ "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", @@ -985,8 +983,6 @@ "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", diff --git a/terraform.tfstate.d/prod/terraform.tfstate.backup b/terraform.tfstate.d/prod/terraform.tfstate.backup index af3d85d..d4363e1 100644 --- a/terraform.tfstate.d/prod/terraform.tfstate.backup +++ b/terraform.tfstate.d/prod/terraform.tfstate.backup @@ -1,7 +1,7 @@ { "version": 4, - "terraform_version": "1.8.3", - "serial": 34, + "terraform_version": "1.8.4", + "serial": 37, "lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9", "outputs": {}, "resources": [ @@ -40,7 +40,39 @@ { "mode": "data", "type": "archive_file", - "name": "lambda_standout_code", + "name": "lambda_standout_config_code", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "exclude_symlink_directories": null, + "excludes": null, + "id": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", + "output_base64sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", + "output_base64sha512": "39KD5BHf3LEcSJpNUHrQ6R9mzmNWSVojgsdDlZIHAhy7c5tjNepQbdaquHGE18mVEAuOXc0mD8wSQrTO5kIcEA==", + "output_file_mode": null, + "output_md5": "1b73b73d80a3b5095ea415fd5665b397", + "output_path": "./lambda_zip/standout_lambda_config-prod.zip", + "output_sha": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", + "output_sha256": "dc18155352d92003464aa151b30b5f70a38f6546d0467b725e4601bda954a3f6", + "output_sha512": "dfd283e411dfdcb11c489a4d507ad0e91f66ce6356495a2382c743959207021cbb739b6335ea506dd6aab87184d7c995100b8e5dcd260fcc1242b4cee6421c10", + "output_size": 4619, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": "./lambda_config", + "source_file": null, + "type": "zip" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "archive_file", + "name": "lambda_standout_redirect_code", "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", "instances": [ { @@ -69,38 +101,6 @@ } ] }, - { - "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", @@ -317,7 +317,7 @@ "aws_lambda_layer_version.lambda_layer", "aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout_config", - "data.archive_file.lambda_standout_code", + "data.archive_file.lambda_standout_redirect_code", "data.aws_iam_policy_document.lambda_role" ] } @@ -356,7 +356,7 @@ "aws_lambda_layer_version.lambda_layer", "aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout_config", - "data.archive_file.lambda_standout_code", + "data.archive_file.lambda_standout_redirect_code", "data.aws_iam_policy_document.lambda_role" ] } @@ -438,6 +438,28 @@ } ] }, + { + "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-prod-20240525131933911000000001", + "policy_arn": "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + "role": "iam_for_lambda-prod" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_iam_role.iam_for_lambda", + "data.aws_iam_policy_document.lambda_role" + ] + } + ] + }, { "mode": "managed", "type": "aws_lambda_function", @@ -451,7 +473,7 @@ "x86_64" ], "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", - "code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", + "code_sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", "code_signing_config_arn": "", "dead_letter_config": [], "description": "", @@ -478,7 +500,7 @@ "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", + "last_modified": "2024-05-25T13:19:36.000+0000", "layers": [ "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" ], @@ -507,8 +529,8 @@ "signing_profile_version_arn": "", "skip_destroy": false, "snap_start": [], - "source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", - "source_code_size": 4639, + "source_code_hash": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", + "source_code_size": 4619, "tags": {}, "tags_all": {}, "timeout": 10, @@ -530,7 +552,7 @@ "aws_lambda_layer_version.lambda_layer", "aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout_config", - "data.archive_file.lambda_standout_code", + "data.archive_file.lambda_standout_config_code", "data.aws_iam_policy_document.lambda_role" ] } @@ -625,7 +647,7 @@ "aws_lambda_layer_version.lambda_layer", "aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout_config", - "data.archive_file.lambda_standout_code", + "data.archive_file.lambda_standout_redirect_code", "data.aws_iam_policy_document.lambda_role" ] } @@ -699,7 +721,7 @@ "aws_lambda_layer_version.lambda_layer", "aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout_config", - "data.archive_file.lambda_standout_code", + "data.archive_file.lambda_standout_redirect_code", "data.aws_iam_policy_document.lambda_role" ] } @@ -737,7 +759,7 @@ "aws_lambda_layer_version.lambda_layer", "aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout_config", - "data.archive_file.lambda_standout_code", + "data.archive_file.lambda_standout_config_code", "data.aws_iam_policy_document.lambda_role" ] } @@ -777,7 +799,7 @@ "logging": [], "object_lock_configuration": [], "object_lock_enabled": false, - "policy": "", + "policy": "{\"Statement\":[{\"Action\":[\"s3:Put*\",\"s3:List*\",\"s3:Get*\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Resource\":\"arn:aws:s3:::standout-data-prod/*\"}],\"Version\":\"2012-10-17\"}", "region": "eu-central-1", "replication_configuration": [], "request_payer": "BucketOwner", @@ -970,7 +992,7 @@ "aws_lambda_layer_version.lambda_layer", "aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout_config", - "data.archive_file.lambda_standout_code", + "data.archive_file.lambda_standout_config_code", "data.aws_iam_policy_document.lambda_role" ] } diff --git a/variable.tf b/variable.tf index 748b013..7a88950 100644 --- a/variable.tf +++ b/variable.tf @@ -7,3 +7,8 @@ variable "env" { type = string default = "dev" } + +variable "redirect_url" { + type = string + default = "https://nfc.standout.it/dev" +}