text: #!/usr/bin/env python3
  
  # Uncomment the apply(use_aws_secret()) below if you are not using OIDC
  # more info : https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples/README.md
  
  import kfp
  import json
  import copy
  from kfp import components
  from kfp import dsl
  from kfp.aws import use_aws_secret
  
  sagemaker_train_op = components.load_component_from_file('../../../../components/aws/sagemaker/train/component.yaml')
  
  channelObjList = []
  
  channelObj = {
      'ChannelName': '',
      'DataSource': {
          'S3DataSource': {
              'S3Uri': '',
              'S3DataType': 'S3Prefix',
              'S3DataDistributionType': 'FullyReplicated'
          }
      },
      'CompressionType': 'None',
      'RecordWrapperType': 'None',
      'InputMode': 'File'
  }
  
  channelObj['ChannelName'] = 'train'
  channelObj['DataSource']['S3DataSource']['S3Uri'] = 's3://kubeflow-pipeline-data/mnist_kmeans_example/data'
  channelObjList.append(copy.deepcopy(channelObj))
  
  
  @dsl.pipeline(
      name='Training pipeline',
      description='SageMaker training job test'
  )
  def training(
          region='us-east-1',
          endpoint_url='',
          image='382416733822.dkr.ecr.us-east-1.amazonaws.com/kmeans:1',
          training_input_mode='File',
          hyperparameters={"k": "10", "feature_dim": "784"},
          channels=channelObjList,
          instance_type='ml.m5.2xlarge',
          instance_count=1,
          volume_size=50,
          max_run_time=3600,
          model_artifact_path='s3://kubeflow-pipeline-data/mnist_kmeans_example/data',
          output_encryption_key='',
          network_isolation=True,
          traffic_encryption=False,
          spot_instance=False,
          max_wait_time=3600,
          checkpoint_config={},
          role=''
          ):
      training = sagemaker_train_op(
          region=region,
          endpoint_url=endpoint_url,
          image=image,
          training_input_mode=training_input_mode,
          hyperparameters=hyperparameters,
          channels=channels,
          instance_type=instance_type,
          instance_count=instance_count,
          volume_size=volume_size,
          max_run_time=max_run_time,
          model_artifact_path=model_artifact_path,
          output_encryption_key=output_encryption_key,
          network_isolation=network_isolation,
          traffic_encryption=traffic_encryption,
          spot_instance=spot_instance,
          max_wait_time=max_wait_time,
          checkpoint_config=checkpoint_config,
          role=role,
      )#.apply(use_aws_secret('aws-secret', 'AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY'))
  
  
  if __name__ == '__main__':
      kfp.compiler.Compiler().compile(training, __file__ + '.zip')
  