如何从没有外部IP的GCE虚拟机的存储桶中读取数据?

Cya*_*yac 4 google-cloud-storage google-compute-engine gsutil google-cloud-platform google-cloud-iam

我正在尝试使用命令从 GCE VM 中读取存储桶中的文件gsutil cp。GCE VM 使用自定义存储帐户,该帐户具有存储桶中文件所需的 IAM 权限和访问策略。我的观察如下:

  1. 当虚拟机具有与其关联的临时外部 IP 时,该gsutil cp命令可以正常工作并且文件复制成功。
  2. 但是,如果没有分配外部 IP,则该gsutil cp命令不起作用。

在情况 2 中,该gsutil cp命令产生以下输出:

gsutil cp gs://<mybucket-name>/<myfile> .
INFO 0304 13:02:18.377339 retry_util.py] Retrying request, attempt #1...
INFO 0304 13:03:20.684459 retry_util.py] Retrying request, attempt #2...
INFO 0304 13:04:25.247341 retry_util.py] Retrying request, attempt #3...
INFO 0304 13:05:34.869920 retry_util.py] Retrying request, attempt #4...
INFO 0304 13:06:52.144510 retry_util.py] Retrying request, attempt #5...
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议从中得到什么以及这是否是预期的行为?从未分配外部 IP 的 GCE VM 中读取存储桶中的内容的正确方法是什么?

Tas*_*sZG 5

对于没有外部 IP 地址的 VM 实例来说,要访问 Cloud Storage,需要为 VM 实例的子网启用Google Private Access 。

如服务的私有访问选项文档中所述:

仅具有内部 IP 地址(无外部 IP 地址)的虚拟机实例可以使用专用 Google 访问权限。他们可以访问 Google API 和服务的外部 IP 地址。

您逐个子网启用专用 Google 访问权限;它是 VPC 网络中子网的设置。要为专用 Google 访问启用子网并查看要求,请参阅配置专用 Google 访问

您只需:

  1. 转到控制台 -> VPC 网络
  2. 选择您的虚拟机实例的子网(例如默认 -> us-central1)
  3. 编辑并选择“私人 Google 访问”->“打开”。然后保存。

另请确保您的虚拟机有权访问 Cloud Storage API。