123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855 |
- // Copyright 2022 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- syntax = "proto3";
- package google.cloud.functions.v1;
- import "google/api/annotations.proto";
- import "google/api/client.proto";
- import "google/api/field_behavior.proto";
- import "google/api/resource.proto";
- import "google/iam/v1/iam_policy.proto";
- import "google/iam/v1/policy.proto";
- import "google/longrunning/operations.proto";
- import "google/protobuf/duration.proto";
- import "google/protobuf/field_mask.proto";
- import "google/protobuf/timestamp.proto";
- option go_package = "google.golang.org/genproto/googleapis/cloud/functions/v1;functions";
- option java_multiple_files = true;
- option java_outer_classname = "FunctionsProto";
- option java_package = "com.google.cloud.functions.v1";
- option objc_class_prefix = "GCF";
- option (google.api.resource_definition) = {
- type: "artifactregistry.googleapis.com/Repository"
- pattern: "projects/{project}/locations/{location}/repositories/{repository}"
- };
- option (google.api.resource_definition) = {
- type: "cloudkms.googleapis.com/CryptoKey"
- pattern: "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}"
- };
- // A service that application uses to manipulate triggers and functions.
- service CloudFunctionsService {
- option (google.api.default_host) = "cloudfunctions.googleapis.com";
- option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
- // Returns a list of functions that belong to the requested project.
- rpc ListFunctions(ListFunctionsRequest) returns (ListFunctionsResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=projects/*/locations/*}/functions"
- };
- }
- // Returns a function with the given name from the requested project.
- rpc GetFunction(GetFunctionRequest) returns (CloudFunction) {
- option (google.api.http) = {
- get: "/v1/{name=projects/*/locations/*/functions/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Creates a new function. If a function with the given name already exists in
- // the specified project, the long running operation will return
- // `ALREADY_EXISTS` error.
- rpc CreateFunction(CreateFunctionRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1/{location=projects/*/locations/*}/functions"
- body: "function"
- };
- option (google.api.method_signature) = "location,function";
- option (google.longrunning.operation_info) = {
- response_type: "CloudFunction"
- metadata_type: "OperationMetadataV1"
- };
- }
- // Updates existing function.
- rpc UpdateFunction(UpdateFunctionRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- patch: "/v1/{function.name=projects/*/locations/*/functions/*}"
- body: "function"
- };
- option (google.api.method_signature) = "function";
- option (google.longrunning.operation_info) = {
- response_type: "CloudFunction"
- metadata_type: "OperationMetadataV1"
- };
- }
- // Deletes a function with the given name from the specified project. If the
- // given function is used by some trigger, the trigger will be updated to
- // remove this function.
- rpc DeleteFunction(DeleteFunctionRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- delete: "/v1/{name=projects/*/locations/*/functions/*}"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "google.protobuf.Empty"
- metadata_type: "OperationMetadataV1"
- };
- }
- // Synchronously invokes a deployed Cloud Function. To be used for testing
- // purposes as very limited traffic is allowed. For more information on
- // the actual limits, refer to
- // [Rate Limits](https://cloud.google.com/functions/quotas#rate_limits).
- rpc CallFunction(CallFunctionRequest) returns (CallFunctionResponse) {
- option (google.api.http) = {
- post: "/v1/{name=projects/*/locations/*/functions/*}:call"
- body: "*"
- };
- option (google.api.method_signature) = "name,data";
- }
- // Returns a signed URL for uploading a function source code.
- // For more information about the signed URL usage see:
- // https://cloud.google.com/storage/docs/access-control/signed-urls.
- // Once the function source code upload is complete, the used signed
- // URL should be provided in CreateFunction or UpdateFunction request
- // as a reference to the function source code.
- //
- // When uploading source code to the generated signed URL, please follow
- // these restrictions:
- //
- // * Source file type should be a zip file.
- // * Source file size should not exceed 100MB limit.
- // * No credentials should be attached - the signed URLs provide access to the
- // target bucket using internal service identity; if credentials were
- // attached, the identity from the credentials would be used, but that
- // identity does not have permissions to upload files to the URL.
- //
- // When making a HTTP PUT request, these two headers need to be specified:
- //
- // * `content-type: application/zip`
- // * `x-goog-content-length-range: 0,104857600`
- //
- // And this header SHOULD NOT be specified:
- //
- // * `Authorization: Bearer YOUR_TOKEN`
- rpc GenerateUploadUrl(GenerateUploadUrlRequest) returns (GenerateUploadUrlResponse) {
- option (google.api.http) = {
- post: "/v1/{parent=projects/*/locations/*}/functions:generateUploadUrl"
- body: "*"
- };
- }
- // Returns a signed URL for downloading deployed function source code.
- // The URL is only valid for a limited period and should be used within
- // minutes after generation.
- // For more information about the signed URL usage see:
- // https://cloud.google.com/storage/docs/access-control/signed-urls
- rpc GenerateDownloadUrl(GenerateDownloadUrlRequest) returns (GenerateDownloadUrlResponse) {
- option (google.api.http) = {
- post: "/v1/{name=projects/*/locations/*/functions/*}:generateDownloadUrl"
- body: "*"
- };
- }
- // Sets the IAM access control policy on the specified function.
- // Replaces any existing policy.
- rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) {
- option (google.api.http) = {
- post: "/v1/{resource=projects/*/locations/*/functions/*}:setIamPolicy"
- body: "*"
- };
- }
- // Gets the IAM access control policy for a function.
- // Returns an empty policy if the function exists and does not have a policy
- // set.
- rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) returns (google.iam.v1.Policy) {
- option (google.api.http) = {
- get: "/v1/{resource=projects/*/locations/*/functions/*}:getIamPolicy"
- };
- }
- // Tests the specified permissions against the IAM access control policy
- // for a function.
- // If the function does not exist, this will return an empty set of
- // permissions, not a NOT_FOUND error.
- rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) {
- option (google.api.http) = {
- post: "/v1/{resource=projects/*/locations/*/functions/*}:testIamPermissions"
- body: "*"
- };
- }
- }
- // Describes a Cloud Function that contains user computation executed in
- // response to an event. It encapsulate function and triggers configurations.
- message CloudFunction {
- option (google.api.resource) = {
- type: "cloudfunctions.googleapis.com/CloudFunction"
- pattern: "projects/{project}/locations/{location}/functions/{function}"
- };
- // Available egress settings.
- //
- // This controls what traffic is diverted through the VPC Access Connector
- // resource. By default PRIVATE_RANGES_ONLY will be used.
- enum VpcConnectorEgressSettings {
- // Unspecified.
- VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED = 0;
- // Use the VPC Access Connector only for private IP space from RFC1918.
- PRIVATE_RANGES_ONLY = 1;
- // Force the use of VPC Access Connector for all egress traffic from the
- // function.
- ALL_TRAFFIC = 2;
- }
- // Available ingress settings.
- //
- // This controls what traffic can reach the function.
- //
- // If unspecified, ALLOW_ALL will be used.
- enum IngressSettings {
- // Unspecified.
- INGRESS_SETTINGS_UNSPECIFIED = 0;
- // Allow HTTP traffic from public and private sources.
- ALLOW_ALL = 1;
- // Allow HTTP traffic from only private VPC sources.
- ALLOW_INTERNAL_ONLY = 2;
- // Allow HTTP traffic from private VPC sources and through GCLB.
- ALLOW_INTERNAL_AND_GCLB = 3;
- }
- // Docker Registry to use for storing function Docker images.
- enum DockerRegistry {
- // Unspecified.
- DOCKER_REGISTRY_UNSPECIFIED = 0;
- // Docker images will be stored in multi-regional Container Registry
- // repositories named `gcf`.
- CONTAINER_REGISTRY = 1;
- // Docker images will be stored in regional Artifact Registry repositories.
- // By default, GCF will create and use repositories named `gcf-artifacts`
- // in every region in which a function is deployed. But the repository to
- // use can also be specified by the user using the `docker_repository`
- // field.
- ARTIFACT_REGISTRY = 2;
- }
- // A user-defined name of the function. Function names must be unique
- // globally and match pattern `projects/*/locations/*/functions/*`
- string name = 1;
- // User-provided description of a function.
- string description = 2;
- // The location of the function source code.
- oneof source_code {
- // The Google Cloud Storage URL, starting with `gs://`, pointing to the zip
- // archive which contains the function.
- string source_archive_url = 3;
- // **Beta Feature**
- //
- // The source repository where a function is hosted.
- SourceRepository source_repository = 4;
- // The Google Cloud Storage signed URL used for source uploading, generated
- // by calling [google.cloud.functions.v1.GenerateUploadUrl].
- //
- // The signature is validated on write methods (Create, Update)
- // The signature is stripped from the Function object on read methods (Get,
- // List)
- string source_upload_url = 16;
- }
- // An event that triggers the function.
- oneof trigger {
- // An HTTPS endpoint type of source that can be triggered via URL.
- HttpsTrigger https_trigger = 5;
- // A source that fires events in response to a condition in another service.
- EventTrigger event_trigger = 6;
- }
- // Output only. Status of the function deployment.
- CloudFunctionStatus status = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
- // The name of the function (as defined in source code) that will be
- // executed. Defaults to the resource name suffix, if not specified. For
- // backward compatibility, if function with given name is not found, then the
- // system will try to use function named "function".
- // For Node.js this is name of a function exported by the module specified
- // in `source_location`.
- string entry_point = 8;
- // The runtime in which to run the function. Required when deploying a new
- // function, optional when updating an existing function. For a complete
- // list of possible choices, see the
- // [`gcloud` command
- // reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime).
- string runtime = 19;
- // The function execution timeout. Execution is considered failed and
- // can be terminated if the function is not completed at the end of the
- // timeout period. Defaults to 60 seconds.
- google.protobuf.Duration timeout = 9;
- // The amount of memory in MB available for a function.
- // Defaults to 256MB.
- int32 available_memory_mb = 10;
- // The email of the function's service account. If empty, defaults to
- // `{project_id}@appspot.gserviceaccount.com`.
- string service_account_email = 11;
- // Output only. The last update timestamp of a Cloud Function.
- google.protobuf.Timestamp update_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Output only. The version identifier of the Cloud Function. Each deployment attempt
- // results in a new version of a function being created.
- int64 version_id = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Labels associated with this Cloud Function.
- map<string, string> labels = 15;
- // Environment variables that shall be available during function execution.
- map<string, string> environment_variables = 17;
- // Build environment variables that shall be available during build time.
- map<string, string> build_environment_variables = 28;
- // The VPC Network that this cloud function can connect to. It can be
- // either the fully-qualified URI, or the short name of the network resource.
- // If the short network name is used, the network must belong to the same
- // project. Otherwise, it must belong to a project within the same
- // organization. The format of this field is either
- // `projects/{project}/global/networks/{network}` or `{network}`, where
- // `{project}` is a project id where the network is defined, and `{network}`
- // is the short name of the network.
- //
- // This field is mutually exclusive with `vpc_connector` and will be replaced
- // by it.
- //
- // See [the VPC documentation](https://cloud.google.com/compute/docs/vpc) for
- // more information on connecting Cloud projects.
- string network = 18;
- // The limit on the maximum number of function instances that may coexist at a
- // given time.
- //
- // In some cases, such as rapid traffic surges, Cloud Functions may, for a
- // short period of time, create more instances than the specified max
- // instances limit. If your function cannot tolerate this temporary behavior,
- // you may want to factor in a safety margin and set a lower max instances
- // value than your function can tolerate.
- //
- // See the [Max
- // Instances](https://cloud.google.com/functions/docs/max-instances) Guide for
- // more details.
- int32 max_instances = 20;
- // A lower bound for the number function instances that may coexist at a
- // given time.
- int32 min_instances = 32;
- // The VPC Network Connector that this cloud function can connect to. It can
- // be either the fully-qualified URI, or the short name of the network
- // connector resource. The format of this field is
- // `projects/*/locations/*/connectors/*`
- //
- // This field is mutually exclusive with `network` field and will eventually
- // replace it.
- //
- // See [the VPC documentation](https://cloud.google.com/compute/docs/vpc) for
- // more information on connecting Cloud projects.
- string vpc_connector = 22;
- // The egress settings for the connector, controlling what traffic is diverted
- // through it.
- VpcConnectorEgressSettings vpc_connector_egress_settings = 23;
- // The ingress settings for the function, controlling what traffic can reach
- // it.
- IngressSettings ingress_settings = 24;
- // Resource name of a KMS crypto key (managed by the user) used to
- // encrypt/decrypt function resources.
- //
- // It must match the pattern
- // `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
- //
- // If specified, you must also provide an artifact registry repository using
- // the `docker_repository` field that was created with the same KMS crypto
- // key.
- //
- // The following service accounts need to be granted the role 'Cloud KMS
- // CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)'
- // on the Key/KeyRing/Project/Organization (least access preferred).
- //
- // 1. Google Cloud Functions service account
- // (service-{project_number}@gcf-admin-robot.iam.gserviceaccount.com) -
- // Required to protect the function's image.
- // 2. Google Storage service account
- // (service-{project_number}@gs-project-accounts.iam.gserviceaccount.com) -
- // Required to protect the function's source code.
- // If this service account does not exist, deploying a function without a
- // KMS key or retrieving the service agent name provisions it. For more
- // information, see
- // https://cloud.google.com/storage/docs/projects#service-agents and
- // https://cloud.google.com/storage/docs/getting-service-agent#gsutil.
- //
- // Google Cloud Functions delegates access to service agents to protect
- // function resources in internal projects that are not accessible by the
- // end user.
- string kms_key_name = 25 [(google.api.resource_reference) = {
- type: "cloudkms.googleapis.com/CryptoKey"
- }];
- // Name of the Cloud Build Custom Worker Pool that should be used to build the
- // function. The format of this field is
- // `projects/{project}/locations/{region}/workerPools/{workerPool}` where
- // `{project}` and `{region}` are the project id and region respectively where
- // the worker pool is defined and `{workerPool}` is the short name of the
- // worker pool.
- //
- // If the project id is not the same as the function, then the Cloud
- // Functions Service Agent
- // (`service-<project_number>@gcf-admin-robot.iam.gserviceaccount.com`) must
- // be granted the role Cloud Build Custom Workers Builder
- // (`roles/cloudbuild.customworkers.builder`) in the project.
- string build_worker_pool = 26;
- // Output only. The Cloud Build ID of the latest successful deployment of the
- // function.
- string build_id = 27 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Output only. The Cloud Build Name of the function deployment.
- // `projects/<project-number>/locations/<region>/builds/<build-id>`.
- string build_name = 33 [(google.api.field_behavior) = OUTPUT_ONLY];
- // Secret environment variables configuration.
- repeated SecretEnvVar secret_environment_variables = 29;
- // Secret volumes configuration.
- repeated SecretVolume secret_volumes = 30;
- // Input only. An identifier for Firebase function sources. Disclaimer: This field is only
- // supported for Firebase function deployments.
- string source_token = 31 [(google.api.field_behavior) = INPUT_ONLY];
- // User managed repository created in Artifact Registry optionally with a
- // customer managed encryption key. If specified, deployments will use
- // Artifact Registry. If unspecified and the deployment is eligible to use
- // Artifact Registry, GCF will create and use a repository named
- // 'gcf-artifacts' for every deployed region. This is the repository to which
- // the function docker image will be pushed after it is built by Cloud Build.
- //
- // It must match the pattern
- // `projects/{project}/locations/{location}/repositories/{repository}`.
- //
- // Cross-project repositories are not supported.
- // Cross-location repositories are not supported.
- // Repository format must be 'DOCKER'.
- string docker_repository = 34 [(google.api.resource_reference) = {
- type: "artifactregistry.googleapis.com/Repository"
- }];
- // Docker Registry to use for this deployment.
- //
- // If `docker_repository` field is specified, this field will be automatically
- // set as `ARTIFACT_REGISTRY`.
- // If unspecified, it currently defaults to `CONTAINER_REGISTRY`.
- // This field may be overridden by the backend for eligible deployments.
- DockerRegistry docker_registry = 35;
- }
- // Describes SourceRepository, used to represent parameters related to
- // source repository where a function is hosted.
- message SourceRepository {
- // The URL pointing to the hosted repository where the function is defined.
- // There are supported Cloud Source Repository URLs in the following
- // formats:
- //
- // To refer to a specific commit:
- // `https://source.developers.google.com/projects/*/repos/*/revisions/*/paths/*`
- // To refer to a moveable alias (branch):
- // `https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*`
- // In particular, to refer to HEAD use `master` moveable alias.
- // To refer to a specific fixed alias (tag):
- // `https://source.developers.google.com/projects/*/repos/*/fixed-aliases/*/paths/*`
- //
- // You may omit `paths/*` if you want to use the main directory.
- string url = 1;
- // Output only. The URL pointing to the hosted repository where the function
- // were defined at the time of deployment. It always points to a specific
- // commit in the format described above.
- string deployed_url = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
- }
- // Describes HttpsTrigger, could be used to connect web hooks to function.
- message HttpsTrigger {
- // Available security level settings.
- //
- // This controls the methods to enforce security (HTTPS) on a URL.
- //
- // If unspecified, SECURE_OPTIONAL will be used.
- enum SecurityLevel {
- // Unspecified.
- SECURITY_LEVEL_UNSPECIFIED = 0;
- // Requests for a URL that match this handler that do not use HTTPS are
- // automatically redirected to the HTTPS URL with the same path. Query
- // parameters are reserved for the redirect.
- SECURE_ALWAYS = 1;
- // Both HTTP and HTTPS requests with URLs that match the handler succeed
- // without redirects. The application can examine the request to determine
- // which protocol was used and respond accordingly.
- SECURE_OPTIONAL = 2;
- }
- // Output only. The deployed url for the function.
- string url = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
- // The security level for the function.
- SecurityLevel security_level = 2;
- }
- // Describes EventTrigger, used to request events be sent from another
- // service.
- message EventTrigger {
- // Required. The type of event to observe. For example:
- // `providers/cloud.storage/eventTypes/object.change` and
- // `providers/cloud.pubsub/eventTypes/topic.publish`.
- //
- // Event types match pattern `providers/*/eventTypes/*.*`.
- // The pattern contains:
- //
- // 1. namespace: For example, `cloud.storage` and
- // `google.firebase.analytics`.
- // 2. resource type: The type of resource on which event occurs. For
- // example, the Google Cloud Storage API includes the type `object`.
- // 3. action: The action that generates the event. For example, action for
- // a Google Cloud Storage Object is 'change'.
- // These parts are lower case.
- string event_type = 1;
- // Required. The resource(s) from which to observe events, for example,
- // `projects/_/buckets/myBucket`.
- //
- // Not all syntactically correct values are accepted by all services. For
- // example:
- //
- // 1. The authorization model must support it. Google Cloud Functions
- // only allows EventTriggers to be deployed that observe resources in the
- // same project as the `CloudFunction`.
- // 2. The resource type must match the pattern expected for an
- // `event_type`. For example, an `EventTrigger` that has an
- // `event_type` of "google.pubsub.topic.publish" should have a resource
- // that matches Google Cloud Pub/Sub topics.
- //
- // Additionally, some services may support short names when creating an
- // `EventTrigger`. These will always be returned in the normalized "long"
- // format.
- //
- // See each *service's* documentation for supported formats.
- string resource = 2;
- // The hostname of the service that should be observed.
- //
- // If no string is provided, the default service implementing the API will
- // be used. For example, `storage.googleapis.com` is the default for all
- // event types in the `google.storage` namespace.
- string service = 3;
- // Specifies policy for failed executions.
- FailurePolicy failure_policy = 5;
- }
- // Describes the policy in case of function's execution failure.
- // If empty, then defaults to ignoring failures (i.e. not retrying them).
- message FailurePolicy {
- // Describes the retry policy in case of function's execution failure.
- // A function execution will be retried on any failure.
- // A failed execution will be retried up to 7 days with an exponential backoff
- // (capped at 10 seconds).
- // Retried execution is charged as any other execution.
- message Retry {
- }
- // Defines the action taken in case of a function execution failure.
- oneof action {
- // If specified, then the function will be retried in case of a failure.
- Retry retry = 1;
- }
- }
- // Describes the current stage of a deployment.
- enum CloudFunctionStatus {
- // Not specified. Invalid state.
- CLOUD_FUNCTION_STATUS_UNSPECIFIED = 0;
- // Function has been successfully deployed and is serving.
- ACTIVE = 1;
- // Function deployment failed and the function isn’t serving.
- OFFLINE = 2;
- // Function is being created or updated.
- DEPLOY_IN_PROGRESS = 3;
- // Function is being deleted.
- DELETE_IN_PROGRESS = 4;
- // Function deployment failed and the function serving state is undefined.
- // The function should be updated or deleted to move it out of this state.
- UNKNOWN = 5;
- }
- // Configuration for a secret environment variable. It has the information
- // necessary to fetch the secret value from secret manager and expose it as an
- // environment variable.
- message SecretEnvVar {
- // Name of the environment variable.
- string key = 1;
- // Project identifier (preferrably project number but can also be the project
- // ID) of the project that contains the secret. If not set, it will be
- // populated with the function's project assuming that the secret exists in
- // the same project as of the function.
- string project_id = 2;
- // Name of the secret in secret manager (not the full resource name).
- string secret = 3;
- // Version of the secret (version number or the string 'latest'). It is
- // recommended to use a numeric version for secret environment variables as
- // any updates to the secret value is not reflected until new instances start.
- string version = 4;
- }
- // Configuration for a secret volume. It has the information necessary to fetch
- // the secret value from secret manager and make it available as files mounted
- // at the requested paths within the application container. Secret value is not
- // a part of the configuration. Every filesystem read operation performs a
- // lookup in secret manager to retrieve the secret value.
- message SecretVolume {
- // Configuration for a single version.
- message SecretVersion {
- // Version of the secret (version number or the string 'latest'). It is
- // preferrable to use `latest` version with secret volumes as secret value
- // changes are reflected immediately.
- string version = 1;
- // Relative path of the file under the mount path where the secret value for
- // this version will be fetched and made available. For example, setting the
- // mount_path as '/etc/secrets' and path as `/secret_foo` would mount the
- // secret value file at `/etc/secrets/secret_foo`.
- string path = 2;
- }
- // The path within the container to mount the secret volume. For example,
- // setting the mount_path as `/etc/secrets` would mount the secret value files
- // under the `/etc/secrets` directory. This directory will also be completely
- // shadowed and unavailable to mount any other secrets.
- //
- // Recommended mount paths: /etc/secrets
- // Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log
- string mount_path = 1;
- // Project identifier (preferrably project number but can also be the project
- // ID) of the project that contains the secret. If not set, it will be
- // populated with the function's project assuming that the secret exists in
- // the same project as of the function.
- string project_id = 2;
- // Name of the secret in secret manager (not the full resource name).
- string secret = 3;
- // List of secret versions to mount for this secret. If empty, the `latest`
- // version of the secret will be made available in a file named after the
- // secret under the mount point.
- repeated SecretVersion versions = 4;
- }
- // Request for the `CreateFunction` method.
- message CreateFunctionRequest {
- // Required. The project and location in which the function should be created, specified
- // in the format `projects/*/locations/*`
- string location = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "locations.googleapis.com/Location"
- }
- ];
- // Required. Function to be created.
- CloudFunction function = 2 [(google.api.field_behavior) = REQUIRED];
- }
- // Request for the `UpdateFunction` method.
- message UpdateFunctionRequest {
- // Required. New version of the function.
- CloudFunction function = 1 [(google.api.field_behavior) = REQUIRED];
- // Required. The list of fields in `CloudFunction` that have to be updated.
- google.protobuf.FieldMask update_mask = 2;
- }
- // Request for the `GetFunction` method.
- message GetFunctionRequest {
- // Required. The name of the function which details should be obtained.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "cloudfunctions.googleapis.com/CloudFunction"
- }
- ];
- }
- // Request for the `ListFunctions` method.
- message ListFunctionsRequest {
- // The project and location from which the function should be listed,
- // specified in the format `projects/*/locations/*`
- // If you want to list functions in all locations, use "-" in place of a
- // location. When listing functions in all locations, if one or more
- // location(s) are unreachable, the response will contain functions from all
- // reachable locations along with the names of any unreachable locations.
- string parent = 1 [(google.api.resource_reference) = {
- type: "locations.googleapis.com/Location"
- }];
- // Maximum number of functions to return per call.
- int32 page_size = 2;
- // The value returned by the last
- // `ListFunctionsResponse`; indicates that
- // this is a continuation of a prior `ListFunctions` call, and that the
- // system should return the next page of data.
- string page_token = 3;
- }
- // Response for the `ListFunctions` method.
- message ListFunctionsResponse {
- // The functions that match the request.
- repeated CloudFunction functions = 1;
- // If not empty, indicates that there may be more functions that match
- // the request; this value should be passed in a new
- // [google.cloud.functions.v1.ListFunctionsRequest][google.cloud.functions.v1.ListFunctionsRequest]
- // to get more functions.
- string next_page_token = 2;
- // Locations that could not be reached. The response does not include any
- // functions from these locations.
- repeated string unreachable = 3;
- }
- // Request for the `DeleteFunction` method.
- message DeleteFunctionRequest {
- // Required. The name of the function which should be deleted.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "cloudfunctions.googleapis.com/CloudFunction"
- }
- ];
- }
- // Request for the `CallFunction` method.
- message CallFunctionRequest {
- // Required. The name of the function to be called.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "cloudfunctions.googleapis.com/CloudFunction"
- }
- ];
- // Required. Input to be passed to the function.
- string data = 2 [(google.api.field_behavior) = REQUIRED];
- }
- // Response of `CallFunction` method.
- message CallFunctionResponse {
- // Execution id of function invocation.
- string execution_id = 1;
- // Result populated for successful execution of synchronous function. Will
- // not be populated if function does not return a result through context.
- string result = 2;
- // Either system or user-function generated error. Set if execution
- // was not successful.
- string error = 3;
- }
- // Request of `GenerateSourceUploadUrl` method.
- message GenerateUploadUrlRequest {
- // The project and location in which the Google Cloud Storage signed URL
- // should be generated, specified in the format `projects/*/locations/*`.
- string parent = 1;
- // Resource name of a KMS crypto key (managed by the user) used to
- // encrypt/decrypt function source code objects in staging Cloud Storage
- // buckets. When you generate an upload url and upload your source code, it
- // gets copied to a staging Cloud Storage bucket in an internal regional
- // project. The source code is then copied to a versioned directory in the
- // sources bucket in the consumer project during the function deployment.
- //
- // It must match the pattern
- // `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
- //
- // The Google Cloud Functions service account
- // (service-{project_number}@gcf-admin-robot.iam.gserviceaccount.com) must be
- // granted the role 'Cloud KMS CryptoKey Encrypter/Decrypter
- // (roles/cloudkms.cryptoKeyEncrypterDecrypter)' on the
- // Key/KeyRing/Project/Organization (least access preferred). GCF will
- // delegate access to the Google Storage service account in the internal
- // project.
- string kms_key_name = 2 [(google.api.resource_reference) = {
- type: "cloudkms.googleapis.com/CryptoKey"
- }];
- }
- // Response of `GenerateSourceUploadUrl` method.
- message GenerateUploadUrlResponse {
- // The generated Google Cloud Storage signed URL that should be used for a
- // function source code upload. The uploaded file should be a zip archive
- // which contains a function.
- string upload_url = 1;
- }
- // Request of `GenerateDownloadUrl` method.
- message GenerateDownloadUrlRequest {
- // The name of function for which source code Google Cloud Storage signed
- // URL should be generated.
- string name = 1;
- // The optional version of function. If not set, default, current version
- // is used.
- uint64 version_id = 2;
- }
- // Response of `GenerateDownloadUrl` method.
- message GenerateDownloadUrlResponse {
- // The generated Google Cloud Storage signed URL that should be used for
- // function source code download.
- string download_url = 1;
- }
|