【问题标题】:How to read a text file from Google cloud platform using API如何使用 API 从谷歌云平台读取文本文件
【发布时间】:2020-03-16 11:56:51
【问题描述】:

我需要通过 GET 请求从谷歌云平台读取一个文本文件。我将使用 ajax 从 java 脚本函数进行调用并将其显示在我的仪表板中。我在 GCP 站点中找到了这个端点 获取https://storage.googleapis.com/storage/v1/b/example-bucket/o/foo%2f%3fbar 如何为此添加身份验证?这是正确的端点吗?

【问题讨论】:

    标签: javascript ajax api google-cloud-platform google-cloud-storage


    【解决方案1】:

    获取 GCS 对象数据的 API 记录在此:

    https://cloud.google.com/storage/docs/json_api/v1/objects/get

    这与您找到的 URL 示例相匹配。记下 alt=media 查询属性以获取对象的内容而不是其元数据。

    为了安全起见,请阅读以下访问控制选项:

    https://cloud.google.com/storage/docs/access-control/

    【讨论】:

      【解决方案2】:

      是的,这是一个非常好的端点(尽管对于该路径,您需要使用 alt 参数指定您想要文件的内容而不是元数据:https://storage.googleapis.com/storage/v1/b/bucket/o/foo%2fbar?alt=media

      您也可以使用更易读的路径https://storage.googleapis.com/bucket/foo

      可以通过多种方式管理身份验证。 Google Cloud API 最常使用 OAuth。跳了一会儿舞之后,您最终得到了一个临时访问密钥。访问密钥通常作为Authorization: Bearer some.lengthykey 模式的 HTTP 标头传递。

      如果您安装了gcloud 应用程序并使用它设置了您的帐户,您可以获取这样的密钥:gcloud auth print-access-token

      因此,在 Linux 命令提示符下,这是一个下载对象的快速示例:

      curl -H "Authorization: Bearer `gcloud auth print-access-token`" \ 
          https://storage.googleapis.com/bucket/object`.
      

      还有许多其他方案可以处理身份验证(签名 URL、服务帐户密钥、签名策略文档、应用程序默认凭据),具体取决于您的需要,但这是最直接的。

      【讨论】:

      • 谢谢!!实际上我的文本文件在存储桶下的多个对象(文件夹)中所以我必须在对象的位置给出整个路径吗?当我给出整个路径甚至只是给出文件名代替对象时,我得到 400 错误并且可以使用 OAuth 身份验证从邮递员执行一次吗?
      • 对于“/storage/v1”路径,请记住在对象名称中转义斜杠。对于其他路径,没有必要。另外,我对 Postman 不熟悉,但我看到有一些关于使用这种风格的 auth 的文章:medium.com/@pnatraj/google-cloud-api-with-postman-f4cf070e665f
      • 我尝试了 putty 中的 curl 命令,但下载的文件包含以下内容 NoSuchBucket 指定的存储桶不存在。错误>我的存储桶确实存在
      • 为了清楚起见,您从“storage.googleapis.com/nameOfYourBucketHere”开头的 URL 中获得了“NoSuchBucket”?
      • 抱歉,我给了错误的存储桶名称。这对我来说只是一个开始,实际上我正在尝试通过 GCP 库读取文件并在此链接 stackoverflow.com/questions/44121510/… 中看到您的解决方案。我得到 java.security.cert.CertificateException: No subject Alternative names Matching IP address in this line Blob blob = storage.get(BUCKET_NAME, OBJECT_NAME);你能帮我解决可能是什么问题吗?
      猜你喜欢
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 2018-01-10
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      相关资源
      最近更新 更多