亚马逊 S3:SDK 还是 REST API

17

我需要使用Amazon S3在Java中以编程方式上传一些静态内容。

当我开始阅读时,发现有两种方法可以实现:通过其SDK(REST API的包装器)或使用REST API。从Amazon的AWS网站上找到了这个:

"您可以使用REST API或AWS SDK向Amazon S3发送请求"。

想要了解哪种方法更好。我认为使用SDK肯定会使编程更容易,但是使用SDK与直接使用REST API的优缺点是什么。

由于某些原因,我发现直接使用REST API比SDK更困难。 我能够使用SDK完成基本操作-创建存储桶、列出对象、获取对象、使缓存失效等。 但是在编写REST API代码时遇到了一些困难-特别是生成签名。

如果最终使用SDK,这可能不重要,但我仍然想知道如何使用REST API来实现它。 如果有人有一些关于在Java中添加对象、获取对象、获取列表等方面的良好代码示例,那将非常有帮助。

谢谢!


1
选择使用SDK。我正在使用C++(它没有SDK),我甚至采用了嵌入式Python和Python SDK,而不是使用REST API。毕竟,重复造轮子没有任何意义,浪费时间去实现、调试和维护已经存在的东西。此外,亚马逊的REST API文档不够完善,常常不直观。 - Dave
我认为能够直接使用一点点REST API非常有价值,这样你就可以理解发生了什么。但是对于真正的工作,我会使用SDK。 - Charles Engelke
谢谢大家的建议。我会选择SDK。 - user1270392
2个回答

17

如果你的语言中已经有SDK,那就使用它吧;从项目角度来看,这是一个不需要动脑筋的选择。SDK是他们已经完成并为你测试过的额外工程,而且不会增加任何费用。换句话说,SDK已经将HTTP REST API转换成了应用程序领域/语言。

将REST API视为AWS必须支持的最低公共分母,而SDK(很可能)则在此基础上实现了REST API。在某些情况下(例如:某些Windows Azure SDK),SDK实际上更有效率,因为它们切换到基于TCP的通信通道,而不是REST(它是TCP 加上 HTTP),这消除了一些HTTP开销。

除非你的全部目标都是为了花费额外时间(开发+测试)来学习底层REST API,否则我会选择SDK。


感谢Sid的回答! - user1270392

5

在我看来,API为您提供了自由度,可以做任何想做的事情。如果您计划将来更改云服务,API也会有所帮助。但是,如果使用SDK方法,您将不得不重新编码,因为您的应用程序需要进行更改,而SDK已经嵌入到您的应用程序中。我知道回复有点晚了,但这可能会对某些人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接