将一个文件从PO上传到awss3而不受大小限制
我们在内部到云迁移中面临的众多挑战之一是集成方法的差异。尽管云上的解决方案在尽可能细化消息方面具有很大的灵活性,但内部部署解决方案必然会受到带宽、内存和消息大小等限制因素的影响。作为SAP PO开发的一个基本前提,返利模式,作为开发人员,返利怎么用,我们的目标是优化集成需求的许多因素,消息大小非常重要。
本文档旨在提供许多解决方案之一,我们可以适应将文件从PO传输到AWS s3存储桶,而不必担心文件的大小。AWS有一个api列表可供我们用来将文件上传到s3 bucket中。如上所述,AWS对接收到的文件的大小没有限制,但是这个问题在PO中非常突出。您可以在此处找到AWS API详细信息-https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html
亚马逊为我们提供了3个通过API上传文件到s3的选项
单块上传–https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html
多块上传–https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-streaming.html
多部分上传–https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
我们的文件大小限制为~900KB,这不是很有希望。亚马逊的单块上传是最好的选择。这在Rajesh PS的博客–
中有广泛的报道https://blogs.sap.com/2019/05/31/integration-amazon-simple-storage-service-amazon-s3-and-sap-ecc-v6.0-via-sap-pi-v7.5-using-aws-signature-v5-and-signing-algorithm-hmac-sha256/
对于PO来说,服务器,多块上传是不可行的,因为它需要一个HTTP连接,直到所有的块都打开已经被转移了。这给我们留下了多部分上传选项。我将试图涵盖我如何传输一个巨大的文件使用多部分上传。基本设计如下:
Pic 1:AWS Multipart Upload
下面是对s3api进行的3种调用中的每种调用的图示。
Pic 2:Initiate Multipart Upload
Pic 3:Upload Part
Pic 4:Complete Multipart Upload
IMPLEMENTATION IN PO
正如您可以看到的,以上所有通信都是异步同步的桥梁。我已经创建了4个ico–1个用于请求,路由到不同的api,3个不同的ico用于响应部分。所有3个响应ICO都将写入元数据文件。
请注意,我没有考虑文件中数据的任何数据转换、格式检查或映射。从技术上讲,除了完全的多部分上传外,它们都是传递场景,但我们必须使用映射来计算AWS API签名。
需要事先进行以下配置:
创建ESR对象
我们有两个不同的源系统和目标系统软件组件。所以这个场景是从软件组件1到软件组件2。此外,我们将使用一个公共结构将上传ID和etag等元数据内容写入元数据文件。
创建ID对象
我们将创建以下ID对象
1 ICO用于拆分文件1个ICO,用于发送异步同步桥的请求部分3个接收响应的ICO
单元测试
我只提供了框架和基本信息来获得这个要求。因为在请求部分有到多个接口的路由,数据呈现,我发现在这个场景中很难实现EOIO质量。因此,我必须引入600秒的强制延迟。这是根据上传文件的一部分所用的时间计算的,即6-7分钟。
另外,在写入完整的多部分上传后,元数据文件被存档。这是要上载的示例文件。
此大小的文件被拆分为多个大小略大于5 MB的文件。
元数据文件包含以下数据。这是由3个响应映射写入到文件中的。
结论
这样我们就不必担心任何大小的文件会上传到AWS s3中。但这里有几点需要考虑:
请随意提出任何改进/建议/反馈,因为这是由于时间紧迫。可以有更多的方法来优化这一点。
最后,我列出了我在开发这一需求时提到的链接/人员。
,云计算与大数据