呼び出し問題

Prev Next

Classic/VPC環境で利用できます。

Cloud Functionsの利用中に次のような問題が発生することがあります。問題ごとの原因と解決方法を確認し、適切に対処してください。

「Request larger than allowed」エラー

  • リクエストしたボディサイズが10MB以下ですが、API Gatewayトリガー呼び出し時にエラーが発生します。
  • API Gatewayトリガーの呼び出し時に、次のようなエラーメッセージが表示されます。
    {
      "code": "<code>",
      "error": "Request larger than allowed: 2097152 > 1048576 bytes."
    }
    

原因

リクエスト本文のサイズが Cloud Functionsで許可する最大サイズ(1MB/1,048,576byte)を超えていることを意味します。API Gatewayのリクエストボディサイズ制限は10MBですが、Cloud Functionsと連携する場合は Cloud Functionsのパラメータサイズ制限である1MBが適用されます。詳細な説明は、Cloud Functionsリソース制限事項をご参照ください。

解決方法

  • リクエスト本文のサイズを Cloud Functionsのパラメータサイズ制限(1MB)に合わせて調整します。
  • 大容量データを送信する必要がある場合、Cloud Functionsのコードで Object Storageのファイルを読み込むように構成するなどの他の方法を検討します。

「ACTION BODY INVALID_TYPE」エラー

  • Put Action APIリクエスト時に ACTION BODY INVALID_TYPEエラーが発生します。

  • 次のようなエラーメッセージが表示されます。

    {
      "error": {
        "errorCode": "80305",
        "message": "ACTION_BODY_INVALID_TYPE",
        "details": "The requested body is in an invalid action format."
      }
    }
    
    {
        "error": {
            "errorCode": "80305",
            "message": "ACTION_BODY_INVALID_TYPE",
            "details": "The type of 'timeout' needs to be verified."
    }
    }
    

原因

  • "details": "The requested body is in an invalid action format." の場合
    • リクエスト本文の形式が有効でない場合に表示されるエラーメッセージです。言語別に処理方法が異なることがありますが、Pythonでは JSONパラメータを使用してリクエストする必要があります。
    • 例えば、次のようにリクエストした場合、文字列のまま送信されるため、当該エラーが発生します。
      response = requests.put(url, headers=headers, data=body)
      
  • "details": "The type of '{timeout}' needs to be verified." の場合
    • PutAction APIの request bodyフィールド値のタイプを間違って定義した場合に表示されるエラーメッセージです。

解決方法

  • "details": "The requested body is in an invalid action format." の場合
    自動的に JSON直列化して正しくリクエストを送信できるように json=bodyを入力します。
    正しいリクエスト方式は、次の通りです。

    import requests
    
    body = {"description": "Create Action", ... }
    response = requests.put(url, headers=headers, json=body)
    
  • "details": "The type of '{timeout}' needs to be verified." の場合

    • 間違って定義されたフィールドタイプを変更します。
参考

詳細な説明は、Put Action APIをご参照ください。

「Not Found Exception」エラー

  • 「Not Found Exception」エラーが発生します。
  • 次のようなエラーメッセージが表示されます。
    {       
        "error": {           
            "errorCode": "300",
            "message": "Not Found Exception",           
            "details": "URL not found."       
        }
    }    
    

原因

  • 呼び出す URLと Methodが正しく入力されていない場合、Not Found Exceptionエラーが発生することがあります。
  • API Gateway購読方式が保護モードの場合、呼び出しが不可能となり、Not Found Exceptionエラーが発生することがあります。API Gateway購読方式が「公開-自主購読」の場合は Productへの APIキーの登録/承認の有無に関わらず呼び出せますが、「保護-承認必要」の場合は登録/承認された APIキーでない限り呼び出せません。

解決方法

  • 呼び出す URLと Methodが正しく入力されているか確認します。
  • API Gateway購読方式を確認し、「公開-自主購読」に変更します。購読方式の変更方法は、API Gatewayガイドの Product変更をご参照ください。

200ではなく、HTTP Statusコードが返されます

200ではなく、HTTP Statusコードが返されます。

原因

非同期で実行を呼び出すと、(blocking=false query param) 202(Accepted)が返されます。アクションの実行だけチェックするので、アクションコード内部動作の成否は問いません。また、同期呼び出し時には、実行に成功すると200(OK)が返されます。アクションが1分以上実行されると非同期実行に切り替えられ、202(Accepted)を返します。

解決方法

原因で説明したように、これは正常な動作であり、別途の措置は必要ありません。

参考

本ガイドで必要な情報が見つからない場合やさらに必要な情報がある場合は、いつでも以下のフィードバックアイコンをクリックして、ご意見をお寄せください。いただいたご意見を参照して、より有益な情報を提供できるよう努力してまいります。