GCE元数据 – 获取实例名称

我试图编写一个脚本,允许一个实例在完成任务时自行终止。 到目前为止,这是我所提出的:

  1. 查询元数据以获取实例主机名和区域
  2. 假设主机名与实例名称相同(这是否安全?)
  3. 在主机名上执行一个正则expression式去除域(这是安全的吗?)
  4. 调用gcloud计算实例delete [name] –zone [zone] –quiet

这一切似乎有点脆弱,我想知道是否有更好的解决scheme。 特别是我知道我可以查询实例ID,但似乎所有的gcloud命令期望一个名称不是一个ID。 它是否正确?

对于Linux VM实例,请尝试使用以下脚本:

VMNAME=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/hostname | cut -d. -f1) ZONE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/zone | cut -d/ -f4) gcloud compute instances delete $VMNAME --zone $ZONE --quiet 

您还需要确保VM实例的服务帐户是具有编辑权限的项目成员。