OSS のイベント通知ルールを設定することで、オブジェクトの変更をリアルタイムで処理、同期、監視したり、ビジネスワークフローをトリガーしたり、ログを記録したりできます。監視対象のオブジェクトを指定し、通知を HTTP エンドポイントまたは SMQ キューにルーティングします。
前提条件
Simple Message Queue (SMQ) が有効になっている必要があります。SMQ は、SMQ 製品ページで有効にできます。
注意事項
OSS の操作がイベント通知ルールをトリガーすると、OSS は SMQ を呼び出して通知を送信しますが、この呼び出しは失敗する可能性があります。配信を検証するには、Base64 でエンコードされた
x-oss-event-statusレスポンスヘッダーを確認してください。デコードされた値が{"Result": "Ok"}の場合は、成功を示します。イベント通知には SMQ の料金が発生します。課金をご参照ください。
イベント通知は特定のリージョンでのみ利用可能です。
リージョンごとに最大 10 個のイベント通知ルールを設定できます。この上限を引き上げるには、テクニカルサポートにお問い合わせください。
Real-Time Messaging Protocol (RTMP) ストリームから生成された TS および M3U8 オブジェクトでは、イベント通知ルールはトリガーされません。LiveChannel 関連の操作をご参照ください。
仕組み
バケットでの操作がイベント通知ルールをトリガーすると、SMQ は指定された HTTP エンドポイントまたはキューに通知を送信します。
イベントタイプ
|
グループ |
タイプ |
説明 |
|
ObjectCreated (オブジェクトの作成) |
ObjectCreated:PutObject |
オブジェクトをアップロードします。 PutObject。 |
|
ObjectCreated:PostObject |
フォームベースの POST を介してオブジェクトをアップロードします。 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 ミラーリングによってオブジェクトが作成されます。 説明
デフォルトでは、OSS ミラーリングは ObjectCreated:PutObject をトリガーします。代わりに ObjectCreated:Mirror を使用するには、チケットを送信してください。 |
|
|
ObjectCreated:* |
説明
このワイルドカードは、ObjectCreated に属する現在および将来のすべてのイベントタイプをカバーします。 |
|
|
ObjectDownloaded (オブジェクトのダウンロード) |
ObjectDownloaded:GetObject |
オブジェクトがダウンロードされます。 |
|
ObjectModified (オブジェクトの変更) |
ObjectModified:UpdateObjectMeta |
UpdateObjectMeta によってオブジェクトのメタデータが変更されます。 |
|
ObjectModified:ChangeStorageClass |
ライフサイクルルールによってオブジェクトのストレージクラスが変更されます。 |
|
|
ObjectModified:* |
説明
このワイルドカードは、ObjectModified に属する現在および将来のすべてのイベントタイプをカバーします。 |
|
|
ObjectRemoved (オブジェクトの削除) |
ObjectRemoved:DeleteObject |
単一のオブジェクトを削除します。 DeleteObject。 |
|
ObjectRemoved:DeleteObjects |
複数のオブジェクトを削除します。 DeleteMultipleObjects。 |
|
|
ObjectRemoved:AbortMultipartUpload |
マルチパートアップロードを中止し、そのパートを削除します。 AbortMultipartUpload。 |
|
|
ObjectRemoved:* |
説明
このワイルドカードは、ObjectRemoved に属する現在および将来のすべてのイベントタイプをカバーします。 |
|
|
ObjectReplication (オブジェクトのレプリケーション) |
ObjectReplication:ObjectCreated |
データレプリケーションの一環として書き込み操作が発生します。 |
|
ObjectReplication:ObjectRemoved |
データレプリケーションの一環として削除操作が発生します。 |
|
|
ObjectReplication:ObjectModified |
データレプリケーションの一環として上書き操作が発生します。 |
|
|
ObjectReplication:* |
説明
このワイルドカードは、ObjectReplication に属する現在および将来のすべてのイベントタイプをカバーします。 |
|
|
ObjectRestore (オブジェクトの復元) |
ObjectRestore:FinishRestore |
オブジェクトがアーカイブストレージから復元されます。Cold Archive および Deep Cold Archive オブジェクトにのみ適用されます。 |
通知メッセージ
各イベント通知には、以下の構造の 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": "GetObjectRule", // 一致したイベント通知ルールの ID
"region": "", // バケットのリージョン
"requestParameters": {
"sourceIPAddress": "" // リクエストのソース IP アドレス
},
"responseElements": {
"requestId": "" // リクエスト ID
},
"userIdentity": {
"principalId": "" // リクエストを行ったプリンシパルの ID
},
"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"
}
}
}
]
}操作手順
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションペインで、データ処理 > イベント通知 を選択します。
イベント通知 ページで、ルールの作成 をクリックします。
ルールの作成 パネルで、以下のパラメーターを設定します:
パラメータ
説明
[スタイル名]
イベント通知ルールの名前を指定します。
名前は、リージョンとアカウントごとに一意である必要があります。名前は文字で始まり、大文字、小文字、数字、ハイフン (-) を含めることができ、最大 85 文字です。
[イベントタイプ]
1 つ以上のイベントタイプを選択します。たとえば、コピー操作によってオブジェクトが作成または上書きされたときに通知を受け取るには、CopyObject を選択します。
1 つのルールに複数のイベントタイプを含めることができます。複数のルールを設定する場合は、以下の点に注意してください。
同じオブジェクトに一致するルールは、イベントタイプを共有できません。たとえば、ルール A がプレフィックス
imagesに対して CopyObject を使用する場合、同じプレフィックスimagesのルール B は CopyObject を含めることはできません。異なるオブジェクトに一致するルールで、イベントタイプを共有できます。たとえば、ルール A はプレフィックス
imagesとサフィックス.pngに PutObject を使用し、ルール B はプレフィックスlogとサフィックス.jpgに PutObject または DeleteObject を使用します。
重要バージョニングが有効なバケットでは、バージョン ID を省略した場合、DeleteObject または DeleteObjects イベントはトリガーされません。これは、操作がオブジェクトを完全に削除するのではなく、削除マーカーを追加するためです。現在のバージョンは旧バージョンになり、削除マーカーが追加されます。
イベントタイプをご参照ください。
オブジェクトマッチング
イベント通知の対象オブジェクトを指定します。
オブジェクトを フルネーム で照合
バケットのルートディレクトリにあるオブジェクト
exampleobject.txtに一致させるには、exampleobject.txt と入力します。バケットの
destdirディレクトリにあるmyphoto.jpgという名前のオブジェクトと照合するには、destdir/myphoto.jpg と入力します。
オブジェクトの照合条件 プレフィックス / サフィックス
バケット内のすべてのオブジェクトを一致させるには、プレフィックスとサフィックスの両方を空のままにします。
examplefolderディレクトリ内のすべてのオブジェクトに一致させるには、プレフィックスに examplefolder/ を設定し、サフィックスは空のままにします。バケット内の
.jpg拡張子を持つすべてのオブジェクトを照合するには、Prefix を空のままにし、Suffix を .jpg に設定します。examplefolder ディレクトリ内の拡張子が
.mp3のすべてのオブジェクトに一致させるには、プレフィックスに examplefolder/、サフィックスに .mp3 を設定します。
条件を追加 をクリックして、最大 5 つのオブジェクトマッチングルールを作成できます。
サブスクリプションエンドポイント
イベントを受信するエンドポイントを指定します。サポートされるサブスクリプションタイプには、HTTP と キュー があります。
OK をクリックします。
イベント通知ルールは、約 10 分で有効になります。
よくある質問
関連ドキュメント
HttpEndpoint でメッセージ本文を受信できない場合、POST メソッドを使用していることが原因である可能性があります。解決策については、PHP を使用して Simple Message Queue (旧称: MNS) で HttpEndpoint インターフェイスを記述する際にメッセージ本文を受信できない場合はどうすればよいですか? をご参照ください。
OSS には、アップロード通知の代替として アップロードコールバック 機能も用意されています。