Connector for Cloud Scheduler

Workflows connector that defines the built-in function used to access Cloud Scheduler within a workflow.

Explore further

For detailed documentation that includes this code sample, see the following:

Code sample

YAML

# This workflow demonstrates how to use the Cloud Scheduler connector.
# This workflow creates a Pub/Sub topic and a subscription to the topic which is used by Cloud Scheduler
# as a notification method. The workflow then creates a scheduler job, waits for the job to finish, and pulls the notification from
# the subscription. It then deletes all resources.
# Expected successful output: "SUCCESS"

- init:
    assign:
      - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
      - location_id: "us-central1"
      - job_id: "example-job-id"
      - topic: "example-topic-id"  # Pubsub topic used by Cloud Scheduler as a notification target.
      - subscription: "example-subscription-id"
- create_topic:
    call: googleapis.pubsub.v1.projects.topics.create
    args:
      name: ${"projects/" + project_id + "/topics/" + topic}
- create_subscription_to_topic:
    call: googleapis.pubsub.v1.projects.subscriptions.create
    args:
      name: ${"projects/" + project_id + "/subscriptions/" + subscription}
      body:
        name: ${"projects/" + project_id + "/subscriptions/" + subscription}
        topic: ${"projects/" + project_id + "/topics/" + topic}
- create_job:
    call: googleapis.cloudscheduler.v1.projects.locations.jobs.create
    args:
      parent: ${"projects/" + project_id + "/locations/" + location_id}
      body:
        name: ${"projects/" + project_id + "/locations/" + location_id + "/jobs/" + job_id}
        description: "An example job created by connector_cloudscheduler.yaml workflow to test the Cloud Scheduler connector."
        schedule: "* * * * *"  # Run job every minute, see https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules.
        pubsubTarget:
          topicName: ${"projects/" + project_id + "/topics/" + topic}
          attributes:
            job: "finished!"
- sleep:
    call: sys.sleep
    args:
      seconds: 100
- pull_message:
    call: googleapis.pubsub.v1.projects.subscriptions.pull
    args:
      subscription: ${"projects/" + project_id + "/subscriptions/" + subscription}
      body:
        maxMessages: 1
- delete_job:
    call: googleapis.cloudscheduler.v1.projects.locations.jobs.delete
    args:
      name: ${"projects/" + project_id + "/locations/" + location_id + "/jobs/" + job_id}
- delete_subscription:
    call: googleapis.pubsub.v1.projects.subscriptions.delete
    args:
      subscription: ${"projects/" + project_id + "/subscriptions/" + subscription}
- delete_topic:
    call: googleapis.pubsub.v1.projects.topics.delete
    args:
      topic: ${"projects/" + project_id + "/topics/" + topic}
- the_end:
    return: "SUCCESS"

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.