

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

# 高度な接続シナリオ
<a name="connectivity-scenarios"></a>

AWS SDK for SAP ABAP は AWS 、エンドポイントへの HTTPS 呼び出しを行うこと AWS のサービス で を消費します。一般に、 AWS エンドポイントは、インターネットからアクセス可能です。SAP システムは、これらのアウトバウンド接続を確立するためにインターネットに接続できる必要があります。SDK for SAP ABAP では、インターネットから SAP システムへのインバウンド接続は一切必要ありません。

以下のシナリオでは、アウトバウンド接続を確立するためのさまざまな方法を示します。

**Topics**
+ [プロキシサーバー経由の接続](#proxy-server)
+ [パケット検査ファイアウォール経由の接続](#packet-firewall)
+ [ゲートウェイエンドポイント](#gateway-endpoints)
+ [カスタムインターフェイスのエンドポイント](#interface-endpoints)
+ [高度なルーティング](#advanced-routing)
+ [複数のリージョンでエンドポイントにアクセスする](#multiple-regions)

## プロキシサーバー経由の接続
<a name="proxy-server"></a>

プロキシサーバー経由で接続を確立するには、以下の手順に従います。

1. SDK で、トランザクション **`SICF`** に移動します。

1. **[実行]** を選択してください。

1. メニューで **[クライアント]** > **[プロキシサーバー]** を選択します。

1. **[プロキシ設定]** を **[アクティブ]** に設定します。

1. 例外があれば、**[次のアドレスにはプロキシなし]** フィールドにセミコロンで区切って記載します。

1. **[HTTP プロトコル]** と **[HTTPS プロトコル] **フィールドに、プロキシサーバーの接続の詳細を指定します。

SDK はプロキシサーバーを認識しないため、SAP システムのプロキシサーバー設定を使用するための設定は必要ありません。

**注記**  
[Amazon EC2 インスタンスメタデータ認証](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/system-authentication.html#metadata-authentication)を使用する場合、SAP システムはプロキシサーバーを使用して `http://169.254.169.254` のローカルインスタンスメタデータにアクセスすることはできません。*[次のアドレスにはプロキシなし]* フィールドに `169.254.169.254` を含める必要があります。

## パケット検査ファイアウォール経由の接続
<a name="packet-firewall"></a>

アウトバウンド接続用のパケット検査ファイアウォールを設定できます。これらのファイアウォールは SSL トラフィックを復号化し、エンドポイントに渡す前に再暗号化します。この設定では、通常、ファイアウォールが AWS のサービスを使用している SAP システムに自身の証明書を発行する必要があります。ファイアウォールの CA 証明書を `STRUST` にインストールする必要があります。詳細については、「[HTTPS 接続](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/prerequisites.html#https-connectivity)」を参照してください。

## ゲートウェイエンドポイント
<a name="gateway-endpoints"></a>

一部の AWS のサービス は、インターネットなしで高性能なアクセスを VPC に提供するゲートウェイエンドポイントを提供します。これらのエンドポイントは SDK for SAP ABAP に対して透過的であり、設定は一切必要ありません。

詳細については、「[ゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)」を参照してください。

## カスタムインターフェイスのエンドポイント
<a name="interface-endpoints"></a>

デフォルトのエンドポイント解決をカスタムエンドポイントでオーバーライドする必要がある場合は、インターフェイスエンドポイントを使用してインターネットなしで VPC に高性能アクセスを提供できます。詳細については、「[インターフェイスエンドポイントを設定する](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html)」を参照してください。

プライベート DNS を使用しない場合、これらのエンドポイントには独自の DNS アドレスが割り当てられるため、ABAP プログラムは通常のエンドポイント解決ロジックを明示的にオーバーライドする必要があります。詳細については、 AWS re:Post 「」を参照してください。[インターフェイス VPC エンドポイントのサービスドメイン名を解決できないのはなぜですか?](https://repost.aws/knowledge-center/vpc-interface-configure-dns)

次の例では、 AWS STS と のインターフェイスエンドポイントが作成されます Amazon Translate。SAP システムはプライベート DNS を使用せず、カスタムエンドポイントを使用してサービスを呼び出します。`/AWS1/IMG` で定義されている論理リソースは、`vpce-0123456789abcdef-hd52vxz.translate.us-west-2.vpce.amazonaws.com` などの物理インターフェイスのエンドポイントアドレスを表します。これにより、DNS をコード内でハードコーディングする必要がなくなります。

次のコードでは、`/AWS1/IMG` 内の論理リソースが最初に物理エンドポイント名に変換されます。次に、 AWS セッションクラスのファクトリメソッド (IAM ロールを引き受け AWS STS るために が使用するメソッド) に提供され、API クラスを変換します。

```
" This example assumes we have defined our logical endpoints in /AWS1/IMG
" as logical resources so that we don't hardcode our endpoints in code.
" The endpoints may be different in Dev, QA and Prod environments.
DATA(lo_config) = /aws1/cl_rt_config=>create( 'DEMO' ).
DATA(lo_resolver) = /aws1/cl_rt_lresource_resolver=>create( lo_config ).

" logical resource STS_ENDPOINT should resolve to the interface endpoint
" for example vpce-0123456789-abcdefg.sts.us-west-2.vpce.amazonaws.com
DATA(lv_sts_endpoint) = lo_resolver->resolve_lresource( 'STS_ENDPOINT' ).

" logical resource XL8_ENDPOINT should resolve to the interface endpoint
" e.g. vpce-0123456789abcdefg-12345567.translate.us-west-2.vpce.amazonaws.com
DATA(lv_xl8_endpoint) = lo_resolver->resolve_lresource( 'XL8_ENDPOINT' ).

" the session itself uses the sts service to assume a role, so the
" session creation process requires a custom endpoint, specified here
DATA(lo_session) = /aws1/cl_rt_session_aws=>create(
  iv_profile_id = 'DEMO'
  iv_custom_sts_endpoint = |https://{ lv_sts_endpoint }|
).

" now we create an API object, and override the default endpoint with 
" the custom endpoint
DATA(lo_xl8)     = /aws1/cl_xl8_factory=>create(
  io_session = lo_session
  iv_custom_endpoint = |https://{ lv_xl8_endpoint }| " provide custom endpoint
).
" now calls to lo_xl8 go to custom endpoint...
```

例に示すように、`go_xl8` 上のメソッド呼び出しはすべてエンドポイント `https://vpce-0123456789abcdefg-12345567.translate.us-west-2.vpce.amazonaws.com` に移動します。次のセクションに示すように、コードではなく IMG 設定でルーティングカスタムエンドポイントを定義することもできます。

## 高度なルーティング
<a name="advanced-routing"></a>

 前のセクションでは、SDK モジュールのファクトリメソッドの `iv_custom_endpoint`引数でカスタムエンドポイントを指定する方法を示しました。SDK を使用する ABAP プログラムの数が増えるにつれて、管理が困難になる可能性があります。から SDK プロファイルのカスタムエンドポイント AWS のサービス へのマッピングを設定できます。SID、クライアント、シナリオごとに、サービス 3 文字の省略形 (TLA) をエンドポイント URL にマッピングできます。


|  TLA  |  カスタムエンドポイント URL  | 
| --- | --- | 
| BDR | https://vpce-23456789abcdef012-3c4d5e6f.bedrock-runtime.us-east-1.vpce.amazonaws.com | 
| LMD | https://vpce-123456789abcdef01-2b3c4d5e.lambda.us-east-1.vpce.amazonaws.com | 
| S3 | https://vpce-0123456789abcdef0-1a2b3c4d.s3.us-east-1.vpce.amazonaws.com | 

 この設定では、ファクトリメソッド呼び出し`iv_custom_endpoint`で を指定する必要はありません。カスタムエンドポイントは、設定テーブルから自動的に選択されます。この設定は SDK プロファイルに固有であるため、ニーズに合わせて異なるルーティングで複数のプロファイルを作成できます。他の SDK プロファイル設定と同様に、ルーティングは SID とクライアント固有であるため、システムごとに個別のルーティングを定義できます。

## 複数のリージョンでエンドポイントにアクセスする
<a name="multiple-regions"></a>

AWS エンドポイントは、SDK プロファイルで AWS リージョン 定義されているデフォルトから自動的に決定されます。プログラムによってリージョンを指定して、デフォルトのリージョンをオーバーライドすることもできます。これはファクトリー `CREATE()` メソッドでオーバーライドすることも、後で SDK の設定オブジェクトでオーバーライドすることもできます。詳細については、「[プログラムによる設定](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/features.html#programmatic-configuration)」を参照してください。

次の例では、ファクトリー `CREATE()` メソッドを使用してリージョンを設定し、`us-east-1` リージョンと `us-west-2` リージョンの両方の Amazon SQS キューを一覧表示します。

```
REPORT zdemo_sqs_queue_list.
parameters: profile type /AWS1/RT_PROFILE_ID OBLIGATORY.

START-OF-SELECTION.
DATA(go_session) = /aws1/cl_rt_session_aws=>create( profile ).
data(lt_region) = VALUE stringtab(
  ( |us-east-1| )
  ( |us-west-2| )
).

LOOP AT lt_region INTO DATA(lv_region).
  DATA(go_sqs)  = /aws1/cl_sqs_factory=>create(
    io_session = go_session
    iv_region = conv /AWS1/RT_REGION_ID( lv_region )
  ).
  WRITE: / lv_region COLOR COL_HEADING.
  LOOP AT go_sqs->listqueues( )->get_queueurls( ) INTO DATA(lo_url).
    WRITE: / lo_url->get_value( ).
  ENDLOOP.
ENDLOOP.
```