SageMaker SDK for SAP ABAP を使用した の例 - AWS SDK コードの例

Doc AWS SDK Examples リポジトリには、他にも SDK の例があります。 AWS GitHub

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SageMaker SDK for SAP ABAP を使用した の例

次のコード例は、 で AWS SDK for SAP ABAP を使用してアクションを実行し、一般的なシナリオを実装する方法を示しています SageMaker。

アクションはより大きなプログラムからのコードの抜粋であり、コンテキスト内で実行する必要があります。アクションは個々のサービス機能を呼び出す方法を示していますが、関連するシナリオやサービス間の例ではアクションのコンテキストが確認できます。

「シナリオ」は、同じサービス内で複数の関数を呼び出して、特定のタスクを実行する方法を示すコード例です。

各例には、 へのリンクが含まれています。ここでは GitHub、コンテキスト内でコードを設定および実行する方法の手順を確認できます。

アクション

次の例は、CreateEndpoint を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

DATA lt_production_variants TYPE /aws1/cl_sgmproductionvariant=>tt_productionvariantlist. DATA lo_production_variants TYPE REF TO /aws1/cl_sgmproductionvariant. DATA oo_ep_config_result TYPE REF TO /aws1/cl_sgmcreateendptcfgout. "Create a production variant as an ABAP object." "Identifies a model that you want to host and the resources chosen to deploy for hosting it." CREATE OBJECT lo_production_variants EXPORTING iv_variantname = iv_variant_name iv_modelname = iv_model_name iv_initialinstancecount = iv_initial_instance_count iv_instancetype = iv_instance_type. INSERT lo_production_variants INTO TABLE lt_production_variants. "Create an endpoint configuration." TRY. oo_ep_config_result = lo_sgm->createendpointconfig( iv_endpointconfigname = iv_endpoint_config_name it_productionvariants = lt_production_variants ). MESSAGE 'Endpoint configuration created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Create an endpoint." TRY. oo_result = lo_sgm->createendpoint( " oo_result is returned for testing purposes. " iv_endpointconfigname = iv_endpoint_config_name iv_endpointname = iv_endpoint_name ). MESSAGE 'Endpoint created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.
  • API の詳細については、CreateEndpointAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、CreateModel を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

DATA lo_primarycontainer TYPE REF TO /aws1/cl_sgmcontainerdefn. "Create an ABAP object for the container image based on input variables." CREATE OBJECT lo_primarycontainer EXPORTING iv_image = iv_container_image iv_modeldataurl = iv_model_data_url. "Create an Amazon SageMaker model." TRY. oo_result = lo_sgm->createmodel( " oo_result is returned for testing purposes. " iv_executionrolearn = iv_execution_role_arn iv_modelname = iv_model_name io_primarycontainer = lo_primarycontainer ). MESSAGE 'Model created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.
  • API の詳細については、CreateModelAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、CreateTrainingJob を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

