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

Function Compute:オブジェクトがOSSにアップロードされたときに関数が複数回トリガーされた場合はどうすればよいですか?

最終更新日:Jul 17, 2024

オブジェクトをOSSにアップロードするときにObject Storage Service (OSS) トリガーが複数回トリガーされた場合、trigger Eventパラメーターが正しく設定されているかどうかを確認する必要があります。

考えられる原因

オブジェクトのアップロード時にOSSトリガーが繰り返しトリガーされる原因は、指定されたトリガールールにワイルドカードが含まれていることです。 その結果、1つのオブジェクトのアップロード中に生成された複数のイベントが一致し、複数の関数の実行がトリガーされます。

たとえば、マルチパートアップロード機能を使用してオブジェクトをOSSにアップロードすると、oss:ObjectCreated:InitiateMultipartUploadoss:ObjectCreated:UploadPart、およびoss:ObjectCreated:CompleteMultipartUploadイベントが順番にトリガーされます。 たとえば、OSSトリガーのトリガーイベントoss:ObjectCreated:* に設定した場合、OSSブラウザーを使用して12 MBのオブジェクトをアップロードし、部品サイズを5 MBに設定した場合、関数は5回トリガーされます。 次の項目は、トリガーイベントの一覧です。

  • oss:ObjectCreated:InitiateMultipartUpload

  • oss:ObjectCreated:UploadPart

  • oss:ObjectCreated:UploadPart

  • oss:ObjectCreated:UploadPart

  • oss:ObjectCreated:CompleteMultipartUpload

したがって、トリガーが1回だけトリガーされるように、マルチパートアップロードの場合、トリガーイベントoss:ObjectCreated:CompleteMultipartUploadに設定する必要があります。

解決策

マッチングルールからワイルドカードを削除し、正確なイベントを設定します。 たとえば、トリガーのトリガーイベントoss:ObjectCreated:PutObjectoss:ObjectCreated:PostObject、およびoss:ObjectCreated:CompleteMultipartUploadに設定できます。 これらのイベントの詳細は次の項目に記載されています。

  • oss:ObjectCreated:PutObject: 単純なアップロードを使用してオブジェクトを作成または上書きします。

  • oss:ObjectCreated:PostObject: フォームのアップロードを使用してオブジェクトを作成または上書きします。

  • oss:ObjectCreated:CompleteMultipartUpload: マルチパートアップロードを完了します。