すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:イベント通知による OSS オブジェクトのリアルタイム変更処理

最終更新日:May 08, 2026

OSS 内のオブジェクトに対して、リアルタイムで処理・同期・モニタリング・ビジネスワークフローのトリガー、または変更ログの記録を行う必要がある場合は、イベント通知ルールを設定できます。このルールにより、監視対象のオブジェクトを指定し、関連イベントが発生した際に迅速に通知を受け取ることができます。

前提条件

Simple メッセージキュー (SMQ) を有効化しました。SMQ は、SMQ 製品ページで有効化できます。

注意事項

  • イベント通知機能では、OSS と SMQ 間で呼び出しが行われます。OSS の操作がイベント通知ルールをトリガーすると、OSS は SMQ に通知メッセージの送信を指示します。この OSS から SMQ への呼び出しが失敗する可能性があります。応答の x-oss-event-status ヘッダーの値を確認することで、通知が正常にトリガーされたかどうかを判断できます。この値は Base64 エンコードされています。デコード後の値が {"Result": "Ok"} の場合、SMQ への呼び出しは成功しています。デコード後の値が {"Result": "Ok"} でない場合、SMQ への呼び出しは失敗しています。

  • イベント通知機能の利用には、SMQ の料金が発生します。詳細については、「課金」をご参照ください。

  • バケットに対してイベント通知を設定可能なリージョンの一覧については、「サポートされているリージョン」をご参照ください。

  • 各リージョンで設定可能なイベント通知ルールの上限は 10 個です。業務上、これ以上のルールが必要な場合は、テクニカルサポートにお問い合わせください。

  • リアルタイムメッセージングプロトコル (RTMP) ストリームから生成される TS および M3U8 オブジェクトは、イベント通知ルールをトリガーしません。RTMP ストリーミングの詳細については、「LiveChannel 関連操作」をご参照ください。

仕組み

イベント通知ルールを作成後、ご利用の OSS バケットに対する操作がそのルールをトリガーすると、SMQ は指定された HTTP サーバーまたは SMQ キューにイベントに関するメッセージを送信します。以下の図はこのプロセスを示しています。

イベントタイプ

グループ

タイプ

説明

ObjectCreated (オブジェクト作成)

ObjectCreated:PutObject

PutObject 操作によってオブジェクトがアップロードされました。詳細については、「PutObject」をご参照ください。

ObjectCreated:PostObject

PostObject 操作によってオブジェクトがアップロードされました。詳細については、「PostObject」をご参照ください。

ObjectCreated:CopyObject

オブジェクトがコピーされました。詳細については、「CopyObject」をご参照ください。

ObjectCreated:AppendObject

データを追加してオブジェクトがアップロードされました。詳細については、「AppendObject」をご参照ください。

ObjectCreated:InitiateMultipartUpload

フラグメントアップロードタスクが開始されました。詳細については、「InitiateMultipartUpload」をご参照ください。

ObjectCreated:UploadPart

フラグメントアップロードタスクの一部がアップロードされました。詳細については、「UploadPart」をご参照ください。

ObjectCreated:UploadPartCopy

フラグメントアップロードタスクの一部がコピーされました。詳細については、「UploadPartCopy」をご参照ください。

ObjectCreated:CompleteMultipartUpload

フラグメントアップロードタスクが完了しました。詳細については、「CompleteMultipartUpload」をご参照ください。

ObjectCreated:PutSymlink

オブジェクトのシンボリックリンクが作成されました。詳細については、「PutSymlink」をご参照ください。

ObjectCreated:Mirror

ミラーリングによってオブジェクトが作成されました。

説明

デフォルトでは、OSS のミラーリングは ObjectCreated:PutObject イベントをトリガーします。代わりに ObjectCreated:Mirror イベントをトリガーするには、チケットを送信してこの機能を有効化する必要があります。

ObjectCreated:*

ObjectCreated: で始まるすべてのイベント。

説明

このワイルドカードは、将来的に ObjectCreated カテゴリに追加される新しいイベントタイプ(例:ObjectCreated:test)も自動的に含みます。

ObjectDownloaded (オブジェクトダウンロード)

ObjectDownloaded:GetObject

オブジェクトがダウンロードされました。

ObjectModified (オブジェクト変更)

ObjectModified:UpdateObjectMeta

UpdateObjectMeta 操作によってオブジェクトのメタデータが変更されました。

ObjectModified:ChangeStorageClass

ライフサイクルルールによってオブジェクトのストレージクラスが変更されました。

ObjectModified:*

ObjectModified: で始まるすべてのイベント。

説明

このワイルドカードは、将来的に ObjectModified カテゴリに追加される新しいイベントタイプ(例:ObjectModified:test)も自動的に含みます。

