From 1d41788c7050a112c54489ffe1305ccf7827d630 Mon Sep 17 00:00:00 2001 From: Sundersingh Date: Fri, 19 Jul 2024 10:44:27 -0700 Subject: [PATCH] fix(amplify-category-api): handle removing some of the tags --- .../amplify-table-manager-handler.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/amplify-graphql-model-transformer/src/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.ts b/packages/amplify-graphql-model-transformer/src/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.ts index ae43017206..942c6b599e 100644 --- a/packages/amplify-graphql-model-transformer/src/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.ts +++ b/packages/amplify-graphql-model-transformer/src/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.ts @@ -224,17 +224,29 @@ const processOnEvent = async ( Object.values(tableDef.tags ?? []).forEach((tag) => { newTags.push({ Key: tag.key, Value: tag.value }); }); - if (currentTableTags && currentTableTags.length > 0 && (!newTags || newTags.length === 0)) { + + const removeTags: string[] = []; + currentTableTags.forEach((tag) => { + if (!newTags.some((newTag) => newTag.Key === tag.Key)) { + removeTags.push(tag.Key!); + } + }); + + // Handle tags deletion + if (removeTags.length > 0) { await ddbClient.untagResource({ ResourceArn: describeTableResult.Table.TableArn, - TagKeys: currentTableTags.map((tag) => tag.Key!), + TagKeys: removeTags, }); await retry( async () => await isTableReady(event.PhysicalResourceId!), (res) => res === true, ); console.log(`Table '${event.PhysicalResourceId}' is ready after the deletion of Tags.`); - } else if (requiresTagsUpdate(currentTableTags, newTags)) { + } + + // Handle tags addition/updates + if (requiresTagsUpdate(currentTableTags, newTags)) { console.log('Detected tag changes: ', tableDef.tags); await ddbClient.tagResource({ ResourceArn: describeTableResult.Table.TableArn,