Azure Functions の HTTP トリガーとバインドの概要

Azure Functions は、HTTP 要求から呼び出して、サーバーレス API を構築し、webhook に応答することができます。

アクション Type
HTTP 要求から関数を実行する トリガー
関数から HTTP 応答を返す 出力バインド

拡張機能のインストール

インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。

関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。

拡張機能の機能性は、拡張機能のバージョンによって異なります。

NuGet パッケージ バージョン 3.x をインストールすることによって、プロジェクトに拡張機能を追加します。

注意

.NET Isolated での ASP.NET Core 統合には、追加の拡張機能パッケージが必要です

バンドルのインストール

Functions バージョン 2.x から、HTTP 拡張機能は、host.json プロジェクト ファイルで指定されている拡張バンドルの一部です。 詳細については、「拡張機能のバンドル」を参照してください。

このバージョンの拡張機能は、拡張機能バンドル バージョン 2.x を使用して関数アプリで既に使用できる必要があります。

host.json 設定

このセクションでは、バージョン 2.x 以降でこのバインドに使用可能な構成設定について説明します。 host.json ファイルの設定は、関数アプリ インスタンスのすべての関数に適用されます。 次の host.json ファイルの例には、このバインドのバージョン 2.x 以降の設定のみが含まれています。 バージョン 2.x 以降のバージョンでの関数アプリ構成設定の詳細については、「Azure Functions の host.json のリファレンス」を参照してください。

Note

Functions 1.x の host.json のリファレンスについては、「host.json reference for Azure Functions 1.x (Azure Functions 1.x の host.json のリファレンス)」を参照してください。

{
    "extensions": {
        "http": {
            "routePrefix": "api",
            "maxOutstandingRequests": 200,
            "maxConcurrentRequests": 100,
            "dynamicThrottlesEnabled": true,
            "hsts": {
                "isEnabled": true,
                "maxAge": "10"
            },
            "customHeaders": {
                "X-Content-Type-Options": "nosniff"
            }
        }
    }
}
プロパティ Default 説明
customHeaders なし HTTP 応答でカスタム ヘッダーを設定できます。 前の例では、コンテンツ タイプのスニッフィングを避けるために、X-Content-Type-Options ヘッダーを応答に追加しています。 このカスタム ヘッダーは、関数アプリ内のすべての HTTP によってトリガーされる関数に適用されます。
dynamicThrottlesEnabled true* この設定を有効にすると、要求処理パイプラインが、connections/threads/processes/memory/cpu/etc のようなシステム パフォーマンス カウンターを定期的にチェックし、それらのカウンターのいずれかが組み込みの上限しきい値 (80%) を超えている場合は、カウンターが正常なレベルに戻るまで、要求は 429 "Too Busy" 応答で拒否されます。
*従量課金プランの既定値は、true です。 Premium プランと Dedicated プランの既定値は falseです。
hsts 無効 isEnabledtrue に設定されている場合、HstsOptions クラスで定義されているように、.NET Core の HTTP Strict Transport Security (HSTS) 動作が適用されます。 上の例では、maxAge プロパティも 10 日間に設定されています。 hstsのサポートされるプロパティは次のとおりです。
プロパティ説明
excludedHostsHSTS ヘッダーが追加されていないホスト名の文字列配列。
includeSubDomainsStrict-Transport-Security ヘッダーの includeSubDomain パラメーターが有効になっているかどうかを示すブール値。
maxAgeStrict-Transport-Security ヘッダーの最長有効期間パラメーターを定義する文字列。
preloadStrict-Transport-Security ヘッダーの事前読み込みパラメーターが有効になっているかどうかを示すブール値。
maxConcurrentRequests 100* 並列で実行される HTTP 関数の最大数。 この値によりコンカレンシーを制御でき、リソース使用率の管理に役立ちます。 たとえば、多くのシステム リソース (メモリ、CPU、ソケット) を消費する HTTP 関数があった場合、コンカレンシーが高すぎると問題が発生します。 または、サードパーティのサービスに対して要求を送信する関数があり、その呼び出し速度を制限する必要がある場合です。 このような場合は、調整を適用することができます。
*従量課金プランでの既定値は 100 です。 Premium プランと Dedicated プランの既定値は無制限 (-1) です。
maxOutstandingRequests 200* 特定の時点で保持される未処理の要求の最大数。 この制限には、キューに格納され、まだ実行が開始されていない要求と、処理中の実行が含まれます。 この制限を超える受信要求は、429 "Too Busy" 応答で拒否されます。 これにより、呼び出し元は時間ベースの再試行戦略を採用でき、要求の最大待機時間の制御にも役立ちます。 この設定は、スクリプト ホストの実行パス内で発生するキューのみを制御します。 ASP.NET 要求キューなどの他のキューは有効なままで、この設定の影響を受けません。
*従量課金プランでの既定値は 200 です。 Premium プランと Dedicated プランの既定値は無制限 (-1) です。
routePrefix api すべてのルートに適用されるルート プレフィックス。 既定のプレフィックスを削除するには、空の文字列を使用します。

次のステップ