ObjectRemoved (オブジェクト削除)

ObjectRemoved:DeleteObject

単一のオブジェクトが削除されました。詳細については、「DeleteObject」をご参照ください。

ObjectRemoved:DeleteObjects

複数のオブジェクトが削除されました。詳細については、「DeleteMultipleObjects」をご参照ください。

ObjectRemoved:AbortMultipartUpload

フラグメントアップロードタスクが中止され、そのパーツが削除されました。詳細については、「AbortMultipartUpload」をご参照ください。

ObjectRemoved:*

ObjectRemoved: で始まるすべてのイベント。

説明

このワイルドカードは、将来的に ObjectRemoved カテゴリに追加される新しいイベントタイプ(例:ObjectRemoved:test)も自動的に含みます。

ObjectReplication (オブジェクトレプリケーション)

ObjectReplication:ObjectCreated

データレプリケーションプロセスの一部として書き込み操作が実行されました。

ObjectReplication:ObjectRemoved

データレプリケーションプロセスの一部として削除操作が実行されました。

ObjectReplication:ObjectModified

データレプリケーションプロセスの一部として上書き操作が実行されました。

ObjectReplication:*

ObjectReplication: で始まるすべてのイベント。

説明

このワイルドカードは、将来的に ObjectReplication カテゴリに追加される新しいイベントタイプ(例:ObjectReplication:test)も自動的に含みます。

ObjectRestore (オブジェクト復元)

ObjectRestore:FinishRestore

オブジェクトがアーカイブストレージクラスからアクセス可能な状態に正常に復元されました。このイベントタイプは、コールドアーカイブおよびディープコールドアーカイブストレージクラスのオブジェクトにのみ適用されます。

通知メッセージ

OSS イベント通知には、Base64 エンコードされた JSON ペイロードが含まれています。デコード後のペイロードは、次の構造を持ちます。

{
    "events": [
      {
        "eventName": "",  // イベント通知タイプ。
        "eventSource": "", // イベント通知のソース。この値は固定で "acs:oss" です。
        "eventTime": "", // ISO 8601 形式でのイベント発生時刻。
        "eventVersion": "", // イベント通知のバージョン。現在のバージョンは "1.0" です。
        "oss": {
            "bucket": {
                "arn": "", // バケットの Alibaba Cloud リソースネーム (ARN)。形式:"acs:oss:region:uid:bucketname"。
                "name": "", // 送信先バケット名。
                "ownerIdentity": "" // バケットの所有者。
            }, 
            "object": {
                "deltaSize": "", // オブジェクトサイズの変化量。たとえば、新規オブジェクト作成時はオブジェクトサイズ、上書き時は新旧オブジェクトのサイズ差(負の値もあり得る)。
                "eTag": "", // オブジェクトの ETag。
                "key": "", // オブジェクトキー。
                "position": "", // 追加操作の開始位置。このパラメーターは ObjectCreated:AppendObject イベントにのみ適用されます。オブジェクトに対する最初の AppendObject リクエストはバイト 0 から開始されます。
                "readFrom": "", // 読み取り操作の開始位置。このパラメーターは ObjectDownloaded:GetObject イベントにのみ適用されます。範囲指定なしのリクエストでは 0、範囲指定リクエストではリクエストの開始バイト。
                "readTo": "", // 読み取り操作の終了位置。このパラメーターは ObjectDownloaded:GetObject イベントにのみ適用されます。範囲指定なしのリクエストではオブジェクトサイズ、範囲指定リクエストではリクエスト範囲の終了バイト + 1。
                "size": "" // オブジェクトサイズ。
                }, 
        "ossSchemaVersion": "", // このスキーマのバージョン。現在のバージョンは "1.0" です。
        "ruleId": "GetObject", // 一致したイベント通知ルールの ID。
        "region": "", // バケットのリージョン。
        "requestParameters": {
            "sourceIPAddress": "" // リクエストの送信元 IP アドレス。
            }, 
        "responseElements": {
            "requestId": "" // リクエスト ID。
            }, 
        "userIdentity": {
            "principalId": "" // リクエストを行ったユーザーの UID。
            }, 
        "xVars": {  // OSS アップロードコールバック機能におけるカスタムパラメーター。
            "x:callback-var1":"value1",
            "x:callback-var2":"value2"
            }
        }        
     }
  ]
}

以下は通知メッセージの例です。

