Function ComputeはHTTPトリガーをサポートしています。 HTTPトリガーで設定された関数は、HTTPリクエストによって呼び出すことができます。 関数はHTTPリクエストを受信して処理し、呼び出し元に応答を返します。 このトピックでは、Function ComputeコンソールでHTTPリクエストで関数を呼び出すHTTPトリガーを設定する方法について説明します。
始める前に
ステップ1: トリガーを作成する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [関数] ページで、管理する関数をクリックします。
機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[トリガー] をクリックします。 次に、[トリガーの作成] をクリックします。
トリガー作成パネルで、パラメーターを設定し、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コンソールで関数をテストする
関数の詳細ページで、コードタブをクリックします。
同期呼び出し
[テスト関数] をクリックします。
非同期呼び出し
[テスト関数] の横にあるアイコンをクリックし、[非同期呼び出し] を選択し、[テスト関数] をクリックします。
テストが完了したら、[コード] タブでテスト結果を表示します。
方法2: cURLを使用して関数をテストする
機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[トリガー] をクリックします。 HTTPトリガーの設定で、その後のテスト用にパブリックエンドポイントをコピーします。
同期呼び出し
次のコマンドを実行します。 コマンドの実行後、結果が返されます。
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機能を保護できます。
Function Computeコンソールで、管理する関数を見つけます。 機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[トリガー] をクリックします。 次に、[変更] をクリックします。
トリガー変更パネルで、インターネットURLを無効にするではいをクリックします。
API Gatewayコンソールにログインし、HTTP関数が存在するリージョンに切り替えます。
APIグループを作成します。 詳細については、「APIグループの作成」をご参照ください。
CNAMEを使用して、ドメイン名をAPI Gatewayが提供する第2レベルのドメイン名に解決します。 詳細については、「CNAMEレコードの追加」をご参照ください。
APIを作成します。
主なパラメーターの設定方法を次に示します。 ビジネス要件に基づいて、デフォルト値を保持するか、他のパラメーターのカスタム値を設定します。 詳細については、「APIの作成」をご参照ください。
セキュリティ認証: [認証なし] を選択します。 認証はプラグインに基づいて実行されます。
リクエストパス: ルートディレクトリ /を入力し、[すべてのサブパスに一致] を選択します。
HTTPメソッド: [ANY] を選択します。
リクエストモード: パススルーを選択します。
バックエンドサービスタイプ: [Function Compute] を選択します。
バージョン: Function Compute V3.0を選択します。
関数タイプ: [HTTP関数] を選択します。
トリガーパス: Function ComputeにHTTPトリガーの内部エンドポイントを入力します。
ContentType: [パススルークライアントコンテンツタイプヘッダー] を選択します。
APIを公開します。 作成したAPIの [操作] 列で [公開] をクリックし、オンライン環境を選択して、[公開] をクリックします。
バックエンド署名プラグインを作成します。 Alibaba Cloudアカウントの
AccessKey ID
とAccessKey secret
にkey
とsecret
を設定します。 次に、作成した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テクニカルサポートのため。