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