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

Function Compute:HTTP トリガーの概要

最終更新日:Feb 12, 2026

HTTP トリガーは、HTTP リクエストを介して関数を呼び出します。このトリガーは、Web サービスを迅速に構築するのに最適です。使用する前に、トリガーと HTTP(S) の制限、同期および非同期の呼び出し方式、認証、権限付与、オリジン間リソース共有 (CORS) の構成を確認してください。このトピックでは、これらの内容とよくある質問について説明します。

注意事項

  • 匿名トリガーのセキュリティリスク[認証方式][認証なし] に設定すると、本人確認は実行されません。誰でも HTTP リクエストを介して関数を呼び出すことができます。これにより、URL が漏洩するリスクが生じます。このリスクを軽減するには、アプリケーションコードで Authorization ヘッダーを検証します。詳細については、「HTTP トリガーの署名認証の設定」をご参照ください。

  • APK ダウンロードの制限:国のサイバーセキュリティ規制に基づき、2024 年 6 月 10 日以降、新規に作成された HTTP トリガーは、パブリックエンドポイントから Android Package Kit (APK) ファイル (MIME タイプ:application/vnd.android.package-archive) をダウンロードできなくなります。リクエストはステータスコード 400 を返します。詳細については、「HTTP トリガーのパブリックエンドポイントが .apk ファイルを返さないのはなぜですか?」をご参照ください。

  • VIP ローテーション:Function Compute は、システムの回復力とサービスの安定性を向上させるために、仮想 IP アドレス (VIP) をローテーションします。HTTP トリガーのパブリックエンドポイントと内部エンドポイントに関連付けられた VIP は定期的にローテーションされます。VIP をハードコーディングすると、サービスが中断される可能性があります。ビジネスの安定性を確保するために、カスタムドメイン名を使用してください。不適切な VIP の使用に起因する障害は、Function Compute の補償対象外となります。

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

制限事項

トリガーの制限事項

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

  • ビルトインドメイン名はテスト専用です。安定性が保証されていないため、外部の本番サービスには使用しないでください。

    説明

    外部に Web サイトサービスを提供するには、ICP 申請済みのカスタムドメイン名を使用してください。ドメインを関数にバインドし、そのドメインを介してトラフィックを処理します。詳細については、「カスタムドメイン名の設定」をご参照ください。

HTTP(S) の制限事項

説明

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 を超えることはできません。

API Gateway との比較と利点

HTTP トリガーまたは API Gateway トリガーのいずれかを使用して、Web アプリケーションを構築できます。それぞれの仕組みは次のとおりです:

API Gateway トリガーと比較して、HTTP トリガーには次の利点があります:

  • 開発者の学習時間を短縮し、デバッグを簡素化します。開発者は Function Compute を使用して、Web アプリケーションや API を迅速に構築できます。

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

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

  • CDN オリジンフェッチや Simple Message Queue (formerly MNS) など、他の Webhook 対応サービスと簡単に統合できます。

呼び出し方式

同期呼び出し

同期呼び出しでは、関数はイベントを処理し、すぐに結果を返します。HTTP トリガーはデフォルトで同期呼び出しを使用します。詳細については、「同期呼び出し」をご参照ください。

非同期呼び出し

非同期呼び出しでは、Function Compute はリクエストを永続化し、実行の完了を待たずにすぐにレスポンスを返します。

  • 非同期呼び出し:リクエストヘッダー "X-Fc-Invocation-Type":"Async" を追加して、リクエストレベルで関数を非同期に呼び出します。

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

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

非同期呼び出しが成功すると、Function Compute はステータスコード 202 を返します。これは、リクエストが正常に受信されたことを示します。また、レスポンスヘッダーにリクエスト ID を返します。形式は "X-Fc-Request-Id": "80bf7****281713e1" です。

説明

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

参考

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

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

認証と権限付与

HTTP トリガーの認証と権限付与を設定できます。外部ユーザーは、FC がリクエストを処理する前に、認証と権限付与をパスする必要があります。サポートされている認証および権限付与の方法は次のとおりです:

CORS リクエストの処理

デフォルトでは、Function Compute はオリジン間の関数呼び出しを許可します。また、カスタムコードを記述して、オリジン間リソース共有 (CORS) リクエストを処理することもできます。

単純リクエスト

