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

Function Compute:HTTPハンドラー

最終更新日:Oct 18, 2024

このトピックでは、カスタムランタイムでのHTTPハンドラーの構造的な機能、呼び出しの説明、および制限について説明します。 このトピックでは、HTTPハンドラーの使用方法の例と、よくある質問へのリンクも提供します。

背景情報

Function Computeは、メソッド、パス、クエリ、リクエストヘッダー、リクエスト本文、Function Computeによって生成された共通ヘッダーなど、リクエストを透過的にHTTPサーバーに渡します。 既存のHTTP webアプリケーションをスムーズに移行できます。

image

関数の呼び出し

HTTPハンドラーを呼び出すために使用できるメソッドは、web API操作のメソッドと似ています。 cURL、Postman、またはブラウザーを使用して、HTTPハンドラーを呼び出すリクエストを送信できます。 ブラウザを使用してHTTPトリガーにアクセスすると、関数が強制的にダウンロードされる場合があります。 この問題を解決する方法の詳細については、「webブラウザーを使用してHTTPトリガー付きの関数にアクセスする場合、応答をダウンロードする必要があるのはなぜですか?」をご参照ください。

ヘッダー

説明

(オプション) x-fc-base-path

カスタムドメイン名を指定しない場合、x-fc-base-pathの値として /2016-08-15/proxy/${servicename}/${functionname}/ が使用されます。

(オプション) x-fc-status

このヘッダーは、イベント関数のヘッダーと同様に動作します。 これは、Function Computeに移行されていないが、web API操作を呼び出して作成されたHTTP関数に適用できます。

レスポンスヘッダーにx-fc-statusフィールドを含めて、ローカル関数が正常に呼び出されたかどうかをFunction Computeに報告できます。

  • x-fc-statusフィールドに値を指定しない場合、Function Computeは呼び出しが成功したと見なされます。 関数の実行中にエラーが発生した場合、システムはfunction Computeにエラーを報告しません。 この場合、ビジネスロジックは影響を受けませんが、Function Computeの可観測性は影響を受けます。 次の図に例を示します。image8hanshujisuanruntime

  • x-fc-statusフィールドに値を指定した場合、システムはx-fc-statusフィールドを使用して関数呼び出しの失敗をfunction Computeに報告します。 関数の呼び出し中にエラーが発生した場合、システムはエラースタック情報をログに記録します。 次の図に例を示します。image9runtimefc

説明

HTTPレスポンスでStatusCodeおよびx-fc-statusフィールドを指定することを推奨します。

使用上の注意

  • サービスの各バージョンまたはエイリアスのHTTP関数に対して作成できるHTTPトリガーは1つだけです。 詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。

  • HTTPリクエストの制限

    • リクエストヘッダーは、x-fc- で始まるカスタムフィールドまたは次のフィールドをサポートしません。

      • 接続

      • keep-alive

    • リクエストが次のいずれかの制限を超えた場合、システムは400ステータスコードとInvalidArgumentエラーコードを返します。

      • ヘッダーサイズ: ヘッダー内のすべてのキーと値の合計サイズは8 KBを超えることはできません。

      • パスサイズ: すべてのクエリパラメーターを含むパスの合計サイズは、4 KBを超えることはできません。

      • ボディサイズ: 同期呼び出しリクエストのボディの合計サイズは32 MBを超えることはできません。 非同期呼び出し要求の本体の合計サイズは128 KBを超えることはできません。

  • HTTPレスポンスの制限

    • レスポンスヘッダーは、x-fc- で始まるカスタムフィールドまたは次のフィールドをサポートしていません。

      • 接続

      • content-length

      • 日付

      • keep-alive

      • サーバー

      • content-disposition: 添付

        説明

        セキュリティ上の理由から、Function Computeのデフォルトのドメイン名e aliyuncs.comを使用すると、サーバーはcontent-disposition: attachmentフィールドをレスポンスヘッダーに強制的に追加します。 このフィールドにより、返された結果が添付ファイルとしてブラウザにダウンロードされます。 この制限を解除するには、カスタムドメイン名を指定する必要があります。 詳細については、「カスタムドメイン名の設定」をご参照ください。

    • 応答が次のいずれかの制限を超えると、システムはステータスコード502とエラーBadResponseを返します。

      • ヘッダーサイズ: ヘッダー内のすべてのキーと値の合計サイズは8 KBを超えることはできません。

  • その他

    カスタムドメイン名をバインドして、HTTP関数の異なるHTTPパスをマッピングできます。 詳細については、「カスタムドメイン名の設定」をご参照ください。 API Gatewayを使用して、バックエンドサービスタイプをHTTPに設定し、HTTP関数パスをバックエンドサービスアドレスとして指定することで、同様の機能を実装することもできます。 詳細については、次をご参照ください: Function ComputeをAPI操作のバックエンドサービスとして使用します

他のプログラミング言語の例

Serverless Devsを使用して、数回クリックするだけでアプリケーションをFunction Computeに移行できます。 次の例は、Serverless Devsを使用して、効率的な方法で関数をデプロイおよび呼び出す方法を示しています。 ビジネス要件に基づいてサンプルコードを変更できます。

よくある質問