@@ -611,6 +611,7 @@ const infraRegionAndTargetPrompts = [
611611 choices : [
612612 { name : 'SageMaker Managed Inference - Real Time' , value : 'managed-inference' } ,
613613 { name : 'SageMaker Managed Inference - Async' , value : 'async-inference' } ,
614+ { name : 'SageMaker Managed Inference - Batch' , value : 'batch-transform' } ,
614615 { name : 'SageMaker HyperPod - EKS' , value : 'hyperpod-eks' }
615616 ] ,
616617 default : 'managed-inference'
@@ -622,7 +623,7 @@ const infraInstancePrompts = [
622623 {
623624 type : 'list' ,
624625 name : 'instanceType' ,
625- when : answers => answers . deploymentTarget === 'managed-inference' || answers . deploymentTarget === 'async-inference' || answers . deploymentTarget === 'hyperpod-eks' ,
626+ when : answers => answers . deploymentTarget === 'managed-inference' || answers . deploymentTarget === 'async-inference' || answers . deploymentTarget === 'batch-transform' || answers . deploymentTarget === ' hyperpod-eks',
626627 message : ( answers ) => {
627628 const framework = answers . framework || answers . deploymentConfig ?. split ( '-' ) [ 0 ] ;
628629
@@ -854,6 +855,80 @@ const infraAsyncPrompts = [
854855 }
855856] ;
856857
858+ /**
859+ * Sub-phase: Batch transform-specific prompts (only when deploymentTarget === 'batch-transform')
860+ * Requirements: 2.1, 2.2, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9
861+ */
862+ const infraBatchTransformPrompts = [
863+ {
864+ type : 'input' ,
865+ name : 'batchInputPath' ,
866+ message : 'S3 input path for batch transform data (leave empty for default: s3://ml-container-creator-batch-{region}-{account-id}/{project-name}/input/):' ,
867+ when : answers => answers . deploymentTarget === 'batch-transform'
868+ } ,
869+ {
870+ type : 'input' ,
871+ name : 'batchOutputPath' ,
872+ message : 'S3 output path for batch transform results (leave empty for default: s3://ml-container-creator-batch-{region}-{account-id}/{project-name}/output/):' ,
873+ when : answers => answers . deploymentTarget === 'batch-transform'
874+ } ,
875+ {
876+ type : 'number' ,
877+ name : 'batchInstanceCount' ,
878+ message : 'How many instances should run the batch job in parallel?' ,
879+ default : 1 ,
880+ when : answers => answers . deploymentTarget === 'batch-transform'
881+ } ,
882+ {
883+ type : 'list' ,
884+ name : 'batchSplitType' ,
885+ message : 'Input file format — how should SageMaker read your input files?' ,
886+ choices : [
887+ { name : 'Line — one record per line (JSON lines, CSV)' , value : 'Line' } ,
888+ { name : 'RecordIO — Amazon RecordIO format' , value : 'RecordIO' } ,
889+ { name : 'None — send each file as a single request' , value : 'None' }
890+ ] ,
891+ default : 'Line' ,
892+ when : answers => answers . deploymentTarget === 'batch-transform'
893+ } ,
894+ {
895+ type : 'list' ,
896+ name : 'batchStrategy' ,
897+ message : 'How many records should be sent per inference request?' ,
898+ choices : [
899+ { name : 'MultiRecord — batch multiple records per request (higher throughput)' , value : 'MultiRecord' } ,
900+ { name : 'SingleRecord — one record per request (simpler, more predictable)' , value : 'SingleRecord' }
901+ ] ,
902+ default : 'MultiRecord' ,
903+ when : answers => answers . deploymentTarget === 'batch-transform'
904+ } ,
905+ {
906+ type : 'list' ,
907+ name : 'batchJoinSource' ,
908+ message : 'Include original input data alongside predictions in the output?' ,
909+ choices : [
910+ { name : 'No — output predictions only' , value : 'None' } ,
911+ { name : 'Yes — merge input with predictions (useful for traceability)' , value : 'Input' }
912+ ] ,
913+ default : 'None' ,
914+ when : answers => answers . deploymentTarget === 'batch-transform'
915+ } ,
916+ {
917+ type : 'number' ,
918+ name : 'batchMaxConcurrentTransforms' ,
919+ message : 'Max concurrent inference requests per instance?' ,
920+ default : 1 ,
921+ when : answers => answers . deploymentTarget === 'batch-transform'
922+ } ,
923+ {
924+ type : 'number' ,
925+ name : 'batchMaxPayloadInMB' ,
926+ message : 'Max request payload size in MB (0-100)?' ,
927+ default : 6 ,
928+ when : answers => answers . deploymentTarget === 'batch-transform'
929+ }
930+ ] ;
931+
857932// Combined view for tests and backward compatibility
858933const infrastructurePrompts = [
859934 ...infraRegionAndTargetPrompts ,
@@ -977,6 +1052,7 @@ export {
9771052 infraRegionAndTargetPrompts ,
9781053 infraInstancePrompts ,
9791054 infraAsyncPrompts ,
1055+ infraBatchTransformPrompts ,
9801056 infraHyperPodPrompts ,
9811057 infraBuildPrompts ,
9821058 projectPrompts ,
0 commit comments