混淆各种客户端库和api将App Engine与云存储集成

时间:2016-08-22 22:00:27

标签: google-app-engine google-cloud-storage

对谷歌云平台不熟悉,我尝试使用客户端库/ apis了解谷歌云存储的应用引擎集成选项。

但是我现在对于那里的客户端库选项的多种选择更加困惑。

我尝试寻找答案,但我还是有些疑惑。所以我在下面发布了具体的问题/方案。此外,由于我看到的论坛很少,所以我希望确保根据Google云端平台当前支持的功能获得答案,因为它们有时会不断更改/升级。

请你帮我解释下面的疑问。

提前道歉,因为他们可能是非常基本的问题,因为我对此不熟悉。

Google Cloud Storage CLient Library与Google Cloud存储JSON客户端库相同吗?如果是,云存储客户端库和JSON客户端库是否仅限于云存储的JSON api?或者云存储客户端库也支持XML apis吗?

让我们说例如我想从应用引擎执行可恢复上传到云存储。它是否支持使用Google Cloud存储客户端库的xml和json api?

如果没有,是否有其他客户端库支持xml和json apis以便从应用引擎上进行可恢复上传?

其次,我在Python云存储中看到了一个示例,https://cloud.google.com/storage/docs/xml-api/gspythonlibrary

在这个例子中,他们使用了boto库和google-cloud-oauth2-boto-plug。

但是我还在appengine docs中读到Python和Java都直接支持oauth。那么为什么我们需要boto库和cloud-oauth2-boto-plugin?是因为他们使用xml apis直接集成python而不使用云存储客户端库?如果他们使用云存储客户端库,那么python将不需要安装boto库和cloud-oauth2-boto-plugin,因为它默认支持oauth?

感谢。

基兰

1 个答案:

答案 0 :(得分:1)

Google云端存储有两种公共API,即XML API和JSON API。 XML API看起来很像亚马逊的S3 API,并且易于使用curl和wget等命令行实用程序来下载和上传数据。 JSON API与其他Google Cloud API类似,因此如果您熟悉这些API,JSON API将如您所愿。

有各种各样的客户端库:

Google API客户端库

Google API Client Libraries是一组用于以各种编程语言访问各种Google API的库。这些都使用了GCS的JSON API。

Gcloud- *(< ----使用这些)

还有一组名称如gcloud- *的库,例如gcloud-javagcloud-nodegcloud-python等。这些库是下一代客户端库并删除大量的样板代码。他们非常好,他们也使用GCS的JSON API。

Boto图书馆

接下来,有boto库。 boto库是第三方Python库,主要用于支持Amazon的AWS实用程序。除了支持AWS的S3之外,它还通过XML API支持GCS。请注意,还有一个不支持GCS的Boto3库。由于boto图书馆并非针对Google,并且不了解Google的身份验证机制,因此有一个名为google-cloud-oauth2-boto-plug的boto身份验证插件可以提供该功能。

GCS有一个名为" gsutil"的命令行实用程序。它是从命令行与GCS交互的绝佳工具。它默认通过JSON API与GCS对话,但可以将其配置为使用XML API,并且在使用XML API时,它会使用boto库来执行此操作。

GCS App Engine客户端

除此之外,还有额外的应用引擎GCS client libraries for Java and Python。这些库使用XML API。它们优于gcloud-java和gcloud-python的主要优点是,当使用app引擎的本地开发服务器进行开发时,它们提供了GCS的基本本地伪造,并且它们可以轻松保存其上载/下载状态以便稍后恢复。如果这对您不重要,我建议只使用gcloud-python。

关于Auth的注释

在Google云中运行代码(例如在GCE或App Engine上)时,Google可以非常轻松地使用OAuth作为服务帐户进行身份验证。 gcloud- *库利用了这一点。如果您在App Engine中使用它们,则会发生身份验证。您可以在gcloud-python auth guide

中详细了解相关内容