View a markdown version of this page

开始使用适用于 SAP ABAP 的 AWS SDK - AWS适用于 SAP ABAP 的 SDK

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

开始使用适用于 SAP ABAP 的 AWS SDK

本节介绍如何开始使用 SDK。其中包括有关安装 SDK、执行基本配置和创建使用不同语言翻译短语的 Hello World 代码示例的信息。如果您不熟悉 AWS SDK,我们建议您在沙盒环境中执行这些步骤。

注册获取AWS 账户

要开始使用AWS,你需要一个AWS 账户。有关创建的信息AWS 账户,请参阅《AWS 账户管理参考指南》AWS 账户中的入门指南

第 1 步:准备好你的AWS账户

必须准备一个活动 AWS 账户,才能开始使用适用于 SAP ABAP 的 SDK。AWS 账户即使你的 SAP 系统托管在本地、SAP 业务技术平台 (BTP) 上或其他云提供商,你也需要一个。

如果您的 SAP 系统在 AWS Cloud 上运行,那么您将调用自己的AWS服务AWS 账户。

适用于 SAP 用户的 IAM 角色

  • 根据 AWS Identity and Access Management 用户指南说明,创建 IAM 角色。有关更多信息,请参阅创建角色以向AWS服务委派权限。记下 IAM 角色的 Amazon 资源名称 (ARN) 以备后用。

  • 选择 Amazon EC2 作为用例。

  • 使用 SapDemoTranslate 作为角色名称。

  • 为角色附加 TranslateReadOnly 配置文件。

  • 角色必须具有以下实体,才能支持 SAP 系统代入此角色。将 "111122223333" 替换为您的 AWS 账号。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "AWS": "111122223333" } } ] }

    此示例表明,来自的任何委托人AWS 账户"111122223333"都可以担任该角色。这是一项适用于概念验证的广泛权限。在生产环境中可以使用权限更小的主体,如以下示例。

    • 特定用户 — 当 SAP 系统使用以下任一用户时:

      • SSF-encrypted 来自本地 SAP 系统的证书

      • 来自 SAP BTP、ABAP 环境上的 SAP 凭证存储服务的证书

    • 特定角色:当 SAP 系统运行在 Amazon EC2 上且具有实例配置文件时。

    • Amazon EC2:当 SAP 系统运行在 Amazon EC2 上但没有实例配置文件时。

有关更多信息,请参阅 IAM 安全最佳实践

身份验证

身份验证取决于 SAP 系统的托管位置。

开AWS云

确保运行 SAP 系统的 EC2 实例的实例配置文件具有以下权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/SapDemoTranslate" } ] }

添加之前步骤中记录的 ARN。

此权限能让 SAP 系统代表 ABAP 用户代入 SapDemoTranslate 角色。

On-premises、SAP BTP 或其他云

如果您的 SAP 系统位于本地、SAP BTP 或其他云上,请使用以下步骤使用私有访问密钥建立身份验证连接。

  1. 创建 IAM 用户。有关更多信息,请参阅创建 IAM 用户(控制台)

  2. 使用 SapDemoSID 作为 IAM 用户名以及 SID 作为 SAP 系统的系统 ID。

  3. 为用户分配 SapDemoTranslate 角色。

保留access_keysecret_access_key。您必须在 SAP 系统中配置这些凭证。

注意

如果您的 SAP 系统位于本地、SAP BTP 或其他云上,则可以使用以下选项之一进行身份验证。

第 2 步:安装软件开发工具包

有关安装说明,请参阅以下选项卡。

SDK for SAP ABAP

向 SAP 系统传输适用于 SAP ABAP 的 SDK。此传输内容可导入任意客户端。有关更多信息,请参阅安装适用于 SAP ABAP 的开发工具包

SDK for SAP ABAP - BTP edition

使用 Deplo y Pro duct 应用程序安装适用于 SAP ABAP 的 SDK-BTP 版。有关更多信息,请参阅安装适用于 SAP ABAP 的 SDK-BTP 版

步骤 3:配置 SDK

在配置 SDK 之前,请确保您拥有所需的授权。有关更多信息,请参阅 SAP 授权。

有关配置说明,请参阅以下选项卡。

SDK for SAP ABAP

运行/AWS1/IMG事务以打开适用于 SAP ABAP 的 SDK 实施指南。如需运行此事务,请在 SAP 系统的命令栏中输入 /n/AWS1/IMG ,然后点击 Enter

