GoogleCloudPlatform / deploymentmanager-samples

Deployment Manager samples and templates.
Apache License 2.0
935 stars 716 forks source link

how to initially we can invoke cloud function from deployment manager? #680

Open venkatarajv opened 2 years ago

venkatarajv commented 2 years ago

Question 1. I'm trying to create a cloud function through a cloud deployment manager. Once that is deployed, the function is unable to invoke initially. after testing or clicking a URL, the function is invoking.

Deployment.jinja


{% set deployment_name =  env["deployment"]  %}
{% set project = env['project']  %}
{% set region = "us-central1" %}

resources:
- type: storage.v1.bucket
  name: {{ deployment_name }}
  properties:
    project: {{ project }}
- name: CloudFunction
  type:  gcp-types/cloudfunctions-v1:projects.locations.functions
  properties:
    parent: projects/{{ project }}/locations/us-central1
    function: {{ deployment_name }}
    entryPoint: handler
    timeout: 60s
    availableMemoryMb: 256
    runtime: python39
    location: {{ region }}
    sourceArchiveUrl: gs://bucket/archive.zip
    httpsTrigger:
      url: https://{{ region }}-{{ project }}.cloudfunctions.net/{{ deployment_name }}
    environmentVariables:
      BUCKET: {{ deployment_name }}
      FUNCTION_REGION: {{ region }}
      PROJECT: {{ project }}

Question 2. Can we invoke a function based on CreateFunction or DeleteFunction? Same, how we call in AWS lambda like requestType=Create and requestType=Delete.

stack driver logs: Ex: methodName: google.cloud.functions.v1.CloudFunctionsService.DeleteFunction and methodName: google.cloud.functions.v1.CloudFunctionsService.CreateFunction simmillar like this:

def hello_world(request):
    if request['methodName']=="DeleteFunction":
       print("delete bucket")
    if request['methodName']=="CreateFunction":
       print("create bucket")