UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 1.99 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isCompleteHandler=exports.onEventHandler=void 0;const client_dynamodb_1=require("@aws-sdk/client-dynamodb");async function onEventHandler(event){console.log("Event: %j",{...event,ResponseURL:"..."});const dynamodb=new client_dynamodb_1.DynamoDB({}),tableName=event.ResourceProperties.TableName,region=event.ResourceProperties.Region;let updateTableAction;if(event.RequestType==="Create"||event.RequestType==="Delete")updateTableAction=event.RequestType;else{const describeTableResult=await dynamodb.describeTable({TableName:tableName});console.log("Describe table: %j",describeTableResult),updateTableAction=describeTableResult.Table?.Replicas?.some(replica=>replica.RegionName===region)?void 0:"Create"}if(updateTableAction){const data=await dynamodb.updateTable({TableName:tableName,ReplicaUpdates:[{[updateTableAction]:{RegionName:region}}]});console.log("Update table: %j",data)}else console.log("Skipping updating Table, as a replica in '%s' already exists",region);return event.RequestType==="Create"||event.RequestType==="Update"?{PhysicalResourceId:`${tableName}-${region}`}:{}}exports.onEventHandler=onEventHandler;async function isCompleteHandler(event){console.log("Event: %j",{...event,ResponseURL:"..."});const data=await new client_dynamodb_1.DynamoDB({}).describeTable({TableName:event.ResourceProperties.TableName});console.log("Describe table: %j",data);const tableActive=data.Table?.TableStatus==="ACTIVE",regionReplica=(data.Table?.Replicas??[]).find(r=>r.RegionName===event.ResourceProperties.Region),replicaActive=regionReplica?.ReplicaStatus==="ACTIVE",skipReplicationCompletedWait=event.ResourceProperties.SkipReplicationCompletedWait==="true";switch(event.RequestType){case"Create":case"Update":return{IsComplete:tableActive&&(replicaActive||skipReplicationCompletedWait)};case"Delete":return{IsComplete:tableActive&&regionReplica===void 0}}}exports.isCompleteHandler=isCompleteHandler;