async function handleCreate()

in source/stackset-output-consolidator/index.ts [14:47]


async function handleCreate(props: ICustomResourceRequest["ResourceProperties"]): Promise<CompletionStatus> {
  try {
    const listInstancesParams: AWS.CloudFormation.ListStackInstancesInput = {
      StackSetName: props.StackSetId
    };

    console.log('Listing StackSet Instances', listInstancesParams);
    const response = await cfn.listStackInstances(listInstancesParams).promise();
    console.log('List StackSet Instances Response', response);

    const primaryStackSetInstanceId = response.Summaries.find(summary => summary.Region === props.PrimaryRegion).StackId;
    const secondaryStackSetInstanceId = response.Summaries.find(summary => summary.Region === props.SecondaryRegion).StackId;

    const primaryInstanceOutputs = await getStackSetInstanceOutputs(primaryStackSetInstanceId, props.PrimaryRegion);
    const secondaryInstanceOutputs = await getStackSetInstanceOutputs(secondaryStackSetInstanceId, props.SecondaryRegion);

    return {
      Status: StatusTypes.Success,
      Data: {
        PrimaryRoutingLayerApiId: primaryInstanceOutputs.find(output => output.OutputKey === 'RoutingLayerApiId').OutputValue,
        PrimaryPhotosApiId: primaryInstanceOutputs.find(output => output.OutputKey === 'PhotosApiId').OutputValue,
        PrimaryObjectStoreBucket: primaryInstanceOutputs.find(output => output.OutputKey === 'ObjectStoreBucketName').OutputValue,
        SecondaryRoutingLayerApiId: secondaryInstanceOutputs.find(output => output.OutputKey === 'RoutingLayerApiId').OutputValue,
        SecondaryPhotosApiId: secondaryInstanceOutputs.find(output => output.OutputKey === 'PhotosApiId').OutputValue,
        SecondaryObjectStoreBucket: secondaryInstanceOutputs.find(output => output.OutputKey === 'ObjectStoreBucketName').OutputValue
      }
    };
  } catch (error) {
    return {
      Status: StatusTypes.Failed,
      Data: error
    };
  }
}