高级连接场景 - Amazon SDK对于 SAP ABAP
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

高级连接场景

为使用 Amazon Web Services 服务,适用于 SAP ABAP 的 Amazon SDK 会向 Amazon 端点进行 HTTPS 调用。通常可通过互联网访问 Amazon 端点。SAP 系统必须联网才能建立出站连接。适用于 SAP ABAP 的 SDK 从不需要在互联网和 SAP 系统之间建立入站连接。

以下场景提供了不同的出站连接建立方法。

通过代理服务器连接

如需通过代理服务器建立连接,请遵循以下步骤。

  1. 进入 SDK,转到 SICF 事务。

  2. 选择执行

  3. 进入菜单,选择客户端 > 代理服务器

  4. 代理设置设为活动状态。

  5. 以下地址无代理字段中,用分号列出所有异常。

  6. HTTP 协议HTTPS 协议字段中,指定代理服务器的连接详细信息。

SDK 虽然不知道代理服务器的存在,但无需任何设置就能使用 SAP 系统的代理服务器配置。

注意

如果您使用的是 Amazon EC2 实例元数据身份验证,那么 SAP 系统无法通过代理服务器访问 http://169.254.169.254 的本地实例元数据。请务必在以下地址无代理字段中加入 169.254.169.254

通过数据包检查防火墙连接

您可以配置数据包检查防火墙,用于建立出站连接。这些防火墙可解密并重新加密 SSL 流量,然后将其传递到端点。此配置通常要求防火墙向使用 Amazon Web Services 服务 的 SAP 系统签发自己的证书。必须将防火墙的 CA 证书安装在 STRUST 中。有关更多信息,请参阅 HTTPS 连接

网关端点

一些 Amazon Web Services 服务 会提供网关端点,以便 VPC 在无网络时也能进行高性能访问。这些端点对适用于 SAP ABAP 的 SDK 透明,无需进行任何配置。

有关更多信息,请参阅网关端点

自定义接口端点

如需使用自定义端点覆盖默认端点解析,则可以使用接口端点为 VPC 提供无需联网的高性能访问权限。有关更多信息,请参阅配置接口端点

这些端点不使用私有 DNS 时,会使用专有的 DNS 地址,同时 ABAP 程序必须显式覆盖常用的端点解析逻辑。有关更多信息,请参阅 Amazon Web Services re:Post:为何无法解析 VPC 接口端点的服务域名?

在以下示例中,为 Amazon STS 和 Amazon Translate 创建一个接口端点。SAP 系统没有使用私有 DNS,而是使用自定义端点调用服务。/AWS1/IMG 中定义的逻辑资源表示的是物理接口端点地址,如 vpce-0123456789abcdef-hd52vxz.translate.us-west-2.vpce.amazonaws.com。这样可避免在代码中对 DNS 进行硬编码。

在以下代码中,首先将 /AWS1/IMG 中的逻辑资源解析为物理端点名称。然后将其融入 Amazon 会话类的工厂方法(使用 Amazon STS 代入 IAM 角色),并翻译 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

多区域端点访问

由 SDK 配置文件定义的默认 Amazon Web Services 区域 会自动确定 Amazon 端点。您也能以编程方式指定区域以覆盖默认区域。可使用 CREATE() 工厂方法或者之后使用 SDK 配置对象来覆盖此默认区域。有关更多信息,请参阅编程配置

以下示例使用 CREATE() 工厂方法设置区域,并在 us-east-1us-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.