Go语言 用API代替SDK可以吗?

6mw9ycah  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(105)

我喜欢快速的代码执行(因为这个原因,我从Python切换到了Go),我不喜欢依赖。Amazon建议使用SDK进行更简单的身份验证。(但在Lambda中,我可以从环境变量中的IAM获取令牌),并且由于内置在SDK中,(我认为只有几行代码)。是的,使用SDK编写代码更快,但是使用纯HTTP API而不是SDK有什么额外的注意事项吗?我是不是对毫秒太着迷了?这样的优化值得吗?

62lalag4

62lalag41#

您使用AWS执行的任何操作都是API调用的结果,无论是通过CLI、Web控制台还是SDK执行。
SDK使与这些API的交互变得更容易。虽然您可能能够为某些调用提出一些小的改进,但总体而言,您将花费大量时间来做这件事,但收效甚微。

mzillmmw

mzillmmw2#

我认为对性能的关注掩盖了真实的权衡。
考虑到必须有人维护您的代码--如果您使用API,测试区域很小,但AWS API可能会更改或被弃用;如果您使用SDK,下一个程序员将插入新SDK版本,并希望它工作,但如果它不工作,他们将被SDK的重量所拖累,例如,存在与AWS SDK的已知钻石依赖性不兼容性(app → dep → subdep@v2; app → SDK → subdep@v1)。
编辑:众所周知,AWS将其API保留了十年,有时甚至二十年。SDK更新得更频繁。其他一些供应商更新API的节奏要快得多。然后,其他一些供应商使用SDK作为填补现有API漏洞的方法。简而言之,最佳选择取决于目标服务。
同样,假设有人需要对此应用进行安全审查,或者引入SDK尚未涵盖的内容(让我们想象一下将会计组从调用者角色传播到底层存储)。
我不认为有一个明确的答案。
以下是我的建议

  • 保持一致--API或SDK(在给定应用程序内,针对给定服务)
  • 考虑更大的画面(你打算写多少应用程序?)
  • 别害怕以后换另一种方法

我不得不在过去**决定使用类似的东西,使用Docker(更好的API和SDK/libs)。
为了测试,我们最终使用了Docker Python绑定的beta版本:prod版本还不够,绑定(您的SDK)总体上非常好和清晰。
对于日志抓取,我使用了HTTP调用(你的API),“因为性能”,实际上使用API与SDK的心理负荷比较,并且因为绑定(SDK)不支持Apricio。

相关问题