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

Function Compute:OSSイベントトリガーの概要

最終更新日:Oct 08, 2024

Object Storage Service (OSS) をFunction Computeと統合すると、OSSイベントにより、OSSバケット内のデータを処理する関数の実行がトリガーされます。 このトピックでは、Function ComputeのネイティブOSSトリガーとEventBridgeベースのOSSトリガーの制限、イベントタイプ、トリガールールについて説明します。

背景情報

OSSは、OSSトリガーを使用してFunction Computeとシームレスに統合できます。 OSSイベントを使用して関数を記述し、関数を呼び出すことができます。 OSSが指定されたタイプのイベントをキャプチャすると、関連付けられた関数が実行されます。 たとえば、PutObjectイベントを処理する関数を記述できます。 OSSのPutObject操作を呼び出して画像をOSSにアップロードすると、関数が自動的に呼び出されて画像が処理されます。

OSSがFunction Computeと統合された後、さまざまな関数を呼び出して画像やオーディオファイルを処理し、処理したファイルを特定のストレージサービスに書き込むことができます。 プロセス全体で、関数ロジックの記述に集中するだけで済みます。 Function Computeは、大量のデータをリアルタイムで並行して処理できます。

OSSトリガーの制限

  • ネイティブOSSトリガーのみが、バケットの関連するすべてのトリガーのクエリをサポートします。

    ビジネス要件に基づいて、既存のOSSトリガーを再利用したり、使用されなくなったOSSトリガーを削除したりできます。 これにより、バケットに関連付けられたトリガーの数が10を超えるのを防ぎます。 関数の詳細ページの [トリガー管理 (URL)] タブで、管理するトリガーを見つけ、[設定] 列のバケット名をクリックします。 [OSSバケット関連のトリガー] パネルで、バケットに関連付けられているOSSトリガーを表示できます。

    created-oss-trigger

    説明

    削除されたトリガーは復元できません。 トリガーを削除するときは注意が必要です。

  • EventBridgeベースのOSSトリガーに対してのみ、複数のオブジェクトプレフィックスとサフィックスを設定できます。 詳細については、「EventBridgeベースのOSSトリガーの設定」をご参照ください。

  • 正規表現の照合は、ネイティブOSSトリガーとEventBridgeベースのOSSトリガーに設定したオブジェクトプレフィックスとサフィックスではサポートされていません。 詳細については、「ネイティブOSSトリガーの設定」および「EventBridgeベースのOSSトリガーの設定」をご参照ください。

  • 10を超えるOSSトリガーをバケットに関連付ける場合は、EventBridgeベースのOSSトリガーのみを関連付けることができます。 詳細については、「EventBridgeベースのOSSトリガーの設定」をご参照ください。

    10個を超えるトリガーをバケットに関連付けないことを推奨します。 より多くのトリガーを関連付ける場合は、新しいバケットを作成し、新しいバケットに基づいて新しいトリガーを作成することを推奨します。

OSSイベント

OSSが指定されたタイプのイベントをキャプチャすると、OSSはイベント情報をJSON文字列としてエンコードし、JSON文字列をイベントを処理する関数に渡します。 OSSイベント通知の形式の詳細については、「イベント通知」をご参照ください。

次の表に、Function ComputeでサポートされているOSSイベントを示します。 各イベントタイプは、ObjectCreated、ObjectRemoved、またはObjectModifiedオペレーションに対応する。 操作が期待どおりに呼び出されると、関数がトリガーされ、1回実行されます。

イベントタイプ

イベント名

説明

ObjectCreated

oss:ObjectCreated:PutObject

オブジェクトをアップロードするには、PutObject操作が呼び出されます。 詳しくは、「PutObject」 をご参照ください。

oss:ObjectCreated:PutSymlink

PutSymlink操作は、OSSで宛先オブジェクトのシンボリックリンクを作成するために呼び出されます。 シンボリックリンクを使用して、宛先オブジェクトにアクセスできます。 詳細については、「PutSymlink」をご参照ください。

oss:ObjectCreated:PostObject

PostObject操作は、HTMLフォームを使用して指定されたバケットにファイルをアップロードするために呼び出されます。 詳細については、「PostObject」をご参照ください。

oss:ObjectCreated:CopyObject

CopyObject操作は、OSS内の既存のオブジェクトをコピーするために呼び出されます。 詳細については、「CopyObject」をご参照ください。

oss:ObjectCreated:InitiateMultipartUpload

OSSでマルチパートアップロードタスクを開始するには、InitiateMultipartUpload操作が呼び出されます。 マルチパートアップロードを使用してデータをアップロードする前に、InitiateMultipartUpload操作を呼び出す必要があります。 詳細については、「InitiateMultipartUpload」をご参照ください。

oss:ObjectCreated:UploadPart

マルチパートアップロードイベントが開始された後、指定されたオブジェクト名とアップロードIDに基づいてデータをパーツでアップロードできます。 詳細については、「UploadPart」をご参照ください。

oss:ObjectCreated:UploadPartCopy

UploadPartCopy操作は、既存のオブジェクトからデータをコピーして部品をアップロードするために呼び出されます。 詳細については、「UploadPartCopy」をご参照ください。

oss:ObjectCreated:CompleteMultipartUpload

オブジェクトのマルチパートアップロードタスクを完了するには、CompleteMultipartUpload操作が呼び出されます。 詳細については、「CompleteMultipartUpload」をご参照ください。

oss:ObjectCreated:AppendObject

AppendObject操作は、オブジェクトを既存のオブジェクトに追加してアップロードするために呼び出されます。 詳細については、「AppendObject」をご参照ください。

