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

Function Compute:概要

最終更新日:Jul 24, 2024

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型のAPI操作に対応します。 API操作が呼び出された後、関連付けられた関数が呼び出され、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操作は、オブジェクトの属性を変更するために呼び出されます。

説明

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

トリガールール

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

警告

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:*

source1

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パラメーターを設定しない場合、ソースプレフィックスを持つオブジェクトが含まれます。

source1

zip1

継続する

新しいトリガーのObject PrefixパラメーターとObject Suffixパラメーターの値は、既存のトリガーの値とは異なります。

source

zip1

継続する

新しいトリガーのObject Suffixパラメーターの値は、既存のトリガーの値とは異なります。

source1

zip

継続する

新しいトリガーのObject Prefixパラメーターの値は、既存のトリガーの値とは異なります。

oss:ObjectCreated:PostObject

source

zip

継続する

新しいトリガーのTrigger Eventパラメーターの値は、既存のトリガーの値とは異なります。

重要

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

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

関連ドキュメント

より多くの情報