Amazon S3 调用配置手册:SAP 存储成本降低,开发量减少,且适配多场景!

4ef33b3319567801e345ada0bbd8854b.gif

前言

越来越多客户选择在亚马逊云科技上运行其 SAP 工作负载,其中许多 SAP 客户使用 ABAP 开发和增强其 SAP 业务流程。

许多客户的业务流程依赖于自定义的 ABAP 代码,并在内部或通过合作伙伴拥有 ABAP 开发团队。Amazon SDK for SAP ABAP 使 ABAP 开发人员能够轻松地通过使用 ABAP 编程语言集成亚马逊云科技服务,实现基于 SAP 的业务流程的现代化和转换,无需映射数据格式、创建和维护许多点对点连接,也无需集成 SAP 和亚马逊云科技安全模型。

当导入 Amazon SDK 到基于 NetWeaver 的 ABAP 系统中时,Amazon SDK for SAP ABAP 为 SAP 系统引入了一组 SAP ABAP 类,以便使用 ABAP 编程语言构造 Amazon 各种服务的 API。ABAP 开发人员可以在报告和程序中使用这些基于 ABAP 的类来增强现有的 SAP 功能或开发新的应用程序。

这些使用场景包括自动开票的智能文档处理、使用 Amazon Translate 的语言翻译,或使用 Amazon S3 在 SAP 和第三方应用程序之间交换文件。Amazon SDK for SAP ABAP 工作原理如下图所示,其部署在 SAP 系统后,通过 Rest API 调用亚马逊云科技多达 200 多个服务。

8370c0c946fef9dc9359dd4e19406f98.png

通过 Amazon SDK for SAP ABAP 可以访问亚马逊云科技的服务,包括 Amazon S3、Amazon SageMaker、Amazon Bedrock 等,您还可以使用 Amazon SDK for SAP ABAP 集成亚马逊云科技最新的服务。

本博文展示了如何为 SAP 系统配置 Amazon SDK 的详细过程,然后通过部署一个示例 ABAP 程序,该程序列出了存储桶(Amazon S3)中对象的内容。

对于 ECC on HANA 以及 S/4HANA 的客户来说,不管是采用线下部署,还是云上部署,抑或是采购了 Amazon SAP RISE,都会面临大文件存储的困扰。

一方面很多凭证和文档,是业务的重要参考和佐证;另外一方面,HANA 数据库的内存和存储都相当昂贵,把文件存储在 HANA 数据库中,占用了内存和存储,大幅增加了 SAP 的资源成本。此时,把文件存储到成本低廉的 Amazon S3 中,就成为了一个非常好的选项。

通过本文的介绍,希望辅助读者进一步了解该工具包的使用,并能根据自家的 SAP 系统的业务场景去调用亚马逊云科技上的各种服务,满足业务的创新需求。

部署准备

1

SAP_BASIS 版本要求

Amazon SDK for SAP ABAP 需要部署在 SAP NetWeaver 7.4 及更高版本,该组件部署后不会改变 SAP 任何的表。需要的 SAP_BASIS 的组件版本必须满足大于 740 SP 0008 以上的版本。

91f8f63830a32b1435437073ddfc30ea.png

2

Kernel 版本要求

Amazon SDK 使用 Internet Communication Manager (ICM) for HTTP 通讯协议,其加密、HTTP、XML 和 JSON 功能依赖于 SAP Kernel。推荐使用 SAP 系统 Kernel 的最新版本。对于 Kernel 版本的最低要求是 741。如果使用 Kernel 741 或者 742,其小版本最低要满足如下要求。

  • 741 patch 212

  • 742 patch 111

3

需要调整的参数

SAP 系统必须支持 SAP Notes 中所述的服务器名称指示(SNI)。通过执行 T-code:RZ10,去维护 DEFAULT.PFL 文件,增加或修改如下参数。

icm/HTTPS/client_sni_enabled = TRUE

左右滑动查看完整示意

请参考下面的 Notes 去设置该参数。

  • SAP Note 2124480 – ICM/Web Dispatcher: TLS Extension Server Name Indication (SNI) as client

  • SAP Note 2582368 – SapSSL update for client-side sending of TLS extension SNI by saphttp, sapkprotp, sldre

4

必须安装的 Notes

检查 Note 1856171 和 2619546 是否已经安装部署在 SAP 系统中。如果没有,需要从 SAP 官网下载此两个 Notes,并安装此补丁程序到 SAP 系统中。

SAP 官网

https://support.sap.com/en/index.html

5

 Outbound connectivity

Amazon SDK for SAP ABAP 使用 HTTPS 协议,SAP 系统向外发送 HTTPS 消息,不需要入站连接。

