linux - 如何从 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,只要云运行和云存储保持在同一个谷歌云项目中,我就不需要担心身份验证。我在这里想念什么?这感觉像是一个非常基本的要求。
解决方案
您可以使用 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(全托管)容器实例中手动提供凭据。(强调我的)
推荐阅读
- javascript - 谷歌地图:自定义叠加图像
- laravel - Laravel Passport:请求 API 时如何验证客户端 IP
- c# - 从数据库更新模型时出错(EntityFramework Database-First)
- c# - 序列化神经网络
- c++ - 我怎样才能检测到一个构造函数真的是 constexpr,所以我可以利用静态初始化?
- firebase - AuthenticationError 使用 Firebase Cloud Messaging 发送通知
- python-3.x - Django:ValueError at/“视图 To_do_list_app.views.home 没有返回 HttpResponse 对象。它返回了 None 。”
- ruby-on-rails - Rails 将单个记录加入范围
- c++ - 编译器:如何检查用户函数是否正确返回?
- python - Python、pygame、碰撞和字典