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

Object Storage Service:イベント通知を使用して OSS ファイルの変更をリアルタイムで処理する

最終更新日:Nov 05, 2025

イベント通知を使用して、データ同期、変更のモニタリング、ビジネスロジックのトリガー、またはログの記録のために OSS のファイル変更をリアルタイムで処理します。イベント通知ルールを設定して、特定のファイルをモニタリングし、それらに関する通知を受信できます。

前提条件

Simple Message Queue (SMQ) (旧称:MNS) が有効化されていることを確認してください。SMQ を有効化するには、SMQ 製品ページにアクセスしてください。

注意事項

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

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

  • バケットのイベント通知をサポートするリージョンのリストについては、「サポートされているリージョン」をご参照ください。

  • リージョンごとに最大 10 個のイベント通知ルールを設定できます。ビジネスでさらに多くのルールが必要な場合は、テクニカルサポートにお問い合わせください。

  • RTMP アップストリーミングによって生成された TS ファイルと M3U8 ファイルは、イベント通知ルールをトリガーしません。RTMP アップストリーミングの詳細については、「LiveChannel 操作」をご参照ください。

仕組み

イベント通知ルールを作成した後、OSS へのリクエストがルールをトリガーすると、SMQ は通知を送信します。操作に関する情報を含む通知は、設定した HTTP サーバーまたは SMQ キューに送信されます。次の図は、このプロセスを示しています。

イベントタイプ

重要

`ObjectCreatedGroup`、`ObjectDownloadedGroup`、および `ObjectRemovedGroup` イベントタイプは、次のリージョンでサポートされています:中国 (香港)、米国 (シリコンバレー)、米国 (バージニア)、ドイツ (フランクフルト)、シンガポール、および英国 (ロンドン)。

設定されたイベントタイプ

説明

通知で返されるイベント名

PutObject

シンプルアップロードを使用してファイルを作成または上書きします。

ObjectCreated:PutObject

PostObject

フォームアップロードを使用してファイルを作成または上書きします。

ObjectCreated:PostObject

CopyObject

オブジェクトをコピーしてファイルを作成または上書きします。

ObjectCreated:CopyObject

InitiateMultipartUpload

マルチパートアップロードタスクを初期化します。

ObjectCreated:InitiateMultipartUpload

UploadPart

パートをアップロードしてファイルを作成または上書きします。

ObjectCreated:UploadPart

UploadPartCopy

パートをコピーしてファイルを作成または上書きします。

ObjectCreated:UploadPartCopy

CompleteMultipartUpload

マルチパートアップロードを完了します。

ObjectCreated:CompleteMultipartUpload

AbortMultipartUpload

マルチパートアップロードタスクを中止し、パートを削除します。

ObjectRemoved:AbortMultipartUpload

AppendObject

追加アップロードを使用してファイルを作成または追加します。

ObjectCreated:AppendObject

GetObject

シンプルダウンロードを使用してファイルを取得します。

ObjectDownloaded:GetObject

DeleteObject

単一のオブジェクトを削除します。

ObjectRemoved:DeleteObject

DeleteObjects

複数のオブジェクトを削除します。

ObjectRemoved:DeleteObjects

ObjectReplication:ObjectCreated

データレプリケーション中の書き込み操作。

ObjectReplication:ObjectCreated

ObjectReplication:ObjectRemoved

データレプリケーション中の削除操作。

ObjectReplication:ObjectRemoved

ObjectReplication:ObjectModified

データレプリケーション中の変更操作。

ObjectReplication:ObjectModified

ObjectModified:ChangeStorageClass

ライフサイクルルールによってトリガーされるストレージクラスのトランジション操作。たとえば、標準ストレージから低頻度アクセス、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブへのトランジションなど。

ObjectModified:ChangeStorageClass

ObjectCreatedGroup

ファイルを作成または上書きするすべての操作。

通知で返されるイベント名は、アップロードメソッドに応じて `ObjectCreated:` で始まる任意のイベントになります。たとえば、SDK を使用したシンプルアップロードでファイルをアップロードする場合、イベント名は `ObjectCreated:PutObject` です。OSS コンソールでファイルをアップロードする場合、イベント名は `ObjectCreated:PostObject` です。

