如何使用 Cloud Scheduler 启动 VM 实例

How to start a VM instance using Cloud Scheduler

背景和目标

我在 GCP 上有一个 Debian/Linux VM,我每天早上手动启动它,在 运行 秒后,它会使用 Linux 命令自行关闭。我想使用 Cloud Scheduler 自动启动 VM。在 has several answers and I am interested in pursuing the answer ()中提出的问题是@nikelone提出的,因为它看起来很简单,而且@Damien@RayFoss也认为它很容易。我是这些问题的新手,无法完全理解他们的回答。所以这个 post 是为了让像我这样的人得到更明确的答案。

我试过的

我已经转到 https://cloud.google.com/compute/docs/reference/rest/v1/instances/start (call this page A) 并尝试了 API 并在我单击执行按钮时能够成功启动我已经停止的 VM .我认为这意味着我的条目很好,可以与 Cloud Scheduler 等适当的软件结合使用,以按预定义的时间表执行启动功能。但问题是我不知道或不明白如何从这里开始。我在下面给出我的问题。

我的问题

  1. page A 上,最后三段标题为授权范围、IAM 权限和示例,其中 none 说明了有关用户应该做什么的任何具体内容。假设它们与 Cloud Scheduler 无关,但与实现相同目标的其他方法有关,这是否正确?如果这不正确,那么我的下一个问题是我应该做什么才能遵循这三段中的陈述?

  2. 假设问题 1 的答案是“是”,这意味着我现在可以开始使用 Cloud Scheduler 进行安排,接下来我查看了 quickstart 的 [=12] =] 在 https://cloud.google.com/scheduler/docs/quickstart (call this page B)。待办事项列表非常多,包括安装 Cloud SDK、运行在控制台上执行许多命令、启用某些功能、设置 Pub/Sub、创建作业、运行作业并在 Pub/Sub 中验证结果。这看起来像是一组令人生畏的任务,我不明白为什么必须跳过这些障碍才能使用之前只需敲几下键盘就已经实现的东西。那么这些步骤都是必要的吗?或者有什么方法可以直接使用Cloud Scheduler而不需要经过那么多中间步骤吗?

  3. 现在假设问题 2 的答案是我执行page B中所述的所有步骤。如果我 运行 在完成 B 页上列出的任务时遇到了一些问题,我的 VM 可能会无可挽回地搞砸。有没有一种方法可以使用 Cloud Platform 或其组件将我的 VM 重置为今天的当前状态,这种方法运行良好?我真的不想得到比现在更糟糕的结果。

回答您的问题:

  1. 您需要 Auth Scopes 和 IAM 权限才能调用 Compute Engine API 方法,例如 instance.start 和 instance.stop。您需要为您的工作设置正确的范围和正确的 IAM 权限,否则它将失败。它们确实与您有兴趣调用的方法相关,因此您必须牢记它们。您在示例中看到的是使用不同编程语言调用 {API} 的方法,因此您无需关注它们,因为您将通过 Cloud Console 创建作业。要进一步解决这部分问题,请参阅我在下面包含的完整步骤。

  2. 您尝试遵循的答案使用 HTTP 目标,而您 linked 的快速入门使用 Pub/Sub,它们彼此不同,因为它们具有单独的用例。此 link 显示了如何使用 HTTP 目标创建调度程序作业的正确说明。您可以直接从 Cloud Console 或单行 gcloud 命令创建此类作业。如果您的配置不正确,触发器将不会执行端点 URL,您将看到必须修复的错误。

  3. 已在回答 #2 中解决

基本上,您只需按照发送给 link 的说明进行操作即可。但是,我将 post 连同我的解释一起放在这里:

  1. 前往 https://cloud.google.com/scheduler。单击转到控制台。单击创建作业。创建调度程序作业时填写必填字段(带有红色星号的字段)。
  2. Select HTTP 作为目标类型。
  3. 输入这个作为你的URL(修改大写单词)。
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_ZONE/instances/INSTANCE_NAME/start
  1. 选择 HTTP 方法 POST。
  2. 点击显示更多并选择 Auth Header“添加 OAuth 令牌”
  3. 输入您的服务帐号。这用于在您的调度程序作业调用 Compute API 时传递 OAuth 令牌。 确保您将使用的服务帐户具有"Compute Instance Admin" role because this role contains the permissions to start/stop your instance. See this instruction如何授予服务帐户访问权限。如果您不确定要使用哪个服务帐户,请随时使用 Compute Engine 默认服务帐户。
  4. 在范围上添加:
https://www.googleapis.com/auth/cloud-platform

这个范围的描述:

See, edit, configure, and delete your Google Cloud Platform data.

  1. 重复停止实例作业并更改 #3 中的 URL。