首页 > 解决方案 > 如何从 Cloud Run 容器内的 Cloud Storage 下载文件?

问题描述

每当我的云运行容器启动时,我都想从云存储下载文件。我已修改 dockerfile 以添加以下命令:

CMD curl -L -o - application.yml "gs://mybucket/application.yml" ;

不幸的是,curl 不支持 gs: 协议,所以这就是我得到的错误。

curl: (6) Could not resolve host: application.yml
curl: (1) Protocol "gs" not supported or disabled in libcurl

我如何实现这一目标?
根据Cloud Run Docs,只要云运行和云存储保持在同一个谷歌云项目中,我就不需要担心身份验证。我在这里想念什么?这感觉像是一个非常基本的要求。

标签: linuxcurlgoogle-cloud-platformgoogle-cloud-storagegoogle-cloud-run

解决方案


您可以使用 curl 下载,这里有示例:

https://cloud.google.com/storage/docs/downloading-objects#download-object-xml https://cloud.google.com/storage/docs/downloading-objects#download-object-json

由于您碰巧“知道”您在 Cloud Run 实例中,因此您应该能够通过端点curl处的元数据服务获取访问令牌。http://metadata.google.internal更多细节在这里:

https://cloud.google.com/compute/docs/storing-retrieving-metadata#default

很可能您想要的密钥是service-accounts/default/token,但也许您需要default用您正在使用的任何服务帐户的电子邮件替换。

PS:您引用的 Cloud Run 文档说:

使用 Google Cloud 客户端库时,您无需在 Cloud Run(全托管)容器实例中手动提供凭据。(强调我的)


推荐阅读