完成以下配置。

  • 转到技术先决条件

  • 转到全局设置配置场景

  • 转到全局设置技术设置

  • 转到运行时设置记录和跟踪

    • 选择新建条目

      • 跟踪等级:无跟踪。

      • 最大转储行数100

      • OPT-IN: enh 遥测:将其留空。

    • 选择保存

  • 转到运行时设置活动场景

    • 新建场景中选择 DEFAULT

    • 选择提交场景更改

    • 接受提示。

On-Premises 系统的先决条件

如果 SAP 系统运行在本地或其他云中,则必须将凭证存储在 SAP 数据库中。凭证使用 SAP SSF 进行加密,需要配置加密库,例如 SAP 的加密库。 CommonCryptoLib

/AWS1/IMG 事务描述了为适用于 SAP ABAP 的 SDK 配置 SSF 的步骤。

注意

如果 SAP 系统运行在 Amazon EC2 上,则上述先决条件不适用。因为运行在 Amazon EC2 上的 SAP 系统会在 Amazon EC2 实例元数据中检索自动轮换的短期凭证。

SDK for SAP ABAP - BTP edition

在 Web 浏览器中打开 ABAP 环境,然后导航到 “自定义业务配置” 应用程序。

完成以下配置。

第 4 步:功能设置

有关设置说明,请参阅以下选项卡。

SDK for SAP ABAP

运行事务/AWS1/IMG/n/AWS1/IMG在命令栏中输入,然后选择 Enter)以打开 AWS SDK 的实现指南。

  • 转到应用程序配置SDK 配置文件

    • 选择新建条目

      • 配置文件DEMO

      • 描述:Demo profile

      • 选择保存

  • 突出显示创建的条目,然后单击身份验证和设置树分支。

    • 选择新建条目

      • SID:当前 SAP 系统的系统 ID。

      • 客户端:当前 SAP 系统的客户端。

      • 场景 ID:下拉列表,其中列出了由基础管理员创建的默认场景。

      • AWS区域:输入您要拨打电话的AWS区域。如果您的 SAP 系统正在运行AWS,请输入其运行所在的AWS区域。

      • 身份验证方法:

        • 如果 SAP 系统运行在 Amazon EC2 上,则选择元数据中的实例角色

        • 如果 SAP 系统运行在本地或其他云中,则选择 SSF 存储中的凭证

          • 选择设置凭证

          • 输入之前步骤中创建的访问密钥 ID 和秘密访问密钥。

    • 禁用 IAM 角色留空。

    • 选择保存

  • 单击 IAM 角色映射树分支。

    • 选择新建条目

      • 输入序列号:010。

      • 输入 IAM 逻辑角色:TESTUSER。

      • 输入 IAM 角色 ARN:输入 IAM 角色的 arn:aws:,其中包含之前步骤中创建的 TranslateReadOnly 策略。

SDK for SAP ABAP - BTP edition

使用 SAP 凭据存储设置身份验证。有关更多信息,请参阅使用 SAP 凭据存储

在 Web 浏览器中打开 ABAP 环境,然后导航到 “自定义业务配置” 应用程序。

  • 前往 SDK 配置文件

    • 选择 “编辑” 以创建新的配置文件。

      • 配置文件DEMO

      • 描述:Demo profile

  • 选择创建的条目旁边的右箭头键导航到 “身份验证和设置” 选项卡。

    选择新建条目

    • SID:当前 SAP 系统的系统 ID。

    • 客户端:当前 SAP 系统的客户端。

    • 场景 ID:下拉列表,其中列出了由基础管理员创建的默认场景。

    • AWS区域:输入您要拨打电话的AWS区域。如果您的 SAP 系统正在运行AWS,请输入其运行所在的AWS区域。

    • 身份验证方法:从 SAP 凭据存储中选择凭据

    • 输入存储在 SAP 凭证存储中的凭据的命名空间密钥名称

    • 输入为在适用于 SAP ABAP 的 SDK-BTP 版本和 SAP 凭证存储区之间建立通信而创建的通信安排的名称。

    • 禁用 IAM 角色留空。

  • Right-click 使用创建的条目旁边的右箭头键导航到 IAM 角色映射选项卡。

    选择新建条目

    • 输入序列号:010。

    • 输入 IAM 逻辑角色:TESTUSER。

    • 输入 IAM 角色 ARN:输入 IAM 角色的 arn:aws:,其中包含之前步骤中创建的 TranslateReadOnly 策略。

步骤 5:授权 SAP 用户

