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

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

入门 适用于 SAP ABAP 的 Amazon SDK

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

第 1 步:准备 Amazon 账户

要开始使用 f SDK o SAP ABAP r,必须激活一个 Amazon Web Services 账户 。 Amazon Web Services 账户 即使您的SAP系统托管在本地、SAP业务技术平台 (BTP) 上或其他云提供商,您也需要一个。

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

IAMSAP用户的角色

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

  • 选择 Amazon EC2 作为用例。

  • 使用 SapDemoTranslate 作为角色名称。

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

  • 该角色必须具有以下实体才能让SAP系统代入该角色。将 "111122223333" 替换为您的 Amazon 账号。

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

    此示例表明,来自的任何委托人 Amazon Web Services 账户 "111122223333"都可以担任该角色。这是一个广泛的权限,适用于 proof-of-concept。在生产环境中可以使用权限更小的主体,如以下示例。

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

      • SSF-来自本地SAP系统的加密凭证

      • 来自SAP凭证存储服务的凭证 SAPBTP,环境 ABAP

    • 特定角色 — 当SAP系统在 Amazon 上EC2并且有实例配置文件时。

    • Amazon EC2 — 当SAP系统在 Amazon 上EC2且没有实例配置文件时。

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

身份验证

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

在 Amazon 云上

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

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

添加您在ARN上一步中记下的。

此权限使您的SAP系统能够代表ABAP用户代入该SapDemoTranslate角色。

本地SAPBTP或其他云端

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

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

  2. SapDemoSID用作IAM用户名。 SID是您的系统的SAP系统 ID。

  3. 为用户分配 SapDemoTranslate 角色。

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

注意

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

步骤 2:安装 SDK

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

SDK for SAP ABAP

SDK为SAP系统中的SAPABAP传输导入。此传输内容可导入任意客户端。有关更多信息,请参阅SDK为安装SAPABAP

SDK for SAP ABAP - BTP edition

使用 D SDK e SAP ABAP ploy Pro duct 应用程序安装BTP版本。有关更多信息,SDK请参阅SAPABAP安装BTP版本

步骤 3:配置 SDK

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

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

SDK for SAP ABAP

运行/AWS1/IMG事务以打开的实施SDK指南SAPABAP。要运行此事务,请在SAP系统的命令栏/n/AWS1/IMG 中输入,然后选择 Enter

完成以下配置。

  • 转到技术先决条件

  • 转到全局设置配置场景

  • 转到全局设置技术设置

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

    • 选择新建条目

      • 跟踪等级:无跟踪。

      • 最大转储行数100

      • OPT-in:enh 遥测:保留此空白。

    • 选择保存

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

    • 新建场景中选择 DEFAULT

    • 选择提交场景更改

    • 接受提示。

本地系统的先决条件

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

/AWS1/IMG事务中描述SSF了SDKSAPABAP为的配置步骤。

注意

如果您的SAP系统在 Amazon 上运行,则上述先决条件不适用EC2。SAP在 Amazon 上运行的系统会从亚马逊EC2实例元数据中EC2检索短暂的、自动轮换的证书。

SDK for SAP ABAP - BTP edition

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

完成以下配置。

第 4 步:功能设置

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

SDK for SAP ABAP

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

  • 前往 “应用程序配置” → “配置SDK文件”。

    • 选择新建条目

      • 配置文件DEMO

      • 描述:Demo profile

      • 选择保存

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

    • 选择新建条目

      • SID:您当前所在SAP系统的系统 ID。

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

      • 场景 ID:下拉列表,您可以在其中找到 Basis 管理员创建的DEFAULT场景。

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

      • 身份验证方法:

        • 如果您的SAP系统在 Amazon 上运行,请通过元数据选择实例角色EC2。

        • 如果您的SAP系统在本地或其他云中运行,请从 “SSF存储” 中选择 “凭据”。

          • 选择设置凭证

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

    • “禁用IAM角色” 保留为空。

    • 选择保存

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

    • 选择新建条目

      • 输入序列号:010。

      • 输入逻辑IAM角色:TESTUSER.

      • 输入IAM角色 ARN:输入包含在上一步中创建的TranslateReadOnly策略的IAM角色的 arn: aws:。

SDK for SAP ABAP - BTP edition

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

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

  • 前往SDK个人资料

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

      • 配置文件DEMO

      • 描述:Demo profile

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

    选择新建条目

    • SID:您当前所在SAP系统的系统 ID。

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

    • 场景 ID:下拉列表,您可以在其中找到 Basis 管理员创建的DEFAULT场景。

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

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

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

    • 输入为在 for SAP ABAP-editi BTP on 和 SAP Credential Store 之间建立通信SDK而创建的通信安排的名称。

    • “禁用IAM角色” 保留为空。

  • 右键单击创建的条目旁边的右箭头键以导航到 “IAM角色映射” 选项卡。

    选择新建条目

    • 输入序列号:010。

    • 输入逻辑IAM角色:TESTUSER.

    • 输入IAM角色 ARN:输入包含在上一步中创建的TranslateReadOnly策略的IAM角色的 arn: aws:。

步骤 5:为SAP用户授权

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

SDK for SAP ABAP

创建PFCG角色

  • 转到 PFCG 事务

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

    • 描述Role for demo AWS SDK functionality

    • 转到授权选项卡。

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

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

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

    • 添加以下授权对象:

      • /AWS1/LROL

      • /AWS1/SESS

    • 在授权树中输入:

      • 用于访问的个人资料 AWSAPIs:DEMO

      • 逻辑IAM角色:TESTUSER

    • 选择保存

    • 选择生成

    • 选择返回

    • 选择保存,保存角色。

将PFCG角色分配给SAP用户

任何分配了ZAWS_SDK_DEMO_TESTUSER角色的用户都将被授权使用配置DEMOSDK文件中配置的设置的 Amazon SDK功能。授权用户还将担任映射到该IAM配置文件中TESTUSER逻辑IAM角色的角色。

  • 运行 SU01 事务。

    • 输入将要测试 Amazon SDK功能的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业务用户。选择保存

分配给所创建业务角色的任何业务用户都将被授权使用配置DEMOSDK文件中配置的设置的 Amazon 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. 右键单击需要在其中创建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.

有关如何编写使用ABAP代码的详细信息SDK,请参阅使用 适用于 SAP ABAP 的 Amazon 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角色授权您使用SDK配置文件并将其映射到逻辑IAM角色,而您的IAM权限未配置为SAP系统代入该IAM角色,则输出结果将如下所示。

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

在这种情况下,请查看您在中定义的IAM角色、用户或两者的IAM权限和信任配置第 1 步:准备 Amazon 账户

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角色授权您使用SDK配置文件并将其映射到逻辑IAM角色,而您的IAM权限未配置为SAP系统代入该IAM角色,则输出结果将如下所示。

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

在这种情况下,请查看您在中定义的IAM角色、用户或两者的IAM权限和信任配置第 1 步:准备 Amazon 账户