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

Function Compute:トリガーが関数の実行をトリガーできない場合はどうすればよいですか?

最終更新日:Aug 29, 2024

問題の説明

トリガーは関数の実行をトリガーできません。

考えられる原因

考えられる原因は次のとおりです。

  • 設定したトリガールールが満たされていません。

  • トリガー用に設定したロールが正しくありません。

解決策

解決策1: トリガールールが満たされているかどうかを確認する

一般的なトリガーのトリガールールを次に示します。

  • OSSトリガー

    • Object Storage Service (OSS) バケットと関数は、同じリージョンに存在する必要があります。

    • アップロードされたオブジェクトのプレフィックスまたはサフィックスは、トリガーに指定したオブジェクトのプレフィックスまたはサフィックスと同じである必要があります。

      たとえば、オブジェクトのプレフィックスをabに設定し、オブジェクトa/b.zipab.zipabc.zipをOSSにアップロードすると、ab.zipabc.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バケット、サービス名、関数名、イベントソースの情報を提供する必要があります。