DATA lo_hyperparameters_w TYPE REF TO /aws1/cl_sgmhyperparameters_w. DATA lt_hyperparameters TYPE /aws1/cl_sgmhyperparameters_w=>tt_hyperparameters. DATA lt_input_data_config TYPE /aws1/cl_sgmchannel=>tt_inputdataconfig. DATA lo_trn_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_trn_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_trn_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_val_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_val_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_val_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_algorithm_specification TYPE REF TO /aws1/cl_sgmalgorithmspec. DATA lo_resource_config TYPE REF TO /aws1/cl_sgmresourceconfig. DATA lo_output_data_config TYPE REF TO /aws1/cl_sgmoutputdataconfig. DATA lo_stopping_condition TYPE REF TO /aws1/cl_sgmstoppingcondition. "Create ABAP internal table for hyperparameters based on input variables." "These hyperparameters are based on the Amazon SageMaker built-in algorithm, XGBoost." CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_max_depth. INSERT VALUE #( key = 'max_depth' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eta. INSERT VALUE #( key = 'eta' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eval_metric. INSERT VALUE #( key = 'eval_metric' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_scale_pos_weight. INSERT VALUE #( key = 'scale_pos_weight' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_subsample. INSERT VALUE #( key = 'subsample' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_objective. INSERT VALUE #( key = 'objective' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_num_round. INSERT VALUE #( key = 'num_round' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. "Create ABAP objects for training data sources." CREATE OBJECT lo_trn_s3datasource EXPORTING iv_s3datatype = iv_trn_data_s3datatype iv_s3datadistributiontype = iv_trn_data_s3datadistribution iv_s3uri = iv_trn_data_s3uri. CREATE OBJECT lo_trn_datasource EXPORTING io_s3datasource = lo_trn_s3datasource. CREATE OBJECT lo_trn_channel EXPORTING iv_channelname = 'train' io_datasource = lo_trn_datasource iv_compressiontype = iv_trn_data_compressiontype iv_contenttype = iv_trn_data_contenttype. INSERT lo_trn_channel INTO TABLE lt_input_data_config. "Create ABAP objects for validation data sources." CREATE OBJECT lo_val_s3datasource EXPORTING iv_s3datatype = iv_val_data_s3datatype iv_s3datadistributiontype = iv_val_data_s3datadistribution iv_s3uri = iv_val_data_s3uri. CREATE OBJECT lo_val_datasource EXPORTING io_s3datasource = lo_val_s3datasource. CREATE OBJECT lo_val_channel EXPORTING iv_channelname = 'validation' io_datasource = lo_val_datasource iv_compressiontype = iv_val_data_compressiontype iv_contenttype = iv_val_data_contenttype. INSERT lo_val_channel INTO TABLE lt_input_data_config. "Create an ABAP object for algorithm specification." CREATE OBJECT lo_algorithm_specification EXPORTING iv_trainingimage = iv_training_image iv_traininginputmode = iv_training_input_mode. "Create an ABAP object for resource configuration." CREATE OBJECT lo_resource_config EXPORTING iv_instancecount = iv_instance_count iv_instancetype = iv_instance_type iv_volumesizeingb = iv_volume_sizeingb. "Create an ABAP object for output data configuration." CREATE OBJECT lo_output_data_config EXPORTING iv_s3outputpath = iv_s3_output_path. "Create an ABAP object for stopping condition." CREATE OBJECT lo_stopping_condition EXPORTING iv_maxruntimeinseconds = iv_max_runtime_in_seconds. "Create a training job." TRY. oo_result = lo_sgm->createtrainingjob( " oo_result is returned for testing purposes. " iv_trainingjobname = iv_training_job_name iv_rolearn = iv_role_arn it_hyperparameters = lt_hyperparameters it_inputdataconfig = lt_input_data_config io_algorithmspecification = lo_algorithm_specification io_outputdataconfig = lo_output_data_config io_resourceconfig = lo_resource_config io_stoppingcondition = lo_stopping_condition ). MESSAGE 'Training job created.' TYPE 'I'. CATCH /aws1/cx_sgmresourceinuse. MESSAGE 'Resource being accessed is in use.' TYPE 'E'. CATCH /aws1/cx_sgmresourcenotfound. MESSAGE 'Resource being accessed is not found.' TYPE 'E'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.
  • API の詳細については、CreateTrainingJobAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、CreateTransformJob を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

