diff --git a/java/deployment/cdk/src/main/java/sleeper/cdk/stack/SleeperCoreStacks.java b/java/deployment/cdk/src/main/java/sleeper/cdk/stack/SleeperCoreStacks.java index 2187de0715c..dc83ca52823 100644 --- a/java/deployment/cdk/src/main/java/sleeper/cdk/stack/SleeperCoreStacks.java +++ b/java/deployment/cdk/src/main/java/sleeper/cdk/stack/SleeperCoreStacks.java @@ -19,6 +19,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import software.amazon.awscdk.CustomResource; import software.amazon.awscdk.Stack; import software.amazon.awscdk.services.cloudwatch.IMetric; import software.amazon.awscdk.services.ec2.ISubnet; @@ -240,8 +241,8 @@ public void grantReadTablesStatus(IGrantable grantee) { tableIndexStack.grantRead(grantee); } - public void addAutoDeleteS3Objects(Construct scope, IBucket bucket) { - autoDeleteS3Stack.addAutoDeleteS3Objects(scope, bucket); + public CustomResource addAutoDeleteS3Objects(Construct scope, IBucket bucket) { + return autoDeleteS3Stack.addAutoDeleteS3Objects(scope, bucket); } public void addAutoStopEcsClusterTasksAfterTaskCreatorIsDeleted(Construct scope, ICluster cluster, IFunction taskCreator) { diff --git a/java/deployment/cdk/src/main/java/sleeper/cdk/stack/core/AutoDeleteS3ObjectsStack.java b/java/deployment/cdk/src/main/java/sleeper/cdk/stack/core/AutoDeleteS3ObjectsStack.java index 4e2468a7618..8899d7e171f 100644 --- a/java/deployment/cdk/src/main/java/sleeper/cdk/stack/core/AutoDeleteS3ObjectsStack.java +++ b/java/deployment/cdk/src/main/java/sleeper/cdk/stack/core/AutoDeleteS3ObjectsStack.java @@ -91,10 +91,11 @@ private void createLambda(InstanceProperties instanceProperties, SleeperInstance /** * Adds a custom resource to delete a bucket's contents. * - * @param scope the stack to add the custom resource to - * @param bucket the bucket to delete from + * @param scope the stack to add the custom resource to + * @param bucket the bucket to delete from + * @return a custom resource */ - public void addAutoDeleteS3Objects(Construct scope, IBucket bucket) { + public CustomResource addAutoDeleteS3Objects(Construct scope, IBucket bucket) { String id = bucket.getNode().getId() + "-AutoDelete"; @@ -105,6 +106,8 @@ public void addAutoDeleteS3Objects(Construct scope, IBucket bucket) { .build(); customResource.getNode().addDependency(bucket); + + return customResource; } } diff --git a/java/deployment/cdk/src/main/java/sleeper/cdk/stack/query/QueryStack.java b/java/deployment/cdk/src/main/java/sleeper/cdk/stack/query/QueryStack.java index a1368da03e7..992e65735a3 100644 --- a/java/deployment/cdk/src/main/java/sleeper/cdk/stack/query/QueryStack.java +++ b/java/deployment/cdk/src/main/java/sleeper/cdk/stack/query/QueryStack.java @@ -18,6 +18,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import software.amazon.awscdk.CfnOutput; import software.amazon.awscdk.CfnOutputProps; +import software.amazon.awscdk.CustomResource; import software.amazon.awscdk.Duration; import software.amazon.awscdk.NestedStack; import software.amazon.awscdk.RemovalPolicy; @@ -83,6 +84,7 @@ public class QueryStack extends NestedStack { private IFunction queryExecutorLambda; private IFunction leafPartitionQueryLambda; + private CustomResource autoDeleteS3Objects; public QueryStack(Construct scope, String id, @@ -185,6 +187,9 @@ private IFunction setupLeafPartitionQueryQueueAndLambda( .batchSize(1) .build(); + if (autoDeleteS3Objects != null) { + lambda.getNode().addDependency(autoDeleteS3Objects); + } lambda.addEventSource(new SqsEventSource(leafPartitionQueryQueue, eventSourceProps)); return lambda; @@ -306,7 +311,7 @@ private IBucket setupResultsBucket(InstanceProperties instanceProperties, Sleepe instanceProperties.set(CdkDefinedInstanceProperty.QUERY_RESULTS_BUCKET, resultsBucket.getBucketName()); if (removalPolicy == RemovalPolicy.DESTROY) { - coreStacks.addAutoDeleteS3Objects(this, resultsBucket); + autoDeleteS3Objects = coreStacks.addAutoDeleteS3Objects(this, resultsBucket); } return resultsBucket;