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

Function Compute:HTTP トリガーの概要

最終更新日:Nov 09, 2025

HTTP トリガーは、HTTP リクエストを介して関数を呼び出します。これは、Web サービスを迅速に構築するのに役立ちます。HTTP トリガーを使用する前に、その制限と、サポートされている HTTP/HTTPS プロトコルの制限を確認して、これらの制限を超えたことによる関数エラーを防いでください。このトピックでは、HTTP トリガーの呼び出しメソッド、認証、およびクロスオリジンリクエストの処理について説明します。

使用上の注意

  • [認証方式][認証なし] に設定されているため HTTP トリガーが匿名である場合、ID 検証は必要ありません。これは、URL を持つ誰もが HTTP リクエストを送信して関数を呼び出すことができることを意味し、セキュリティリスクをもたらします。このリスクを軽減するために、リクエストヘッダーの Authorization フィールドを検証することでリクエストを認証できます。詳細については、「HTTP トリガーの署名認証を設定する」をご参照ください。

  • 国のサイバーセキュリティ規制に準拠して、2024 年 6 月 10 日以降、新しく作成された HTTP トリガーは、パブリックネットワークアクセスエンドポイントを介して APK ファイル (MIME タイプ: application/vnd.android.package-archive) をダウンロードすることが禁止されます。APK ファイルをダウンロードしようとすると、400 エラーコードが返されます。詳細については、「HTTP トリガーのパブリックエンドポイントが .apk ファイルを期待どおりに返すようにする方法」をご参照ください。

  • 仮想 IP アドレス (VIP) のローテーションメカニズム。

    システムの回復力とサービスの安定性を向上させるために、Function Compute は仮想 IP アドレス (VIP) のローテーションメカニズムを使用します。これは、HTTP トリガーのパブリックエンドポイントと内部エンドポイントに対応する VIP が定期的にローテーションされ、インフラストラクチャの堅牢性が向上することを意味します。

    VIP をハードコーディングすると、サービスが中断される可能性があることに注意してください。ビジネスの堅牢性を確保するために、カスタムドメイン名を使用することを強くお勧めします。VIP の不適切な使用によって引き起こされた障害は、Function Compute のサービスレベルアグリーメント (SLA) の対象外です。使用状況を確認し、正しい方法に調整する必要があります。

    CNAME (Canonical Name) レコードを持つカスタムドメイン名を使用して Function Compute にアクセスできます。詳細については、「カスタムドメイン名を設定する」をご参照ください。

制限

トリガーの制限

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

  • HTTP トリガーによって提供される組み込みドメイン名はテスト専用です。外部のオンラインサービスには使用しないでください。この慣行により、組み込みドメイン名の潜在的な安定性の問題がオンラインサービスに影響を与えるのを防ぎます。

    説明

    外部ユーザーに Web サイトサービスを提供するには、ICP 登録を持つドメイン名を使用する必要があります。カスタムドメイン名を設定し、ドメイン名を関数にバインドしてから、独自のドメイン名を使用してサービスを提供できます。詳細については、「カスタムドメイン名を設定する」をご参照ください。

HTTP/HTTPS プロトコルの制限

説明

GET、POST、PUT、DELETE、HEAD、PATCH、および OPTIONS メソッドを使用して関数をトリガーできます。これらのメソッドは、単純なリクエスト/レスポンスのシナリオに適しています。詳細については、「HTTP トリガーを設定する」をご参照ください。

  • HTTP リクエストの制限

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

      • connection

      • keep-alive

    • リクエストが以下の制限を超えると、400 状態コードと InvalidArgument エラーコードが返されます。

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

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

      • 本文サイズ: 同期呼び出しリクエストの本文の合計サイズは 32 MB を超えることはできません。非同期呼び出しリクエストの本文サイズについては、「リソースの制限」をご参照ください。

  • HTTP 応答の制限

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

      • connection

      • content-length

      • date

      • keep-alive

      • server

      • upgrade

      • content-disposition:attachment

        説明

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

    • 応答が以下の制限を超えると、502 状態コードと BadResponse エラーコードが返されます。

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

メリット

HTTP トリガーと API Gateway トリガーの両方を使用して、Web アプリケーションを作成できます。その使用法は次のとおりです。

API Gateway トリガーと比較して、HTTP トリガーには次のメリットがあります。

  • HTTP トリガーは、開発者が学習およびデバッグするのが簡単です。これにより、開発者は Function Compute を使用して Web アプリケーションと API を迅速に構築できます。

  • HTTP トリガーは、リクエスト処理のステップを削減します。効率的なリクエストとレスポンスのフォーマットをサポートし、JSON フォーマットへのエンコーディングやデコーディングを必要としません。これにより、パフォーマンスが向上します。

  • 使い慣れた HTTP テストツールを使用して、Function Compute の機能とパフォーマンスをテストできます。

  • HTTP トリガーを、CDN back-to-origin や Simple Message Queue (formerly MNS) などの Webhook コールバックをサポートする他のサービスと簡単に統合できます。

呼び出しメソッド

同期呼び出し

同期呼び出しとは、イベントが関数によって処理された直後に結果が返されることを意味します。HTTP トリガーのデフォルトの呼び出しメソッドは同期呼び出しです。詳細については、「同期呼び出し」をご参照ください。

非同期呼び出し

