이벤트 구독 (Event subscriptions)
Cloudflare Queues를 사용해 R2 버킷 이벤트와 Super Slurper 이벤트를 구독할 수 있어요.
출처: 문서
본문
이벤트 구독(Event subscriptions)을 사용하면 Cloudflare 계정 전체에서 이벤트가 발생할 때 메시지를 받을 수 있어요. Cloudflare 제품(예: KV, Workers AI, Workers)은 구조화된 이벤트를 Queue에 게시할 수 있고, 이후 Workers 또는 HTTP pull consumers로 그 이벤트를 소비해 맞춤형 워크플로우·통합·로직을 구축할 수 있어요.
이벤트 구독에 대한 자세한 내용은 관리 가이드를 참고하세요.
사용 가능한 R2 이벤트 (Available R2 events)
bucket.created
버킷이 생성될 때 트리거돼요.
예시:
{
"type": "cf.r2.bucket.created",
"source": {
"type": "r2"
},
"payload": {
"name": "my-bucket",
"jurisdiction": "default",
"location": "WNAM",
"storageClass": "Standard"
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}
bucket.deleted
버킷이 삭제될 때 트리거돼요.
예시:
{
"type": "cf.r2.bucket.deleted",
"source": {
"type": "r2"
},
"payload": {
"name": "my-bucket",
"jurisdiction": "default"
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}
사용 가능한 Super Slurper 이벤트 (Available Super Slurper events)
job.started
마이그레이션 작업(job)이 시작될 때 트리거돼요.
예시:
{
"type": "cf.superSlurper.job.started",
"source": {
"type": "superSlurper"
},
"payload": {
"id": "job-12345678-90ab-cdef-1234-567890abcdef",
"createdAt": "2025-05-01T02:48:57.132Z",
"overwrite": true,
"pathPrefix": "migrations/",
"source": {
"provider": "s3",
"bucket": "source-bucket",
"region": "us-east-1",
"endpoint": "s3.amazonaws.com"
},
"destination": {
"provider": "r2",
"bucket": "destination-bucket",
"jurisdiction": "default"
}
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}
job.paused
마이그레이션 작업이 일시정지될 때 트리거돼요.
예시:
{
"type": "cf.superSlurper.job.paused",
"source": {
"type": "superSlurper"
},
"payload": {
"id": "job-12345678-90ab-cdef-1234-567890abcdef"
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}
job.resumed
마이그레이션 작업이 다시 시작될 때 트리거돼요.
예시:
{
"type": "cf.superSlurper.job.resumed",
"source": {
"type": "superSlurper"
},
"payload": {
"id": "job-12345678-90ab-cdef-1234-567890abcdef"
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}
job.completed
마이그레이션 작업이 완료될 때 트리거돼요.
예시:
{
"type": "cf.superSlurper.job.completed",
"source": {
"type": "superSlurper"
},
"payload": {
"id": "job-12345678-90ab-cdef-1234-567890abcdef",
"totalObjectsCount": 1000,
"skippedObjectsCount": 10,
"migratedObjectsCount": 980,
"failedObjectsCount": 10
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}
job.aborted
마이그레이션 작업이 수동으로 중단될 때 트리거돼요.
예시:
{
"type": "cf.superSlurper.job.aborted",
"source": {
"type": "superSlurper"
},
"payload": {
"id": "job-12345678-90ab-cdef-1234-567890abcdef",
"totalObjectsCount": 1000,
"skippedObjectsCount": 100,
"migratedObjectsCount": 500,
"failedObjectsCount": 50
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}
job.object.migrated
객체가 마이그레이션될 때 트리거돼요.
예시:
{
"type": "cf.superSlurper.job.object.migrated",
"source": {
"type": "superSlurper.job",
"jobId": "job-12345678-90ab-cdef-1234-567890abcdef"
},
"payload": {
"key": "migrations/file.txt"
},
"metadata": {
"accountId": "f9f79265f388666de8122cfb508d7776",
"eventSubscriptionId": "1830c4bb612e43c3af7f4cada31fbf3f",
"eventSchemaVersion": 1,
"eventTimestamp": "2025-05-01T02:48:57.132Z"
}
}