本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS IoT使用適用於 SAP ABAP 的 SDK 的範例
下列程式碼範例示範如何使用適用於 SAP ABAP 的 AWS開發套件來執行動作和實作常見案例AWS IoT。
Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境中查看內容中的動作。
每個範例均包含完整原始碼的連結,您可在連結中找到如何設定和執行內容中程式碼的相關指示。
主題
動作
以下程式碼範例顯示如何使用 AttachThingPrincipal。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->attachthingprincipal( iv_thingname = iv_thing_name iv_principal = iv_principal ). MESSAGE |Principal attached to IoT thing '{ iv_thing_name }'.| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |Resource not found when attaching principal to '{ iv_thing_name }'.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 AttachThingPrincipal。
-
以下程式碼範例顯示如何使用 CreateKeysAndCertificate。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. oo_result = lo_iot->createkeysandcertificate( iv_setasactive = abap_true ). MESSAGE |Certificate created: { oo_result->get_certificateid( ) }| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 CreateKeysAndCertificate。
-
以下程式碼範例顯示如何使用 CreateThing。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. oo_result = lo_iot->creatething( iv_thingname = iv_thing_name ). MESSAGE |IoT thing created: { oo_result->get_thingname( ) } ARN: { oo_result->get_thingarn( ) }| TYPE 'I'. CATCH /aws1/cx_iotresrcalrdyexistsex. MESSAGE |IoT thing '{ iv_thing_name }' already exists.| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 CreateThing。
-
以下程式碼範例顯示如何使用 CreateTopicRule。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Build the SNS action that will receive messages matching the rule. DATA lo_sns_action TYPE REF TO /aws1/cl_iotsnsaction. CREATE OBJECT lo_sns_action EXPORTING iv_targetarn = iv_sns_action_arn iv_rolearn = iv_role_arn. DATA lo_action TYPE REF TO /aws1/cl_iotaction. CREATE OBJECT lo_action EXPORTING io_sns = lo_sns_action. DATA lt_actions TYPE /aws1/cl_iotaction=>tt_actionlist. APPEND lo_action TO lt_actions. " iv_topic = 'my/iot/topic' - The MQTT topic pattern to match DATA lo_payload TYPE REF TO /aws1/cl_iottopicrulepayload. CREATE OBJECT lo_payload EXPORTING iv_sql = |SELECT * FROM '{ iv_topic }'| it_actions = lt_actions. lo_iot->createtopicrule( iv_rulename = iv_rule_name io_topicrulepayload = lo_payload ). MESSAGE |IoT topic rule created: { iv_rule_name }| TYPE 'I'. CATCH /aws1/cx_iotresrcalrdyexistsex. MESSAGE |Topic rule '{ iv_rule_name }' already exists.| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 CreateTopicRule。
-
以下程式碼範例顯示如何使用 DeleteCertificate。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Certificates must be deactivated before they can be deleted. lo_iot->updatecertificate( iv_certificateid = iv_certificate_id iv_newstatus = 'INACTIVE' ). lo_iot->deletecertificate( iv_certificateid = iv_certificate_id ). MESSAGE |Certificate deleted: { iv_certificate_id }| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |Certificate '{ iv_certificate_id }' not found.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 DeleteCertificate。
-
以下程式碼範例顯示如何使用 DeleteThing。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->deletething( iv_thingname = iv_thing_name ). MESSAGE |IoT thing deleted: { iv_thing_name }| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |IoT thing '{ iv_thing_name }' not found.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 DeleteThing。
-
以下程式碼範例顯示如何使用 DeleteTopicRule。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->deletetopicrule( iv_rulename = iv_rule_name ). MESSAGE |IoT topic rule deleted: { iv_rule_name }| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 DeleteTopicRule。
-
以下程式碼範例顯示如何使用 DescribeEndpoint。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). " iv_endpoint_type = 'iot:Data-ATS' - Endpoint type for data operations TRY. DATA(lo_result) = lo_iot->describeendpoint( iv_endpointtype = iv_endpoint_type ). ov_endpoint_address = lo_result->get_endpointaddress( ). MESSAGE |Endpoint address: { ov_endpoint_address }| TYPE 'I'. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 DescribeEndpoint。
-
以下程式碼範例顯示如何使用 DetachThingPrincipal。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->detachthingprincipal( iv_thingname = iv_thing_name iv_principal = iv_principal ). MESSAGE |Principal detached from IoT thing '{ iv_thing_name }'.| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |Resource not found when detaching principal from '{ iv_thing_name }'.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 DetachThingPrincipal。
-
以下程式碼範例顯示如何使用 ListCertificates。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Collect all certificates by following the pagination marker. DATA lv_marker TYPE /aws1/iotmarker. DATA lv_count TYPE i. DO. oo_result = lo_iot->listcertificates( iv_marker = lv_marker ). lv_count = lv_count + lines( oo_result->get_certificates( ) ). lv_marker = oo_result->get_nextmarker( ). IF lv_marker IS INITIAL. EXIT. ENDIF. ENDDO. MESSAGE |Retrieved { lv_count } IoT certificates.| TYPE 'I'. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 ListCertificates。
-
以下程式碼範例顯示如何使用 ListThings。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Collect all things by following the pagination token. DATA lv_nexttoken TYPE /aws1/iotnexttoken. DATA lv_count TYPE i. DO. oo_result = lo_iot->listthings( iv_nexttoken = lv_nexttoken ). lv_count = lv_count + lines( oo_result->get_things( ) ). lv_nexttoken = oo_result->get_nexttoken( ). IF lv_nexttoken IS INITIAL. EXIT. ENDIF. ENDDO. MESSAGE |Retrieved { lv_count } IoT things.| TYPE 'I'. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 ListThings。
-
以下程式碼範例顯示如何使用 SearchIndex。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). " iv_query_string = 'thingName:MyThing*' - Fleet indexing query string TRY. oo_result = lo_iot->searchindex( iv_querystring = iv_query_string ). MESSAGE |Found { lines( oo_result->get_things( ) ) } IoT things matching query.| TYPE 'I'. CATCH /aws1/cx_iotindexnotreadyex INTO DATA(lo_idx_ex). MESSAGE 'Fleet indexing is not ready. Enable indexing with UpdateIndexingConfiguration first.' TYPE 'I'. RAISE EXCEPTION lo_idx_ex. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 SearchIndex。
-
以下程式碼範例顯示如何使用 UpdateIndexingConfiguration。
- 適用於 SAP ABAP 的開發套件
-
注意
GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫
中設定和執行。 CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. DATA lo_idx_conf TYPE REF TO /aws1/cl_iotthingindexingconf. CREATE OBJECT lo_idx_conf EXPORTING iv_thingindexingmode = 'REGISTRY'. lo_iot->updateindexingconfiguration( io_thingindexingconf = lo_idx_conf ). MESSAGE 'IoT thing indexing configuration updated to REGISTRY mode.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
如需 API 詳細資訊,請參閱《適用於 AWSSAP ABAP 的 SDK API 參考》中的 UpdateIndexingConfiguration。
-