DATA lo_transforminput TYPE REF TO /aws1/cl_sgmtransforminput. DATA lo_transformoutput TYPE REF TO /aws1/cl_sgmtransformoutput. DATA lo_transformresources TYPE REF TO /aws1/cl_sgmtransformresources. DATA lo_datasource TYPE REF TO /aws1/cl_sgmtransformdatasrc. DATA lo_s3datasource TYPE REF TO /aws1/cl_sgmtransforms3datasrc. "Create an ABAP object for an Amazon Simple Storage Service (Amazon S3) data source." CREATE OBJECT lo_s3datasource EXPORTING iv_s3uri = iv_tf_data_s3uri iv_s3datatype = iv_tf_data_s3datatype. "Create an ABAP object for data source." CREATE OBJECT lo_datasource EXPORTING io_s3datasource = lo_s3datasource. "Create an ABAP object for transform data source." CREATE OBJECT lo_transforminput EXPORTING io_datasource = lo_datasource iv_contenttype = iv_tf_data_contenttype iv_compressiontype = iv_tf_data_compressiontype. "Create an ABAP object for resource configuration." CREATE OBJECT lo_transformresources EXPORTING iv_instancecount = iv_instance_count iv_instancetype = iv_instance_type. "Create an ABAP object for output data configuration." CREATE OBJECT lo_transformoutput EXPORTING iv_s3outputpath = iv_s3_output_path. "Create a transform job." TRY. oo_result = lo_sgm->createtransformjob( " oo_result is returned for testing purposes. " iv_modelname = iv_tf_model_name iv_transformjobname = iv_tf_job_name io_transforminput = lo_transforminput io_transformoutput = lo_transformoutput io_transformresources = lo_transformresources ). MESSAGE 'Transform job created.' TYPE 'I'. CATCH /aws1/cx_sgmresourceinuse. MESSAGE 'Resource being accessed is in use.' TYPE 'E'. CATCH /aws1/cx_sgmresourcenotfound. MESSAGE 'Resource being accessed is not found.' TYPE 'E'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY.
  • API の詳細については、CreateTransformJobAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、DeleteEndpoint を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

"Delete an endpoint." TRY. lo_sgm->deleteendpoint( iv_endpointname = iv_endpoint_name ). MESSAGE 'Endpoint configuration deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_endpoint_exception). DATA(lv_endpoint_error) = |"{ lo_endpoint_exception->av_err_code }" - { lo_endpoint_exception->av_err_msg }|. MESSAGE lv_endpoint_error TYPE 'E'. ENDTRY. "Delete an endpoint configuration." TRY. lo_sgm->deleteendpointconfig( iv_endpointconfigname = iv_endpoint_config_name ). MESSAGE 'Endpoint deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_endpointconfig_exception). DATA(lv_endpointconfig_error) = |"{ lo_endpointconfig_exception->av_err_code }" - { lo_endpointconfig_exception->av_err_msg }|. MESSAGE lv_endpointconfig_error TYPE 'E'. ENDTRY.
  • API の詳細については、DeleteEndpointAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、DeleteModel を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

TRY. lo_sgm->deletemodel( iv_modelname = iv_model_name ). MESSAGE 'Model deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • API の詳細については、DeleteModelAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、DescribeTrainingJob を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

TRY. oo_result = lo_sgm->describetrainingjob( " oo_result is returned for testing purposes. " iv_trainingjobname = iv_training_job_name ). MESSAGE 'Retrieved description of training job.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • API の詳細については、DescribeTrainingJobAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、ListAlgorithms を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

TRY. oo_result = lo_sgm->listalgorithms( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains ). MESSAGE 'Retrieved list of algorithms.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • API の詳細については、ListAlgorithmsAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、ListModels を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

TRY. oo_result = lo_sgm->listmodels( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains ). MESSAGE 'Retrieved list of models.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • API の詳細については、ListModelsAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、ListNotebookInstances を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

TRY. oo_result = lo_sgm->listnotebookinstances( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains ). MESSAGE 'Retrieved list of notebook instances.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • API の詳細については、ListNotebookInstancesAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

次の例は、ListTrainingJobs を使用する方法を説明しています。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

TRY. oo_result = lo_sgm->listtrainingjobs( " oo_result is returned for testing purposes. " iv_namecontains = iv_name_contains iv_maxresults = iv_max_results ). MESSAGE 'Retrieved list of training jobs.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • API の詳細については、ListTrainingJobsAWS 「 SDK for SAP ABAP API リファレンス」の「」を参照してください。

シナリオ

次のコードサンプルは、以下の操作方法を示しています。

  • トレーニングジョブを開始し、 SageMaker モデルを作成します。

  • エンドポイント設定を作成する

  • エンドポイントを作成して、リソースをクリーンアップします。

SDK for SAP ABAP
注記

については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

