import { ResetValue } from "../../common/options"; import { CloudEvent, CloudFunction } from "../core"; import { Expression } from "../../params"; import * as options from "../options"; import { SecretParam } from "../../params/types"; /** * An object within Google Cloud Storage. * Ref: https://github.com/googleapis/google-cloudevents-nodejs/blob/main/cloud/storage/v1/StorageObjectData.ts */ export interface StorageObjectData { /** * The name of the bucket containing this object. */ bucket: string; /** * Cache-Control directive for the object data, matching * [https://tools.ietf.org/html/rfc7234#section-5.2"][RFC 7234 §5.2]. */ cacheControl?: string; /** * Number of underlying components that make up this object. Components are * accumulated by compose operations. * Attempting to set this field will result in an error. */ componentCount?: number; /** * Content-Disposition of the object data, matching * [https://tools.ietf.org/html/rfc6266][RFC 6266]. */ contentDisposition?: string; /** * Content-Encoding of the object data, matching * [https://tools.ietf.org/html/rfc7231#section-3.1.2.2][RFC 7231 §3.1.2.2] */ contentEncoding?: string; /** * Content-Language of the object data, matching * [https://tools.ietf.org/html/rfc7231#section-3.1.3.2][RFC 7231 §3.1.3.2]. */ contentLanguage?: string; /** * Content-Type of the object data, matching * [https://tools.ietf.org/html/rfc7231#section-3.1.1.5][RFC 7231 §3.1.1.5]. * If an object is stored without a Content-Type, it is served as * `application/octet-stream`. */ contentType?: string; /** * CRC32c checksum. For more information about using the CRC32c * checksum, see * [https://cloud.google.com/storage/docs/hashes-etags#_JSONAPI][Hashes and * ETags: Best Practices]. */ crc32c?: string; /** * Metadata of customer-supplied encryption key, if the object is encrypted by * such a key. */ customerEncryption?: CustomerEncryption; /** * HTTP 1.1 Entity tag for the object. See * [https://tools.ietf.org/html/rfc7232#section-2.3][RFC 7232 §2.3]. */ etag?: string; /** * The content generation of this object. Used for object versioning. * Attempting to set this field will result in an error. */ generation: number; /** * The ID of the object, including the bucket name, object name, and * generation number. */ id: string; /** * The kind of item this is. For objects, this is always "storage#object". */ kind?: string; /** * MD5 hash of the data; encoded using base64 as per * [https://tools.ietf.org/html/rfc4648#section-4][RFC 4648 §4]. For more * information about using the MD5 hash, see * [https://cloud.google.com/storage/docs/hashes-etags#_JSONAPI][Hashes and * ETags: Best Practices]. */ md5Hash?: string; /** * Media download link. */ mediaLink?: string; /** * User-provided metadata, in key/value pairs. */ metadata?: { [key: string]: string; }; /** * The version of the metadata for this object at this generation. Used for * preconditions and for detecting changes in metadata. A metageneration * number is only meaningful in the context of a particular generation of a * particular object. */ metageneration: number; /** * The name of the object. */ name: string; /** * The link to this object. */ selfLink?: string; /** * Content-Length of the object data in bytes, matching * [https://tools.ietf.org/html/rfc7230#section-3.3.2][RFC 7230 §3.3.2]. */ size: number; /** * Storage class of the object. */ storageClass: string; /** * The creation time of the object. * Attempting to set this field will result in an error. */ timeCreated?: Date | string; /** * The deletion time of the object. Will be returned if and only if this * version of the object has been deleted. */ timeDeleted?: Date | string; /** * The time at which the object's storage class was last changed. */ timeStorageClassUpdated?: Date | string; /** * The modification time of the object metadata. */ updated?: Date | string; } /** * Metadata of customer-supplied encryption key, if the object is encrypted by * such a key. */ export interface CustomerEncryption { /** * The encryption algorithm. */ encryptionAlgorithm?: string; /** * SHA256 hash value of the encryption key. */ keySha256?: string; } /** A CloudEvent that contains StorageObjectData */ export interface StorageEvent extends CloudEvent { /** The name of the bucket containing this object. */ bucket: string; } /** StorageOptions extend EventHandlerOptions with a bucket name */ export interface StorageOptions extends options.EventHandlerOptions { /** The name of the bucket containing this object. */ bucket?: string | Expression; /** * If true, do not deploy or emulate this function. */ omit?: boolean | Expression; /** * Region where functions should be deployed. */ region?: options.SupportedRegion | string | Expression | ResetValue; /** * Amount of memory to allocate to a function. */ memory?: options.MemoryOption | Expression | ResetValue; /** * Timeout for the function in seconds, possible values are 0 to 540. * HTTPS functions can specify a higher timeout. * * @remarks * The minimum timeout for a gen 2 function is 1s. The maximum timeout for a * function depends on the type of function: Event handling functions have a * maximum timeout of 540s (9 minutes). HTTPS and callable functions have a * maximum timeout of 36,00s (1 hour). Task queue functions have a maximum * timeout of 1,800s (30 minutes) */ timeoutSeconds?: number | Expression | ResetValue; /** * Min number of actual instances to be running at a given time. * * @remarks * Instances will be billed for memory allocation and 10% of CPU allocation * while idle. */ minInstances?: number | Expression | ResetValue; /** * Max number of instances to be running in parallel. */ maxInstances?: number | Expression | ResetValue; /** * Number of requests a function can serve at once. * * @remarks * Can only be applied to functions running on Cloud Functions v2. * A value of null restores the default concurrency (80 when CPU >= 1, 1 otherwise). * Concurrency cannot be set to any value other than 1 if `cpu` is less than 1. * The maximum value for concurrency is 1,000. */ concurrency?: number | Expression | ResetValue; /** * Fractional number of CPUs to allocate to a function. * * @remarks * Defaults to 1 for functions with <= 2GB RAM and increases for larger memory sizes. * This is different from the defaults when using the gcloud utility and is different from * the fixed amount assigned in Google Cloud Functions generation 1. * To revert to the CPU amounts used in gcloud or in Cloud Functions generation 1, set this * to the value "gcf_gen1" */ cpu?: number | "gcf_gen1"; /** * Connect cloud function to specified VPC connector. */ vpcConnector?: string | Expression | ResetValue; /** * Egress settings for VPC connector. */ vpcConnectorEgressSettings?: options.VpcEgressSetting | ResetValue; /** * Specific service account for the function to run as. */ serviceAccount?: string | Expression | ResetValue; /** * Ingress settings which control where this function can be called from. */ ingressSettings?: options.IngressSetting | ResetValue; /** * User labels to set on the function. */ labels?: Record; secrets?: (string | SecretParam)[]; /** Whether failed executions should be delivered again. */ retry?: boolean | Expression | ResetValue; } /** * Event handler sent only when a bucket has enabled object versioning. * This event indicates that the live version of an object has become an * archived version, either because it was archived or because it was * overwritten by the upload of an object of the same name. * * @param handler - Event handler which is run every time a Google Cloud Storage archival occurs. */ export declare function onObjectArchived(handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler sent only when a bucket has enabled object versioning. * This event indicates that the live version of an object has become an * archived version, either because it was archived or because it was * overwritten by the upload of an object of the same name. * * @param bucket - The name of the bucket containing this object. * @param handler - Event handler which is run every time a Google Cloud Storage archival occurs. */ export declare function onObjectArchived(bucket: string | Expression, handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler sent only when a bucket has enabled object versioning. * This event indicates that the live version of an object has become an * archived version, either because it was archived or because it was * overwritten by the upload of an object of the same name. * * @param opts - Options that can be set on an individual event-handling function. * @param handler - Event handler which is run every time a Google Cloud Storage archival occurs. */ export declare function onObjectArchived(opts: StorageOptions, handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time a Google Cloud Storage object * creation occurs. * * Sent when a new object (or a new generation of an existing object) * is successfully created in the bucket. This includes copying or rewriting * an existing object. A failed upload does not trigger this event. * * @param handler - Event handler which is run every time a Google Cloud Storage object creation occurs. */ export declare function onObjectFinalized(handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time a Google Cloud Storage object * creation occurs. * * Sent when a new object (or a new generation of an existing object) * is successfully created in the bucket. This includes copying or rewriting * an existing object. A failed upload does not trigger this event. * * @param bucket - The name of the bucket containing this object. * @param handler - Event handler which is run every time a Google Cloud Storage object creation occurs. */ export declare function onObjectFinalized(bucket: string | Expression, handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time a Google Cloud Storage object * creation occurs. * * Sent when a new object (or a new generation of an existing object) * is successfully created in the bucket. This includes copying or rewriting * an existing object. A failed upload does not trigger this event. * * @param opts - Options that can be set on an individual event-handling function. * @param handler - Event handler which is run every time a Google Cloud Storage object creation occurs. */ export declare function onObjectFinalized(opts: StorageOptions, handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time a Google Cloud Storage deletion occurs. * * Sent when an object has been permanently deleted. This includes objects * that are overwritten or are deleted as part of the bucket's lifecycle * configuration. For buckets with object versioning enabled, this is not * sent when an object is archived, even if archival occurs * via the `storage.objects.delete` method. * * @param handler - Event handler which is run every time a Google Cloud Storage object deletion occurs. */ export declare function onObjectDeleted(handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time a Google Cloud Storage deletion occurs. * * Sent when an object has been permanently deleted. This includes objects * that are overwritten or are deleted as part of the bucket's lifecycle * configuration. For buckets with object versioning enabled, this is not * sent when an object is archived, even if archival occurs * via the `storage.objects.delete` method. * * @param bucket - The name of the bucket containing this object. * @param handler - Event handler which is run every time a Google Cloud Storage object deletion occurs. */ export declare function onObjectDeleted(bucket: string | Expression, handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time a Google Cloud Storage deletion occurs. * * Sent when an object has been permanently deleted. This includes objects * that are overwritten or are deleted as part of the bucket's lifecycle * configuration. For buckets with object versioning enabled, this is not * sent when an object is archived, even if archival occurs * via the `storage.objects.delete` method. * * @param opts - Options that can be set on an individual event-handling function. * @param handler - Event handler which is run every time a Google Cloud Storage object deletion occurs. */ export declare function onObjectDeleted(opts: StorageOptions, handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time the metadata of an existing object * changes. * * @param bucketOrOptsOrHandler - Options or string that may (or may not) define the bucket to be used. * @param handler - Event handler which is run every time a Google Cloud Storage object metadata update occurs. */ export declare function onObjectMetadataUpdated(handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time the metadata of an existing object * changes. * * @param bucket - The name of the bucket containing this object. * @param handler - Event handler which is run every time a Google Cloud Storage object metadata update occurs. */ export declare function onObjectMetadataUpdated(bucket: string | Expression, handler: (event: StorageEvent) => any | Promise): CloudFunction; /** * Event handler which fires every time the metadata of an existing object * changes. * * @param opts - Options that can be set on an individual event-handling function. * @param handler - Event handler which is run every time a Google Cloud Storage object metadata update occurs. */ export declare function onObjectMetadataUpdated(opts: StorageOptions, handler: (event: StorageEvent) => any | Promise): CloudFunction;