このトピックでは、カスタムランタイム環境の作成に使用できる共通リクエストヘッダー、レスポンスコード、レスポンスヘッダー、およびログフォーマットについて説明します。
Function Compute の共通リクエストヘッダー
次の表に、カスタムランタイムが Function Compute から受け取る共通リクエストヘッダーをリストします。他の Alibaba Cloud サービスにアクセスするには、一時的な AccessKey ヘッダーが必要になる場合があります。既存のアプリケーションを移行する場合、この情報は無視できます。
イベント関数と HTTP 関数の両方に共通ヘッダーが含まれます。
Function Compute は共通リクエストヘッダーを自動的に生成します。これらのヘッダーには、主に権限と基本的な関数情報が含まれます。
ヘッダー | 説明 |
x-fc-request-id | リクエスト ID。 |
x-fc-access-key-id | 一時的な AccessKey ID。 |
x-fc-access-key-secret | 一時的な AccessKey Secret。 |
x-fc-security-token | 一時的なセキュリティトークン。 |
x-fc-function-handler | 関数のハンドラ。カスタムランタイムやカスタムコンテナー関数のように、ランタイム自体が関数である場合、この値は意味がありません。ランダムな文字列に設定してください。 |
x-fc-function-memory | 関数が使用できる最大メモリ。 |
x-fc-function-initializer | Initializer 関数のハンドラ。カスタムランタイムやカスタムコンテナー関数のように、ランタイム自体が関数である場合、この値は意味がありません。ランダムな文字列に設定してください。 |
x-fc-initialization-timeout | Initializer 関数の実行のタイムアウト期間。 |
x-fc-instance-lifecycle-pre-stop-handler | PreStop 関数のハンドラ。カスタムランタイムやカスタムコンテナー関数のように、ランタイム自体が関数である場合、この値は意味がありません。ランダムな文字列に設定してください。 |
x-fc-instance-lifecycle-pre-freeze-handler | PreFreeze 関数のハンドラ。カスタムランタイムやカスタムコンテナー関数のように、ランタイム自体が関数である場合、この値は意味がありません。ランダムな文字列に設定してください。 |
x-fc-region | 関数が配置されているリージョン。 |
x-fc-account-id | 関数オーナーの UID。 |
x-fc-qualifier | 関数呼び出し時に指定されたサービスバージョンまたはエイリアス。詳細については、「バージョンとエイリアスを使用して段階的リリースを実装する」をご参照ください。 |
x-fc-version-id | 関数呼び出し時に指定されたサービスバージョン。 |
x-fc-function-name | 関数名。 |
x-fc-service-name | 関数が配置されているサービスの名前。 |
x-fc-service-logproject | 関数が配置されているサービスに構成されたログプロジェクト。 |
x-fc-service-logstore | 関数が配置されているサービスに構成された Logstore。 |
x-fc-control-path | 関数のリクエストタイプ。 カスタムランタイムまたはカスタムコンテナーの場合、ヘッダーのパラメーターに基づいて、関数呼び出しが HTTP 関数用かイベント関数用かを判断できます。パラメーター情報は次のとおりです。
|
Function Compute のレスポンスコードとレスポンスヘッダー
カスタムランタイムは、本質的にはユーザーが実装する HTTP サーバーです。したがって、各関数呼び出しは HTTP リクエストであり、各レスポンスにはレスポンスコードとレスポンスヘッダーがあります。
レスポンスコード
StatusCode200: 成功ステータス。404: 失敗ステータス。
レスポンスヘッダー
x-fc-status200: 成功ステータス。404: 失敗ステータス。
x-fc-status レスポンスヘッダーを使用して、ローカル関数が正常に実行されたかどうかを Function Compute にレポートします。
x-fc-statusが設定されていない場合、Function Compute はデフォルトで呼び出しが成功したと見なします。ただし、関数で例外が発生し、それが Function Compute にレポートされない場合があります。この場合でも、Function Compute は実行が成功したと見なします。これはビジネスロジックに影響しないかもしれませんが、モニタリングと可観測性に影響します。次の図に例を示します:
x-fc-statusが設定されている場合: 関数で例外が発生した場合、x-fc-statusレスポンスヘッダーを使用して実行の失敗を Function Compute にレポートできます。また、エラーのスタック情報をログに出力することもできます。次の図に例を示します:
HTTP レスポンスに StatusCode と x-fc-status の両方を設定してください。
関数ログのフォーマット
サービスを作成するときに、ロギング機能を有効にできます。カスタムランタイムの標準出力 (stdout) に出力されたすべてのログは、指定した Simple Log Service に自動的に収集されます。詳細については、「ログの構成」をご参照ください。
Function Compute がカスタムランタイムおよびカスタムコンテナー以外のランタイム環境で関数を呼び出すとき、リクエストヘッダーに x-fc-log-type: Tail が含まれている場合、返される x-fc-log-result レスポンスヘッダーには、関数の実行中に出力されたログが含まれます。ログサイズは 4 KB に制限されています。これらのログは、Function Computeコンソール の関数実行結果で表示できます。コンソールの実行結果でカスタムランタイムのランタイムログを表示したい場合は、コード内でリクエストの開始ログと終了ログを記録する必要があります。
HTTP トリガーを使用して関数を匿名で呼び出す場合、リクエストヘッダーに x-fc-log-type: Tail を含めると、機密情報が漏洩する可能性があります。これを防ぐには、認証を有効にします。詳細については、「認証」をご参照ください。
ログの内容 | 必須 | コード |
ランタイムの開始 | いいえ 説明 この内容は、関数のコールドスタートのフラグです。 |
説明
|
Invoke 開始のログ | はい |
|
Invoke 終了のログ | はい |
|
Initialize 開始のログ | いいえ 説明 Initializer 関数に必要です。 |
|
Initialize 終了のログ | いいえ 説明 Initializer 関数に必要です。 |
|
上記の情報に加えて、問題の診断に役立つように、ログにリクエスト ID を含めてください。推奨されるログフォーマットは $utcdatetime(yyyy-MM-ddTHH:mm:ss.fff) $requestId [$Level] $message です。
ログレベルを指定するためのインターフェイスは言語によって異なります。ランタイム環境に基づいてログレベルを設定する必要があります。詳細については、「基本情報」をご参照ください。
関連ドキュメント
カスタムランタイム環境、さまざまな言語の起動コマンドとパラメーター構成、およびインスタンスのライフサイクルフック関数の構成の詳細については、次のトピックをご参照ください。