DATA lo_hyperparameters_w TYPE REF TO /aws1/cl_sgmhyperparameters_w. DATA lo_trn_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_trn_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_trn_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_val_channel TYPE REF TO /aws1/cl_sgmchannel. DATA lo_val_datasource TYPE REF TO /aws1/cl_sgmdatasource. DATA lo_val_s3datasource TYPE REF TO /aws1/cl_sgms3datasource. DATA lo_algorithm_specification TYPE REF TO /aws1/cl_sgmalgorithmspec. DATA lo_resource_config TYPE REF TO /aws1/cl_sgmresourceconfig. DATA lo_output_data_config TYPE REF TO /aws1/cl_sgmoutputdataconfig. DATA lo_stopping_condition TYPE REF TO /aws1/cl_sgmstoppingcondition. DATA lo_primarycontainer TYPE REF TO /aws1/cl_sgmcontainerdefn. DATA lo_production_variants TYPE REF TO /aws1/cl_sgmproductionvariant. DATA lo_ep_config_result TYPE REF TO /aws1/cl_sgmcreateendptcfgout. DATA lo_training_result TYPE REF TO /aws1/cl_sgmdescrtrnjobrsp. DATA lt_production_variants TYPE /aws1/cl_sgmproductionvariant=>tt_productionvariantlist. DATA lt_input_data_config TYPE /aws1/cl_sgmchannel=>tt_inputdataconfig. DATA lt_hyperparameters TYPE /aws1/cl_sgmhyperparameters_w=>tt_hyperparameters. DATA lv_model_data_url TYPE /aws1/sgmurl. lv_model_data_url = iv_s3_output_path && iv_training_job_name && '/output/model.tar.gz'. "Create ABAP internal table for hyperparameters based on input variables." "These hyperparameters are based on Amazon SageMaker built-in algorithm - XGBoost" CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_max_depth. INSERT VALUE #( key = 'max_depth' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eta. INSERT VALUE #( key = 'eta' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_eval_metric. INSERT VALUE #( key = 'eval_metric' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_scale_pos_weight. INSERT VALUE #( key = 'scale_pos_weight' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_subsample. INSERT VALUE #( key = 'subsample' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_objective. INSERT VALUE #( key = 'objective' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. CREATE OBJECT lo_hyperparameters_w EXPORTING iv_value = iv_hp_num_round. INSERT VALUE #( key = 'num_round' value = lo_hyperparameters_w ) INTO TABLE lt_hyperparameters. "Create ABAP internal table for data based on input variables." "Training data." CREATE OBJECT lo_trn_s3datasource EXPORTING iv_s3datatype = iv_trn_data_s3datatype iv_s3datadistributiontype = iv_trn_data_s3datadistribution iv_s3uri = iv_trn_data_s3uri. CREATE OBJECT lo_trn_datasource EXPORTING io_s3datasource = lo_trn_s3datasource. CREATE OBJECT lo_trn_channel EXPORTING iv_channelname = 'train' io_datasource = lo_trn_datasource iv_compressiontype = iv_trn_data_compressiontype iv_contenttype = iv_trn_data_contenttype. INSERT lo_trn_channel INTO TABLE lt_input_data_config. "Validation data." CREATE OBJECT lo_val_s3datasource EXPORTING iv_s3datatype = iv_val_data_s3datatype iv_s3datadistributiontype = iv_val_data_s3datadistribution iv_s3uri = iv_val_data_s3uri. CREATE OBJECT lo_val_datasource EXPORTING io_s3datasource = lo_val_s3datasource. CREATE OBJECT lo_val_channel EXPORTING iv_channelname = 'validation' io_datasource = lo_val_datasource iv_compressiontype = iv_val_data_compressiontype iv_contenttype = iv_val_data_contenttype. INSERT lo_val_channel INTO TABLE lt_input_data_config. "Create an ABAP object for algorithm specification based on input variables." CREATE OBJECT lo_algorithm_specification EXPORTING iv_trainingimage = iv_training_image iv_traininginputmode = iv_training_input_mode. "Create an ABAP object for resource configuration." CREATE OBJECT lo_resource_config EXPORTING iv_instancecount = iv_instance_count iv_instancetype = iv_instance_type iv_volumesizeingb = iv_volume_sizeingb. "Create an ABAP object for output data configuration." CREATE OBJECT lo_output_data_config EXPORTING iv_s3outputpath = iv_s3_output_path. "Create an ABAP object for stopping condition." CREATE OBJECT lo_stopping_condition EXPORTING iv_maxruntimeinseconds = iv_max_runtime_in_seconds. TRY. lo_sgm->createtrainingjob( iv_trainingjobname = iv_training_job_name iv_rolearn = iv_role_arn it_hyperparameters = lt_hyperparameters it_inputdataconfig = lt_input_data_config io_algorithmspecification = lo_algorithm_specification io_outputdataconfig = lo_output_data_config io_resourceconfig = lo_resource_config io_stoppingcondition = lo_stopping_condition ). MESSAGE 'Training job created.' TYPE 'I'. CATCH /aws1/cx_sgmresourceinuse. MESSAGE 'Resource being accessed is in use.' TYPE 'E'. CATCH /aws1/cx_sgmresourcenotfound. MESSAGE 'Resource being accessed is not found.' TYPE 'E'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Wait for training job to be completed." lo_training_result = lo_sgm->describetrainingjob( iv_trainingjobname = iv_training_job_name ). WHILE lo_training_result->get_trainingjobstatus( ) <> 'Completed'. IF sy-index = 30. EXIT. "Maximum 900 seconds." ENDIF. WAIT UP TO 30 SECONDS. lo_training_result = lo_sgm->describetrainingjob( iv_trainingjobname = iv_training_job_name ). ENDWHILE. "Create ABAP object for the container image based on input variables." CREATE OBJECT lo_primarycontainer EXPORTING iv_image = iv_training_image iv_modeldataurl = lv_model_data_url. "Create an Amazon SageMaker model." TRY. lo_sgm->createmodel( iv_executionrolearn = iv_role_arn iv_modelname = iv_model_name io_primarycontainer = lo_primarycontainer ). MESSAGE 'Model created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Create an endpoint production variant." CREATE OBJECT lo_production_variants EXPORTING iv_variantname = iv_ep_variant_name iv_modelname = iv_model_name iv_initialinstancecount = iv_ep_initial_instance_count iv_instancetype = iv_ep_instance_type. INSERT lo_production_variants INTO TABLE lt_production_variants. TRY. "Create an endpoint configuration." lo_ep_config_result = lo_sgm->createendpointconfig( iv_endpointconfigname = iv_ep_cfg_name it_productionvariants = lt_production_variants ). MESSAGE 'Endpoint configuration created.' TYPE 'I'. "Create an endpoint." oo_ep_output = lo_sgm->createendpoint( " oo_ep_output is returned for testing purposes. " iv_endpointconfigname = iv_ep_cfg_name iv_endpointname = iv_ep_name ). MESSAGE 'Endpoint created.' TYPE 'I'. CATCH /aws1/cx_sgmresourcelimitexcd. MESSAGE 'You have reached the limit on the number of resources.' TYPE 'E'. ENDTRY. "Wait for endpoint creation to be completed." DATA(lo_endpoint_result) = lo_sgm->describeendpoint( iv_endpointname = iv_ep_name ). WHILE lo_endpoint_result->get_endpointstatus( ) <> 'InService'. IF sy-index = 30. EXIT. "Maximum 900 seconds." ENDIF. WAIT UP TO 30 SECONDS. lo_endpoint_result = lo_sgm->describeendpoint( iv_endpointname = iv_ep_name ). ENDWHILE. TRY. "Delete an endpoint." lo_sgm->deleteendpoint( iv_endpointname = iv_ep_name ). MESSAGE 'Endpoint deleted' TYPE 'I'. "Delete an endpoint configuration." lo_sgm->deleteendpointconfig( iv_endpointconfigname = iv_ep_cfg_name ). MESSAGE 'Endpoint configuration deleted.' TYPE 'I'. "Delete model." lo_sgm->deletemodel( iv_modelname = iv_model_name ). MESSAGE 'Model deleted.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_endpointconfig_exception). DATA(lv_endpointconfig_error) = |"{ lo_endpointconfig_exception->av_err_code }" - { lo_endpointconfig_exception->av_err_msg }|. MESSAGE lv_endpointconfig_error TYPE 'E'. ENDTRY.