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

Object Storage Service:イベント通知を使用してオブジェクトの変更をリアルタイムで監視する

最終更新日:Jun 04, 2025

リアルタイム処理、同期、リスニング、ビジネスロジックトリガー、ロギングなど、さまざまな目的で Object Storage Service (OSS) 内のオブジェクトの変更を監視したい場合があります。 イベント通知ルールを設定してオブジェクトを監視し、通知を受信できます。 このようにして、できるだけ早く適切なアクションを実行できます。

前提条件

Simple Message Queue (SMQ) がアクティブ化されています。 SMQ product page で SMQ をアクティブ化できます。

使用上の注意

  • イベント通知では、OSS と SMQ が連携して動作する必要があります。 OSS リソースに対して操作が実行されると、SMQ がメッセージを送信するためのイベント通知ルールがトリガーされます。 SMQ がメッセージを送信するようにトリガーされない場合があります。 レスポンスの x-oss-event-status ヘッダーの値 (Base64 エンコード) を確認して、SMQ がトリガーされたかどうかを判断できます。 x-oss-event-status ヘッダーのデコードされた値が {"Result": "Ok"} の場合、SMQ はトリガーされます。 x-oss-event-status ヘッダーのデコードされた値が {"Result": "Ok"} でない場合、SMQ はトリガーされません。

  • イベント通知機能を使用すると、SMQ によって課金されます。 詳細については、「請求の概要」をご参照ください。

  • 次のリージョンにあるバケット内のオブジェクトに対してイベント通知ルールを設定できます:中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (深セン)、中国 (成都)、中国 (香港)、米国 (シリコンバレー)、米国 (バージニア)、日本 (東京)、シンガポール、インドネシア (ジャカルタ)、フィリピン (マニラ)、ドイツ (フランクフルト)、英国 (ロンドン)

  • 1 つのリージョンで最大 10 個のイベント通知ルールを設定できます。 10 個を超えるイベント通知ルールが必要な場合は、technical support にお問い合わせください。

  • リアルタイムメッセージングプロトコル (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

ライフサイクルルールに基づいて、オブジェクトのストレージクラスが変換されます。 たとえば、オブジェクトのストレージクラスは、標準から IA、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブに変換されます。

ObjectModified:ChangeStorageClass

ObjectCreatedGroup

オブジェクトの作成または上書き操作が実行されます。

通知内のイベント名は、選択したアップロード方法に応じて、ObjectCreated: で始まる任意のイベントにすることができます。 たとえば、シンプルアップロードを実行して OSS 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": "", // 次の形式のバケットの Alibaba Cloud Resource Name (ARN):acs:oss:region:uid:bucketname。
                "name": "", // イベント通知ルールが適用されるオブジェクトを含むバケットの名前。
                "ownerIdentity": "" // バケットの所有者。
            }, 
            "object": {
                "deltaSize": "", // 新しいオブジェクトと元のオブジェクトのサイズの違い。 オブジェクトが作成されると、このパラメーターの値はオブジェクトのサイズを示します。 オブジェクトが上書きされると、値は新しいオブジェクトと元のオブジェクトのサイズの差を示します。 値は負になる場合があります。
                "eTag": "", // オブジェクトの ETag 値。
                "key": "", // オブジェクトの名前。
                "position": "", // AppendObject 操作が開始される位置。 このパラメーターは、ObjectCreated:AppendObject イベントにのみ適用されます。 オブジェクトに対する最初の AppendObject 操作は、オブジェクトのバイト 0 から開始されます。
                "readFrom": "", // GetObject 操作が開始される位置。 このパラメーターは、ObjectDownloaded:GetObject イベントにのみ適用されます。 GetObject 操作が範囲によって実行されない場合、このパラメーターの値は 0 です。 それ以外の場合、値は GetObject 操作が開始されるバイトの位置を参照します。
                "readTo": "", // GetObject 操作が終了する位置。 このパラメーターは、ObjectDownloaded:GetObject イベントにのみ適用されます。 GetObject 操作が範囲によって実行されない場合、このパラメーターの値はオブジェクトサイズです。 それ以外の場合、値は GetObject 操作が終了するバイトの後の最初のバイトの位置を参照します。
                "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. ルールの作成 パネルで、次の表に示すパラメーターを設定します。

    パラメーター

    説明

    スタイル名

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

    イベント通知ルール名は、Alibaba Cloud アカウント内のリージョン内で一意である必要があります。 名は文字で始まり、文字、数字、およびハイフン (-) のみを含めることができます。 名は 85 文字を超えることはできません。

    イベントタイプ

    REST API を使用すると、WordPress データをさまざまな方法で操作できます。たとえば、新しい投稿を作成したり、既存の投稿を更新したり、投稿を削除したりできます。詳細については、「WordPress REST API ハンドブック」をご参照ください。

    特定のオブジェクトに対してイベント通知ルールを設定し、ルールをトリガーできる複数のイベントを指定できます。 1 つのオブジェクトに対して複数のイベント通知ルールを設定することもできます。 複数のイベント通知ルールを設定する場合は、次の点に注意してください。

    • 複数のイベント通知ルールが同じオブジェクトに適用される場合、これらのルールで設定されているイベントは異なっている必要があります。たとえば、images プレフィックスを含む名前のオブジェクトのイベント通知ルールを作成するときに、イベントタイプに CopyObject を選択した場合、同じプレフィックスを含む名前のオブジェクトに適用される別のイベント通知ルールを作成するときに、イベントタイプに CopyObject を選択することはできません。

    • 複数のイベント通知ルールが異なるオブジェクトに適用される場合、これらのルールにおけるこのパラメーターの値は同じでも異なっていてもかまいません。たとえば、images プレフィックスと .png 拡張子を含む名前のオブジェクトのイベント通知ルールを作成するときに、イベントタイプに PutObject を選択した場合、log プレフィックスと .jpg 拡張子を含む名前のオブジェクトに適用される別のイベント通知ルールを作成するときに、イベントタイプに PutObject または DeleteObject を選択できます。

    重要

    WordPress 5.0 以降では、新しいブロックエディターである Gutenberg が導入されています。

    詳細については、「イベント」をご参照ください。

    リソースの説明

    イベント通知ルールを適用するオブジェクトを指定します。

    • フルネーム を選択して、指定された名前と同じ名前のオブジェクトにルールを適用します。

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

      • バケットのルートディレクトリ内の destdir ディレクトリにある myphoto.jpg という名前のオブジェクトに適用されるルールを作成するには、destdir/myphoto.jpg と入力します。

    • プレフィックス / サフィックス を選択して、名前に特定のプレフィックスと拡張子が含まれるオブジェクトにルールを適用します。

      • バケット内のすべてのオブジェクトに適用されるルールを作成するには、プレフィックスとサフィックスを空のままにします。

      • バケットのルートディレクトリ内の examplefolder ディレクトリにあるすべてのオブジェクトに適用されるルールを作成するには、プレフィックスを examplefolder/ に設定し、サフィックスを空のままにします。

      • バケット内のすべての JPG オブジェクトに適用されるルールを作成するには、プレフィックスを空のままにし、サフィックスを .jpg に設定します。

      • バケットのルートディレクトリ内の examplefolder ディレクトリにあるすべての MP3 オブジェクトに適用されるルールを作成するには、プレフィックスを examplefolder/ に設定し、サフィックスを .mp3 に設定します。

    別のリソース記述エントリを追加するには、[追加] をクリックします。 イベント通知ルールには、最大 5 つの リソースの説明 エントリを指定できます。

    エンドポイント

    イベント通知の送信先エンドポイントを指定します。有効な値: [HTTP] および [Queue]

    • HTTP: HTTP エンドポイントを指定します。例: http://198.51.100.1:8080。 HTTP エンドポイントを取得する方法の詳細については、「Topic の管理」および「HttpEndpoint」をご参照ください。

    • キュー: SMQ キューの名前を入力します。キューの作成方法の詳細については、「キューの作成」をご参照ください。

    [追加]エンドポイント このチュートリアルでは、基本的な JavaScript の知識があることを前提としています。

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

    イベント通知ルールを構成した後、ルールは約 10 分後に有効になります。

よくある質問

オブジェクトを削除したときに通知が届かないのはなぜですか?

参考文献