/AWS1/IF_ECS=>STOPTASK()¶
About StopTask¶
Stops a running task. Any tags associated with the task will be deleted.
When you call StopTask on a task, the equivalent of docker
stop is issued to the containers running in the task. This results in a
stop signal value and a default 30-second timeout, after which the
SIGKILL value is sent and the containers are forcibly stopped. This
signal can be defined in your container image with the STOPSIGNAL instruction
and will default to SIGTERM. If the container handles the SIGTERM
value gracefully and exits within 30 seconds from receiving it, no SIGKILL value
is sent.
For Windows containers, POSIX signals do not work and runtime stops the container by
sending a CTRL_SHUTDOWN_EVENT. For more information, see Unable to react to graceful shutdown
of (Windows) container #25982 on GitHub.
The default 30-second timeout can be configured on the Amazon ECS container agent
with the ECS_CONTAINER_STOP_TIMEOUT variable. For more information, see
Amazon ECS Container Agent Configuration in the
Amazon Elastic Container Service Developer Guide.
Method Signature¶
METHODS /AWS1/IF_ECS~STOPTASK
IMPORTING
!IV_CLUSTER TYPE /AWS1/ECSSTRING OPTIONAL
!IV_TASK TYPE /AWS1/ECSSTRING OPTIONAL
!IV_REASON TYPE /AWS1/ECSSTRING OPTIONAL
RETURNING
VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_ecsstoptaskresponse
RAISING
/AWS1/CX_ECSCLIENTEXCEPTION
/AWS1/CX_ECSCLUSTERNOTFOUNDEX
/AWS1/CX_ECSINVALIDPARAMETEREX
/AWS1/CX_ECSSERVEREXCEPTION
/AWS1/CX_ECSCLIENTEXC
/AWS1/CX_ECSSERVEREXC
/AWS1/CX_RT_TECHNICAL_GENERIC
/AWS1/CX_RT_SERVICE_GENERIC.
IMPORTING¶
Required arguments:¶
iv_task TYPE /AWS1/ECSSTRING /AWS1/ECSSTRING¶
Thefull Amazon Resource Name (ARN) of the task.
Optional arguments:¶
iv_cluster TYPE /AWS1/ECSSTRING /AWS1/ECSSTRING¶
The short name or full Amazon Resource Name (ARN) of the cluster that hosts the task to stop. If you do not specify a cluster, the default cluster is assumed.
iv_reason TYPE /AWS1/ECSSTRING /AWS1/ECSSTRING¶
An optional message specified when a task is stopped. For example, if you're using a custom scheduler, you can use this parameter to specify the reason for stopping the task here, and the message appears in subsequent DescribeTasks> API operations on this task.
RETURNING¶
oo_output TYPE REF TO /aws1/cl_ecsstoptaskresponse /AWS1/CL_ECSSTOPTASKRESPONSE¶
Domain /AWS1/RT_ACCOUNT_ID Primitive Type NUMC
Examples¶
Syntax Example¶
This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.
DATA(lo_result) = lo_client->stoptask(
iv_cluster = |string|
iv_reason = |string|
iv_task = |string|
).
This is an example of reading all possible response values
lo_result = lo_result.
IF lo_result IS NOT INITIAL.
lo_task = lo_result->get_task( ).
IF lo_task IS NOT INITIAL.
LOOP AT lo_task->get_attachments( ) into lo_row.
lo_row_1 = lo_row.
IF lo_row_1 IS NOT INITIAL.
lv_string = lo_row_1->get_id( ).
lv_string = lo_row_1->get_type( ).
lv_string = lo_row_1->get_status( ).
LOOP AT lo_row_1->get_details( ) into lo_row_2.
lo_row_3 = lo_row_2.
IF lo_row_3 IS NOT INITIAL.
lv_string = lo_row_3->get_name( ).
lv_string = lo_row_3->get_value( ).
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
LOOP AT lo_task->get_attributes( ) into lo_row_4.
lo_row_5 = lo_row_4.
IF lo_row_5 IS NOT INITIAL.
lv_string = lo_row_5->get_name( ).
lv_string = lo_row_5->get_value( ).
lv_targettype = lo_row_5->get_targettype( ).
lv_string = lo_row_5->get_targetid( ).
ENDIF.
ENDLOOP.
lv_string = lo_task->get_availabilityzone( ).
lv_string = lo_task->get_capacityprovidername( ).
lv_string = lo_task->get_clusterarn( ).
lv_connectivity = lo_task->get_connectivity( ).
lv_timestamp = lo_task->get_connectivityat( ).
lv_string = lo_task->get_containerinstancearn( ).
LOOP AT lo_task->get_containers( ) into lo_row_6.
lo_row_7 = lo_row_6.
IF lo_row_7 IS NOT INITIAL.
lv_string = lo_row_7->get_containerarn( ).
lv_string = lo_row_7->get_taskarn( ).
lv_string = lo_row_7->get_name( ).
lv_string = lo_row_7->get_image( ).
lv_string = lo_row_7->get_imagedigest( ).
lv_string = lo_row_7->get_runtimeid( ).
lv_string = lo_row_7->get_laststatus( ).
lv_boxedinteger = lo_row_7->get_exitcode( ).
lv_string = lo_row_7->get_reason( ).
LOOP AT lo_row_7->get_networkbindings( ) into lo_row_8.
lo_row_9 = lo_row_8.
IF lo_row_9 IS NOT INITIAL.
lv_string = lo_row_9->get_bindip( ).
lv_boxedinteger = lo_row_9->get_containerport( ).
lv_boxedinteger = lo_row_9->get_hostport( ).
lv_transportprotocol = lo_row_9->get_protocol( ).
lv_string = lo_row_9->get_containerportrange( ).
lv_string = lo_row_9->get_hostportrange( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_7->get_networkinterfaces( ) into lo_row_10.
lo_row_11 = lo_row_10.
IF lo_row_11 IS NOT INITIAL.
lv_string = lo_row_11->get_attachmentid( ).
lv_string = lo_row_11->get_privateipv4address( ).
lv_string = lo_row_11->get_ipv6address( ).
ENDIF.
ENDLOOP.
lv_healthstatus = lo_row_7->get_healthstatus( ).
LOOP AT lo_row_7->get_managedagents( ) into lo_row_12.
lo_row_13 = lo_row_12.
IF lo_row_13 IS NOT INITIAL.
lv_timestamp = lo_row_13->get_laststartedat( ).
lv_managedagentname = lo_row_13->get_name( ).
lv_string = lo_row_13->get_reason( ).
lv_string = lo_row_13->get_laststatus( ).
ENDIF.
ENDLOOP.
lv_string = lo_row_7->get_cpu( ).
lv_string = lo_row_7->get_memory( ).
lv_string = lo_row_7->get_memoryreservation( ).
LOOP AT lo_row_7->get_gpuids( ) into lo_row_14.
lo_row_15 = lo_row_14.
IF lo_row_15 IS NOT INITIAL.
lv_string = lo_row_15->get_value( ).
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
lv_string = lo_task->get_cpu( ).
lv_timestamp = lo_task->get_createdat( ).
lv_string = lo_task->get_desiredstatus( ).
lv_boolean = lo_task->get_enableexecutecommand( ).
lv_timestamp = lo_task->get_executionstoppedat( ).
lv_string = lo_task->get_group( ).
lv_healthstatus = lo_task->get_healthstatus( ).
LOOP AT lo_task->get_inferenceaccelerators( ) into lo_row_16.
lo_row_17 = lo_row_16.
IF lo_row_17 IS NOT INITIAL.
lv_string = lo_row_17->get_devicename( ).
lv_string = lo_row_17->get_devicetype( ).
ENDIF.
ENDLOOP.
lv_string = lo_task->get_laststatus( ).
lv_launchtype = lo_task->get_launchtype( ).
lv_string = lo_task->get_memory( ).
lo_taskoverride = lo_task->get_overrides( ).
IF lo_taskoverride IS NOT INITIAL.
LOOP AT lo_taskoverride->get_containeroverrides( ) into lo_row_18.
lo_row_19 = lo_row_18.
IF lo_row_19 IS NOT INITIAL.
lv_string = lo_row_19->get_name( ).
LOOP AT lo_row_19->get_command( ) into lo_row_20.
lo_row_21 = lo_row_20.
IF lo_row_21 IS NOT INITIAL.
lv_string = lo_row_21->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_19->get_environment( ) into lo_row_2.
lo_row_3 = lo_row_2.
IF lo_row_3 IS NOT INITIAL.
lv_string = lo_row_3->get_name( ).
lv_string = lo_row_3->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_19->get_environmentfiles( ) into lo_row_22.
lo_row_23 = lo_row_22.
IF lo_row_23 IS NOT INITIAL.
lv_string = lo_row_23->get_value( ).
lv_environmentfiletype = lo_row_23->get_type( ).
ENDIF.
ENDLOOP.
lv_boxedinteger = lo_row_19->get_cpu( ).
lv_boxedinteger = lo_row_19->get_memory( ).
lv_boxedinteger = lo_row_19->get_memoryreservation( ).
LOOP AT lo_row_19->get_resourcerequirements( ) into lo_row_24.
lo_row_25 = lo_row_24.
IF lo_row_25 IS NOT INITIAL.
lv_string = lo_row_25->get_value( ).
lv_resourcetype = lo_row_25->get_type( ).
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
lv_string = lo_taskoverride->get_cpu( ).
LOOP AT lo_taskoverride->get_inferenceacceleratorov00( ) into lo_row_26.
lo_row_27 = lo_row_26.
IF lo_row_27 IS NOT INITIAL.
lv_string = lo_row_27->get_devicename( ).
lv_string = lo_row_27->get_devicetype( ).
ENDIF.
ENDLOOP.
lv_string = lo_taskoverride->get_executionrolearn( ).
lv_string = lo_taskoverride->get_memory( ).
lv_string = lo_taskoverride->get_taskrolearn( ).
lo_ephemeralstorage = lo_taskoverride->get_ephemeralstorage( ).
IF lo_ephemeralstorage IS NOT INITIAL.
lv_integer = lo_ephemeralstorage->get_sizeingib( ).
ENDIF.
ENDIF.
lv_string = lo_task->get_platformversion( ).
lv_string = lo_task->get_platformfamily( ).
lv_timestamp = lo_task->get_pullstartedat( ).
lv_timestamp = lo_task->get_pullstoppedat( ).
lv_timestamp = lo_task->get_startedat( ).
lv_string = lo_task->get_startedby( ).
lv_taskstopcode = lo_task->get_stopcode( ).
lv_timestamp = lo_task->get_stoppedat( ).
lv_string = lo_task->get_stoppedreason( ).
lv_timestamp = lo_task->get_stoppingat( ).
LOOP AT lo_task->get_tags( ) into lo_row_28.
lo_row_29 = lo_row_28.
IF lo_row_29 IS NOT INITIAL.
lv_tagkey = lo_row_29->get_key( ).
lv_tagvalue = lo_row_29->get_value( ).
ENDIF.
ENDLOOP.
lv_string = lo_task->get_taskarn( ).
lv_string = lo_task->get_taskdefinitionarn( ).
lv_long = lo_task->get_version( ).
lo_ephemeralstorage = lo_task->get_ephemeralstorage( ).
IF lo_ephemeralstorage IS NOT INITIAL.
lv_integer = lo_ephemeralstorage->get_sizeingib( ).
ENDIF.
lo_taskephemeralstorage = lo_task->get_fargateephemeralstorage( ).
IF lo_taskephemeralstorage IS NOT INITIAL.
lv_integer = lo_taskephemeralstorage->get_sizeingib( ).
lv_string = lo_taskephemeralstorage->get_kmskeyid( ).
ENDIF.
ENDIF.
ENDIF.
To stop a task¶
This example stops a task with ID "1dc5c17a-422b-4dc4-b493-371970c6c4d6" in cluster "MyCluster".
DATA(lo_result) = lo_client->stoptask(
iv_cluster = |MyCluster|
iv_reason = |testing stop task.|
iv_task = |1dc5c17a-422b-4dc4-b493-371970c6c4d6|
).