単純リクエストにはプリフライトリクエストは必要ありません。関数コードで Access-Control-Allow-* で始まるヘッダーを設定して、基本的なアクセスの制御を実装できます。単純リクエストの場合、FC は次のカスタムヘッダーをサポートしています:Access-Control-Allow-OriginAccess-Control-Allow-Headers および Access-Control-Max-Age

カスタムヘッダーを設定しない場合、FC はデフォルトで次のレスポンスヘッダーを設定します:

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

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

  • Access-Control-Expose-Headers:FC によって定義されたカスタムヘッダー。

単純でないリクエスト

単純でないリクエストは、実際のリクエストの前にプリフライトリクエストを送信します。ブラウザは OPTIONS メソッドを使用してプリフライトリクエストを送信し、その後、実際のリクエストを送信して関数を呼び出します。単純でないリクエストのルールは、単純リクエストのルールと一致します。プリフライトレスポンスをカスタマイズするには、HTTP トリガーに OPTIONS メソッドを追加し、関数コードで OPTIONS リクエストを処理します。具体的には、Access-Control-Allow-* で始まるヘッダーを設定して、クロスオリジンの動作を制御します。

プリフライトリクエストの場合、FC は次のカスタムヘッダーをサポートしています: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'
        });
      }
    };

API 設定済み CORS

API 設定済み CORS は現在、招待制プレビュー段階です。有効にするには、Alibaba Cloud アカウント ID (UID) をご用意の上、弊社までご連絡ください

機能概要

API 設定済み CORS は、FC が提供するゲートウェイレイヤーの機能です。HTTP トリガーまたはカスタムドメイン名に直接 CORS ポリシーを設定します。関数コードに CORS ロジックは必要ありません。

主な利点
  • コードの簡素化:CORS ロジックをビジネスロジックから切り離します。ビジネスの実装のみに集中できます。

  • コスト削減:ゲートウェイは OPTIONS プリフライトリクエストに直接応答します。これにより、関数インスタンスのトリガーを回避し、実行時間コストを節約できます。

  • 集中管理:トリガーまたはドメインレベルでポリシーを設定することで、複数のサービスの管理が容易になります。

  • 高速な応答:ゲートウェイはプリフライトの結果を直接返すため、レイテンシーが短縮されます。

適用範囲

  • API バージョン:FC 3.0 関数 (API バージョン:2023-03-30) でのみ利用可能です。

  • アクセス方法:HTTP トリガー (ビルトインのテストドメインを含む) またはバインドされたカスタムドメイン名。

設定方法

トリガーの更新 または カスタムドメイン名の更新 API を使用して設定します。

CORS 設定パラメーター

パラメーター名

タイプ

説明

デフォルト値

制限/制約

allowOrigins

配列

リソースへのアクセスを許可するオリジンのリスト。

-

最大 100 項目。各項目は最大 256 文字。 * または https://* をサポート。

allowMethods

配列

許可される HTTP メソッドのリスト。

トリガーメソッド

OPTIONS を手動で設定しないでください。ゲートウェイが自動的に処理します。

allowHeaders

配列

ブラウザによる送信が許可されるカスタムリクエストヘッダー。

-

最大 50 項目。* をサポート。

exposeHeaders

配列

ブラウザによるアクセスが許可されるレスポンスヘッダーフィールド。

システムのデフォルト値

最大 50 項目。

allowCredentials

ブール値

クロスオリジンリクエストで認証情報 (Cookie など) を許可するかどうか。

false

true に設定した場合、allowOrigins* に設定することはできません。

maxAge

整数

プリフライト (OPTIONS) レスポンスのキャッシュ期間 (秒)。

3600

有効範囲:0~86400。

