diff --git a/libs/aws/reverse-proxy/update-proxy.ts b/libs/aws/reverse-proxy/update-proxy.ts index 3fce485f4fe93868c221037444ca76e76675c805..d0e771eda65fb9d3138c95f771302185d60a01b5 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; }