Object Storage Service (OSS) をFunction Computeと統合すると、OSSイベントにより、OSSバケット内のデータを処理する関数の実行がトリガーされます。 このトピックでは、Function ComputeのOSSトリガーの制限、イベントタイプ、トリガールールについて説明します。
背景情報
OSSは、OSSトリガーを使用してFunction Computeとシームレスに統合できます。 OSSイベントを使用して関数を記述し、関数を呼び出すことができます。 OSSが指定されたタイプのイベントをキャプチャすると、関連付けられた関数が実行されます。 たとえば、PutObjectイベントを処理する関数を記述できます。 OSSのPutObject操作を呼び出して画像をOSSにアップロードすると、関数が自動的に呼び出されて画像が処理されます。
OSSがFunction Computeと統合された後、さまざまな関数を呼び出して画像やオーディオファイルを処理し、処理したファイルを特定のストレージサービスに書き込むことができます。 プロセス全体で、関数ロジックの記述に集中するだけで済みます。 Function Computeは、大量のデータをリアルタイムで並行して処理できます。
OSSトリガーの制限
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型のAPI操作の1つが呼び出されます。 | |
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
に設定できます。 このように、生成されたオブジェクトは関数を再度呼び出さない。 オブジェクトプレフィックスまたはオブジェクトサフィックスを設定しない場合、すべてのプレフィックスとサフィックスを持つオブジェクトが一致します。 詳細については、「手順1: OSSトリガーの作成」をご参照ください。
ネイティブOSSトリガーのセマンティック一意性の確保
トリガーの構成セマンティクスは、トリガーが作成されるバケット内で一意である必要があります。 設定には、Trigger Eventパラメーター、Object Prefixパラメーター、およびObject Suffixパラメーターが含まれます。 たとえば、バケットのトリガーイベントがoss:ObjectCreated:PutObjectであるトリガーを作成します。 トリガーのObject Prefixパラメーターはsourceに設定され、Object Suffixパラメーターはzipに設定されます。 次の表は、異なる設定の新しいトリガーがバケットに対して有効かどうかを示しています。
トリガーイベント | オブジェクトプレフィックス | オブジェクト接尾辞 | 有効 | 説明 |
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 | はい | 新しいトリガーのTrigger Eventパラメーターの値は、既存のトリガーの値とは異なります。 |
ネイティブOSSトリガーでは、セマンティックの一意性を確保する必要があります。 したがって、異なる関数に対して同じOSSトリガーを設定することはできません。
同じイベントタイプの異なる関数に対して同じOSSトリガーを設定する場合は、EventBridgeベースのOSSトリガーを設定できます。 詳細については、「EventBridgeベースのOSSトリガーの設定」をご参照ください。
関連ドキュメント
関連ドキュメント
トリガーの設定
ネイティブOSSトリガーとEventBridgeベースのOSSトリガーを設定および使用する方法の詳細については、「ネイティブOSSトリガーの設定」および「EventBridgeベースのOSSトリガーの設定」をご参照ください。
トリガー
どのイベントが関数をトリガーするかを確認する場合は、コードにイベントタイプのログを印刷するようにシステムを設定できます。 詳細は、「ログレコード」をご参照ください。
関数を使用して別の関数を呼び出す場合は、関数を呼び出すAPI操作を指定できます。 詳細については、「関数はお互いを呼び出すことができますか? 」をご参照ください。