oss:ObjectCreated:*

前述のObjectCreated操作のいずれかが呼び出されると、関数がトリガーされます。

ObjectRemoved

oss:ObjectRemoved:DeleteObject

オブジェクトを削除するには、DeleteObject操作が呼び出されます。 詳細については、「DeleteObject」をご参照ください。

oss:ObjectRemoved:DeleteObjects

DeleteMultipleObjects操作は、一度に複数のオブジェクトを削除するために呼び出されます。 詳細については、「DeleteMultipleObjects」をご参照ください。

oss:ObjectRemoved:AbortMultipartUpload

指定されたアップロードIDに基づいてマルチパートアップロードタスクをキャンセルするには、AbortMultipartUpload操作が呼び出されます。 詳細については、「AbortMultipartUpload」をご参照ください。

ObjectModified

oss:ObjectModified:UpdateObjectMeta

UpdateObjectMeta操作は、オブジェクトの属性を変更するために呼び出されます。

説明

このタイプのイベントは、中国 (杭州) 、中国 (上海) 、中国 (青島) 、中国 (北京) 、中国 (張家口) 、中国 (フフホト) 、中国 (深セン) 、中国 (成都) の各リージョンでサポートされています。

ObjectReplication

oss:ObjectReplication:ObjectCreated

オブジェクトはデータ複製タスクで作成されます。

説明

このイベントは、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (深セン) の各リージョンでサポートされています。

oss:ObjectReplication:ObjectModified

データ複製タスクでオブジェクトが上書きされます。

説明

このイベントは、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (深セン) の各リージョンでサポートされています。

oss:ObjectReplication:ObjectRemoved

データ複製タスクでオブジェクトが削除されます。

説明

このイベントは、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (深セン) の各リージョンでサポートされています。

トリガールール

ループトリガーを実行しない

警告

OSSイベントトリガーを使用する場合は、ループトリガーを実行しないでください。 たとえば、オブジェクトをOSSバケットにアップロードすると、アップロード操作によって関数がトリガーされます。 この関数は、OSSバケットに書き込まれる1つ以上のオブジェクトを生成し、書き込み操作によって関数が再びトリガーされます。 この結果、ループが生じる。

ループトリガーによる追加コストを防ぐため、OSSトリガーの作成時にオブジェクトプレフィックスまたはオブジェクトサフィックスを設定することを推奨します。 たとえば、Object Prefixをsrcに、Object Prefixをdstに設定できます。 このように、生成されたオブジェクトは関数を再度呼び出さない。 オブジェクトプレフィックスまたはオブジェクトサフィックスを設定しない場合、すべてのプレフィックスとサフィックスを持つオブジェクトが一致します。 詳細については、「OSSトリガーの設定」をご参照ください。

セマンティックの一意性を確保する

トリガーの構成セマンティクスは、トリガーが作成されるバケット全体で一意である必要があります。 設定には、Trigger Eventパラメーター、Object Prefixパラメーター、およびObject Suffixパラメーターが含まれます。 たとえば、バケットのトリガーイベントがoss:ObjectCreated:PutObjectであるトリガーを作成します。 トリガーのObject PrefixパラメーターとObject Suffixパラメーターは、sourcezipに設定されます。 次の表に、バケットの新しいトリガーが有効かどうかを示します。

トリガーイベント

オブジェクトプレフィックス

オブジェクト接尾辞

有効

説明

oss:ObjectCreated:*

ソース1

zip1

いいえ

新しいトリガーは、既存のトリガーと同じタイプのイベントで構成されます。

説明

oss:ObjectCreated:* には、すべてのObjectCreatedイベントが含まれます。 ObjectCreatedイベントタイプのトリガーをバケットに作成した場合、oss:ObjectCreated:* イベントタイプのトリガーは作成できません。 同様に、oss:ObjectCreated:* イベントタイプのトリガーをバケットに作成した場合、ObjectCreatedイベントのトリガーは作成できません。

oss:ObjectCreated:PutObject

source

zip

いいえ

新しいトリガーは、既存のトリガーと同じObject PrefixパラメーターとObject Suffixパラメーターの値で設定されます。

source

なし

いいえ

新しいトリガーは、既存のトリガーと同じObject Prefixパラメーターの値で設定されます。 Object Suffixパラメーターを指定しない場合、zipサフィックスの付いたオブジェクトが含まれます。

なし

zip

いいえ

新しいトリガーは、既存のトリガーと同じObject Suffixパラメーターの値で設定されます。 Object Prefixパラメーターを指定しない場合、ソースプレフィックスを持つオブジェクトが含まれます。

ソース1

zip1

はい

新しいトリガーは、既存のトリガーとは異なるObject PrefixパラメーターとObject Suffixパラメーターの値で設定されます。

source

zip1

はい

新しいトリガーは、既存のトリガーとは異なるObject Suffixパラメーターの値で設定されます。

ソース1

zip

はい

新しいトリガーは、既存のトリガーとは異なるObject Prefixパラメーターの値で設定されます。

oss:ObjectCreated:PostObject

source

zip

はい

新しいトリガーは、既存のトリガーとは異なるトリガーイベントパラメーターの値で設定されます。

重要

ネイティブOSSトリガーでは、セマンティックの一意性を確保する必要があります。 したがって、異なる関数に対して同じOSSトリガーを設定することはできません。

同じイベントタイプの異なる関数に対して同じOSSトリガーを設定する場合は、EventBridgeベースのOSSトリガーを設定できます。 詳細については、「EventBridgeベースのOSSトリガーの設定」をご参照ください。

よくある質問

関連ドキュメント