Connector for Cloud Functions

Workflows connector that defines the built-in function used to access Cloud Functions 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 Functions connector: 
 # Create a function using source code stored as a zip archive in a 
 # Cloud Storage bucket (gs://BUCKET_NAME/cloud-function-source.zip) 
 # Source code must be a properly structured Cloud Function 
 # Expected output: "SUCCESS" 
 main 
 : 
  
 params 
 : 
  
 [] 
  
 steps 
 : 
  
 - 
  
 init 
 : 
  
 assign 
 : 
  
 - 
  
 project 
 : 
  
 ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} 
  
 - 
  
 location 
 : 
  
 "us-central1" 
  
 - 
  
 name 
 : 
  
 "example-function" 
  
 - 
  
 bucket 
 : 
  
 "BUCKET_NAME" 
  
 # replace BUCKET_NAME placeholder 
  
 - 
  
 sourceArchiveUrl 
 : 
  
 ${"gs://" + bucket + "/cloud-function-source.zip"} 
  
 - 
  
 service_account 
 : 
  
 ${project + "@appspot.gserviceaccount.com"} 
  
 # App Engine default service account 
  
 - 
  
 create_function 
 : 
  
 call 
 : 
  
 googleapis.cloudfunctions.v1.projects.locations.functions.create 
  
 args 
 : 
  
 location 
 : 
  
 ${"projects/" + project + "/locations/" + location} 
  
 body 
 : 
  
 name 
 : 
  
 ${"projects/" + project + "/locations/" + location + "/functions/" + name} 
  
 description 
 : 
  
 "Cloud 
  
 Function 
  
 for 
  
 Workflows 
  
 connector 
  
 testing" 
  
 entryPoint 
 : 
  
 "helloWorld" 
  
 runtime 
 : 
  
 "nodejs10" 
  
 serviceAccountEmail 
 : 
  
 ${service_account} 
  
 sourceArchiveUrl 
 : 
  
 ${sourceArchiveUrl} 
  
 httpsTrigger 
 : 
  
 securityLevel 
 : 
  
 "SECURE_OPTIONAL" 
  
 - 
  
 get_function 
 : 
  
 call 
 : 
  
 googleapis.cloudfunctions.v1.projects.locations.functions.get 
  
 args 
 : 
  
 name 
 : 
  
 ${"projects/" + project + "/locations/" + location + "/functions/" + name} 
  
 result 
 : 
  
 function 
  
 - 
  
 grant_permission_to_all 
 : 
  
 call 
 : 
  
 googleapis.cloudfunctions.v1.projects.locations.functions.setIamPolicy 
  
 args 
 : 
  
 resource 
 : 
  
 ${"projects/" + project + "/locations/" + location + "/functions/" + name} 
  
 body 
 : 
  
 policy 
 : 
  
 bindings 
 : 
  
 - 
  
 members 
 : 
  
 [ 
 "allUsers" 
 ] 
  
 role 
 : 
  
 "roles/cloudfunctions.invoker" 
  
 - 
  
 call_function 
 : 
  
 call 
 : 
  
 http.get 
  
 args 
 : 
  
 url 
 : 
  
 ${function.httpsTrigger.url} 
  
 result 
 : 
  
 resp 
  
 - 
  
 verify_response 
 : 
  
 call 
 : 
  
 assert_response 
  
 args 
 : 
  
 expected_response 
 : 
  
 "success" 
  
 # function must return "success" when triggered 
  
 actual_response 
 : 
  
 ${resp.body} 
  
 - 
  
 delete_function 
 : 
  
 call 
 : 
  
 googleapis.cloudfunctions.v1.projects.locations.functions.delete 
  
 args 
 : 
  
 name 
 : 
  
 ${"projects/" + project + "/locations/" + location + "/functions/" + name} 
  
 - 
  
 the_end 
 : 
  
 return 
 : 
  
 "SUCCESS" 
 assert_response 
 : 
  
 params 
 : 
  
 [ 
 expected_response 
 , 
  
 actual_response 
 ] 
  
 steps 
 : 
  
 - 
  
 compare 
 : 
  
 switch 
 : 
  
 - 
  
 condition 
 : 
  
 ${expected_response == actual_response} 
  
 next 
 : 
  
 end 
  
 - 
  
 fail 
 : 
  
 raise 
 : 
  
 ${"Expected response is " + expected_response + ". Received " + actual_response + " instead."} 
 

What's next

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

Design a Mobile Site
View Site in Mobile | Classic
Share by: