問題の説明
トリガーは関数の実行をトリガーできません。
考えられる原因
考えられる原因は次のとおりです。
設定したトリガールールが満たされていません。
トリガー用に設定したロールが正しくありません。
解決策
解決策1: トリガールールが満たされているかどうかを確認する
一般的なトリガーのトリガールールを次に示します。
OSSトリガー
Object Storage Service (OSS) バケットと関数は、同じリージョンに存在する必要があります。
アップロードされたオブジェクトのプレフィックスまたはサフィックスは、トリガーに指定したオブジェクトのプレフィックスまたはサフィックスと同じである必要があります。
たとえば、オブジェクトのプレフィックスをabに設定し、オブジェクトa/b.zip、ab.zip、abc.zipをOSSにアップロードすると、ab.zipとabc.zipのみが関数の実行をトリガーできます。
OSSイベントはトリガーイベントと同じである必要があります。 それ以外の場合、関数の実行はトリガーできません。 次の項目は、OSSイベントがトリガーイベントと一致しない場合を示しています。
ossbrowserを使用して、マルチパートアップロードを使用してオブジェクトをアップロードします。 アップロード後、イベントの名前は
oss:ObjectCreated:CompleteMultipartUpload
になります。 設定したトリガーイベントの名前がoss:ObjectCreated:PutObject
またはoss:ObjectCreated:PostObject
の場合、関数の実行はトリガーできません。Function Computeコンソールでオブジェクトをアップロードし、イベントの名前は
oss:ObjectCreated:PostObject
です。 ただし、設定したトリガーイベントの名前はoss:ObjectCreated:PutObject
です。 オブジェクトをアップロードするには、oss:ObjectCreated:PutObject
操作を呼び出します。イベントの名前はoss:ObjectCreated:PutObject
です。 ただし、設定したトリガーイベントの名前はoss:ObjectCreated:PostObject
です。
バージョン管理が有効になっているOSSバケットからオブジェクトを削除する場合は、バージョンIDを指定する必要があります。
ossbrowserを使用してオブジェクトを削除するときにバージョンIDを指定しない場合、
oss:ObjectRemoved:DeleteObject
またはoss:ObjectRemoved:DeleteObjects
イベントはトリガーされません。 オブジェクトの現在のバージョンが履歴バージョンになり、削除マーカーが追加されます。 詳細については、「概要」トピックの「FAQ」セクションをご参照ください。
Tablestoreトリガー
Tablestoreインスタンスのデータテーブルに対して、Stream Informationパラメーターを [有効] に設定する必要があります。 詳細については、「Function Computeの使用」トピックの「手順1: データテーブルのストリーム機能の有効化」セクションを参照してください。
解決策2: トリガーのロールが正しいかどうかを確認する
トリガー用に設定したロールが削除されているかどうか、またはロールに必要な権限があるかどうかを確認する必要があります。 トリガーの標準ロールを設定することを推奨します。 たとえば、OSSトリガーのAliyunOSSEventNotificationRole
ロールを設定できます。 詳細については、「ネイティブOSSトリガーの設定」をご参照ください。
テクニカルサポート
上記のソリューションを試しても問題が解決しない場合は、DingTalkユーザーグループに参加します (ID:11721331) テクニカルサポートのため。 テクニカルサポートには、Alibaba Cloudアカウント、OSSバケット、サービス名、関数名、イベントソースの情報を提供する必要があります。