storage-label-images/extension.yaml (138 lines of code) (raw):

name: storage-label-images version: 0.1.7 specVersion: v1beta displayName: Label Images with Cloud Vision AI description: Extracts labels from images and saves to Firestore using Cloud Vision API. license: Apache-2.0 # The license you want for the extension sourceUrl: https://github.com/GoogleCloudPlatform/firebase-extensions/tree/main/storage-label-images releaseNotesUrl: https://github.com/GoogleCloudPlatform/firebase-extensions/tree/main/storage-label-images/CHANGELOG.md icon: icon.png tags: [ ai, videos, cloud-vision, image-recognition, image-classification, google-ai, cloud-vision-api, ] author: authorName: Google Cloud url: https://cloud.google.com/ billingRequired: true apis: - apiName: vision.googleapis.com reason: Powers all Vision tasks performed by the extension. resources: - name: labelImage type: firebaseextensions.v1beta.function description: Listens to incoming Storage documents, executes image labeling on them and writes labels back to Storage into a preconfigured location. properties: location: ${param:LOCATION} availableMemoryMb: 1024 eventTrigger: eventType: google.storage.object.finalize resource: projects/_/buckets/${param:IMG_BUCKET} runtime: nodejs20 params: - param: LOCATION label: Cloud Functions location description: >- Where do you want to deploy the functions created for this extension? You usually want a location close to your database. Realtime Database instances are located in `us-central1`. For help selecting a location, refer to the [location selection guide](https://firebase.google.com/docs/functions/locations). type: select options: - label: Iowa (us-central1) value: us-central1 - label: South Carolina (us-east1) value: us-east1 - label: Northern Virginia (us-east4) value: us-east4 - label: Belgium (europe-west1) value: europe-west1 - label: London (europe-west2) value: europe-west2 - label: Frankfurt (europe-west3) value: europe-west3 - label: Hong Kong (asia-east2) value: asia-east2 - label: Tokyo (asia-northeast1) value: asia-northeast1 default: us-central1 required: true immutable: true - param: IMG_BUCKET label: Cloud Storage bucket for images description: > To which Cloud Storage bucket will you upload images on which you want to perform labelling? type: string example: my-project-12345.appspot.com validationRegex: ^([0-9a-z_.-]*)$ validationErrorMessage: Invalid storage bucket default: ${STORAGE_BUCKET} required: true - param: INCLUDE_PATH_LIST label: Paths that contain images you want to label description: > Restrict storage-image-labeling to only label images in specific locations in your Storage bucket by supplying a comma-separated list of absolute paths. For example, specifying the paths `/users/pictures,/restaurants/menuItems` will label any images found in any subdirectories of `/users/pictures` and `/restaurants/menuItems`. You may also use wildcard notation for directories in the path. For example, `/users/*/pictures` would include any images in any subdirectories of `/users/foo/pictures` as well as any images in subdirectories of `/users/bar/pictures`, but also any images in subdirectories of `/users/any/level/of/subdirectories/pictures`. If you prefer not to explicitly exclude any directories of your Storage bucket, leave this field empty. type: string example: '/users/avatars,/design/pictures' validationRegex: ^(\/[^\s\/\,]+)+(\,(\/[^\s\/\,]+)+)*$ validationErrorMessage: Invalid paths, must be a comma-separated list of absolute path values. required: false - param: EXCLUDE_PATH_LIST label: List of absolute paths not included for labelled images description: > Ensure storage-image-labeling does *not* label images in _specific locations_ in your Storage bucket by supplying a comma-separated list of absolute paths. For example, to *exclude* the images stored in the `/foo/alpha` and its subdirectories and `/bar/beta` and its subdirectories, specify the paths `/foo/alpha,/bar/beta`. You may also use wildcard notation for directories in the path. For example, `/users/*/pictures` would exclude any images in any subdirectories of `/users/foo/pictures` as well as any images in subdirectories of `/users/bar/pictures`, but also any images in subdirectories of `/users/any/level/of/subdirectories/pictures`. If you prefer to label every image uploaded to your Storage bucket, leave this field empty. type: string example: '/users/avatars/thumbs,/design/pictures/thumbs' validationRegex: ^(\/[^\s\/\,]+)+(\,(\/[^\s\/\,]+)+)*$ validationErrorMessage: Invalid paths, must be a comma-separated list of absolute path values. required: false - param: COLLECTION_PATH label: Collection path description: > What is the path to the collection where labels will be written to? example: imageLabels validationRegex: '^[^/]+(/[^/]+/[^/]+)*$' validationErrorMessage: Must be a valid Cloud Firestore Collection default: imageLabels required: true - param: LABEL_MODE label: Amount of label information to write to firestore. description: > How much label information should be written to firestore? Do you want just the label descriptions written to firestore, or the full label annotation? Select \"basic\" for the former, \"full\" for the later. type: select options: - label: Basic value: basic - label: Full value: full default: basic required: true roles: - role: storage.objectAdmin reason: Allows the extension to write to your Cloud Storage. - role: datastore.user reason: Allows the extension to write to your Firestore Database instance.