private createSimulationEndpoint()

in src/modules/insights/cdk/lib/iot-twin-maker-sagemaker-stack.ts [143:192]


  private createSimulationEndpoint(
    props: IotTwinMakerSageMakerStackProps,
    executionRole: Role,
    dockerImageAsset: DockerImageAsset,
    simulationModelAsset: assets.Asset
  ): CfnEndpoint {
    const sageMakerSimulationModel = new CfnModel(
      this,
      "SageMakerSimulationModel",
      {
        executionRoleArn: executionRole.roleArn,
        modelName: `${props.simulationType}-Model-${new Date().valueOf()}`,
        containers: [
          {
            image: dockerImageAsset.imageUri,
            mode: "SingleModel",
            modelDataUrl: simulationModelAsset.httpUrl,
          },
        ],
      }
    );
    sageMakerSimulationModel.node.addDependency(
      dockerImageAsset,
      simulationModelAsset,
      executionRole
    );

    const simulationEndpointConfig = new CfnEndpointConfig(
      this,
      "SagemakerSimulationEndpointConfig",
      {
        productionVariants: [
          {
            initialInstanceCount: 1.0,
            initialVariantWeight: 1.0,
            instanceType: "ml.m4.xlarge",
            modelName: sageMakerSimulationModel.modelName!,
            variantName: "AllTraffic", // keep variant name constant
          },
        ],
      }
    );
    simulationEndpointConfig.node.addDependency(sageMakerSimulationModel);

    const simulationEndpoint = new CfnEndpoint(this, "SimulationEndpoint", {
      endpointConfigName: simulationEndpointConfig.attrEndpointConfigName!,
    });
    simulationEndpoint.node.addDependency(simulationEndpointConfig);
    return simulationEndpoint;
  }