From d14c54627bc151a17431efe98f8870eeac9736d3 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 22 May 2024 11:20:32 -0600
Subject: [PATCH] add deletion policy

---
 libs/aws/reverse-proxy/update-proxy.ts | 42 ++++++++++++++++++++------
 1 file changed, 33 insertions(+), 9 deletions(-)

diff --git a/libs/aws/reverse-proxy/update-proxy.ts b/libs/aws/reverse-proxy/update-proxy.ts
index 3fce485..d0e771e 100644
--- a/libs/aws/reverse-proxy/update-proxy.ts
+++ b/libs/aws/reverse-proxy/update-proxy.ts
@@ -1,4 +1,12 @@
-import {aws_ssm as ssm, custom_resources as cr, Stack} from 'aws-cdk-lib';
+import {
+  aws_ssm as ssm,
+  CfnDeletionPolicy,
+  CfnResource,
+  custom_resources as cr,
+  CustomResource,
+  RemovalPolicy,
+  Stack,
+} from 'aws-cdk-lib';
 import {Construct} from 'constructs';
 import * as fs from 'fs';
 import * as path from 'path';
@@ -89,12 +97,28 @@ export function updateProxy(props: UpdateProxyProps): cr.AwsCustomResource {
     },
   };
 
-  return new cr.AwsCustomResource(props.scope, `${props.id}SnsReverseProxy`, {
-    onCreate: sdkCall,
-    onDelete: onDeleteSdkCall,
-    onUpdate: sdkCall,
-    policy: cr.AwsCustomResourcePolicy.fromSdkCalls({
-      resources: cr.AwsCustomResourcePolicy.ANY_RESOURCE,
-    }),
-  });
+  const customResource = new cr.AwsCustomResource(
+    props.scope,
+    `${props.id}SnsReverseProxy`,
+    {
+      onCreate: sdkCall,
+      onDelete: onDeleteSdkCall,
+      onUpdate: sdkCall,
+      removalPolicy: RemovalPolicy.RETAIN,
+      policy: cr.AwsCustomResourcePolicy.fromSdkCalls({
+        resources: cr.AwsCustomResourcePolicy.ANY_RESOURCE,
+      }),
+    }
+  );
+
+  const cfnResource = (
+    customResource.node.defaultChild as CustomResource | undefined
+  )?.node.defaultChild as CfnResource | undefined;
+
+  // Update deletion policy
+  if (cfnResource instanceof CfnResource) {
+    cfnResource.addOverride('DeletionPolicy', CfnDeletionPolicy.DELETE);
+  }
+
+  return customResource;
 }
-- 
GitLab