ObjectDownloadedGroup

ファイルを取得するすべての操作。

通知で返されるイベント名は、ダウンロードメソッドに応じて `ObjectDownloaded:` で始まる任意のイベントになります。たとえば、シンプルダウンロードを使用してファイルを取得する場合、イベント名は `ObjectDownloaded:GetObject` です。

ObjectRemovedGroup

ファイルを削除するすべての操作。

通知で返されるイベント名は、削除メソッドに応じて `ObjectRemoved:` で始まる任意のイベントになります。たとえば、単一のオブジェクトを削除する場合、イベント名は `ObjectRemoved:DeleteObject` です。バッチで複数のオブジェクトを削除する場合、イベント名は `ObjectRemoved:DeleteObjects` です。

FinishRestore

解凍操作を完了します。このイベントタイプは、コールドアーカイブおよびディープコールドアーカイブオブジェクトでのみサポートされます。

ObjectRestore:FinishRestore

メッセージ通知

OSS イベント通知メッセージのコンテンツは Base64 でエンコードされています。デコード後、コンテンツは JSON 形式になります。メッセージのコンテンツは次のように構成されています:

{"events": [
      {
        "eventName": "",  // イベント通知タイプ。
        "eventSource": "", // イベント通知のソース。値は "acs:oss" に固定されています。
        "eventTime": "", // ISO 8601 形式のイベント時間。
        "eventVersion": "", // イベント通知のバージョン。現在のバージョンは "1.0" です。
        "oss": {
            "bucket": {
                "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:vallback-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:vallback-var2":"value2"
            }
        }        
     }
  ]
}

手順

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

  2. 左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

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

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

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

    パラメーター

    説明

    スタイル名

    イベント通知ルールの名前。

    ルール名は、同じアカウントの同じリージョン内で一意である必要があります。名前は文字で始まる必要があり、大文字、小文字、数字、ハイフン (-) を含めることができます。長さは 85 文字を超えることはできません。

    イベントタイプ

    宛先オブジェクトのイベントタイプ。たとえば、コピー操作によって宛先オブジェクトが作成または上書きされたときにイベント通知を受信したい場合は、イベントタイプを `CopyObject` に設定します。

    宛先オブジェクトに対して 1 つのイベント通知ルールを設定し、そのルールで複数のイベントタイプを指定できます。また、宛先オブジェクトに対して複数のイベント通知ルールを設定することもできます。複数のルールを設定する際は、次の点に注意してください:

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

    • 複数のルールが異なる宛先オブジェクトに適用される場合、イベントタイプは同じでも異なっていてもかまいません。たとえば、ルール A がプレフィックス images とサフィックス .png を持つオブジェクトの `PutObject` イベントで設定され、ルール B がプレフィックス log とサフィックス .jpg を持つオブジェクトに適用される場合、ルール B のイベントタイプは `PutObject` または `DeleteObject` にすることができます。

    重要

    バージョン管理が有効なバケットからバージョン ID を指定せずにオブジェクトを削除しても、`DeleteObject` または `DeleteObjects` イベント通知はトリガーされません。これは、デフォルトの削除動作ではどのオブジェクトバージョンも削除されないためです。代わりに、オブジェクトの現在のバージョンを以前のバージョンに変換し、削除マーカーを追加します。

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

    オブジェクトのマッチング

    イベント通知をトリガーする宛先オブジェクト。

    • フルネーム で宛先オブジェクトを照合

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

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

    • プレフィックス / サフィックス で宛先オブジェクトを照合

      • バケット内のすべてのオブジェクトを照合するには、プレフィックスとサフィックスを空のままにします。

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

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

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

    [条件を追加] ボタンをクリックして、最大 5 つの リソースの説明 オブジェクトマッチング ルールを作成します。

    サブスクリプションエンドポイント

    イベントを受信するエンドポイント。HTTPキュー などのサブスクリプションタイプがサポートされています。

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

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

よくある質問

ファイルを削除してもイベント通知がトリガーされないのはなぜですか?

関連ドキュメント