From d59e095a11ac69255bc0946a625ce41793b4c9cc Mon Sep 17 00:00:00 2001 From: badra001 Date: Wed, 26 Apr 2023 12:09:46 -0400 Subject: [PATCH] fix --- code/ddns-lambda.py | 29 +++++++++++++++++------------ code/ddns-lambda.zip | Bin 21846 -> 21987 bytes 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/code/ddns-lambda.py b/code/ddns-lambda.py index ad1a3fe..362cf45 100755 --- a/code/ddns-lambda.py +++ b/code/ddns-lambda.py @@ -73,7 +73,7 @@ LOGGER = logging.getLogger() account_id = None region = None -VERSION = '1.2.0b56' +VERSION = '1.2.0b57' # Read Env variables DEBUG_LOG_LEVEL = os.environ.get('DebugLogLevel', 'INFO') @@ -373,6 +373,10 @@ def lambda_handler( LOGGER.info("instance: %s, no instance data, repeat check: %s", instance_id, lineno()) +# instance object to/from DDB contains the instance data from get_instances (Reservations). +# We are adding a fake entry to it _DnsEntries to store what was added by the code, so we can also easily remove it later +# to avoid orphaned records + # Remove response metadata from the response if 'ResponseMetadata' in instance: instance.pop('ResponseMetadata') @@ -391,21 +395,22 @@ def lambda_handler( put_item_in_dynamodb_table(dynamodb_client, DDBNAME, instance_id, instance_attributes) LOGGER.debug("done putting item in dynamo table %s", lineno()) + dns_data = [] else: + # state is stopping or terminating # Fetch item from DynamoDB LOGGER.info("Fetching instance information from dynamodb %s", lineno()) instance = get_item_from_dynamodb_table(dynamodb_client, DDBNAME, instance_id) LOGGER.info("instance attributes: %s", str(instance) + lineno()) - -## LOGGER.info(f"Fetching instance DNS information from dynamodb {lineno()}") -# instance_dns_data = get_item_from_dynamodb_table( -# dynamodb_client, DDBNAME, f'{instance_id}/dns') -## LOGGER.info(f"got instance dns data: {instance_dns_data}") -# if instance_dns_data: -# instance_dns_data_dict = json.loads(instance_dns_data, default=json_serial) -## instance_dns_data_dict = json.loads(instance_dns_data) -# LOGGER.info( -# f"instance dns data: {str(instance_dns_data)} length {len(instance_dns_data_dict)} {lineno()}") + try: + instance_data = json.loads(instance) + dns_data_raw = instance_data.get('_DnsEntries', []) + dns_data = [dns_data_tuple(**item) for item in dns_data_raw] + LOGGER.info( + f"Found entries from DDB for DNS records: {str(dns_data)} {lineno()}") + except: + LOGGER.error(f"Cannot deserialize instance data from DDB {lineno()}") + dns_data = [] # Get the instance tags and reorder them because we want a zone created before CNAME try: @@ -732,9 +737,9 @@ def lambda_handler( " %s", str(heritage_value) + lineno()) delete_records = True - dns_data = [] # Create OR Delete the A / PTR Record if state == 'running': + dns_data = [] if not flags['noforward']: # create the records try: diff --git a/code/ddns-lambda.zip b/code/ddns-lambda.zip index 36cbb29771cd8a564f6677aed2f594cc7c5c9057..36c0a2b93e0f761de515623b9ce969d4449085a9 100644 GIT binary patch delta 18203 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%0APy3~Bi$Jp&l<;L!Ffu8)ZMZ&t zaZTt{=2TI8N0Q(71;4*PMF+;^rRX`Rr_++@H-y?$^8(3A+!PUe1VNgA$%$y@BS!A5 zQ+dhE0^U@NHpQSHB0x)~hE@HoiRw^~WHKZ7bNL1UNy1f4J7gR(@P6DlJ8DIrzqsFM zYYV!*Y_L}|y-Ejm<#Uyg!UC4T3A65=GHysJgMqmwY7q7<#kTG9yYI@XIQV#ccQi~!n4=QXnMgd(#5vDY#@-{N2lv-Li>6mKe zVLemTF;E?|0Amu`9O`chA$ z8dJ|kb*7#z)tY*?QE%$mM$M@wnEW!?U{5+0T3xaFVR4k9;ELa+I#iERi++llYSCfT zZl|6(x6qO5xtFegRL^~Nrg|PzcLJBW3xIl#L64|O)pK8ss-A~xR`t|tSoJ(a({6xq zKaH!N4Vt%{*h2TV9-3w)jT(t&vPo@&vo7ezaj72Vc}9_Z+EQ4;DG6T4S_#rD9XuAZ zqsf2wc84n2ybn@orKGc@h(%`M>a7s_=}7I`M$$=FU2>a$UHEsLmWBiW)vJ?s{za3` zymdBP&H1bv)BC}8%|@H1l|A#>b$4#IW&G~v≫Q+q%A9a56bTy_Hhh){#(m$e647-`L5p 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 S0PTSQlP^^v29Z?&0000---IIo delta 18044 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 P@RO@mG6n=y00000(m4;s