in source/infrastructure/lib/custom-resource.ts [142:219]
public setupUi(props: CustomResourceSetupUiProps) {
this.sourceCodeBucket.grantRead(this.helperLambda, `${this.sourceCodePrefix}/*`);
props.consoleBucket.grantPut(this.helperLambda);
props.routesBucket.grantPut(this.helperLambda);
new CustomResource(this, 'CopyRouteFiles', {
serviceToken: this.helperLambda.functionArn,
resourceType: 'Custom::CopyRouteFiles',
properties: {
Resource: 'CopyS3Assets',
SourceBucket: this.sourceCodeBucket.bucketName,
SourcePrefix: this.sourceCodePrefix,
ManifestFile: 'routes-manifest.json',
DestinationBucket: props.routesBucket.bucketName
}
});
new CustomResource(this, 'CopyConsoleFiles', {
serviceToken: this.helperLambda.functionArn,
resourceType: 'Custom::CopyConsoleFiles',
properties: {
Resource: 'CopyS3Assets',
SourceBucket: this.sourceCodeBucket.bucketName,
SourcePrefix: this.sourceCodePrefix,
ManifestFile: 'site-manifest.json',
DestinationBucket: props.consoleBucket.bucketName
}
});
const config = {
aws_iot_endpoint: this.iotEndpoint,
API: {
endpoints: [
{
name: 'ids',
endpoint: props.apiEndpoint,
region: Aws.REGION
}
]
},
Auth: {
identityPoolId: props.cognitoIdentityPool,
region: Aws.REGION,
userPoolId: props.cognitoUserPool,
userPoolWebClientId: props.cognitoUserPoolClient
},
aws_iot_policy_name: props.iotPolicyName,
aws_project_region: Aws.REGION,
geo: {
AmazonLocationService: {
region: Aws.REGION,
maps: {
items: {
[props.mapName]: {
style: "VectorEsriNavigation",
},
},
default: props.mapName,
},
search_indices: {
items: [props.placeIndexName],
default: props.placeIndexName,
},
},
},
};
new CustomResource(this, 'ConsoleConfig', {
serviceToken: this.helperLambda.functionArn,
resourceType: 'Custom::CopyConfigFiles',
properties: {
Resource: 'CreateConfig',
ConfigFileName: 'aws_config.js',
DestinationBucket: props.consoleBucket.bucketName,
configObj: JSON.stringify(config)
}
});
}