Function Compute がリクエストを受信した後、リクエストを永続化のために保存し、すぐにレスポンスを返します。リクエストが実行されるのを待たずに結果を返します。

  • 非同期呼び出し: HTTP トリガーを使用して関数を呼び出す場合、"X-Fc-Invocation-Type":"Async" リクエストヘッダーを追加して、リクエストレベルの非同期呼び出しを実行できます。

  • 非同期タスク: HTTP 関数の非同期タスクを設定した後、"X-Fc-Async-Task-Id":"g6u*****iyvhd3jk8s6bhj0hh" リクエストヘッダーを追加して、非同期タスクの呼び出し ID を指定できます。

リクエストヘッダーの詳細については、「InvokeFunction」をご参照ください。

非同期呼び出しが成功すると、Function Compute は状態コード 202 を返します。これはリクエストが受け入れられたことを示します。リクエスト ID もリクエストヘッダーで返されます。例: "X-Fc-Request-Id": "80bf7****281713e1"

説明

Function Compute202 以外の状態コードを返した場合、呼び出しは失敗しました。呼び出しの失敗の原因の詳細については、「リトライメカニズム」をご参照ください。

参照:

  • 非同期呼び出しの詳細については、「非同期呼び出し」をご参照ください。

  • 非同期タスクの詳細については、「非同期タスク」をご参照ください。

認証

Function Compute は、HTTP トリガーの認証をサポートしています。ユーザーが HTTP トリガーを介して関数にアクセスすると、Function Compute はアクセスを許可する前にユーザーを認証する必要があります。次の認証方式がサポートされています。

CORS リクエストの処理

デフォルトでは、Function Compute は関数呼び出しリクエストへのクロスオリジンアクセスを許可します。また、関数コードでのクロスオリジンリクエスト (CORS) の動作のカスタム処理もサポートしています。

単純リクエスト

単純リクエストはプリフライトリクエストを送信しません。単純なアクセスの制御のために、関数コードで Access-Control-Allow-* で始まるヘッダーを設定できます。Function Compute は、Access-Control-Allow-OriginAccess-Control-Allow-Headers、および Access-Control-Max-Age などの単純リクエストのカスタムヘッダーをサポートしています。

カスタムヘッダーを設定しない場合、Function Compute はデフォルトでレスポンスヘッダーをリクエストの対応するフィールドに設定します。

  • Access-Control-Allow-Origin: リクエストの Origin ヘッダー。

  • Access-Control-Allow-Credentials: デフォルト値は true です。

  • Access-Control-Expose-Headers: Function Compute のいくつかのカスタムヘッダー。

単純でないリクエスト

単純でないリクエストは、正式なリクエストを送信する前にプリフライトリクエストを送信します。単純でないリクエストには、OPTIONS メソッドの関数呼び出しリクエストと実際の関数呼び出しリクエストが含まれます。正式なリクエストのルールは、単純リクエストと同じです。プリフライトリクエストのレスポンスをカスタマイズするには、HTTP トリガーに OPTIONS メソッドを追加する必要があります。その後、関数コードで OPTIONS リクエストを処理し、Access-Control-Allow-* で始まるヘッダーを設定して、関数のクロスオリジン動作を制御できます。

プリフライトリクエストの場合、Function Compute は、Access-Control-Allow-OriginAccess-Control-Allow-HeadersAccess-Control-Allow-Methods、および Access-Control-Max-Age を含むカスタムヘッダーをサポートしています。

次の例は、組み込みの Node.js ランタイムの関数コードでプリフライトリクエストを処理する方法を示しています。

exports.handler =  (event, context,callback) => {
      console.log('hello world');
      const method = JSON.parse(event).requestContext.http.method;
      if (method === 'OPTIONS') {
          // プリフライトリクエストを処理するためにレスポンスヘッダーを設定します。
          const fcResponse = {
            'statusCode': 204,
            'headers': {
              'Access-Control-Allow-Origin': 'http://www.fc.com',
              'Access-Control-Allow-Methods': 'POST',
              'Access-Control-Allow-Headers': 'Content-Type, Authorization',
              'Access-Control-Max-Age':'3600'
            },
            'body': 'hello world'
        };
        callback(null, fcResponse);
      } else {
        callback(null, {
            'statusCode': 500,
            'body': 'hello world'
        });
      }
    };

よくある質問

リスナーポートはどこで設定できますか?

[Web 関数] を作成する場合にのみ、リスナーポートを設定する必要があります。

関数の呼び出しに時間がかかりすぎる場合はどうすればよいですか?

499 エラーが発生し、クライアントがリクエストをアクティブにキャンセルした場合はどうすればよいですか?

  • 499 クライアントエラーが発生した後、関数インスタンスは再起動します。ヘルスチェックを設定して、インスタンスが再起動しないようにすることができます。原因と必要な操作の詳細については、「499 クライアントエラーが発生した後に、なぜ関数インスタンスが再起動するのですか?」をご参照ください。

  • クライアントの呼び出しがタイムアウトした場合、時間のかかるロジックを新しい関数に配置し、非同期呼び出し機能を使用して新しい関数を呼び出すことができます。または、クライアントが関数を呼び出すときに非同期呼び出しを使用することもできます。

実行中の関数の構成を更新するにはどうすればよいですか?

  • 関数の構成は、関数の実行が完了した後にのみ更新されます。関数の構成を更新した後、すでに進行中のリクエストは、完了するまで元の構成で実行され続けます。新しい呼び出しリクエストは、新しい関数の構成を使用します。

  • 現在の関数を削除し、新しい関数を作成して再構成することができます。