Fixed multi face content add, skips adding folders

This commit is contained in:
2024-05-26 10:44:12 +02:00
parent b1b03e8d07
commit d2b05f72a6
9 changed files with 191 additions and 149 deletions

View File

@@ -6,10 +6,11 @@ from pydantic import BaseModel
from typing import Dict, Optional from typing import Dict, Optional
from redirects_base import Content, Customer, Redirects, Tag from redirects_base import Content, Customer, Redirects, Tag
s3_client = None
bucket_config = '' bucket_config = ''
bucket_data = '' bucket_data = ''
function_url = '' function_url = ''
s3_client = None
redirects: Redirects | None = None
class S3Bucket(BaseModel): class S3Bucket(BaseModel):
name: str name: str
@@ -34,7 +35,7 @@ class Record(BaseModel):
s3: S3Event s3: S3Event
def lambda_handler(event: dict, context): 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: if s3_client is None:
print("Init Function") print("Init Function")
@@ -45,33 +46,28 @@ def lambda_handler(event: dict, context):
print(f' Bucket Data: {bucket_data}') print(f' Bucket Data: {bucket_data}')
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
## Download redirects file ### Process records
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
for r in event["Records"]: for r in event["Records"]:
record = Record(**r) record = Record(**r)
if record.eventSource != "aws:s3": if record.eventSource != "aws:s3":
return False return False
## Stampa info di debug
print(f"Action: {record.eventName}") 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: match record.eventName:
case "ObjectCreated:Put" | "ObjectCreated:CompleteMultipartUpload": case "ObjectCreated:Put" | "ObjectCreated:CompleteMultipartUpload":
@@ -86,6 +82,7 @@ def lambda_handler(event: dict, context):
case _: case _:
print("Unknown action") print("Unknown action")
if redirects is not None:
if context is not None: if context is not None:
resp = s3_client.put_object(Bucket=bucket_config, resp = s3_client.put_object(Bucket=bucket_config,
Key='redirects.json', Key='redirects.json',
@@ -94,9 +91,22 @@ def lambda_handler(event: dict, context):
else: else:
with open('/home/emanuele/dev/StandOut/lambda_config/redirects.json', 'w') as f: with open('/home/emanuele/dev/StandOut/lambda_config/redirects.json', 'w') as f:
f.write(redirects.model_dump_json(indent=2)) f.write(redirects.model_dump_json(indent=2))
else:
print("No Action")
return True 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]: def getObjectKeys(record: Record) -> list[str]:
keys = [v for v in record.s3.object.key.split('/') if v != ''] keys = [v for v in record.s3.object.key.split('/') if v != '']
keys.reverse() keys.reverse()
@@ -206,7 +216,7 @@ def processDelete(record: Record, redirects: Redirects) -> None:
print("Unexpected") print("Unexpected")
return return
print(f"Object remove: {record.s3.object.key}") print(f"Object Remove: {record.s3.object.key}")
if __name__ == "__main__": if __name__ == "__main__":
with open('/home/emanuele/dev/StandOut/lambda_config/test.json', 'r') as f: with open('/home/emanuele/dev/StandOut/lambda_config/test.json', 'r') as f:

View File

@@ -1,17 +1,38 @@
{ {
"customers": { "customers": {
"customer3": { "8eb763ceacec418cb48c81dae40bcde0": {
"status": "active", "status": "active",
"name": "cliente-test",
"tags": { "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": { "tag2": {
"status": "active", "status": "active",
"content": { "content": {
"type": "s3", "type": "s3",
"key": "foo.txt", "key": "f3",
"url": null "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
}
}
} }
} }
} }

View File

@@ -27,8 +27,8 @@
"arn": "arn:aws:s3:::standout-data" "arn": "arn:aws:s3:::standout-data"
}, },
"object": { "object": {
"key": "customer3/tag2/foo.txt", "key": "cliente-test/tag2/f3/",
"size": 2844326, "size": 0,
"eTag": "7039e5338840f289d0510dc9149bf0b5", "eTag": "7039e5338840f289d0510dc9149bf0b5",
"sequencer": "00662A206F99CD2E09" "sequencer": "00662A206F99CD2E09"
} }

View File

@@ -212,7 +212,7 @@ resource "aws_lambda_function" "lambda_standout_config" {
variables = { variables = {
BUCKET_CONFIG = aws_s3_bucket.s3_standout_config.bucket, BUCKET_CONFIG = aws_s3_bucket.s3_standout_config.bucket,
BUCKET_DATA = aws_s3_bucket.s3_standout.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
} }
} }
} }

