import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../../types/input"; import * as outputs from "../../types/output"; import * as enums from "../../types/enums"; /** * 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. */ export declare class Function extends pulumi.CustomResource { /** * Get an existing Function resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, opts?: pulumi.CustomResourceOptions): Function; /** * Returns true if the given object is an instance of Function. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is Function; /** * The amount of memory in MB available for a function. Defaults to 256MB. */ readonly availableMemoryMb: pulumi.Output; /** * Build environment variables that shall be available during build time. */ readonly buildEnvironmentVariables: pulumi.Output<{ [key: string]: string; }>; /** * The Cloud Build ID of the latest successful deployment of the function. */ readonly buildId: pulumi.Output; /** * The Cloud Build Name of the function deployment. `projects//locations//builds/`. */ readonly buildName: pulumi.Output; /** * 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-@gcf-admin-robot.iam.gserviceaccount.com`) must be granted the role Cloud Build Custom Workers Builder (`roles/cloudbuild.customworkers.builder`) in the project. */ readonly buildWorkerPool: pulumi.Output; /** * User-provided description of a function. */ readonly description: pulumi.Output; /** * 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. */ readonly dockerRegistry: pulumi.Output; /** * 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'. */ readonly dockerRepository: pulumi.Output; /** * The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix (ID of the function), if not specified. */ readonly entryPoint: pulumi.Output; /** * Environment variables that shall be available during function execution. */ readonly environmentVariables: pulumi.Output<{ [key: string]: string; }>; /** * A source that fires events in response to a condition in another service. */ readonly eventTrigger: pulumi.Output; /** * An HTTPS endpoint type of source that can be triggered via URL. */ readonly httpsTrigger: pulumi.Output; /** * The ingress settings for the function, controlling what traffic can reach it. */ readonly ingressSettings: pulumi.Output; /** * 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. */ readonly kmsKeyName: pulumi.Output; /** * Labels associated with this Cloud Function. */ readonly labels: pulumi.Output<{ [key: string]: string; }>; readonly location: pulumi.Output; /** * 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. */ readonly maxInstances: pulumi.Output; /** * A lower bound for the number function instances that may coexist at a given time. */ readonly minInstances: pulumi.Output; /** * A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*` */ readonly name: pulumi.Output; /** * Deprecated: use vpc_connector * * @deprecated Deprecated: use vpc_connector */ readonly network: pulumi.Output; readonly project: pulumi.Output; /** * 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). */ readonly runtime: pulumi.Output; /** * Secret environment variables configuration. */ readonly secretEnvironmentVariables: pulumi.Output; /** * Secret volumes configuration. */ readonly secretVolumes: pulumi.Output; /** * The email of the function's service account. If empty, defaults to `{project_id}@appspot.gserviceaccount.com`. */ readonly serviceAccountEmail: pulumi.Output; /** * The Google Cloud Storage URL, starting with `gs://`, pointing to the zip archive which contains the function. */ readonly sourceArchiveUrl: pulumi.Output; /** * **Beta Feature** The source repository where a function is hosted. */ readonly sourceRepository: pulumi.Output; /** * Input only. An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments. */ readonly sourceToken: pulumi.Output; /** * 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) */ readonly sourceUploadUrl: pulumi.Output; /** * Status of the function deployment. */ readonly status: pulumi.Output; /** * 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. */ readonly timeout: pulumi.Output; /** * The last update timestamp of a Cloud Function. */ readonly updateTime: pulumi.Output; /** * The version identifier of the Cloud Function. Each deployment attempt results in a new version of a function being created. */ readonly versionId: pulumi.Output; /** * 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. */ readonly vpcConnector: pulumi.Output; /** * The egress settings for the connector, controlling what traffic is diverted through it. */ readonly vpcConnectorEgressSettings: pulumi.Output; /** * Create a Function resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args?: FunctionArgs, opts?: pulumi.CustomResourceOptions); } /** * The set of arguments for constructing a Function resource. */ export interface FunctionArgs { /** * The amount of memory in MB available for a function. Defaults to 256MB. */ availableMemoryMb?: pulumi.Input; /** * Build environment variables that shall be available during build time. */ buildEnvironmentVariables?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * 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-@gcf-admin-robot.iam.gserviceaccount.com`) must be granted the role Cloud Build Custom Workers Builder (`roles/cloudbuild.customworkers.builder`) in the project. */ buildWorkerPool?: pulumi.Input; /** * User-provided description of a function. */ description?: pulumi.Input; /** * 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?: pulumi.Input; /** * 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'. */ dockerRepository?: pulumi.Input; /** * The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix (ID of the function), if not specified. */ entryPoint?: pulumi.Input; /** * Environment variables that shall be available during function execution. */ environmentVariables?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * A source that fires events in response to a condition in another service. */ eventTrigger?: pulumi.Input; /** * An HTTPS endpoint type of source that can be triggered via URL. */ httpsTrigger?: pulumi.Input; /** * The ingress settings for the function, controlling what traffic can reach it. */ ingressSettings?: pulumi.Input; /** * 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. */ kmsKeyName?: pulumi.Input; /** * Labels associated with this Cloud Function. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; location?: pulumi.Input; /** * 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. */ maxInstances?: pulumi.Input; /** * A lower bound for the number function instances that may coexist at a given time. */ minInstances?: pulumi.Input; /** * A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*` */ name?: pulumi.Input; /** * Deprecated: use vpc_connector * * @deprecated Deprecated: use vpc_connector */ network?: pulumi.Input; project?: pulumi.Input; /** * 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). */ runtime?: pulumi.Input; /** * Secret environment variables configuration. */ secretEnvironmentVariables?: pulumi.Input[]>; /** * Secret volumes configuration. */ secretVolumes?: pulumi.Input[]>; /** * The email of the function's service account. If empty, defaults to `{project_id}@appspot.gserviceaccount.com`. */ serviceAccountEmail?: pulumi.Input; /** * The Google Cloud Storage URL, starting with `gs://`, pointing to the zip archive which contains the function. */ sourceArchiveUrl?: pulumi.Input; /** * **Beta Feature** The source repository where a function is hosted. */ sourceRepository?: pulumi.Input; /** * Input only. An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments. */ sourceToken?: pulumi.Input; /** * 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) */ sourceUploadUrl?: pulumi.Input; /** * 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. */ timeout?: pulumi.Input; /** * 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. */ vpcConnector?: pulumi.Input; /** * The egress settings for the connector, controlling what traffic is diverted through it. */ vpcConnectorEgressSettings?: pulumi.Input; }