Instance schedules let you start and stop virtual machine (VM) instances automatically. To use instance schedules, create a resource policy detailing the start and stop behavior, and then attach the policy to one or more VM instances.
Using instance schedules to automate deployment of your VM instances can help you optimize costs and manage VM instances more efficiently. You can use instance schedules for both recurring and one-off workloads. For example, use instance schedules to only run VM instances during working hours or to provide capacity for a onetime event.
To learn about other options for automatically scheduling VMs, see the following pages:
Scale based on schedules: If you run your workload on a managed instance group (MIG), you can use scaling schedules to schedule the required number of virtual machine (VM) instances for recurring or onetime events.
Limit the run time of a VM: If you don't want to create resource policies, you can directly configure a VM to be automatically stopped or deleted when it reaches a specific time or duration.
Select the tab for how you plan to use the samples on this page:
ConsoleWhen you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloudInstall the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Note: If you installed the gcloud CLI previously, make sure you have the latest version by runninggcloud components update
.To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
To use instance schedules, you need to grant the required Identity and Access Management (IAM) roles to the following principals:
The Compute Engine Service Agent for your project. This is needed for the instance schedule to run on a VM.
If you revoke these permissions after creating instance schedules, your instance schedules might stop working without notice. To verify if your instance schedules run successfully, you should regularly check the audit logs.
The user account or service account that creates, manages, or uses the instance schedule.
To ensure that the Compute Engine Service Agent has the necessary permissions to run instance schedule, ask your administrator to grant the Compute Engine Service Agent the Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1
) IAM role on the project.
For more information about granting roles, see
Manage access to projects, folders, and organizations.
This predefined role contains the permissions required to run instance schedule. To see the exact permissions that are required, expand the Required permissions section:
Required permissionsThe following permissions are required to run instance schedule:
compute.instances.start
compute.instances.stop
Your administrator might also be able to give the Compute Engine Service Agent these permissions with custom roles or other predefined roles.
User or service account required rolesTo ensure that you or your service account has the necessary permissions to create and manage instance schedules, ask your administrator to grant you or your service account the Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1
) IAM role on your project or organization.
For more information about granting roles, see
Manage access to projects, folders, and organizations.
This predefined role contains the permissions required to create and manage instance schedules. To see the exact permissions that are required, expand the Required permissions section:
Required permissionsThe following permissions are required to create and manage instance schedules:
compute.resourcePolicies.create
compute.resourcePolicies.list
compute.resourcePolicies.get
compute.resourcePolicies.delete
compute.instances.create
compute.resourcePolicies.use
compute.instances.addResourcePolicies
compute.resourcePolicies.use
compute.instances.addResourcePolicies
compute.resourcePolicies.use
compute.instances.removeResourcePolicies
Your administrator might also be able to give you or your service account these permissions with custom roles or other predefined roles.
LimitationsCreate, list, describe, and delete instance schedules using the Google Cloud console, Google Cloud CLI, or Compute Engine API.
Creating an instance scheduleCreate an instance schedule that describes when your VM instances should automatically start or stop. The instance schedule that you create is a resource policy, which you can use by attaching or removing it from VM instances.
ConsoleIn the Google Cloud console, go to the VM instances page.
Click the Instance schedules tab at the top of the page.
Note: If you don't see this option, create a VM instance first.Click date_range Create schedule. The Create a schedule pane opens.
Enter a Name.
In the Region drop-down menu, select the location for this instance schedule.
Define when the instance schedule starts and stops any attached VM instances. If you need VM instances to start or stop at a specific time, schedule the operation 15 minutes earlier than needed. Make sure each start and stop operation are at least 15 minutes apart.
Use either the default Start time, Stop time, and Frequency fields or, if you want to configure a more complex schedule, use cron expressions.
Default fields:
Cron expressions:
In the Time zone drop-down menu, select the time zone for the Start time and Stop time.
Optional: In the Initiate date field, type or click date_range to select the date and time when you want this instance schedule to begin. If omitted, the schedule is effective immediately.
Optional: In the End date field, type or click date_range to select the date and time when you want this instance schedule to end. If omitted, the schedule is effective indefinitely.
Click Submit.
To create an instance schedule using the gcloud CLI, use the gcloud compute resource-policies create instance-schedule
command:
gcloud compute resource-policies create instance-schedule SCHEDULE_NAME \ --region=REGION \ [--vm-start-schedule='START-OPERATION_SCHEDULE'] \ [--vm-stop-schedule='STOP-OPERATION_SCHEDULE'] \ [--timezone=TIME_ZONE] \ [--initiation-date=INITIATION_DATE] \ [--end-date=END_DATE]
Replace the following:
UTC
is used. For more information, see time zone.To create an instance schedule using the Compute Engine API, make a request using the resourcePolicies.insert
method:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies { "name": "SCHEDULE_NAME", "instanceSchedulePolicy": { "vmStartSchedule": { "schedule": "START-OPERATION_SCHEDULE" }, "vmStopSchedule": { "schedule": "STOP-OPERATION_SCHEDULE" }, "timeZone": "TIME_ZONE", "startTime":"INITIATION_DATE", "expirationTime":"END_DATE" } }
Replace the following:
Each instance schedule has the following settings:
Schedules that describe when the instance schedule starts and stops any attached VM instances. An instance schedule can have one of these schedules or both.
When creating instance schedules using the Google Cloud console, you can either select a Start time, Stop time, and Frequency or format each schedule as a cron expression. When creating instance schedules using the gcloud CLI or Compute Engine API, you must format each schedule as a cron expression.
The following table defines the fields of a cron expression and the supported values for each field.
Minute Hour Day of the month Month Day of the week 0-59 0-23 1-31where 29-31 are only effective for relevant months
1-12 0-6 orSUN-SAT
(Sunday-Saturday)
where 0=SUN
, 1=MON
, … 6=SAT
*
any If the day-of-the-month field, month field, and day-of-the-week field are all set to *
, the schedule repeats every day. -
range If the day-of-the-week field is set to MON-FRI
(or 1-5
), the schedule repeats every week Monday through Friday. ,
list If the month field is set to 1-6,8-12
, the schedule repeats every month except July.
When you write a cron expression, consider the following:
*
), the schedule uses the union of these values, not the intersection. For example, the schedule 0 8 1 * MON
starts at 8 AM on every Monday and on the first day of every month. That schedule does not start at 8 AM only on Mondays that are also the first day of the month.The location-based IANA time zone for the start-operation schedule and stop-operation schedule. The IANA time zone database defines a list of available values. This time zone is used as reference for only the start-operation and stop-operation schedules—it is not used for the initiation date and end date. The time zone is optional when using the gcloud CLI or Compute Engine API. If omitted, the default value UTC
is used.
Some IANA time zones observe daylight saving time (DST), which can impact your instance schedules. The details of DST—such as when DST starts and ends, as well as how much time is skipped and repeated—vary according to each time zone.
Note: When DST begins and ends, instance schedules have the following behavior:
The timeframe that the instance schedule is effective. Both values are optional. Operations repeat annually unless you specify these values to limit the schedule to a single year.
When creating instance schedules using the Google Cloud console, select a date, time, and time zone using the Initiate date and End date fields.
When creating instance schedules using the gcloud CLI or Compute Engine API, these values are formatted as an RFC 3339 timestamp:
YYYY-MM-DDTHH:MM:SSOFFSET
Replace the following:
-08:00
. Alternatively, to use no offset (the UTC time zone), write Z
.List instances schedules to view all existing instance schedules for your project.
ConsoleIn the Google Cloud console, go to the VM instances page.
Click the Instance schedules tab at the top of the page. This displays a list of all the instance schedules for this project.
To view a list of all of your resource policies, including instance schedules, using the gcloud CLI, use the gcloud compute resource-policies list
command. Optionally, to restrict the results to a specific region, include the --filter
flag.
gcloud compute resource-policies list \ [--filter="region:(REGION)"]
Replace the following:
To view a list of all your resource policies, including instance schedules, in a specific region using the Compute Engine API, make a request using the resourcePolicies.list
method:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies
Replace the following:
Describe an instance schedule to view its description, timing, operations, and a list of all of the VM instances that it is attached to.
ConsoleIn the Google Cloud console, go to the VM instances page.
Click the Instance schedules tab at the top of the page. This displays a list of all the instance schedules for this project.
Click the name of the instance schedule that you want to describe. This opens the Instance schedules details page for that schedule.
To describe an instance schedule using the gcloud CLI, use the gcloud compute resource-policies describe
command:
gcloud compute resource-policies describe SCHEDULE_NAME \ --region=REGION
Replace the following:
The output is similar to the following:
... description: Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM. ... instanceSchedulePolicy: expirationTime: '2022-12-31T23:59:59Z' startTime: '2022-01-01T00:00:00Z' timeZone: UTC vmStartSchedule: schedule: 0 8 * * MON-FRI vmStopSchedule: schedule: 0 17 * * MON-FRI ... name: example-instance-schedule region: https://www.googleapis.com/compute/v1/projects/example-project/regions/us-west1 resourceStatus: instanceSchedulePolicy: nextRunStartTime: '2022-01-03T08:00:00Z' ... status: READYREST
To describe an instance schedule using the Compute Engine API, make a request using the resourcePolicies.get
method:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME
Replace the following:
The output is similar to the following:
{ ... "description": "Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM.", "name": "example-instance-schedule", "instanceSchedulePolicy": { "vmStartSchedule": { "schedule": "0 8 * * MON-FRI" }, "vmStopSchedule": { "schedule": "0 17 * * MON-FRI" }, "timeZone": "UTC", "startTime": "2022-01-01T00:00:00Z", "expirationTime": "2022-12-31T23:59:59Z" }, "status": "READY", "resourceStatus": { "instanceSchedulePolicy": { "nextRunStartTime": "2022-01-03T08:00:00Z" } }, ... }Deleting an instance schedule
Delete an instance schedule when you no longer need it by removing any attached VM instances and deleting the resource policy.
ConsoleIn the Google Cloud console, go to the VM instances page.
Click the Instance schedules tab at the top of the page. This displays a list of all the instance schedules for this project.
Select the checkboxes for the instance schedules that you want to delete.
Click delete Delete at the top of the page. This opens a new dialog to confirm this action.
In the dialog, click Delete.
To delete an instance schedule using the gcloud CLI, use the gcloud compute resource-policies delete
command:
gcloud compute resource-policies delete SCHEDULE_NAME \ --region=REGION
Replace the following:
To delete an instance schedule using the Compute Engine API, make a request using the resourcePolicies.delete
method:
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME
Replace the following:
To use an instance schedule, attach it to one or more VM instances that you want to follow that schedule. You can attach an instance schedule to an existing VM instance or while creating a new VM instance. To stop a VM instance from following an attached instance schedule, remove the schedule from that VM instance.
Attaching an instance schedule while creating a new VM instanceTo attach an instance schedule to a new VM instance, you must create the VM instance in the same region as the instance schedule that you use. Learn more about creating a VM instance.
ConsoleYou cannot attach an instance schedule while creating an instance using the Google Cloud console. To use the Google Cloud console to attach an instance schedule to a new VM instance, create a VM instance, and then attach a schedule to the VM instance.
gcloudTo attach an instance schedule to a VM instance using the gcloud CLI, use the gcloud compute instances create
command with the --resource-policies
flag. For example, to create a VM instance from a public image with an attached instance schedule, use the following command:
gcloud compute instances create VM_NAME \ --resource-policies=SCHEDULE_NAME \ --zone=ZONE \ [--image IMAGE | --image-family IMAGE_FAMILY] \ [--image-project IMAGE_PROJECT]
Replace the following:
--image debian-10-buster-v20200309
.--image-family debian-10
, Compute Engine creates a VM from the latest version of the OS image in the Debian 10 image family.To attach an instance schedule to a VM instance using the Compute Engine API, make a request using instances.insert
method and include the resourcePolicies
attribute. For example, to create a VM instance from a public image with an attached instance schedule, make the following request:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ], "resourcePolicies": [ "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME" ] }
Replace the following:
family/debian-10
as the image family, specify debian-cloud
as the image project."sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
, Compute Engine creates a VM from the latest version of the OS image in the Debian 10 image family.You can verify if the instance schedule runs successfully by checking the audit logs for the instance schedule resource policy and the attached VM instance. You might need to wait for up to 15 minutes after the scheduled time for each operation.
Attaching an instance schedule to an existing VM instanceYou can attach an instance schedule to any existing VM instance that is located in the same region as the instance schedule.
ConsoleIn the Google Cloud console, go to the VM instances page.
Click the Instance schedules tab at the top of the page. This displays a list of all the instance schedules for this project.
Click the name of the instance schedule that you want to attach. The Instance schedule details page opens.
Click Add instances to schedule. The Add instances to schedule pane opens.
Select the checkbox for each VM instance that you want to attach this schedule to.
Click Add.
To attach an instance schedule to a VM instance using the gcloud CLI, use the gcloud compute instances add-resource-policies
command:
gcloud compute instances add-resource-policies VM_NAME \ --resource-policies=SCHEDULE_NAME \ --zone=ZONE
Replace the following:
To attach an instance schedule to a VM instance using the Compute Engine API, make a request using the instances.addResourcePolicies
method:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/addResourcePolicies { "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME" }
Replace the following:
You can verify if the instance schedule runs successfully by checking the audit logs for the instance schedule resource policy and the attached VM instance. You might need to wait for up to 15 minutes after the scheduled time for each operation.
Removing an instance schedule from a VM instanceTo stop a VM instance from following an instance schedule, remove the instance schedule from the VM instance.
ConsoleIn the Google Cloud console, go to the VM instances page.
Click the Instance schedules tab at the top of the page. A list of all the instance schedules for this project is displayed.
Click the name of the instance schedule that you want remove. The Instance schedule details page opens.
Under the Attached Instances section, select the checkbox for each VM instance that you want to remove from this schedule.
Click delete Remove instances from schedule. This opens a new dialog to confirm this action.
In the dialog, click Remove.
To remove an instance schedule from a VM instance using the gcloud CLI, use the gcloud compute instances remove-resource-policies
command:
gcloud compute instances remove-resource-policies VM_NAME \ --resource-policies=SCHEDULE_NAME \ --zone=ZONE
Replace the following:
To remove an instance schedule from a VM instance using the Compute Engine API, make a request using the instances.removeResourcePolicies
method:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/removeResourcePolicies { "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME" }
Replace the following:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4