View File

@@ -1,7 +1,7 @@
{ {
"version": 4, "version": 4,
"terraform_version": "1.8.3", "terraform_version": "1.8.4",
"serial": 97, "serial": 107,
"lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8", "lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8",
"outputs": {}, "outputs": {},
"resources": [ "resources": [
@@ -48,16 +48,16 @@
"attributes": { "attributes": {
"exclude_symlink_directories": null, "exclude_symlink_directories": null,
"excludes": null, "excludes": null,
"id": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", "id": "515512e32678f33a54e5966a8129eda5c3760a1d",
"output_base64sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", "output_base64sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=",
"output_base64sha512": "39KD5BHf3LEcSJpNUHrQ6R9mzmNWSVojgsdDlZIHAhy7c5tjNepQbdaquHGE18mVEAuOXc0mD8wSQrTO5kIcEA==", "output_base64sha512": "12CUIHQhDkHp43k1q5Gy4hXXoxGDNIu29F7ie5pCVd32UVpbTqSDauPSmlt4g8sKir0wvcfbZaYXoTbGrqZPAw==",
"output_file_mode": null, "output_file_mode": null,
"output_md5": "1b73b73d80a3b5095ea415fd5665b397", "output_md5": "d84a656b31cd286363d787c80b6abfaf",
"output_path": "./lambda_zip/standout_lambda_config-dev.zip", "output_path": "./lambda_zip/standout_lambda_config-dev.zip",
"output_sha": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", "output_sha": "515512e32678f33a54e5966a8129eda5c3760a1d",
"output_sha256": "dc18155352d92003464aa151b30b5f70a38f6546d0467b725e4601bda954a3f6", "output_sha256": "079272356231dddc3e1b519c54e99fadd1869e11ef64059860fdfca045f77699",
"output_sha512": "dfd283e411dfdcb11c489a4d507ad0e91f66ce6356495a2382c743959207021cbb739b6335ea506dd6aab87184d7c995100b8e5dcd260fcc1242b4cee6421c10", "output_sha512": "d760942074210e41e9e37935ab91b2e215d7a31183348bb6f45ee27b9a4255ddf6515a5b4ea4836ae3d29a5b7883cb0a8abd30bdc7db65a617a136c6aea64f03",
"output_size": 4619, "output_size": 4971,
"source": [], "source": [],
"source_content": null, "source_content": null,
"source_content_filename": null, "source_content_filename": null,
@@ -475,7 +475,7 @@
"x86_64" "x86_64"
], ],
"arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev",
"code_sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", "code_sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=",
"code_signing_config_arn": "", "code_signing_config_arn": "",
"dead_letter_config": [], "dead_letter_config": [],
"description": "", "description": "",
@@ -484,7 +484,7 @@
"variables": { "variables": {
"BUCKET_CONFIG": "standout-config-dev", "BUCKET_CONFIG": "standout-config-dev",
"BUCKET_DATA": "standout-data-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": "", "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", "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": "", "kms_key_arn": "",
"last_modified": "2024-05-25T13:16:55.000+0000", "last_modified": "2024-05-26T08:30:30.000+0000",
"layers": [ "layers": [
"arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7"
], ],
@@ -531,8 +531,8 @@
"signing_profile_version_arn": "", "signing_profile_version_arn": "",
"skip_destroy": false, "skip_destroy": false,
"snap_start": [], "snap_start": [],
"source_code_hash": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", "source_code_hash": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=",
"source_code_size": 4619, "source_code_size": 4971,
"tags": {}, "tags": {},
"tags_all": {}, "tags_all": {},
"timeout": 10, "timeout": 10,
@@ -548,8 +548,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
@@ -754,8 +752,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "bnVsbA==", "private": "bnVsbA==",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_function.lambda_standout_config", "aws_lambda_function.lambda_standout_config",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
@@ -987,8 +983,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "bnVsbA==", "private": "bnVsbA==",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_function.lambda_standout_config", "aws_lambda_function.lambda_standout_config",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",

View File

@@ -1,7 +1,7 @@
{ {
"version": 4, "version": 4,
"terraform_version": "1.8.3", "terraform_version": "1.8.4",
"serial": 95, "serial": 105,
"lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8", "lineage": "c4760d73-7122-ff64-ba30-f5482ab084b8",
"outputs": {}, "outputs": {},
"resources": [ "resources": [
@@ -48,16 +48,16 @@
"attributes": { "attributes": {
"exclude_symlink_directories": null, "exclude_symlink_directories": null,
"excludes": null, "excludes": null,
"id": "a401470a001300338fa7d09cdffe3f16277971d8", "id": "b71f32517224e8488af8a6261e0d77faa07b322c",
"output_base64sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", "output_base64sha256": "CvOhFoZXqUcFozUduJh8QZOOrf5veK1m8vK9wvV559g=",
"output_base64sha512": "oUyZrUKNQPvZt3crReW69Vapq3IGvHD5hk617XXamv8G99f62CoJO1lsd07gaVlf5ln2EyPj+cQleaXg5w3JCg==", "output_base64sha512": "I6CznERTeZVSL1wZrJsLNNuehUKF7z7hcJJIGUDzsNahiznOWxzYdSDAONuDeZeiVVUiWEgLzdIWwqH+k1CkUA==",
"output_file_mode": null, "output_file_mode": null,
"output_md5": "e97ce8be22567986c9fcff5165b4afdb", "output_md5": "44112bffcda59ca0e2f0b975518a9942",
"output_path": "./lambda_zip/standout_lambda_config-dev.zip", "output_path": "./lambda_zip/standout_lambda_config-dev.zip",
"output_sha": "a401470a001300338fa7d09cdffe3f16277971d8", "output_sha": "b71f32517224e8488af8a6261e0d77faa07b322c",
"output_sha256": "edca42403d4b7fa403c123e4fde7426bc5c3651794bbbad186109a827a280227", "output_sha256": "0af3a1168657a94705a3351db8987c41938eadfe6f78ad66f2f2bdc2f579e7d8",
"output_sha512": "a14c99ad428d40fbd9b7772b45e5baf556a9ab7206bc70f9864eb5ed75da9aff06f7d7fad82a093b596c774ee069595fe659f61323e3f9c42579a5e0e70dc90a", "output_sha512": "23a0b39c44537995522f5c19ac9b0b34db9e854285ef3ee17092481940f3b0d6a18b39ce5b1cd87520c038db837997a255552258480bcdd216c2a1fe9350a450",
"output_size": 4639, "output_size": 4993,
"source": [], "source": [],
"source_content": null, "source_content": null,
"source_content_filename": null, "source_content_filename": null,
@@ -475,7 +475,7 @@
"x86_64" "x86_64"
], ],
"arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev", "arn": "arn:aws:lambda:eu-west-1:654654203111:function:standout-config-dev",
"code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", "code_sha256": "CvOhFoZXqUcFozUduJh8QZOOrf5veK1m8vK9wvV559g=",
"code_signing_config_arn": "", "code_signing_config_arn": "",
"dead_letter_config": [], "dead_letter_config": [],
"description": "", "description": "",
@@ -484,7 +484,7 @@
"variables": { "variables": {
"BUCKET_CONFIG": "standout-config-dev", "BUCKET_CONFIG": "standout-config-dev",
"BUCKET_DATA": "standout-data-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": "", "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", "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": "", "kms_key_arn": "",
"last_modified": "2024-05-25T13:15:18.000+0000", "last_modified": "2024-05-26T08:26:41.000+0000",
"layers": [ "layers": [
"arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7" "arn:aws:lambda:eu-west-1:654654203111:layer:lambda_deps:7"
], ],
@@ -531,8 +531,8 @@
"signing_profile_version_arn": "", "signing_profile_version_arn": "",
"skip_destroy": false, "skip_destroy": false,
"snap_start": [], "snap_start": [],
"source_code_hash": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", "source_code_hash": "CvOhFoZXqUcFozUduJh8QZOOrf5veK1m8vK9wvV559g=",
"source_code_size": 4639, "source_code_size": 4993,
"tags": {}, "tags": {},
"tags_all": {}, "tags_all": {},
"timeout": 10, "timeout": 10,
@@ -548,8 +548,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
@@ -754,8 +752,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "bnVsbA==", "private": "bnVsbA==",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_function.lambda_standout_config", "aws_lambda_function.lambda_standout_config",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
@@ -987,8 +983,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "bnVsbA==", "private": "bnVsbA==",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_function.lambda_standout_config", "aws_lambda_function.lambda_standout_config",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",

View File

@@ -1,7 +1,7 @@
{ {
"version": 4, "version": 4,
"terraform_version": "1.8.3", "terraform_version": "1.8.4",
"serial": 37, "serial": 39,
"lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9", "lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9",
"outputs": {}, "outputs": {},
"resources": [ "resources": [
@@ -48,16 +48,16 @@
"attributes": { "attributes": {
"exclude_symlink_directories": null, "exclude_symlink_directories": null,
"excludes": null, "excludes": null,
"id": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", "id": "515512e32678f33a54e5966a8129eda5c3760a1d",
"output_base64sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", "output_base64sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=",
"output_base64sha512": "39KD5BHf3LEcSJpNUHrQ6R9mzmNWSVojgsdDlZIHAhy7c5tjNepQbdaquHGE18mVEAuOXc0mD8wSQrTO5kIcEA==", "output_base64sha512": "12CUIHQhDkHp43k1q5Gy4hXXoxGDNIu29F7ie5pCVd32UVpbTqSDauPSmlt4g8sKir0wvcfbZaYXoTbGrqZPAw==",
"output_file_mode": null, "output_file_mode": null,
"output_md5": "1b73b73d80a3b5095ea415fd5665b397", "output_md5": "d84a656b31cd286363d787c80b6abfaf",
"output_path": "./lambda_zip/standout_lambda_config-prod.zip", "output_path": "./lambda_zip/standout_lambda_config-prod.zip",
"output_sha": "c70e679bb3c7f54d8ebf05e81f2757cae660be79", "output_sha": "515512e32678f33a54e5966a8129eda5c3760a1d",
"output_sha256": "dc18155352d92003464aa151b30b5f70a38f6546d0467b725e4601bda954a3f6", "output_sha256": "079272356231dddc3e1b519c54e99fadd1869e11ef64059860fdfca045f77699",
"output_sha512": "dfd283e411dfdcb11c489a4d507ad0e91f66ce6356495a2382c743959207021cbb739b6335ea506dd6aab87184d7c995100b8e5dcd260fcc1242b4cee6421c10", "output_sha512": "d760942074210e41e9e37935ab91b2e215d7a31183348bb6f45ee27b9a4255ddf6515a5b4ea4836ae3d29a5b7883cb0a8abd30bdc7db65a617a136c6aea64f03",
"output_size": 4619, "output_size": 4971,
"source": [], "source": [],
"source_content": null, "source_content": null,
"source_content_filename": null, "source_content_filename": null,
@@ -420,7 +420,9 @@
"force_detach_policies": false, "force_detach_policies": false,
"id": "iam_for_lambda-prod", "id": "iam_for_lambda-prod",
"inline_policy": [], "inline_policy": [],
"managed_policy_arns": [], "managed_policy_arns": [
"arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
],
"max_session_duration": 3600, "max_session_duration": 3600,
"name": "iam_for_lambda-prod", "name": "iam_for_lambda-prod",
"name_prefix": "", "name_prefix": "",
@@ -473,7 +475,7 @@
"x86_64" "x86_64"
], ],
"arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod",
"code_sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", "code_sha256": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=",
"code_signing_config_arn": "", "code_signing_config_arn": "",
"dead_letter_config": [], "dead_letter_config": [],
"description": "", "description": "",
@@ -482,7 +484,7 @@
"variables": { "variables": {
"BUCKET_CONFIG": "standout-config-prod", "BUCKET_CONFIG": "standout-config-prod",
"BUCKET_DATA": "standout-data-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": "", "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", "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": "", "kms_key_arn": "",
"last_modified": "2024-05-25T13:19:36.000+0000", "last_modified": "2024-05-26T08:43:12.000+0000",
"layers": [ "layers": [
"arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2"
], ],
@@ -529,8 +531,8 @@
"signing_profile_version_arn": "", "signing_profile_version_arn": "",
"skip_destroy": false, "skip_destroy": false,
"snap_start": [], "snap_start": [],
"source_code_hash": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=", "source_code_hash": "B5JyNWIx3dw+G1GcVOmfrdGGnhHvZAWYYP38oEX3dpk=",
"source_code_size": 4619, "source_code_size": 4971,
"tags": {}, "tags": {},
"tags_all": {}, "tags_all": {},
"timeout": 10, "timeout": 10,
@@ -546,8 +548,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
@@ -752,8 +752,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "bnVsbA==", "private": "bnVsbA==",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_function.lambda_standout_config", "aws_lambda_function.lambda_standout_config",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
@@ -985,8 +983,6 @@
"sensitive_attributes": [], "sensitive_attributes": [],
"private": "bnVsbA==", "private": "bnVsbA==",
"dependencies": [ "dependencies": [
"aws_apigatewayv2_api.api_standout_gateway",
"aws_apigatewayv2_stage.api_standout_lambda_stage",
"aws_iam_role.iam_for_lambda", "aws_iam_role.iam_for_lambda",
"aws_lambda_function.lambda_standout_config", "aws_lambda_function.lambda_standout_config",
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",

View File

@@ -1,7 +1,7 @@
{ {
"version": 4, "version": 4,
"terraform_version": "1.8.3", "terraform_version": "1.8.4",
"serial": 34, "serial": 37,
"lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9", "lineage": "bfb14822-28e1-8bec-1200-85cd7662a2f9",
"outputs": {}, "outputs": {},
"resources": [ "resources": [
@@ -40,7 +40,39 @@
{ {
"mode": "data", "mode": "data",
"type": "archive_file", "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\"]", "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]",
"instances": [ "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", "mode": "data",
"type": "aws_iam_policy_document", "type": "aws_iam_policy_document",
@@ -317,7 +317,7 @@
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
"aws_s3_bucket.s3_standout_config", "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" "data.aws_iam_policy_document.lambda_role"
] ]
} }
@@ -356,7 +356,7 @@
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
"aws_s3_bucket.s3_standout_config", "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" "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", "mode": "managed",
"type": "aws_lambda_function", "type": "aws_lambda_function",
@@ -451,7 +473,7 @@
"x86_64" "x86_64"
], ],
"arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod", "arn": "arn:aws:lambda:eu-central-1:654654203111:function:standout-config-prod",
"code_sha256": "7cpCQD1Lf6QDwSPk/edCa8XDZReUu7rRhhCagnooAic=", "code_sha256": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=",
"code_signing_config_arn": "", "code_signing_config_arn": "",
"dead_letter_config": [], "dead_letter_config": [],
"description": "", "description": "",
@@ -478,7 +500,7 @@
"image_uri": "", "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", "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": "", "kms_key_arn": "",
"last_modified": "2024-05-25T12:34:13.337+0000", "last_modified": "2024-05-25T13:19:36.000+0000",
"layers": [ "layers": [
"arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2" "arn:aws:lambda:eu-central-1:654654203111:layer:lambda_deps:2"
], ],
@@ -507,8 +529,8 @@
"signing_profile_version_arn": "", "signing_profile_version_arn": "",
"skip_destroy": false, "skip_destroy": false,
"snap_start": [], "snap_start": [],
"source_code_hash": "mkE1bCQmCXsgdkpJX1yscIbANLYmcWlTyALzfx2BqbI=", "source_code_hash": "3BgVU1LZIANGSqFRswtfcKOPZUbQRntyXkYBvalUo/Y=",
"source_code_size": 4639, "source_code_size": 4619,
"tags": {}, "tags": {},
"tags_all": {}, "tags_all": {},
"timeout": 10, "timeout": 10,
@@ -530,7 +552,7 @@
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
"aws_s3_bucket.s3_standout_config", "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" "data.aws_iam_policy_document.lambda_role"
] ]
} }
@@ -625,7 +647,7 @@
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
"aws_s3_bucket.s3_standout_config", "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" "data.aws_iam_policy_document.lambda_role"
] ]
} }
@@ -699,7 +721,7 @@
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
"aws_s3_bucket.s3_standout_config", "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" "data.aws_iam_policy_document.lambda_role"
] ]
} }
@@ -737,7 +759,7 @@
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
"aws_s3_bucket.s3_standout_config", "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" "data.aws_iam_policy_document.lambda_role"
] ]
} }
@@ -777,7 +799,7 @@
"logging": [], "logging": [],
"object_lock_configuration": [], "object_lock_configuration": [],
"object_lock_enabled": false, "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", "region": "eu-central-1",
"replication_configuration": [], "replication_configuration": [],
"request_payer": "BucketOwner", "request_payer": "BucketOwner",
@@ -970,7 +992,7 @@
"aws_lambda_layer_version.lambda_layer", "aws_lambda_layer_version.lambda_layer",
"aws_s3_bucket.s3_standout", "aws_s3_bucket.s3_standout",
"aws_s3_bucket.s3_standout_config", "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" "data.aws_iam_policy_document.lambda_role"
] ]
} }

View File

@@ -7,3 +7,8 @@ variable "env" {
type = string type = string
default = "dev" default = "dev"
} }
variable "redirect_url" {
type = string
default = "https://nfc.standout.it/dev"
}