默认情况下,SAP 用户无权使用AWS功能。必须使用 SAP 权限对用户进行明确授权。有关更多详细信息,请参阅以下选项卡。

SDK for SAP ABAP

创建 PFCG 角色

  • 转到 PFCG 事务

  • 输入角色名称 ZAWS_SDK_DEMO_TESTUSER 并选择创建单个角色

    • 描述Role for demo AWS SDK functionality

    • 转到授权选项卡。

    • 选择更改授权数据并接受信息弹出窗口。

    • 选择模板弹出窗口中选择不选择模板

    • 在工具栏中选择手动添加

    • 添加以下授权对象:

      • /AWS1/LROL

      • /AWS1/SESS

    • 在授权树中输入:

      • AWS API 的访问配置文件:DEMO

      • IAM 逻辑角色:TESTUSER

    • 选择保存

    • 选择生成

    • 选择返回

    • 选择保存,保存角色。

向 SAP 用户分配 PFCG 角色

任何分配了ZAWS_SDK_DEMO_TESTUSER角色的用户都将被授权使用 AWS SDK 配置文件中配置的设置的 DEMO SDK 功能。授权用户还将代入 IAM 角色,其映射在配置文件的 TESTUSER IAM 逻辑角色中。

  • 运行 SU01 事务。

    • 输入将要测试 S AWS DK 功能的 SAP 用户的用户 ID。

    • 选择更改

    • 转到角色选项卡,然后向用户分配 ZAWS_SDK_DEMO_TESTUSER 角色。

    • 选择保存

SDK for SAP ABAP - BTP edition

创建业务角色

  • 在 Web 浏览器中打开 ABAP 环境,然后导航到 “维护业务角色” 应用程序。

  • 选择 “从模板创建”,然后输入以下详细信息。

    • 模板 —选择/AWS1/RT_BTP_ENDUSER

    • 新的业务角色 ID-输入 ID。

    • 新业务角色描述-输入描述。

  • 选择 “确定” 以查看业务角色的页面。

  • 在 “常规角色详细信息” 选项卡下,转到 “访问类别”,然后将 “写入、读取、值帮助” 字段设置为 “受限”。

  • 选择 “维护限制”,然后从左侧导航窗格中展开 “分配的限制类型”。更新 “限制和值” 部分中的以下字段。

    • “选择 SDK 会话” 下,选择 SDK 配置文件旁边的铅笔图标,然后导航到 “范围” 选项卡。输入DEMO,然后选择添加

    • “选择逻辑 IAM 角色” 下,选择 “逻辑 IAM 角色” 旁边的铅笔图标,然后导航到 “范围” 选项卡。输入TESTUSER,然后选择添加

      选择 SDK 配置文件旁边的铅笔图标,然后导航到 “范围” 选项卡。输入DEMO,然后选择添加

  • 返回业务角色模板,然后打开 “业务用户” 选项卡。选择 “添加”,将新创建的业务角色分配给将测试 SDK 功能的 SAP 业务用户。选择保存

分配给所创建业务角色的任何业务用户都将被授权使用 AWS SDK 配置文件中配置的设置的 DEMO SDK 功能。授权用户还将代入 IAM 角色,其映射在配置文件的 TESTUSER IAM 逻辑角色中。

第 6 步:编写代码

有关更多详细信息,请参阅以下选项卡。

SDK for SAP ABAP
  1. 打开 SE38 事务。

    • 输入 ZDEMO_TRANSLATE_HELLO_WORLD 作为程序名称。

    • 选择 Create

    • 输入 AWS SDK Hello World In Any Language 作为标题。

    • 类型:选择可执行程序

    • 状态:选择测试程序

    • 选择保存

    • 将程序另存为本地对象

添加以下代码

