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

Function Compute:HTTPリクエストで関数を呼び出すHTTPトリガーを設定する

最終更新日:Sep 30, 2024

Function ComputeはHTTPトリガーをサポートしています。 HTTPトリガーで設定された関数は、HTTPリクエストによって呼び出すことができます。 関数はHTTPリクエストを受信して処理し、呼び出し元に応答を返します。 このトピックでは、Function ComputeコンソールでHTTPリクエストで関数を呼び出すHTTPトリガーを設定する方法について説明します。

始める前に

関数の作成

ステップ1: トリガーを作成する

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[関数] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [関数] ページで、管理する関数をクリックします。

  3. 機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[トリガー] をクリックします。 次に、[トリガーの作成] をクリックします。

  4. トリガー作成パネルで、パラメーターを設定し、OKをクリックします。

    パラメーター

    説明

    トリガータイプ

    作成するトリガーのタイプ。 [HTTPトリガー] を選択します。

    HTTPトリガー

    名前

    HTTPトリガーの名前。

    httpトリガー

    バージョンまたはエイリアス

    HTTPトリガーを作成する関数のバージョンまたはエイリアス。 デフォルト値はLATESTです。 別のバージョンまたはエイリアスのHTTPトリガーを作成する場合は、[バージョンまたはエイリアス] ドロップダウンリストからそのバージョンまたはエイリアスを選択します。 バージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。

    LATEST

    リクエストメソッド

    HTTPトリガーをトリガーするために使用できるメソッド。

    GET、POST、PUT、DELETE

    インターネットURLの無効化

    パブリックエンドポイントを使用してHTTPトリガーへのアクセスを許可するかどうか。 デフォルトでは、このパラメーターは [いいえ] に設定されています。

    [はい] を選択した場合、HTTPトリガーにデフォルトのパブリックエンドポイントは提供されません。 この場合、パブリックエンドポイントを使用して関数を呼び出すと、関数によってアクセスが拒否されたインターネットURLが無効になりますエラーが報告されます。 カスタムドメイン名を使用して関数を呼び出すこともできます。

    いいえ

    認証方法

    HTTPリクエストの認証に使用されるメソッド。 値の説明:

    • 認証なし: Function Computeは関数への匿名アクセスをサポートし、HTTPリクエストを認証しません。 すべてのユーザーがHTTPリクエストを使用して関数を呼び出すことができます。

    • 署名認証: HTTPリクエストにはID認証が必要です。 署名認証のサンプルコードの詳細については、「リクエストで署名を使用したHTTPトリガーのURLへのアクセス」をご参照ください。

    • JWT認証: Function Computeは、JSON Web Tokens (JWT) に基づいてHTTPリクエストを認証します。 詳細については、「HTTPトリガーのJWT認証の設定」をご参照ください。

    認証なし

    HTTPトリガーの作成後、ビジネス要件に基づいて、HTTPトリガーのバージョンまたはエイリアスリクエストメソッドインターネットURLの無効化認証方法などの一部のパラメーターを変更できます。

ステップ2: コードの書き込みとデプロイ

HTTPトリガーの作成後、関数のコードを記述できます。

[関数の詳細] ページで、[コード] タブをクリックし、コードエディターで関数コードを編集し、[デプロイ] をクリックします。 さまざまなプログラミング言語のサンプルコードは、Function Computeドキュメントの [ユーザーガイド] > [コード開発] から入手できます。

ステップ3: 関数のテスト

方法1: function Computeコンソールで関数をテストする

関数の詳細ページで、コードタブをクリックします。

  • 同期呼び出し

    [テスト関数] をクリックします。

  • 非同期呼び出し

    [テスト関数] の横にあるdownアイコンをクリックし、[非同期呼び出し] を選択し、[テスト関数] をクリックします。

テストが完了したら、[コード] タブでテスト結果を表示します。

方法2: cURLを使用して関数をテストする

機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[トリガー] をクリックします。 HTTPトリガーの設定で、その後のテスト用にパブリックエンドポイントをコピーします。

image

  • 同期呼び出し

    次のコマンドを実行します。 コマンドの実行後、結果が返されます。

    curl -v https://http-***.cn-shenzhen.fcapp.run/$path
  • 非同期呼び出し

    CLIで次のコマンドを実行します。 コマンドの実行後、Function Computeによるリクエストの実行結果が返されます。 202が返された場合、リクエストは成功しました。 別のステータスコードが返された場合、呼び出し中にエラーが発生しました。 ステータスコードの詳細については、「トラブルシューティング」をご参照ください。

    curl -v -H "X-Fc-Invocation-Type: Async" https://http-***.cn-shenzhen.fcapp.run/$path

(オプション) API Gatewayを使用して関数を保護する

