使用适用于 SAP 的 SDK 的应用程序恢复控制器示例 ABAP - Amazon 适用于 SAP 的 SDK ABA
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 SAP 的 SDK 的应用程序恢复控制器示例 ABAP

以下代码示例向您展示了如何使用带应用程序恢复控制器的适用于 SAP ABAP 的 Amazon SDK 来执行操作和实现常见场景。

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示了如何使用 GetRoutingControlState

适用于 SAP ABAP 的 SDK
注意

还有更多相关信息 GitHub。在 Amazon 代码示例存储库中查找完整示例,了解如何进行设置和运行。

CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA lo_exception TYPE REF TO /aws1/cx_rt_generic. DATA lo_session TYPE REF TO /aws1/cl_rt_session_base. DATA lo_client TYPE REF TO /aws1/if_r5v. DATA lt_endpoints TYPE TABLE OF string. DATA lv_endpoint TYPE string. DATA lv_region TYPE /aws1/rt_region_id. " Parse the comma-separated cluster endpoints " Expected format: "https://endpoint1.com|us-west-2,https://endpoint2.com|us-east-1" SPLIT iv_cluster_endpoints AT ',' INTO TABLE lt_endpoints. " As a best practice, shuffle cluster endpoints to distribute load " For more information, see https://docs.aws.amazon.com/r53recovery/latest/dg/route53-arc-best-practices.html#route53-arc-best-practices.regional " For simplicity, we'll try them in order (shuffling can be added if needed) " Try each endpoint in order LOOP AT lt_endpoints INTO lv_endpoint. TRY. " Parse endpoint and region from the format "url|region" DATA(lv_pos) = find( val = lv_endpoint sub = '|' ). IF lv_pos > 0. DATA(lv_url) = substring( val = lv_endpoint len = lv_pos ). lv_region = substring( val = lv_endpoint off = lv_pos + 1 ). ELSE. " If no region specified, use default lv_url = lv_endpoint. lv_region = 'us-east-1'. ENDIF. " Create session for this region lo_session = /aws1/cl_rt_session_aws=>create( cv_pfl ). " Create client with the specific endpoint lo_client = create_recovery_client( iv_endpoint = lv_url iv_region = lv_region io_session = lo_session ). " Try to get the routing control state oo_result = lo_client->getroutingcontrolstate( iv_routingcontrolarn = iv_routing_control_arn ). " If successful, return the result RETURN. CATCH /aws1/cx_r5vendpttmpyunavailex INTO DATA(lo_endpoint_ex). " This endpoint is temporarily unavailable, try the next one lo_exception = lo_endpoint_ex. CONTINUE. CATCH /aws1/cx_r5vaccessdeniedex /aws1/cx_r5vinternalserverex /aws1/cx_r5vresourcenotfoundex /aws1/cx_r5vthrottlingex /aws1/cx_r5vvalidationex /aws1/cx_rt_generic INTO lo_exception. " For other errors, re-raise immediately RAISE EXCEPTION lo_exception. ENDTRY. ENDLOOP. " If we get here, all endpoints failed - re-raise the last exception IF lo_exception IS BOUND. RAISE EXCEPTION lo_exception. ENDIF.

以下代码示例演示了如何使用 UpdateRoutingControlState

适用于 SAP ABAP 的 SDK
注意

还有更多相关信息 GitHub。在 Amazon 代码示例存储库中查找完整示例,了解如何进行设置和运行。

CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA lo_exception TYPE REF TO /aws1/cx_rt_generic. DATA lo_session TYPE REF TO /aws1/cl_rt_session_base. DATA lo_client TYPE REF TO /aws1/if_r5v. DATA lt_endpoints TYPE TABLE OF string. DATA lv_endpoint TYPE string. DATA lv_region TYPE /aws1/rt_region_id. " Parse the comma-separated cluster endpoints " Expected format: "https://endpoint1.com|us-west-2,https://endpoint2.com|us-east-1" SPLIT iv_cluster_endpoints AT ',' INTO TABLE lt_endpoints. " As a best practice, shuffle cluster endpoints to distribute load " For more information, see https://docs.aws.amazon.com/r53recovery/latest/dg/route53-arc-best-practices.html#route53-arc-best-practices.regional " For simplicity, we'll try them in order (shuffling can be added if needed) " Try each endpoint in order LOOP AT lt_endpoints INTO lv_endpoint. TRY. " Parse endpoint and region from the format "url|region" DATA(lv_pos) = find( val = lv_endpoint sub = '|' ). IF lv_pos > 0. DATA(lv_url) = substring( val = lv_endpoint len = lv_pos ). lv_region = substring( val = lv_endpoint off = lv_pos + 1 ). ELSE. " If no region specified, use default lv_url = lv_endpoint. lv_region = 'us-east-1'. ENDIF. " Create session for this region lo_session = /aws1/cl_rt_session_aws=>create( cv_pfl ). " Create client with the specific endpoint lo_client = create_recovery_client( iv_endpoint = lv_url iv_region = lv_region io_session = lo_session ). " Try to update the routing control state oo_result = lo_client->updateroutingcontrolstate( iv_routingcontrolarn = iv_routing_control_arn iv_routingcontrolstate = iv_routing_control_state it_safetyrulestooverride = it_safety_rules_override ). " If successful, return the result RETURN. CATCH /aws1/cx_r5vendpttmpyunavailex INTO DATA(lo_endpoint_ex). " This endpoint is temporarily unavailable, try the next one lo_exception = lo_endpoint_ex. CONTINUE. CATCH /aws1/cx_r5vaccessdeniedex /aws1/cx_r5vconflictexception /aws1/cx_r5vinternalserverex /aws1/cx_r5vresourcenotfoundex /aws1/cx_r5vthrottlingex /aws1/cx_r5vvalidationex /aws1/cx_rt_generic INTO lo_exception. " For other errors, re-raise immediately RAISE EXCEPTION lo_exception. ENDTRY. ENDLOOP. " If we get here, all endpoints failed - re-raise the last exception IF lo_exception IS BOUND. RAISE EXCEPTION lo_exception. ENDIF.