オブジェクトをOSSにアップロードするときにObject Storage Service (OSS) トリガーが複数回トリガーされた場合、trigger Eventパラメーターが正しく設定されているかどうかを確認する必要があります。
考えられる原因
オブジェクトのアップロード時にOSSトリガーが繰り返しトリガーされる原因は、指定されたトリガールールにワイルドカードが含まれていることです。 その結果、1つのオブジェクトのアップロード中に生成された複数のイベントが一致し、複数の関数の実行がトリガーされます。
たとえば、マルチパートアップロード機能を使用してオブジェクトをOSSにアップロードすると、oss:ObjectCreated:InitiateMultipartUpload
、oss: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:PutObject
、oss:ObjectCreated:PostObject
、およびoss:ObjectCreated:CompleteMultipartUpload
に設定できます。 これらのイベントの詳細は次の項目に記載されています。
oss:ObjectCreated:PutObject
: 単純なアップロードを使用してオブジェクトを作成または上書きします。oss:ObjectCreated:PostObject
: フォームのアップロードを使用してオブジェクトを作成または上書きします。oss:ObjectCreated:CompleteMultipartUpload
: マルチパートアップロードを完了します。