AWS SDK for SAP ABAP features - AWS SDK の SAP ABAP

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

AWS SDK for SAP ABAP features

AWS SDK for SAP ABAP には以下の機能があります。

プログラムによる設定

AWS SDK for SAP ABAP には /n/AWS1/IMG IMG トランスアセンテーションを使用し、プログラムによる設定には AWS SDK for SAP ABAP - BTP エディションにはカスタムビジネス設定アプリケーションを使用します。

プログラムによる設定を開始するには、まず get_config( ) コマンドで設定オブジェクトを取得します。

data(lo_config) = lo_s3->get_config( ).

各設定オブジェクトは、IMG に対応する GETter と SETter を含む /AWS1/IF_RT_CONFIG インターフェイスを実装します。例えば、デフォルトリージョンはオーバーライドできます。次のコマンド例を参照してください。

lo_s3->get_config( )->/aws1/if_rt_config~set_region( 'us-east-1' ).

設定オブジェクトの中には、IMG 表現がなく、最大再試行回数など、プログラムでしか設定できないものもあります。次のコマンド例を参照してください。

lo_s3->get_config( )->/aws1/if_rt_config~set_max_attempts( 10 ).

の設定オブジェクト AWS のサービス には、 で表されていないサービス固有のメソッドを含めることもできます/aws1/if_rt_config。例えば、Amazon S3 は、foobucket.s3.region.amazonaws.com 仮想エンドポイントまたは s3.region.amazonaws.com/foobucket パススタイルを使用して foobucket という名前のバケットをアドレス指定できます。以下のコマンド例でパススタイルの使用を強制できます。

lo_s3->get_config( )->set_forcepathstyle( abap_true ).

サービス設定の詳細については、「」 — AWS SDK for SAP ABAP API リファレンスガイドを参照してください。

ウェイター

非同期 AWS APIsを使用する場合は、特定のリソースが利用可能になるまで待ってから、さらにアクションを実行する必要があります。例えば、 の CREATETABLE() API はすぐにテーブルステータス で Amazon DynamoDB 応答しますCREATING。読み取りまたは書き込み操作は、テーブルのステータスが ACTIVE に変更された後にのみ開始できます。ウェイターを使用すると、リソースに対してアクションを実行する前に、 AWS リソースが特定の状態にあることを確認できます。

ウェイターは、サービスオペレーションを使用して、 AWS リソースが意図した状態に達するか、リソースが意図した状態に達しないと判断されるまで、リソースのステータスをポーリングします。 AWS リソースを継続的にポーリングするコードを書くのは時間がかかり、エラーが発生しやすくなります。ウェーターは、ユーザーに代わってポーリングを実施する責任を負うことで、この複雑さを簡素化するのに役立ちます。

ウェーターを使用した次の Amazon S3 の例を参照してください。

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ). “ Create a bucket - initiates the process of creating an S3 bucket and might return before the bucket exists lo_s3→createbucket( iv_bucket = |example-bucket| ). “ Wait until the newly created bucket becomes available lo_s3->get_waiter( )->bucketexists( iv_max_wait_time = 200 iv_bucket = |example-bucket| ).
  • 次の例では、Amazon S3 クライアントを使用してバケットを作成ます。get_waiter() コマンドは、いつ bucketexists を指定するように実装されています。

  • ウェーターごとに iv_max_wait_time パラメータを指定する必要があります。これは、ウェーターが完了するまで待たなければならない合計時間を表します。前述の例では、ウェーターは 200 秒間実行できます。

  • 必須パラメータには追加の入力が必要な場合があります。前の例では、iv_bucket パラメータには Amazon S3 バケット名が必要です。

  • /AWS1/CX_RT_WAITER_FAILURE 例外は、ウェーターが iv_max_wait_time パラメータで指定された最大時間を超えたことを示します。

  • /AWS1/CX_RT_WAITER_TIMEOUT 例外は、ウェーターが目的の状態に達しなかったために停止したことを示します。

ページネーター

一部の AWS のサービス オペレーションでは、ページ分割レスポンスが提供されます。応答ごとに固定量のデータを返すようにページ分割されます。結果セット全体を取得するには、トークンまたはマーカーを使用して後続のリクエストを行う必要があります。例えば、ListObjectsV2 Amazon S3 オペレーションは、一度に最大で 1,000 個のオブジェクトを返します。結果の次のページを取得するには、適切なトークンを使用して後続のリクエストを行う必要があります。

ページ分割とは、連続してリクエストを送信して、前のリクエストが中断したところから再開するプロセスです。ページネーターは SDK for SAP ABAP によって提供される結果のイテレーターです。ページ分割された API は、ページ分割トークンを使用する API の基本的なメカニズムを理解していなくても簡単に使用できます。

ページネーターの操作

ペジネーターオブジェクトを返す get_paginator() メソッドを使用してペジネーターを作成できます。ページネーターオブジェクトは、ページ分割中のオペレーションを呼び出します。ページネーターオブジェクトは、基になる API に提供される必須パラメータを受け入れます。このプロセスは、has_next() および get_next() メソッドを使用して、ページ分割された結果を繰り返し処理できるイテレーターオブジェクトを返します。

  • has_next() は、呼び出されたオペレーションで利用できる応答またはページが他にもあるかどうかを示すブール値を返します。

  • get_next() は、オペレーションレスポンスを返します。

次の例では、ページネーターを使用して取得した S3 バケット内のすべてのオブジェクトを一覧表示しています。

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( 'DEMO' ). DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ). TRY. DATA(lo_paginator) = lo_s3->get_paginator( ). DATA(lo_iterator) = lo_paginator->listobjectsv2( iv_bucket = 'example_bucket' ). WHILE lo_iterator->has_next( ). DATA(lo_output) = lo_iterator->get_next( ). LOOP AT lo_output->get_contents( ) INTO DATA(lo_object). WRITE: / lo_object->get_key( ), lo_object->get_size( ). ENDLOOP. ENDWHILE. CATCH /aws1/cx_rt_generic INTO DATA(lo_ex). MESSAGE lo_ex->if_message~get_text( ) TYPE 'I'. ENDTRY.

再試行動作

SDK for SAP ABAP では、スロットリングまたは一時的なエラーにより失敗した AWS のサービス へのリクエストの最大再試行回数を設定できます。サービスクライアントレベルで許可される再試行の回数、つまり失敗して例外が発生する前に SDK がオペレーションを再試行する回数は、サービス設定オブジェクトの AV_MAX_ATTEMPTS 属性によって指定されます。サービスクライアントオブジェクトが作成されると、SDK は AV_MAX_ATTEMPTS 属性をデフォルト値の 3 に設定します。サービス設定オブジェクトを使用すると、最大再試行回数をプログラムで希望の値に設定できます。詳細については、次の例を参照してください。

“ Retrieve configuration object using Amazon S3 service’s get_config( ) method DATA(lo_config) = lo_s3->get_config( ). “ Set the maximum number of retries to 5 lo_config->/aws1/if_rt_config~set_max_attempts( 5 ). “ Get the value of the maximum retry attempt. DATA(lv_max_retry_attempts) = lo_config->/aws1/if_rt_config~get_max_attempts( ).
注記

設定オブジェクト ABAP SDK では /AWS1/IF_RT_CONFIG~SET_RETRY_MODE() メソッドで再試行モードを設定できますが、SDK は standard 再試行モードのみをサポートします。詳細については、 SDK およびツールリファレンスガイドの「再試行動作」を参照してください。 AWS SDKs