如何从没有外部IP的GCE VM中读取存储分区?

时间:2019-03-04 13:53:35

标签: google-cloud-platform google-cloud-storage google-compute-engine gsutil google-cloud-iam

我正在尝试使用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 VM中读取存储桶中内容的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

没有外部IP地址的VM实例缺少什么以使其可以访问Cloud Storage,就是为VM实例的子网启用 Google私有访问

Private Access Options for Services文档中所述:

  

仅具有内部IP地址(无外部IP地址)的VM实例可以使用私有Google Access。它们可以访问Google API和服务的外部IP地址。

     

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

您只需要:

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

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