Creating a trigger for Object Storage
Create a trigger for Object Storage that will run your function when you create, move, or delete an object in the bucket.
To create a trigger, you need:
- Functions that the trigger will call. If you don't have a function:
- A bucket whose object events will fire the trigger. If you don't have a bucket, create one.
- The Dead Letter Queue where messages that the function couldn't process are moved. If you don't have a queue, create one.
- A service account with rights for function call. If you don't have a service account, create one.
Creating a trigger
Note
The trigger is initiated within 5 minutes of being created.
Management console
CLI
API
- In the management console, go to the folder where you want to create a trigger.
- Open Cloud Functions.
- Go to the Triggers tab.
- Click Create trigger.
- Under Basic parameters:
- Enter a name and description for the trigger.
- In the Type field, select Object Storage.
- Under Object Storage settings:
- In the Bucket field, select the bucket whose object events you want to create a trigger for.
- In the Event types field, select the events that will trigger the trigger.
- (optional) In the Object key prefix field, enter a prefix for filtering.
- (optional) In the Object key suffix field, enter a suffix for filtering.
- Under Function settings:
- Select the function for the trigger to call.
- Specify the function version tag.
- Specify the service account to be used to call the function.
- Under Repeat request settings:
- In the Interval field, specify the time after which the function will be invoked again if the current attempt fails. Acceptable values are from 10 to 60 seconds.
- In the Number of attempts field, specify the number of invocation retries before the trigger moves a message to the Dead Letter Queue. Acceptable values are from 1 to 5.
- Under Dead Letter Queue settings, select the Dead Letter Queue and service account with rights to write messages to it.
- Click Create trigger.
If you don't have the Yandex.Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To create a trigger, run the command:
yc serverless trigger create object-storage \
--name <trigger name> \
--bucket-id <bucket name> \
--prefix '<object key prefix>' \
--suffix '<object key suffix>' \
--events 'create-object','delete-object','update-object' \
--invoke-function-id <function ID> \
--invoke-function-service-account-id <service account ID> \
--retry-attempts 1 \
--retry-interval 10s \
--dlq-queue-id <Dead Letter Queue ID> \
--dlq-service-account-id <service account ID>
where:
--name
: Timer name.--bucket-id
: Bucket ID.--prefix
: Prefix of the bucket object key. Used for filtering.--suffix
: Suffix of the bucket object key. Used for filtering.--events
: Events that will trigger the trigger.--invoke-function-id
: Function ID.--invoke-function-service-account-id
: Service account with rights to call the function.--retry-attempts
: The time after which the function will be invoked again if the current attempt fails. Values can be from 10 to 60 seconds. The default is 10 seconds.--retry-interval
: The number of invocation retries before the trigger moves a message to the Dead Letter Queue. Values can be from 1 to 5. The default is 1.--dlq-queue-id
: ID of the Dead Letter Queue.--dlq-service-account-id
: Service account with rights to write messages to the Dead Letter Queue.
Result:
id: a1s92agr8mpgeo3kjt48
folder_id: b1g88tflru0ek1omtsu0
created_at: "2019-12-18T09:47:50.079103Z"
name: os-trigger
rule:
object_storage:
event_type:
- OBJECT_STORAGE_EVENT_TYPE_CREATE_OBJECT
- OBJECT_STORAGE_EVENT_TYPE_DELETE_OBJECT
- OBJECT_STORAGE_EVENT_TYPE_UPDATE_OBJECT
bucket_id: s3-for-trigger
prefix: dev
suffix: 12.jpg
invoke_function:
function_id: d4eofc7n0m03lmudsk7y
function_tag: $latest
service_account_id: aje3932acd0c5ur7drte
retry_settings:
retry_attempts: "1"
interval: 10s
dead_letter_queue:
queue-id: yrn:yc:ymq:ru-central1:aoek49ghmknnpj1ll45e:dlq
service-account-id: aje3932acd0c5ur7dagp
status: ACTIVE
You can create a trigger for Object Storage using the create API method.
Checking the result
Make sure the trigger is working properly. To do this, view the function logs that show information about its invocations.