{"events": [
      {
        "eventName": "ObjectDownloaded:GetObject",
        "eventSource": "acs:oss",
        "eventTime": "2016-07-01T11:17:30.000Z",
        "eventVersion": "1.0",
        "oss": {
            "bucket": {
                "arn": "acs:oss:cn-shenzhen:114895646818****:event-notification-test-shenzhen",
                "name": "event-notification-test-shenzhen",
                "ownerIdentity": "114895646818****"},
            "object": {
                "deltaSize": 0,
                "eTag": "0CC175B9C0F1B6468E1199E269772661",
                "key": "test",
                "readFrom": 0,
                "readTo": 1,
                "size": 1
            },
        "ossSchemaVersion": "1.0",
        "ruleId": "GetObjectRule",
        "region": "cn-shenzhen",
        "requestParameters": {
            "sourceIPAddress": "198.51.100.1"
            },
        "responseElements": {
            "requestId": "5FF16B65F05BC932307A3C3C"
            },
        "userIdentity": {
            "principalId": "114895646818****"
            },
        "xVars": {
            "x:callback-var1":"value1",
            "x:callback-var2":"value2"
            }
        }        
     }
  ]
}

手順

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケット をクリックします。表示されたページで、対象バケットの名前をクリックします。

  3. 左側のナビゲーションウィンドウで、データ処理 > イベント通知 を選択します。

  4. イベント通知 ページで、ルールの作成 をクリックします。

  5. ルールの作成 パネルで、以下のパラメーターを設定します。

    パラメーター

    説明

    スタイル名

    イベント通知ルールの名前を指定します。

    ルール名は、同一 Alibaba Cloud アカウントの同一リージョン内で一意である必要があります。英字で始まり、大文字・小文字・数字・ハイフン (-) を使用でき、最大 85 文字までです。

    イベントタイプ

    対象オブジェクトのイベントタイプを 1 つ以上選択します。たとえば、オブジェクトが作成またはコピー操作で上書きされた際に通知を受け取る場合は、CopyObject を選択します。

    1 つのルールで複数のイベントタイプを設定することも、同じオブジェクトに対して複数のルールを設定することも可能です。複数のルールを設定する際は、以下の点にご注意ください。

    • 複数のルールが同じ対象オブジェクトに適用される場合、イベントタイプを重複させることはできません。たとえば、ルール A でプレフィックス images に対して CopyObject イベントを設定している場合、ルール B が images プレフィックス配下の任意のオブジェクトに適用される場合、ルール B のイベントタイプに CopyObject を含めることはできません。

    • 複数のルールが異なる対象オブジェクトに適用される場合、イベントタイプは同一でも異なっていても問題ありません。たとえば、ルール A でプレフィックス images かつ拡張子 .png のオブジェクトに対して PutObject イベントを設定しており、ルール B がプレフィックス log かつ拡張子 .jpg のオブジェクトに適用される場合、ルール B のイベントタイプには PutObject や DeleteObject を含めることができます。

    重要

    バージョン管理が有効なバケットからオブジェクトを削除する際、バージョン ID を指定しない場合は DeleteObject または DeleteObjects イベントはトリガーされません。これは、バージョン ID を指定せずに削除操作を実行しても、いずれのオブジェクトバージョンも完全に削除されないためです。代わりに、現在のバージョンが以前のバージョンとなり、削除マーカーが追加されます。

    イベントタイプに対応するオブジェクト操作の詳細については、「イベントタイプ」をご参照ください。

    [Object Matching]

    イベント通知の対象となるオブジェクトを指定します。

    • オブジェクトを フルネーム で一致させます。

      • バケットのルートディレクトリにある exampleobject.txt という名前のオブジェクトを一致させるには、exampleobject.txt と入力します。

      • バケットの destdir ディレクトリにある myphoto.jpg という名前のオブジェクトを一致させるには、destdir/myphoto.jpg と入力します。

    • プレフィックス / サフィックス でオブジェクトを一致させる

      • バケット内のすべてのオブジェクトを一致させるには、プレフィックスとサフィックスの両方を空のままにします。

      • examplefolder ディレクトリ内のすべてのオブジェクトを一致させるには、プレフィックスを examplefolder/ に設定し、サフィックスは空のままにします。

      • バケット内の拡張子が .jpg のすべてのオブジェクトを一致させるには、プレフィックスを空のままにし、サフィックスを .jpg に設定します。

      • examplefolder ディレクトリ内の拡張子が .mp3 のすべてのオブジェクトを一致させるには、プレフィックスを examplefolder/、サフィックスを .mp3 に設定します。

    条件を追加 をクリックすると、最大 5 つの [object matching] ルールを作成できます。

    [Subscription Endpoint]

    イベントを受信するエンドポイントを指定します。サポートされているサブスクリプションタイプは [HTTP] および [Queue] です。

  6. OK をクリックします。

    上記の手順を完了すると、イベント通知ルールは約 10 分以内に有効になります。

よくある質問

オブジェクトを削除してもイベント通知がトリガーされないのはなぜですか?

参考資料