6

 HTTPS connectivity 证书配置

所有 Amazon API 调用都使用加密的 HTTPS 通道进行,SAP 系统必须配置 Amazon 授信的证书以建立出站 HTTPS 连接。操作步骤如下:

  • 访问此网站 ⬇️

网址

https://www.amazontrust.com/repository/

  • Under Root CAs, download all the certificates using the PEM link. 点击网站中如下图的“PEM”下载每个证书

f23e8799d19e0e059438f7bed10489b6.png

  • 执行 T-code strust 导入刚下载的五个证书

5ed37048fcda73dcc2b3d6dd67efca2f.png

通过点击上图左下角的导入按钮依次倒入如下图下载的 5 个证书。

73b8aace6991fe91cb5a437924db11a2.png

导入成功后,其结果显示如下:

997361067b1e562373f46c67b4e891c6.png

7

Access to 

Amazon EC2 instance metadata

ABAP 系统对本机 localhost(http://169.254.169.254)进行未加密的 HTTP 连接,以启用 Amazon EC2 实例元数据。

HTTP 通道仅用于从本地服务器检索凭据。HTTP 流量仅在主机内进行,元数据允许亚马逊云科技中的 SAP 系统安全地验证自身,而无需在 SAP Secure Store 中存储密钥。此功能仅适用于 Amazon EC2 SAP 系统。

SAP 系统能够进行未加密的出站 HTTP 连接,通过执行 T-code RZ10 修改  default.pfl,而后重启实例生效。

icm/server_port_= PROT=HTTP,PORT=8000,TIMEOUT=60,PROCTIMEOUT=600

左右滑动查看完整示意

使用以下参数可以在不启用入站连接的情况下启用出站 HTTP 连接:

icm/server_port_= PROT=HTTP,PORT=0,TIMEOUT=60,PROCTIMEOUT=600

左右滑动查看完整示意

执行 T-code smicm 去判断该服务是否生效,其示例如下:

672c1e725815ff9bf0b6b54116231a15.png

安装 Amazon SDK for SAP ABAP

1

下载安装包

通过下面的网址下载 Amazon SDK for SAP ABAP 安装软件。

网址

https://sdk-for-sapabap.aws.amazon.com/awsSdkSapabapV1/release/abapsdk-LATEST.zip

2

下面的步骤

验证该安装包是否被篡改(可选)

  • 通过下面的网址下载 SDK SIGNATURE file:

网址

https://sdk-for-sapabap.aws.amazon.com/awsSdkSapabapV1/release/abapsdk-LATEST.sig

  • 拷贝下面 PUBLIC KEY的内容,存到一个名称为 abapsdk-signing-key.pem 的文件

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmS3oN3wKBh4HJOGaOtye
15RR5909nuw0JxOvEDCT7O9wUrXS3mjgEw6b6hvr2dLdoFr+eH4ewT5bVl6U3gDv
051sTdEJJpfLEWJJZZNK3v9fGWKyXgYe+ifmsPmf4lhNd2auzpvIy2UrlSYijCRB
BWZFW+Ux0OkILz+8vCFSXMZ6Z0qtLIlZFbGrn6A5adbwwzfOqkg9BUEZK0wB6TAi
ZTnkMdBZGCBM9K2MRKKMxtrxUn+TFcAYyh5pM9tUAb2q4XE5m7092UnZG7ur/QYl
1FSZwAhQmk8hUPgUaqOOQRC6z3TRzIGKOA/DI0cUPJMzFR4LCxEJkgh4rkRaU9V2
O7DthUpj8b7QcQaiOpnMpBf3zWLgbjNmX0hB0Eprg8/nVRHspf3zuiscJ2lMPkz0
cHOR3lMNsMLzm+d/gVkLt31R/JwAcFCkXTWvR8/VOWNGZZXdVUbefrfI/k7fP60B
bzUrIlN4poq16rc4Tk5Derg+wQ7rOWjXkXop2kiCMjbYo0ol0kS/At64PLjpz8dH
Zg25o79U9EJln+lpqZ297Ks+HoctOv2GPbeeh0s7+N0fRTyOr81EZIURLPKLVQUw
otVRzNDgLOA7eA667NrmegZfHCmqEwK9tXakZUHAcMzRPyhALc/HtmovxdStN9h1
JC4exOGqstAv1fX5QaTbMSECAwEAAQ==
-----END PUBLIC KEY-----

左右滑动查看完整示意

  • 通过执行下面的命令,校验 SDK ZIP 文件是否被篡改

# openssl dgst -sha256 -verify abapsdk-signing-key.pem -keyform PEM -signature abapsdk-LATEST.sig abapsdk-LATEST.zip

左右滑动查看完整示意

  • 如果没被篡改,输出结果显示“OK”

3

解压安装包

解压该 “abapsdk-LATEST.zip”后,会发现其目录中包含众多的针对亚马逊云科技服务相关的子目录,每个子目录对应不同的亚马逊云科技服务,其目录对应关系,请参考如下 link 的说明。

说明 link

https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/tla.html

transports 文件夹包含一个 core 子文件夹,该文件夹是 Amazon SDK 的核心文件夹,必须首先导入,其他的文件夹对应不同亚马逊云科技服务。建议首先导入该目录下的传输请求文件,再根据需要导入需要的其他文件。

ea1ed0d068088c1dec657664ac6288b6.png

4

上传安装包

上传 K9A4TQ0.Amazon 与 R9A4TQ0.Amazon 至 SAP 系统传输相关如下目录中:/usr/sap/trans/cofiles 和/usr/sap/trans/data

其示例如下:

63a02d579ce11fa85ee6b7b03bf7e0ea.png

6eb93f977ed388b42e0966197109f544.png

5

导入安装包

在 SAP 系统中执行 T-code: stms,通过导入传输请求的方式导入需要的 Amazon SDK for ABAP 服务。其示例如下:

c5db811c011b5943c075d22906b7192a.png

导入成功后其状态显示如下图所示:

0c99c488bfba75469ea74c8faee9a7da.png

验证该包是否导入成功,执行 T-code:/n/Amazon1/img 进行确认,示例如下:

2e6e0a240be33bfb25223e78cedd8a36.png

配置 Amazon SDK for SAP ABAP 

访问 Amazon S3

1

设置 SSF 访问(可选项)

如果 SAP 系统在亚马逊云科技以外的位置运行,则需要以下附加设置,以使用 SAP 的安全存储转发(SSF)机制,加密亚马逊云科技身份和访问管理用户的凭据(访问密钥 ID 和秘密访问密钥)。

通过在 SAP GUI 窗口中执行事务代码 SE16 来定义 SSF 应用程序,输入表名 SSFAPPLIC。配置信息如下:

ea0cbd34e72db48ecd629c8711502057.png

通过执行 T-code: /n/aw1/img,设置 SSF 参数,执行该行,设置 SSF 相关的参数。如下图所示:

ed31a92c8d264c8eeadb9d63671271bb.png

按照下图输入 SSF 相关的参数,而后保存。

464d2026048517cb2bd922dec225e68f.png

通过执行 T-code: /n/aw1/img,创建一个“PSE for SSF Application”,如下图所示:

129606c92a6222a8367c79dbbb169275.png

按照下图所示输入关联的参数,而后点击保存。

8725e11c220feb7d60575ca3e2c0a790.png

创建后的效果,可见该状态变为了绿色,如下图所示:

4015dbe5d8fc89d31065e52dae365a0f.png

最后执行“Assign an SSF application to the SDK for SAP ABAP”, 制定 SSF Application,如下图所示:

a4e4bdb7988468bf12c46b1eaa76ee72.png

2

Global 设置

执行 T-code: /n/aw1/img,展开 IMG 配置,选择“Global Settings”然后选择执行“Configure Scenarios”。对于正常操作,请创建一个名为 DEFAULT 的场景,本示例选用 scen3。

19474464e1d7e88fda22c69941e39ea8.png

426e081bd7813c49733e0bfa7af7b8f2.png

接下来选择“Active Scenario”激活该场景,如下图所示。

cdfcc5727544e1f9d33af68feb1ad5b9.png

点击 “Commit Scenario Change”按钮,激活该场景。

0e57317447672b3440637d7511a83615.png

3

 Technical Settings

通过展开 IMG 节点“Global Settings”并选择执行“Technical Settings”来配置 Amazon SDK 全局配置。

79f7b85d6f3b6b8d140d2e9a9382e124.png

点击“Save”按钮,保留缺省配置。

50ed49ed83ac69654390f056d02c55fe.png

4

创建 SDK Profile

Application Configuration 包括创建“SDK Profile”“Logical Resource Resolver”配置两部分。在 SDK Profile 中,定义 SAP 相关的参数。如 SAP 系统(SID)和 client、前面步骤中配置的场景、要使用的亚马逊云科技区域和身份验证方法。执行 T-code: /n/aw1/img,配置示例如下所示。

首先新增一个 “SDK” 条目如下所示:

546f0e915a781dc6c6c6f0da1e8669cc.png

而后点击“New Entries”进入配置界面。

eac1714894c0126932ef8974a1773d7d.png

点击“Set Credentials”设置用户的 AKSK 的信息。

输入 AKSK 相关的信息,而后点击保存。

26a7c71eaf77050d59385d9c6947e0d9.png

c3b4c17f62bcf61e988b8ac5d188411c.png

设置后的效果如下图所示,可以看到“Credentials stored”状态变绿了。

1222f208c2283c1e0e5050038abbecdf.png

5

 配置 Logical Resource Resolver

单击“New Entries”,先添加一个 logical resource,如下图所示。

154f7a46b5be2661ca669e98fb06a0f5.png

提前准备好接下来需要用到的 Amazon S3 Bucket,本示例用到的 Amazon S3 名称是“abapsdk-workshop-jw0229”

54fefc045d7823d9be83528fda4fbe39.png

在 Logical Resource Resolver 配置系统的 [SID], 需要用哪个 SAP 的 Client,输入前面定义的 Scenario ID,在 Physical Resource 处输入需要用到的 Amazon S3 Bucket 的名称。

9953973dc2848b51cf0214a72a4c6d61.png


测试

1

下载测试文件到 Amazon S3

下载如下 link 的文件 movie_data.json 放到 Amazon S3 的存储桶,本示例用了 abapsdk-workshop-jw0229。如下图所示:

文件link 

https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/go/example_code/dynamodb/.movie_data.json

14f42b9be6b09aa8bad9be1de945756d.png

2

创建 ABAP 测试程序

  • 运行 T-code: SE38 在 SAPGUI

  • 定义该程序名为 ZDEMO_S3_TO_TABLE

  • 而后点击“Create”按钮

3e447f55e5e91b05939ce986fc6181cb.png

定义该程序相关的参数如下:

  • Title:输入 ZDEMO_S3_TO_TABLE

  • Type:选择 Executable Program

  • Status:选择 Test Program

  • 最后点击 “Save”按钮

454f9ac1a0fdf65fbadf2cefa7bfae1e.png

保存该程序为 “Local Object”,如下图所示。

84b318fd44ec46703bbe6d6e569b0037.png

从下面的 link 拷贝该程序代码,而后粘贴该代码到该程序,如下所示。

程序代码 link

https://catalog.workshops.aws/abapsdk/en-US/lab02/lab02-01

4b109569acc13253cd6a6bb4c9d22903.png

选择“Save”“Active”按钮保存和激活该程序。

1cc5d3294cbad9d954b3ad85e39a05a3.png

点击 “Direct Processing” 按钮准备执行该程序。

e2700b4639cf6c6bec1b43474610020f.jpeg

3

测试结果

输入该 ABAP 程序的执行参数,而后运行该程序如下图所示。

388b081c5aa97d2088e8c908dca057cf.png

执行结果如下:

6a83fd39869356eaee9ad768f7ab541e.png

Movie_data.json 文件内容如下:

9480404e8c07b43bc79c9c8eee300211.png

查看 movie_data.json,其内容和该 ABAP 程序读取的结果一致。其结果充分验证了 Amazon SDK 通过 REST API 为 SAP 与亚马逊云科技各种服务提供了很好的集成,为 SAP 系统在亚马逊云科技进行各种业务场景的创新提供了便捷的接口和技术基座。

总结

本博文介绍演示了安装 Amazon SDK for SAP ABAP 需要做的部署准备,以及安装配置的步骤,最后构建了一个 ABAP 程序去读取 Amazon S3 存储桶里的一个文件的信息。

从本例可以看出,使用 Amazon SDK for SAP ABAP 可以和亚马逊云科技的 200 多个服务快速地进行集成,无需投入很多的工作即可完成,大大减少了开发的工作量。

可见,用好 Amazon SDK for SAP ABAP 可以帮助亚马逊云科技的客户带来更多的业务创新,更多的收益。

outside_default.png

参考文献

本博文从以下链接引用或参考了部分内容。

https://catalog.workshops.aws/abapsdk/en-US/lab02/lab02-01

https://aws.amazon.com/blogs/awsforsap/getting-started-with-aws-sdk-for-sap-abap/

https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/getting-started.html

本篇作者

007d1a72d64d59ed3a2b061dee20c22f.png

江伟

亚马逊云科技迁移团队 SAP  系统架构师,具有多年的 SAP 从业经历和丰富的项目经验,主要为客户提供 SAP 云上系统架构设计、SAP 上云迁移等咨询服务。

fa3776462a7791c63b734223f1135ebe.png

abdc25a51bc8f4975ecaa0cf648378c1.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

听说,点完下面4个按钮

就不会碰到bug了!

511d51aecb49464875d07c8122ec32fd.gif

点击阅读原文查看博客!获得更详细内容!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值