public setupUi()

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)
      }
    });
  }