*&---------------------------------------------------------------------* *& Report  ZAWS1_DEMO_XL8_SIMPLE *& *&---------------------------------------------------------------------* *& A simple demo of language translation with AWS Translate *& *&---------------------------------------------------------------------* REPORT zaws1_demo_xl8_simple. START-OF-SELECTION.   PARAMETERS pv_text TYPE /aws1/xl8boundedlengthstring DEFAULT 'Hello, World' OBLIGATORY.   PARAMETERS pv_lang1 TYPE languageiso DEFAULT 'EN' OBLIGATORY.   PARAMETERS pv_lang2 TYPE languageiso DEFAULT 'ES' OBLIGATORY.   TRY.       DATA(go_session) = /aws1/cl_rt_session_aws=>create( 'DEMO' ).       DATA(go_xl8)     = /aws1/cl_xl8_factory=>create( go_session ).       DATA(lo_output) = go_xl8->translatetext(            iv_text               = pv_text            iv_sourcelanguagecode = CONV /aws1/xl8languagecodestring( pv_lang1 )            iv_targetlanguagecode = CONV /aws1/xl8languagecodestring( pv_lang2 )       ).       WRITE: / 'Source Phrase: ', pv_text.       WRITE: / 'Target Phrase: ', lo_output->get_translatedtext( ).     CATCH /aws1/cx_xl8unsuppedlanguage00 INTO DATA(lo_lang).       WRITE: / 'ERROR' COLOR COL_NEGATIVE,                'Cannot translate from',                lo_lang->sourcelanguagecode,                'to',                lo_lang->targetlanguagecode.     CATCH cx_root INTO DATA(lo_root).       WRITE: / 'ERROR' COLOR COL_NEGATIVE, lo_root->get_text( ).   ENDTRY.
SDK for SAP ABAP - BTP edition
  1. Right-click 在需要创建 ABAP 类的软件包上,选择建 > ABAP 类。

  2. 输入ZCL_DEMO_XL8_SIMPLE类名,然后添加班级描述。选择下一步

  3. 创建或选择传输请求。选择 “完成”。

添加以下代码

CLASS zcl_demo_xl8_simple DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_oo_adt_classrun. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_demo_xl8_simple IMPLEMENTATION. METHOD if_oo_adt_classrun~main. TRY. " input parameters DATA(pv_text) = |Hello, World|. DATA(pv_lang1) = |EN|. DATA(pv_lang2) = |ES|. DATA(go_session) = /aws1/cl_rt_session_aws=>create( 'DEMO' ). DATA(go_xl8) = /aws1/cl_xl8_factory=>create( go_session ). DATA(lo_output) = go_xl8->translatetext( iv_text = pv_text iv_sourcelanguagecode = pv_lang1 iv_targetlanguagecode = pv_lang2 ). out->write( |Source Phrase: { pv_text }| ). out->write( |Target Phrase: { lo_output->get_translatedtext( ) }| ). CATCH /aws1/cx_xl8unsuppedlanguage00 INTO DATA(lo_lang). out->write( |ERROR - Cannot translate from { lo_lang->sourcelanguagecode } to { lo_lang->targetlanguagecode }| ). CATCH cx_root INTO DATA(lo_root). out->write( |ERROR - { lo_root->get_text( ) }| ). ENDTRY. ENDMETHOD. ENDCLASS.

有关如何编写使用 SDK 的 ABAP 代码的详细信息,请参阅使用适用于 SAP ABAP 的 AWS SDK

步骤 7:运行应用程序

有关更多详细信息,请参阅以下选项卡。

SDK for SAP ABAP

SE38 中运行应用程序。成功运行后将输出以下内容。

Source Phrase: Hello, World Target Phrase: Hola, mundo

如果缺失授权、配置或基础先决条件,您会收到一条错误消息。请参阅以下示例。

ERROR Could not find configuration under profile DEMO with scenario DEFAULT for SBX:001

如果您尚未向 SAP 系统配置可代入 IAM 角色的 IAM 权限,就已获得 SAP 角色授予的 SDK 配置文件使用权限,并能够将其映射到 IAM 逻辑角色,则您会收到以下输出内容。

ERROR Could not assume role arn:aws:iam::111122223333:role/SapDemoTranslate

此时,请查看 第 1 步:准备好你的AWS账户 中定义的 IAM 角色和/或用户上的 IAM 权限和信任配置。

SDK for SAP ABAP - BTP edition

Eclipse > 运行方式 > ABAP 应用程序(控制台)上运行该应用程序。成功运行后将输出以下内容。

Source Phrase: Hello, World Target Phrase: Hola, mundo

如果缺失授权、配置或基础先决条件,您会收到一条错误消息。请参阅以下示例。

ERROR Could not find configuration under profile DEMO with scenario DEFAULT for SBX:001

如果您尚未向 SAP 系统配置可代入 IAM 角色的 IAM 权限,就已获得 SAP 角色授予的 SDK 配置文件使用权限,并能够将其映射到 IAM 逻辑角色,则您会收到以下输出内容。

ERROR Could not assume role arn:aws:iam::111122223333:role/SapDemoTranslate

此时,请查看 第 1 步:准备好你的AWS账户 中定义的 IAM 角色和/或用户上的 IAM 权限和信任配置。