デフォルトでは、Function Computeは関数への匿名アクセスをサポートし、HTTPリクエストを認証しません。 すべてのユーザーがHTTPリクエストを使用して関数を呼び出すことができます。 リソースの無駄を防ぎ、不正アクセスによるセキュリティリスクを軽減するために、ID認証を有効にし、HTTP機能をAPI Gatewayに接続できます。 IPアドレスベースのアクセス制御プラグイン、JWT認証プラグイン、またはAPI Gatewayの基本認証プラグインを使用して、HTTP機能を保護できます。

  1. Function Computeコンソールで、管理する関数を見つけます。 機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[トリガー] をクリックします。 次に、[変更] をクリックします。

  2. トリガー変更パネルで、インターネットURLを無効にするはいをクリックします。

  3. API Gatewayコンソールにログインし、HTTP関数が存在するリージョンに切り替えます。

  4. APIグループを作成します。 詳細については、「APIグループの作成」をご参照ください。

  5. CNAMEを使用して、ドメイン名をAPI Gatewayが提供する第2レベルのドメイン名に解決します。 詳細については、「CNAMEレコードの追加」をご参照ください。

  6. APIを作成します。

    主なパラメーターの設定方法を次に示します。 ビジネス要件に基づいて、デフォルト値を保持するか、他のパラメーターのカスタム値を設定します。 詳細については、「APIの作成」をご参照ください。

    • セキュリティ認証: [認証なし] を選択します。 認証はプラグインに基づいて実行されます。

    • リクエストパス: ルートディレクトリ /を入力し、[すべてのサブパスに一致] を選択します。

    • HTTPメソッド: [ANY] を選択します。

    • リクエストモード: パススルーを選択します。

    • バックエンドサービスタイプ: [Function Compute] を選択します。

    • バージョン: Function Compute V3.0を選択します。

    • 関数タイプ: [HTTP関数] を選択します。

    • トリガーパス: Function ComputeにHTTPトリガーの内部エンドポイントを入力します。

    • ContentType: [パススルークライアントコンテンツタイプヘッダー] を選択します。

  7. APIを公開します。 作成したAPIの [操作] 列で [公開] をクリックし、オンライン環境を選択して、[公開] をクリックします。

  8. バックエンド署名プラグインを作成します。 Alibaba CloudアカウントのAccessKey IDAccessKey secretkeysecretを設定します。 次に、作成したAPIにプラグインをバインドします。 詳細については、「概要」をご参照ください。

上記の手順を完了すると、独自のドメイン名を使用してHTTP関数にアクセスできます。 次のプラグインを作成してAPIにバインドし、HTTP関数を保護することもできます。

トラブルシューティング

関数を呼び出すリクエストを送信すると、次のエラーが発生する可能性があります。

  • リクエストエラー: リクエストが特定の要件を満たしていない場合、リクエストエラーが発生します。 リクエストエラーが発生した場合、4xxコードがレスポンスで返されます。

  • 関数エラー: 関数コードが無効な場合、関数エラーが発生します。 この場合、5xxコードが返されます。

次の表に、リクエストエラーと関数エラーが発生するシナリオを示します。 エラーの原因に基づいてエラーをトラブルシューティングできます。

エラータイプ

HTTPステータスコード

原因

課金可能

リクエストエラー

400

リクエストがHTTPリクエストの制限を超えています。 詳細については、「概要」をご参照ください。

いいえ

400

ID認証が必要な関数のリクエストには、日付情報または権限情報が含まれていません。

いいえ

403

ID認証が必要な関数のリクエストの署名が無効です。 その結果、認可情報は無効となる。 日付情報は署名を計算するために使用され、署名は15分間のみ有効です。 アクセス認証が必要なHTTPトリガーを使用する場合、リクエストヘッダーの日付情報が15分以上前に生成された場合、署名は無効になります。

いいえ

403

リクエストは、HTTPトリガーで設定されていないメソッドを使用して送信されます。 たとえば、POSTメソッドを使用してHTTPリクエストを送信し、HTTPトリガーでGETメソッドのみが設定されている場合、このエラーが発生します。

いいえ

404

HTTPリクエストは、HTTPトリガーが設定されていない関数に送信されます。

いいえ

トラフィックスロットリングエラー

429

あなたのトラフィックは抑制されています。 同時リクエストを減らすか、Function Computeのテクニカルサポートに連絡して同時実行設定を増やすことができます。

いいえ

関数エラー

502

関数のレスポンスがHTTPレスポンスの制限を超えています。 詳細については、「概要」をご参照ください。

はい

502

関数のコードに構文エラーまたは例外があります。

はい

502

HTTPハンドラ関数を使用しない関数にHTTPリクエストが送信されます。

はい

システムエラー

500

Function Computeでシステムエラーが発生しました。 もう一度お試しください。

いいえ

システムスロットリングエラー

503

Function Computeでシステムスロットリングエラーが発生しました。 指数バックオフモードでもう一度お試しください。

いいえ

問題が解決しない場合は、DingTalkグループに参加する64970014484テクニカルサポートのため。