2

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

  1. 当 VM 具有与之关联的临时外部 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...

任何人都可以建议对此做出什么以及这是否是预期的行为?从没有分配外部 IP 的 GCE 虚拟机中读取存储桶中内容的正确方法是什么?

4

1 回答 1

3

如果您的虚拟机实例没有外部 IP 地址,那么它就可以访问云存储,因此它缺少的是为您的虚拟机实例的子网启用Google 私有访问

如服务专用访问选项的文档中所述:

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

您逐个子网启用 Private Google Access;这是 VPC 网络中子网的设置。要为私有 Google 访问启用子网并查看要求,请参阅配置私有 Google 访问

您只需:

  1. 转到控制台 -> VPC 网络
  2. 选择您的 VM 实例的子网(例如 default -> us-central1)
  3. 编辑并选择私人 Google 访问 -> 开启。然后保存。

还要确保您的 VM 可以访问 Cloud Storage API。

于 2019-03-04T15:07:42.780 回答