allowOrigins の値

  • ワイルドカード *:すべてのオリジンを許可します (allowCredentialsfalse の場合のみ)。

  • ワイルドカード https://*https:// で始まるすべてのオリジンを許可します。

  • 特定のドメイン:例:https://example.com

  • 複数のドメイン:配列として指定します。例:["https://example.com", "https://app.example.com"]

  • サブドメインワイルドカード (例:https://*.example.com) はサポートされていません。

allowMethods の値

  • 標準 HTTP メソッド:GETPOSTPUTDELETEPATCHHEAD

  • ワイルドカード *:すべての HTTP メソッドを許可します。

  • サポート対象外 OPTIONS:OPTIONS メソッドは、プリフライトリクエストのためにシステムによって自動的に処理されます。

リクエスト処理ロジック

API 設定済み CORS を設定した後、ゲートウェイはリクエストのタイプに基づいてリクエストを処理します:

1. プリフライトリクエスト (OPTIONS)

ブラウザが単純でないリクエストに対してプリフライトリクエストを送信すると、ゲートウェイは OriginAccess-Control-Request-Method、および Access-Control-Request-Headers を検証します:

  • 検証成功204 No Content を返し、設定された CORS レスポンスヘッダーを挿入します。関数はトリガーされません。

  • 検証失敗

    • Origin は一致するが、他のヘッダーが一致しない場合:ゲートウェイは基本的な CORS ヘッダーを設定します。

    • CORS ヘッダーが設定されていないため、Origin が一致しない場合。

    • リクエストは関数インスタンスに転送されます。

2. 単純リクエスト (GET/POST/HEAD など)

ゲートウェイは Origin のみを検証します:

  • 検証成功Access-Control-Allow-Origin およびその他の CORS ヘッダーをレスポンスに挿入します。リクエストを実行のために関数に転送します。

  • 検証失敗:CORS ヘッダーを挿入しません。リクエストは引き続き実行のために関数に転送されます。

互換性と優先順位

同じパスに複数の CORS 処理メソッドが適用される場合があります。優先順位 (高いものから低いものへ):

  1. API 設定済み CORS:設定されている場合、ゲートウェイはこのロジックを最初に適用します。

  2. デフォルト CORS:API 設定済み CORS が無効になっている場合、ゲートウェイは組み込みのデフォルト CORS 動作を使用します。

  3. 関数レベル CORS:関数によって返されたヘッダーは、上記の方法からのヘッダーとマージ (追加) されます。これにより互換性が確保されます。

アプローチの比較

特徴

API 設定済み CORS (推奨)

デフォルト CORS

ユーザー定義 CORS (コード)

プリフライトリクエストは課金されますか?

無料 (ゲートウェイによるインターセプト)

課金の可能性あり

課金対象 (関数をトリガー)

コードへの侵入

なし

なし

サポートされている API バージョン

FC 3.0 のみ

すべてのバージョン

すべてのバージョン

設定の複雑さ

低 (一度の設定)

設定不要

高 (OPTIONS メソッドの処理が必要)

よくある質問

Q1:allowMethods に OPTIONS を含めるように設定した後、API 呼び出しが失敗するのはなぜですか?

A:設計上、OPTIONS メソッドは FC ゲートウェイによって自動的に管理されます。OPTIONScorsConfigallowMethods 配列に手動で追加しないでください。システムはすべてのプリフライトリクエストを自動的に処理します。

Q2:設定が成功した後、OPTIONS リクエストが 204 ではなく 200 を返すのはなぜですか?

A:ご利用のアカウントが担当チームによって招待制プレビューへのアクセスを許可されているか確認してください。インターセプトプラグインが完全に有効化されていない場合、ゲートウェイはデフォルトの CORS ロジックにフォールバックします (200 を返し、関数に転送します)。

Q3:allowOrigins はサブドメインワイルドカード (例:*.example.com) を使用できますか?

A:サブドメインのあいまい一致はサポートされていません。allowOrigins 配列にすべての第 2 レベルドメインを明示的にリストするか、広範な一致のために https://* を使用してください。

Q4:関数コードも CORS ヘッダーを書き込む場合、競合は発生しますか?

A:競合は発生しません。ゲートウェイによって生成されたヘッダーは、関数によって返されたヘッダーとマージされます。重複が存在する場合、ブラウザは通常、最初の値または標準に準拠した値を使用します。これにより、サービスを中断することなくスムーズな移行が保証されます。

よくある質問

リッスンポートはどこで設定しますか?

[Web 関数] を作成する場合にのみ、リッスンポートを設定できます。

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

クライアントがリクエストをキャンセルしたときの 499 エラーにはどう対処すればよいですか?

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

  • クライアントからの呼び出しがタイムアウトする場合、時間のかかるロジックを新しい関数に移動し、非同期で呼び出します。または、クライアントから非同期呼び出しを使用します。

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

  • 関数の設定は、現在の実行が終了した後にのみ更新されます。設定を更新した後、進行中のリクエストは完了するまで古い設定を使用し続けます。新しいリクエストは更新された設定を使用します。

  • または、現在の関数を削除し、目的の設定で新しい関数を作成します。