関数
OpenShift Serverless Functions のセットアップおよび使用
概要
第1章 OpenShift Serverless Functions の設定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションコードのデプロイプロセスを改善するために、OpenShift Serverless を使用して、ステートレスでイベント駆動型の関数を Knative サービスとして OpenShift Container Platform にデプロイできます。関数を開発する場合は、セットアップ手順を完了する必要があります。
1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
クラスターで OpenShift Serverless Functions の使用を有効にするには、以下の手順を実行する必要があります。
OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
注記関数は Knative サービスとしてデプロイされます。関数でイベント駆動型のアーキテクチャーを使用する必要がある場合は、Knative Eventing もインストールする必要があります。
-
ocCLI がインストールされている。 -
Knative (
kn) CLI がインストールされている。Knative CLI をインストールすると、関数の作成および管理に使用できるkn funcコマンドを使用できます。 - Docker Container Engine または Podman バージョン 3.4.7 以降がインストールされている。
- OpenShift Container Registry などの利用可能なイメージレジストリーにアクセスできる。
- Quay.io をイメージレジストリーとして使用する場合は、リポジトリーがプライベートではないか確認するか、OpenShift Container Platform ドキュメント Pod が他のセキュアなレジストリーからイメージを参照できるようにする設定 に従っていることを確認する必要があります。
- OpenShift Container レジストリーを使用している場合には、クラスター管理者は レジストリーを公開する 必要があります。
1.2. Podman の設定 リンクのコピーリンクがクリップボードにコピーされました!
高度なコンテナー管理機能を使用するには、OpenShift Serverless Functions で Podman を使用することをお勧めします。そのためには、Podman サービスを開始し、それに接続するように Knative (kn) CLI を設定する必要があります。
手順
${XDG_RUNTIME_DIR}/podman/podman.sockで、UNIX ソケットで Docker API を提供する Podman サービスを起動します。systemctl start --user podman.socket
$ systemctl start --user podman.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記多くのシステムでは、このソケットは
/run/user/$(id -u)/podman/podman.sockにあります。関数のビルドに使用する環境変数を確立します。
export DOCKER_HOST="unix://${XDG_RUNTIME_DIR}/podman/podman.sock"$ export DOCKER_HOST="unix://${XDG_RUNTIME_DIR}/podman/podman.sock"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -vフラグを指定して、関数プロジェクトディレクトリー内で build コマンドを実行し、詳細な出力を表示します。ローカルの UNIX ソケットへの接続が表示されるはずです。kn func build -v
$ kn func build -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. macOS での Podman のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
高度なコンテナー管理機能を使用するには、OpenShift Serverless Functions で Podman を使用することをお勧めします。macOS でこれを行うには、Podman マシンを起動し、それに接続するように Knative (kn) CLI を設定する必要があります。
手順
Podman マシンを作成します。
podman machine init --memory=8192 --cpus=2 --disk-size=20
$ podman machine init --memory=8192 --cpus=2 --disk-size=20Copy to Clipboard Copied! Toggle word wrap Toggle overflow UNIX ソケットで Docker API を提供する Podman マシンを開始します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ほとんどの macOS システムでは、このソケットは
/Users/myuser/.local/share/containers/podman/machine/podman-machine-default/podman.sockにあります。関数のビルドに使用する環境変数を確立します。
export DOCKER_HOST='unix:///Users/myuser/.local/share/containers/podman/machine/podman-machine-default/podman.sock'
$ export DOCKER_HOST='unix:///Users/myuser/.local/share/containers/podman/machine/podman-machine-default/podman.sock'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -vフラグを指定して、関数プロジェクトディレクトリー内で build コマンドを実行し、詳細な出力を表示します。ローカルの UNIX ソケットへの接続が表示されるはずです。kn func build -v
$ kn func build -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
- Docker Container Engine または Podman の詳細は、コンテナービルドツールのオプション を参照してください。
- 関数を使い始めるを参照してください。
第2章 関数を使い始める リンクのコピーリンクがクリップボードにコピーされました!
関数のライフサイクル管理には、関数の作成、構築、デプロイが含まれます。必要に応じて、デプロイされた関数を呼び出してテストすることもできます。これらの操作はすべて、kn func ツールを使用して OpenShift Serverless で実行できます。
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を実行する前に、OpenShift Serverless 機能の設定の要件タスクをすべて完了している必要があります。
2.2. 関数の作成 リンクのコピーリンクがクリップボードにコピーされました!
関数をビルドし、デプロイする前に、Knative (kn) CLI を使用して関数を作成する必要があります。コマンドラインでパス、ランタイム、テンプレート、およびイメージレジストリーをフラグとして指定するか、-c フラグを使用してターミナルで対話型エクスペリエンスを開始できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。
手順
関数プロジェクトを作成します。
kn func create -r <repository> -l <runtime> -t <template> <path>
$ kn func create -r <repository> -l <runtime> -t <template> <path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
受け入れられるランタイム値には、
quarkus、node、typescript、go、python、springboot、およびrustが含まれます。 受け入れられるテンプレート値には、
httpとcloudeventsが含まれます。コマンドの例
kn func create -l typescript -t cloudevents examplefunc
$ kn func create -l typescript -t cloudevents examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Created typescript function in /home/user/demo/examplefunc
Created typescript function in /home/user/demo/examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、カスタムテンプレートを含むリポジトリーを指定することもできます。
コマンドの例
kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc
$ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Created node function in /home/user/demo/examplefunc
Created node function in /home/user/demo/examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
受け入れられるランタイム値には、
2.3. 機能をローカルで実行する リンクのコピーリンクがクリップボードにコピーされました!
kn func run コマンドを使用して、現在のディレクトリーまたは --path フラグで指定されたディレクトリーで機能をローカルに実行できます。実行している関数が以前にビルドされたことがない場合、またはプロジェクトファイルが最後にビルドされてから変更されている場合、kn func run コマンドは、既定で関数を実行する前に関数をビルドします。
現在のディレクトリーで機能を実行するコマンドの例
kn func run
$ kn func run
パスとして指定されたディレクトリーで機能を実行するコマンドの例
kn func run --path=<directory_path>
$ kn func run --path=<directory_path>
--build フラグを使用して、プロジェクトファイルに変更がなくても、機能を実行する前に既存のイメージを強制的に再構築することもできます。
ビルドフラグを使用した実行コマンドの例
kn func run --build
$ kn func run --build
ビルド フラグを false に設定すると、イメージのビルドが無効になり、以前にビルドされたイメージを使用して機能が実行されます。
ビルドフラグを使用した実行コマンドの例
kn func run --build=false
$ kn func run --build=false
help コマンドを使用して、kn func run コマンドオプションの詳細を確認できます。
help コマンドの構築
kn func help run
$ kn func help run
2.4. 関数のビルド リンクのコピーリンクがクリップボードにコピーされました!
関数を実行する前に、関数プロジェクトをビルドする必要があります。kn func run コマンドを使用している場合、関数は自動的に構築されます。ただし、kn func build コマンドを使用すると、実行せずに関数をビルドできます。これは、上級ユーザーやデバッグシナリオに役立ちます。
kn func build は、コンピューターまたは OpenShift Container Platform クラスターでローカルに実行できる OCI コンテナーイメージを作成します。このコマンドは、関数プロジェクト名とイメージレジストリー名を使用して、関数の完全修飾イメージ名を作成します。
2.4.1. イメージコンテナーの種類 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、kn func build は、Red Hat Source-to-Image (S2I) テクノロジーを使用してコンテナーイメージを作成します。
Red Hat Source-to-Image (S2I) を使用したビルドコマンドの例
kn func build
$ kn func build
2.4.2. イメージレジストリーの種類 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Registry は、関数イメージを保存するためのイメージレジストリーとしてデフォルトで使用されます。
OpenShift Container Registry を使用したビルドコマンドの例
kn func build
$ kn func build
出力例
Building function image Function image has been built, image: registry.redhat.io/example/example-function:latest
Building function image
Function image has been built, image: registry.redhat.io/example/example-function:latest
--registry フラグを使用して、OpenShift Container Registry をデフォルトのイメージレジストリーとして使用することをオーバーライドできます。
quay.io を使用するように OpenShift Container Registry をオーバーライドするビルドコマンドの例
kn func build --registry quay.io/username
$ kn func build --registry quay.io/username
出力例
Building function image Function image has been built, image: quay.io/username/example-function:latest
Building function image
Function image has been built, image: quay.io/username/example-function:latest
2.4.3. Push フラグ リンクのコピーリンクがクリップボードにコピーされました!
--push フラグを kn func build コマンドに追加して、正常にビルドされた後に関数イメージを自動的にプッシュできます。
OpenShift Container Registry を使用したビルドコマンドの例
kn func build --push
$ kn func build --push
2.4.4. Help コマンド リンクのコピーリンクがクリップボードにコピーされました!
kn func build コマンドオプションの詳細については、help コマンドを使用できます。
help コマンドの構築
kn func help build
$ kn func help build
2.5. 関数のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
kn func deploy コマンドを使用して、関数を Knative サービスとしてクラスターにデプロイできます。ターゲット関数がすでにデプロイされている場合には、コンテナーイメージレジストリーにプッシュされている新規コンテナーイメージで更新され、Knative サービスが更新されます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- デプロイする関数を作成し、初期化している必要がある。
手順
関数をデプロイします。
kn func deploy [-n <namespace> -p <path> -i <image>]
$ kn func deploy [-n <namespace> -p <path> -i <image>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Function deployed at: http://func.example.com
Function deployed at: http://func.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
namespaceが指定されていない場合には、関数は現在の namespace にデプロイされます。 -
この関数は、
パスが指定されない限り、現在のディレクトリーからデプロイされます。 - Knative サービス名はプロジェクト名から派生するので、以下のコマンドでは変更できません。
-
Developer パースペクティブの +Add ビューで Import from Git または Create Serverless Function を使用して、Git リポジトリー URL を使用してサーバーレス関数を作成できます。
2.6. テストイベントでのデプロイされた関数の呼び出し リンクのコピーリンクがクリップボードにコピーされました!
kn func invoke CLI コマンドを使用して、ローカルまたは OpenShift Container Platform クラスター上で関数を呼び出すためのテストリクエストを送信できます。このコマンドを使用して、関数が機能し、イベントを正しく受信できることをテストできます。関数をローカルで呼び出すと、関数開発中の簡単なテストに役立ちます。クラスターで関数を呼び出すと、実稼働環境に近いテストに役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- 呼び出す関数をすでにデプロイしている必要があります。
手順
関数を呼び出します。
kn func invoke
$ kn func invokeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
kn func invokeコマンドは、ローカルのコンテナーイメージが実行中の場合や、クラスターにデプロイされた関数がある場合にのみ機能します。 -
kn func invokeコマンドは、デフォルトでローカルディレクトリーで実行され、このディレクトリーが関数プロジェクトであると想定します。
-
2.7. 関数の削除 リンクのコピーリンクがクリップボードにコピーされました!
kn func delete コマンドを使用して関数を削除できます。これは、関数が不要になった場合に役立ち、クラスターのリソースを節約するのに役立ちます。
手順
関数を削除します。
kn func delete [<function_name> -n <namespace> -p <path>]
$ kn func delete [<function_name> -n <namespace> -p <path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
削除する関数の名前またはパスが指定されていない場合には、現在のディレクトリーで
func.yamlファイルを検索し、削除する関数を判断します。 -
namespace が指定されていない場合には、
func.yamlのnamespaceの値にデフォルト設定されます。
-
削除する関数の名前またはパスが指定されていない場合には、現在のディレクトリーで
2.9. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
- Knative Eventing でのチャネルの使用 を参照してください。
第3章 クラスター上での機能の構築とデプロイ リンクのコピーリンクがクリップボードにコピーされました!
関数をローカルでビルドする代わりに、クラスターで直接関数をビルドできます。このワークフローをローカル開発マシンで使用する場合は、関数のソースコードのみを操作する必要があります。これは、たとえば、docker や podman などのクラスター上の関数構築ツールをインストールできない場合に役立ちます。
3.1. クラスターでの関数のビルドとデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して、関数プロジェクトのビルドを開始し、関数をクラスターに直接デプロイできます。この方法で関数プロジェクトをビルドするには、関数プロジェクトのソースコードが、クラスターにアクセスできる Git リポジトリーブランチに存在する必要があります。
前提条件
- Red Hat OpenShift パイプラインをクラスターにインストールする必要がある。
-
OpenShift CLI (
oc) がインストールされている。 -
Knative (
kn) CLI をインストールしている。
手順
OpenShift パイプラインを実行して関数をデプロイする各 namespace で、次のリソースを作成する必要があります。
パイプラインで Source-to-Image を使用できるように
s2iTekton タスクを作成します。oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-s2i/0.1/func-s2i.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-s2i/0.1/func-s2i.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow kn funcdeploy Tekton タスクを作成して、パイプラインに関数をデプロイできるようにします。oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関数を作成します。
kn func create <function_name> -l <runtime>
$ kn func create <function_name> -l <runtime>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
新しい関数プロジェクトを作成したら、プロジェクトを Git リポジトリーに追加し、リポジトリーがクラスターで使用可能であることを確認する必要があります。この Git リポジトリーに関する情報は、次のステップで
func.yamlファイルを更新するために使用されます。 関数プロジェクトの
func.yamlファイルの設定を更新して、Git リポジトリーのクラスター上ビルドを有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 関数のビジネスロジックを実装します。次に、Git を使用して変更をコミットしてプッシュします。
関数をデプロイします。
kn func deploy --remote
$ kn func deploy --remoteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 関数設定で参照されているコンテナーレジストリーにログインしていない場合は、関数イメージをホストするリモートコンテナーレジストリーの資格情報を入力するように求められます。
出力例とプロンプト
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
関数を更新するには、Git を使用して新しい変更をコミットしてプッシュしてから、
kn func deploy --remoteコマンドを再度実行します。
3.2. 関数リビジョンの指定 リンクのコピーリンクがクリップボードにコピーされました!
関数をビルドしてクラスターにデプロイするときは、リポジトリー内の Git リポジトリー、ブランチ、およびサブディレクトリーを指定して、関数コードの場所を指定する必要があります。main ブランチを使用する場合は、ブランチを指定する必要はありません。同様に、関数がリポジトリーのルートにある場合、サブディレクトリーを指定する必要はありません。これらのパラメーターは、func.yaml 設定ファイルで指定するか、kn func deploy コマンドでフラグを使用して指定できます。
前提条件
- Red Hat OpenShift パイプラインをクラスターにインストールする必要がある。
-
OpenShift (
oc) CLI がインストールされている。 -
Knative (
kn) CLI をインストールしている。
手順
関数をデプロイします。
kn func deploy --remote \ --git-url <repo-url> \ [--git-branch <branch>] \ [--git-dir <function-dir>]$ kn func deploy --remote \1 --git-url <repo-url> \2 [--git-branch <branch>] \3 [--git-dir <function-dir>]4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
kn func deploy --remote \ --git-url https://example.com/alice/myfunc.git \ --git-branch my-feature \ --git-dir functions/example-func/$ kn func deploy --remote \ --git-url https://example.com/alice/myfunc.git \ --git-branch my-feature \ --git-dir functions/example-func/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 Quarkus 関数の開発 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus 関数プロジェクトを作成 したら、指定のテンプレートを変更して、関数にビジネスロジックを追加できます。これには、関数呼び出しと返されるヘッダーとステータスコードの設定が含まれます。
4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 関数を開発する前に、OpenShift Serverless 機能の設定の設定手順を完了する必要があります。
4.2. Quarkus 関数テンプレートの構造 リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して Quarkus 機能を作成する場合の、プロジェクトディレクトリーは通常の Maven プロジェクトに似ています。さらに、プロジェクトには、関数の設定に使用される func.yaml ファイルが含まれています。
http および event トリガー関数のテンプレート構造はいずれも同じです。
テンプレート構造
- 1
- イメージ名とレジストリーを判断するために使用されます。
- 2
- プロジェクトオブジェクトモデル (POM) ファイルには、依存関係に関する情報などのプロジェクト設定が含まれています。このファイルを変更して、別の依存関係を追加できます。
追加の依存関係の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 依存関係は、最初のコンパイル時にダウンロードされます。
- 3
- 関数プロジェクトには、
@Funqアノテーションが付けられた Java メソッドが含まれている必要があります。このメソッドはFunction.javaクラスに配置できます。 - 4
- 関数のローカルでのテストに使用できる単純なテストケースが含まれます。
4.3. Quarkus 関数の呼び出しについて リンクのコピーリンクがクリップボードにコピーされました!
CloudEvents に応答する Quarkus プロジェクトや、簡単な HTTP 要求に応答する Quarkus プロジェクトを作成できます。Knative の CloudEvents は HTTP 経由で POST 要求として転送されるため、いずれかの関数タイプは受信 HTTP 要求をリッスンして応答します。
受信要求が受信されると、Quarkus 関数は使用可能なタイプのインスタンスと合わせて呼び出されます。
| 呼び出しメソッド | インスタンスに含まれるデータタイプ | データの例 |
|---|---|---|
| HTTP POST 要求 | 要求のボディーに含まれる JSON オブジェクト |
|
| HTTP GET 要求 | クエリー文字列のデータ |
|
|
|
|
|
以下の例は、以前の表に記載されている customerId および productId の購入データを受信して処理する関数です。
Quarkus 関数の例
購入データが含まれる、該当の Purchase JavaBean クラスは以下のようになります。
クラスの例
public class Purchase {
private long customerId;
private long productId;
// getters and setters
}
public class Purchase {
private long customerId;
private long productId;
// getters and setters
}
4.3.1. StorageLocation の例 リンクのコピーリンクがクリップボードにコピーされました!
以下のコード例は、withBeans、withCloudEvent、および withBinary の 3 つの関数を定義します。
例
Functions クラスの withBeans 機能は、以下にで呼び出すことができます。
JSON ボディーが含まれる HTTP POST 要求:
curl "http://localhost:8080/withBeans" -X POST \ -H "Content-Type: application/json" \ -d '{"message": "Hello there."}'$ curl "http://localhost:8080/withBeans" -X POST \ -H "Content-Type: application/json" \ -d '{"message": "Hello there."}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow クエリーパラメーターが含まれる HTTP GET 要求:
curl "http://localhost:8080/withBeans?message=Hello%20there." -X GET
$ curl "http://localhost:8080/withBeans?message=Hello%20there." -X GETCopy to Clipboard Copied! Toggle word wrap Toggle overflow バイナリーエンコーディングの
CloudEventオブジェクト:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 構造化されたエンコーディングでの
CloudEventオブジェクト:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Functions クラスの withCloudEvent 機能は、withBeans 関数 と同様に CloudEvent オブジェクトを使用して呼び出すことができます。ただし、withBeans とは異なり、withCloudEvent はプレーン HTTP 要求で呼び出すことはできません。
Functions クラスの withBinary 関数は、以下にで呼び出すことができます。
バイナリーエンコーディングの
CloudEventオブジェクト:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 構造化されたエンコーディングでの
CloudEventオブジェクト:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. CloudEvent 属性 リンクのコピーリンクがクリップボードにコピーされました!
type または subject など CloudEvent の属性を読み取るか、書き込む必要がある場合は、CloudEvent<T> 汎用インターフェイスおよび CloudEventBuilder ビルダーを使用できます。<T> タイプパラメーターは使用可能なたタイプのいずれかでなければなりません。
以下の例では、CloudEventBuilder を使用して、購入処理の成功または失敗を返します。
4.5. Quarkus 関数の戻り値 リンクのコピーリンクがクリップボードにコピーされました!
関数は、許可された型のリストから任意の型のインスタンスを返すことができます。または、Uni<T> 型を返すこともできます。ここで、<T> 型パラメーターは、許可されている型の任意の型にすることができます。
Uni<T> タイプは、返されるオブジェクトが受信したオブジェクトと同じ形式でシリアライズされるため、関数が非同期 API を呼び出す場合に便利です。以下に例を示します。
- 関数が HTTP 要求を受信すると、返されるオブジェクトが HTTP 応答のボディーに送信されます。
-
関数がバイナリーエンコーディングで
CloudEventオブジェクトを受信する場合に、返されるオブジェクトはバイナリーエンコードされたCloudEventオブジェクトの data プロパティーで送信されます。
以下の例は、購入リストを取得する関数を示しています。
コマンドの例
- HTTP 要求経由でこの関数を呼び出すと、応答のボディーに購入された一覧が含まれる HTTP 応答が生成されます。
-
受信
CloudEventオブジェクト経由でこの関数を呼び出すと、dataプロパティーの購入リストが含まれるCloudEvent応答が生成されます。
4.5.1. 使用可能なタイプ リンクのコピーリンクがクリップボードにコピーされました!
関数の入力と出力は、void、String、または byte[] 型のいずれかです。さらに、プリミティブ型とそのラッパー (int や Integer など) にすることもできます。これらは、Javabean、マップ、リスト、配列、および特殊な CloudEvents<T> タイプの複合オブジェクトにすることもできます。
マップ、リスト、配列、CloudEvents<T> 型の <T> 型パラメーター、および Javabeans の属性は、ここにリストされている型のみにすることができます。
例
4.6. Quarkus 関数のテスト リンクのコピーリンクがクリップボードにコピーされました!
Quarkus 関数は、コンピューターに対してローカルでテストできます。kn func create を使用して関数を作成するときに作成されるデフォルトプロジェクトには、基本的な Maven テストを含む src/test/ ディレクトリーがあります。これらのテストは、必要に応じて拡張できます。
前提条件
- Quarkus 関数を作成している。
-
Knative (
kn) CLI をインストールしている。
手順
- 関数のプロジェクトフォルダーに移動します。
Maven テストを実行します。
./mvnw test
$ ./mvnw testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
第5章 Node.js 関数の開発 リンクのコピーリンクがクリップボードにコピーされました!
Node.js 関数プロジェクトを作成 したら、指定のテンプレートを変更して、関数にビジネスロジックを追加できます。これには、関数呼び出しと返されるヘッダーとステータスコードの設定が含まれます。
5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 関数を開発する前に、OpenShift Serverless 機能の設定の手順を実行する必要があります。
5.2. Node.js 関数テンプレート構造 リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して Node.js 関数を作成すると、プロジェクトディレクトリーは典型的な Node.js プロジェクトのようになります。唯一の例外は、関数の設定に使用される追加の func.yaml ファイルです。
http および event トリガー関数のテンプレート構造はいずれも同じです。
テンプレート構造
- 1
func.yaml設定ファイルは、イメージ名とレジストリーを判断するために使用されます。- 2
- プロジェクトに関数を 1 つエクスポートする
index.jsファイルを追加する必要があります。 - 3
- テンプレート
package.jsonファイルにある依存関係に限定されるわけではありません。他の Node.js プロジェクトと同様に、別の依存関係を追加できます。npm 依存関係の追加例
npm install --save opossum
npm install --save opossumCopy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメント用にプロジェクトをビルドすると、これらの依存関係は作成したランタイムコンテナーイメージに含まれます。
- 4
- 統合およびテストスクリプトは、関数テンプレートの一部として提供されます。
5.3. Node.js 関数の呼び出しについて リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して関数プロジェクトを作成する場合に、CloudEvents に応答するプロジェクト、または単純な HTTP 要求に応答するプロジェクトを生成できます。Knative の CloudEvents は HTTP 経由で POST 要求として転送されるため、関数タイプはいずれも受信 HTTP イベントをリッスンして応答します。
Node.js 関数は、単純な HTTP 要求で呼び出すことができます。受信要求を受け取ると、関数は context オブジェクトで最初のパラメーターとして呼び出されます。
5.3.1. Node.js コンテキストオブジェクト リンクのコピーリンクがクリップボードにコピーされました!
関数は、context オブジェクトを最初のパラメーターとして渡して呼び出されます。このオブジェクトは、受信 HTTP 要求情報へのアクセスを提供します。
コンテキストオブジェクトの例
function handle(context, data)
function handle(context, data)
この情報には、HTTP リクエストメソッド、リクエストと共に送信されたクエリー文字列またはヘッダー、HTTP バージョン、およびリクエスト本文が含まれます。CloudEvent の受信インスタンスが含まれる受信要求はコンテキストオブジェクトにアタッチし、context.cloudevent を使用してアクセスできるようにします。
5.3.1.1. コンテキストオブジェクトメソッド リンクのコピーリンクがクリップボードにコピーされました!
context オブジェクトには、データの値を受け入れ、CloudEvent を返す cloudEventResponse() メソッドが 1 つあります。
Knative システムでは、サービスとしてデプロイされた関数が CloudEvent を送信するイベントブローカーによって呼び出される場合に、ブローカーが応答を確認します。応答が CloudEvent の場合には、このイベントはブローカーにが処理します。
コンテキストオブジェクトメソッドの例
5.3.1.2. CloudEvent data リンクのコピーリンクがクリップボードにコピーされました!
受信要求が CloudEvent の場合は、CloudEvent に関連付けられたデータがすべてイベントから抽出され、2 番目のパラメーターとして提供されます。たとえば、以下のように data プロパティーに JSON 文字列が含まれる CloudEvent が受信された場合に、以下のようになります。
{
"customerId": "0123456",
"productId": "6543210"
}
{
"customerId": "0123456",
"productId": "6543210"
}
呼び出されると、関数に対して context オブジェクト後に来る 2 番目のパラメーターは、JavaScript オブジェクトで、このオブジェクトには customerId と productId プロパティーが含まれます。
署名の例
function handle(context, data)
function handle(context, data)
この例の data パラメーターは、customerId および productId プロパティーが含まれる JavaScript オブジェクトです。
5.4. Node.js 関数の戻り値 リンクのコピーリンクがクリップボードにコピーされました!
この関数は有効な JavaScript タイプを返すことができます。がそれ以外は戻り値を持たせないようにすることもできます。関数に戻り値が指定されておらず、失敗を指定しないと、呼び出し元は 204 No Content 応答を受け取ります。
関数は、CloudEvent または Message オブジェクトを返してイベントを Knative Eventing システムにプッシュすることもできます。この場合に、開発者は CloudEvent メッセージング仕様の理解や実装は必要ありません。返された値からのヘッダーおよびその他の関連情報は抽出され、応答で送信されます。
例
5.4.1. 返されるヘッダー リンクのコピーリンクがクリップボードにコピーされました!
headers プロパティーを return オブジェクトに追加して応答ヘッダーを設定できます。これらのヘッダーは抽出され、呼び出し元に応答して送信されます。
応答ヘッダーの例
function handle(context, customer) {
// process customer and return custom headers
// the response will be '204 No content'
return { headers: { customerid: customer.id } };
}
function handle(context, customer) {
// process customer and return custom headers
// the response will be '204 No content'
return { headers: { customerid: customer.id } };
}
5.4.2. 返されるステータスコード リンクのコピーリンクがクリップボードにコピーされました!
statusCode プロパティーを return オブジェクトに追加して、呼び出し元に返されるステータスコードを設定できます。
ステータスコード
ステータスコードは、関数で作成および出力されるエラーに対して設定することもできます。
エラーステータスコードの例
5.5. Node.js 関数のテスト リンクのコピーリンクがクリップボードにコピーされました!
Node.js 関数は、コンピューターに対してローカルでテストできます。kn func create を使用して関数を作成する際に作成されるデフォルトプロジェクトには、簡単なユニットテストおよびインテグレーションテストが含まれる test フォルダーがあります。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 -
kn func createを使用して関数を作成している。
手順
- 関数の test フォルダーに移動します。
テストを実行します。
npm test
$ npm testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
第6章 TypeScript 関数の開発 リンクのコピーリンクがクリップボードにコピーされました!
TypeScript 関数プロジェクトを作成 したら、指定のテンプレートを変更して、関数にビジネスロジックを追加できます。これには、関数呼び出しと返されるヘッダーとステータスコードの設定が含まれます。
6.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 関数を開発する前に、OpenShift Serverless 機能の設定の手順を実行する必要があります。
6.2. Typescript 関数テンプレートの構造 リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して TypeScript 関数を作成すると、プロジェクトディレクトリーは典型的な TypeScript プロジェクトのようになります。唯一の例外は、関数の設定に使用される追加の func.yaml ファイルです。
http および event トリガー関数のテンプレート構造はいずれも同じです。
テンプレート構造
- 1
func.yaml設定ファイルは、イメージ名とレジストリーを判断するために使用されます。- 2
- テンプレート
package.jsonファイルにある依存関係に限定されるわけではありません。他の TypeScript プロジェクトと同様に、別の依存関係を追加できます。npm 依存関係の追加例
npm install --save opossum
npm install --save opossumCopy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメント用にプロジェクトをビルドすると、これらの依存関係は作成したランタイムコンテナーイメージに含まれます。
- 3
- プロジェクトには、
handleという名前の関数をエクスポートするsrc/index.jsファイルが含まれている必要があります。 - 4
- 統合およびテストスクリプトは、関数テンプレートの一部として提供されます。
6.3. TypeScript 関数の呼び出しについて リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して関数プロジェクトを作成する場合に、CloudEvents に応答するプロジェクト、または単純な HTTP 要求に応答するプロジェクトを生成できます。Knative の CloudEvents は HTTP 経由で POST 要求として転送されるため、関数タイプはいずれも受信 HTTP イベントをリッスンして応答します。
Typescript 関数は、単純な HTTP 要求で呼び出すことができます。受信要求を受け取ると、関数は context オブジェクトで最初のパラメーターとして呼び出されます。
6.3.1. Typescript コンテキストオブジェクト リンクのコピーリンクがクリップボードにコピーされました!
関数を呼び出すには、context オブジェクトを最初のパラメーターとして指定します。context オブジェクトのプロパティーにアクセスすると、着信 HTTP 要求に関する情報を提供できます。
コンテキストオブジェクトの例
function handle(context:Context): string
function handle(context:Context): string
この情報には、HTTP リクエストメソッド、リクエストと共に送信されたクエリー文字列またはヘッダー、HTTP バージョン、およびリクエスト本文が含まれます。CloudEvent の受信インスタンスが含まれる受信要求はコンテキストオブジェクトにアタッチし、context.cloudevent を使用してアクセスできるようにします。
6.3.1.1. コンテキストオブジェクトメソッド リンクのコピーリンクがクリップボードにコピーされました!
context オブジェクトには、データの値を受け入れ、CloudEvent を返す cloudEventResponse() メソッドが 1 つあります。
Knative システムでは、サービスとしてデプロイされた関数が CloudEvent を送信するイベントブローカーによって呼び出される場合に、ブローカーが応答を確認します。応答が CloudEvent の場合には、このイベントはブローカーにが処理します。
コンテキストオブジェクトメソッドの例
6.3.1.2. コンテキストタイプ リンクのコピーリンクがクリップボードにコピーされました!
TypeScript タイプの定義ファイルは、関数で使用する以下のタイプをエクスポートします。
エクスポートタイプの定義
6.3.1.3. CloudEvent data リンクのコピーリンクがクリップボードにコピーされました!
受信要求が CloudEvent の場合は、CloudEvent に関連付けられたデータがすべてイベントから抽出され、2 番目のパラメーターとして提供されます。たとえば、以下のように data プロパティーに JSON 文字列が含まれる CloudEvent が受信された場合に、以下のようになります。
{
"customerId": "0123456",
"productId": "6543210"
}
{
"customerId": "0123456",
"productId": "6543210"
}
呼び出されると、関数に対して context オブジェクト後に来る 2 番目のパラメーターは、JavaScript オブジェクトで、このオブジェクトには customerId と productId プロパティーが含まれます。
署名の例
function handle(context: Context, cloudevent?: CloudEvent): CloudEvent
function handle(context: Context, cloudevent?: CloudEvent): CloudEvent
この例の cloudevent パラメーターは、customerId および productId プロパティーが含まれる JavaScript オブジェクトです。
6.4. Typescript 関数の戻り値 リンクのコピーリンクがクリップボードにコピーされました!
この関数は有効な JavaScript タイプを返すことができます。がそれ以外は戻り値を持たせないようにすることもできます。関数に戻り値が指定されておらず、失敗を指定しないと、呼び出し元は 204 No Content 応答を受け取ります。
関数は、CloudEvent または Message オブジェクトを返してイベントを Knative Eventing システムにプッシュすることもできます。この場合に、開発者は CloudEvent メッセージング仕様の理解や実装は必要ありません。返された値からのヘッダーおよびその他の関連情報は抽出され、応答で送信されます。
例
6.4.1. 返されるヘッダー リンクのコピーリンクがクリップボードにコピーされました!
headers プロパティーを return オブジェクトに追加して応答ヘッダーを設定できます。これらのヘッダーは抽出され、呼び出し元に応答して送信されます。
応答ヘッダーの例
export function handle(context: Context, cloudevent?: CloudEvent): Record<string, any> {
// process customer and return custom headers
const customer = cloudevent.data as Record<string, any>;
return { headers: { 'customer-id': customer.id } };
}
export function handle(context: Context, cloudevent?: CloudEvent): Record<string, any> {
// process customer and return custom headers
const customer = cloudevent.data as Record<string, any>;
return { headers: { 'customer-id': customer.id } };
}
6.4.2. 返されるステータスコード リンクのコピーリンクがクリップボードにコピーされました!
statusCode プロパティーを return オブジェクトに追加して、呼び出し元に返されるステータスコードを設定できます。
ステータスコード
ステータスコードは、関数で作成および出力されるエラーに対して設定することもできます。
エラーステータスコードの例
6.5. TypeScript 関数のテスト リンクのコピーリンクがクリップボードにコピーされました!
Typescript 機能は、お使いのコンピューターでローカルでテストできます。kn func create を使用した関数の作成時に作成される default プロジェクトには、test フォルダーがあり、一部の単純なユニットおよび統合テストが含まれます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 -
kn func createを使用して関数を作成している。
手順
テストを実行していない場合は、最初に依存関係をインストールします。
npm install
$ npm installCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 関数の test フォルダーに移動します。
テストを実行します。
npm test
$ npm testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
- TypeScript コンテキストオブジェクトの参照 ドキュメントを参照してください。
- 関数を構築 して デプロイ します。
- 関数に関するロギングの詳細は、Pino API のドキュメント を参照してください。
第7章 Python 関数の開発 リンクのコピーリンクがクリップボードにコピーされました!
Python を使用した OpenShift Serverless Functions は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Python 関数プロジェクトを作成 したら、指定したテンプレートファイルを変更して、ビジネスロジックを機能に追加できます。これには、関数呼び出しと返されるヘッダーとステータスコードの設定が含まれます。
7.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 関数を開発する前に、OpenShift Serverless 機能の設定の手順を実行する必要があります。
7.2. Python 関数テンプレート構造 リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して Python 機能を作成する場合の、プロジェクトディレクトリーは通常の Python プロジェクトに似ています。Python 関数にはいくつかの制限があります。プロジェクトの要件として唯一、main() 関数と func.yaml 設定ファイルで設定される func.py が含まれることが挙げられます。
開発者は、テンプレート requirements.txt ファイルにある依存関係しか使用できないわけではありません。その他の依存関係は、他の Python プロジェクトに配置されるように追加できます。デプロイメント用にプロジェクトをビルドすると、これらの依存関係は作成したランタイムコンテナーイメージに含まれます。
http および event トリガー関数のテンプレート構造はいずれも同じです。
テンプレート構造
fn ├── func.py ├── func.yaml ├── requirements.txt └── test_func.py
fn
├── func.py
├── func.yaml
├── requirements.txt
└── test_func.py
7.3. Python 関数の呼び出しについて リンクのコピーリンクがクリップボードにコピーされました!
Python 関数は、単純な HTTP 要求で呼び出すことができます。受信要求を受け取ると、関数は context オブジェクトで最初のパラメーターとして呼び出されます。
context オブジェクトは、2 つの属性を持つ Python クラスです。
-
request属性。この属性常に存在し、Flaskrequestオブジェクトが含まれます。 -
2 番目の属性
cloud_event。受信した要求がCloudEventオブジェクトの場合に設定されます。
開発者はコンテキストオブジェクトから CloudEvent データすべてにアクセスできます。
コンテキストオブジェクトの例
7.4. Python 関数の戻り値 リンクのコピーリンクがクリップボードにコピーされました!
関数は、Flask でサポートされている任意の値を返すことができます。これは、呼び出しフレームワークがこれらの値を Flask サーバーに直接プロキシーするためです。
例
def main(context: Context):
body = { "message": "Howdy!" }
headers = { "content-type": "application/json" }
return body, 200, headers
def main(context: Context):
body = { "message": "Howdy!" }
headers = { "content-type": "application/json" }
return body, 200, headers
関数は、関数呼び出しの 2 番目および 3 番目の応答値として、ヘッダーと応答コードの両方を設定できます。
7.4.1. Returning CloudEvents リンクのコピーリンクがクリップボードにコピーされました!
開発者は @event デコレーターを使用して、呼び出し元に対して、応答を送信する前に関数の戻り値を CloudEvent に変換する必要があることを指示できます。
例
この例では、タイプが "my.type"、ソースが "/my/function" の応答値として CloudEvent を送信します。CloudEvent data プロパティー は、返された data 変数に設定されます。event_source および event_type デコレーター属性は任意です。
7.5. Python 関数のテスト リンクのコピーリンクがクリップボードにコピーされました!
Python 機能は、お使いのコンピューターのローカルにテストできます。デフォルトプロジェクトには、test_func.py ファイルが含まれており、関数の単純なユニットテストを提供します。
Python 関数のデフォルトのテストフレームワークは unittest です。必要に応じて、別のテストフレームワークを使用できます。
前提条件
Python 関数テストをローカルで実行するには、必要な依存関係をインストールする必要があります。
pip install -r requirements.txt
$ pip install -r requirements.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
-
test_func.pyファイルが含まれる関数のフォルダーに移動します。 テストを実行します。
python3 test_func.py
$ python3 test_func.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
第8章 Knative Eventing での関数の使用 リンクのコピーリンクがクリップボードにコピーされました!
関数は、OpenShift Container Platform クラスターに Knative サービスとしてデプロイされます。機能を Knative Eventing コンポーネントに接続して、受信イベントを受信できるようにすることができます。
8.1. 開発者パースペクティブを使用してイベントソースを機能に接続する リンクのコピーリンクがクリップボードにコピーされました!
関数は、OpenShift Container Platform クラスターに Knative サービスとしてデプロイされます。OpenShift Container Platform Web コンソールを使用してイベントソースを作成すると、そのソースからイベントが送信されるデプロイ済み機能を指定できます。
前提条件
- OpenShift Serverless Operator、Knative Serving、および Knative Eventing が OpenShift Container Platform クラスターにインストールされている。
- Web コンソールにログインしており、Developer パースペクティブを使用している。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- 機能を作成してデプロイしました。
手順
- +Add → Event Source に移動して任意のタイプのイベントソースを作成し、作成するイベントソースを選択します。
- Create Event Source フォームビューの Sink セクションで、Resource リストで機能を選択します。
- Create をクリックします。
検証
Topology ページを表示して、イベントソースが作成され、機能に接続されていることを確認できます。
- Developer パースペクティブで、Topology に移動します。
- イベントソースを表示し、接続された機能をクリックして、右側のパネルに機能の詳細を表示します。
第9章 func.yaml の関数プロジェクト設定 リンクのコピーリンクがクリップボードにコピーされました!
func.yaml ファイルには、関数プロジェクトの設定が含まれます。kn func コマンドを実行すると、func.yaml に指定された値が使用されます。たとえば、kn func build コマンドを実行すると、build フィールドの値が使用されます。一部のケースでは、この値はコマンドラインフラグまたは環境変数で上書きできます。
9.1. func.yaml の設定可能なフィールド リンクのコピーリンクがクリップボードにコピーされました!
func.yaml のフィールドの多くは、関数の作成、ビルド、およびデプロイ時に自動的に生成されます。ただし、関数名またはイメージ名などの変更用に手動で変更するフィールドもあります。
9.1.1. buildEnvs リンクのコピーリンクがクリップボードにコピーされました!
buildEnvs フィールドを使用すると、関数をビルドする環境で利用できる環境変数を設定できます。envs を使用して設定する変数とは異なり、buildEnv を使用して設定する変数は、関数の実行時には使用できません。
buildEnv 変数を値から直接設定できます。以下の例では、EXAMPLE1 という名前の buildEnv 変数に値 one が直接割り当てられます。
buildEnvs: - name: EXAMPLE1 value: one
buildEnvs:
- name: EXAMPLE1
value: one
また、ローカルの環境変数から buildEnv 変数を設定することもできます。以下の例では、EXAMPLE2 という名前の buildEnv 変数にローカル環境変数 LOCAL_ENV_VAR の値が割り当てられます。
buildEnvs:
- name: EXAMPLE1
value: '{{ env:LOCAL_ENV_VAR }}'
buildEnvs:
- name: EXAMPLE1
value: '{{ env:LOCAL_ENV_VAR }}'
9.1.2. envs リンクのコピーリンクがクリップボードにコピーされました!
envs フィールドを使用すると、ランタイム時に関数で使用できるように環境変数を設定できます。環境変数は、複数の異なる方法で設定できます。
- 値から直接設定します。
- ローカル環境変数に割り当てられた値から設定します。詳細は、func.yaml フィールドからのローカル環境変数の参照のセクションを参照してください。
- シークレットまたは Config Map に格納されているキーと値のペアから設定します。
- 作成された環境変数の名前として使用されるキーを使用して、シークレットまたは Config Map に格納されているすべてのキーと値のペアをインポートすることもできます。
以下の例は、環境変数を設定するさまざまな方法を示しています。
9.1.3. builder リンクのコピーリンクがクリップボードにコピーされました!
builder フィールドは、機能がイメージを構築するために使用する戦略を指定します。pack または s2i の値を受け入れます。
9.1.4. build リンクのコピーリンクがクリップボードにコピーされました!
build フィールドは、機能を構築する方法を示します。値 local は、機能がマシン上でローカルに構築されていることを示します。値 git は、機能が git フィールドで指定された値を使用してクラスター上に構築されていることを示します。
9.1.5. volumes リンクのコピーリンクがクリップボードにコピーされました!
以下の例のように、volumes フィールドを使用すると、指定したパスで関数にアクセスできるボリュームとしてシークレットと Config Map をマウントできます。
9.1.6. オプション リンクのコピーリンクがクリップボードにコピーされました!
options フィールドを使用すると、自動スケーリングなど、デプロイされた関数の Knative Service プロパティーを変更できます。これらのオプションが設定されていない場合は、デフォルトのオプションが使用されます。
これらのオプションを利用できます。
scale-
min: レプリカの最小数。負ではない整数でなければなりません。デフォルトは 0 です。 -
max: レプリカの最大数。負ではない整数でなければなりません。デフォルトは 0 で、これは制限がないことを意味します。 -
metric: Autoscaler によって監視されるメトリクスタイプを定義します。これは、デフォルトのconcurrency、またはrpsに設定できます。 -
target: 同時に受信する要求の数に基づくスケールアップのタイミングの推奨。targetオプションは、0.01 より大きい浮動小数点値を指定できます。options.resources.limits.concurrencyが設定されていない限り、デフォルトは 100 になります。この場合、targetはデフォルトでその値になります。 -
utilization: スケールアップする前に許可された同時リクエスト使用率のパーセンテージ。1 から 100 までの浮動小数点値を指定できます。デフォルトは 70 です。
-
resourcesrequests-
cpu: デプロイされた関数を持つコンテナーの CPU リソース要求。 -
memory: デプロイされた関数を持つコンテナーのメモリーリソース要求。
-
limits-
cpu: デプロイされた関数を持つコンテナーの CPU リソース制限。 -
memory: デプロイされた関数を持つコンテナーのメモリーリソース制限。 -
concurrency: 単一レプリカによって処理される同時要求のハード制限。0 以上の整数値を指定できます。デフォルトは 0 です (制限なしを意味します)。
-
これは、scale オプションの設定例です。
9.1.7. image リンクのコピーリンクがクリップボードにコピーされました!
image フィールドは、関数がビルドされた後の関数のイメージ名を設定します。このフィールドは必要に応じて変更できます。変更する場合、次に kn func build または kn func deploy を実行すると、関数イメージは新しい名前で作成されます。
9.1.8. imageDigest リンクのコピーリンクがクリップボードにコピーされました!
imageDigest フィールドには、関数のデプロイ時のイメージマニフェストの SHA256 ハッシュが含まれます。この値は変更しないでください。
9.1.9. labels リンクのコピーリンクがクリップボードにコピーされました!
labels フィールドを使用すると、デプロイされた関数にラベルを設定できます。
値から直接ラベルを設定できます。以下の例では、role キーを持つラベルに backend の値が直接割り当てられます。
labels: - key: role value: backend
labels:
- key: role
value: backend
ローカル環境変数からラベルを設定することもできます。以下の例では、author キーの付いたラベルに USER ローカル環境変数の値が割り当てられます。
labels:
- key: author
value: '{{ env:USER }}'
labels:
- key: author
value: '{{ env:USER }}'
9.1.10. name リンクのコピーリンクがクリップボードにコピーされました!
name フィールドは、関数の名前を定義します。この値は、デプロイ時に Knative サービスの名前として使用されます。このフィールドを変更して、後続のデプロイメントで関数の名前を変更できます。
9.1.11. namespace リンクのコピーリンクがクリップボードにコピーされました!
namespace フィールドは、関数がデプロイされる namespace を指定します。
9.1.12. runtime リンクのコピーリンクがクリップボードにコピーされました!
runtime フィールドは、関数の言語ランタイムを指定します (例: python)。
9.2. func.yaml フィールドからのローカル環境変数の参照 リンクのコピーリンクがクリップボードにコピーされました!
API キーなどの機密情報を関数設定に保存したくない場合は、ローカル環境で使用可能な環境変数への参照を追加できます。これを行うには、func.yaml ファイルの envs フィールドを変更します。
前提条件
- 関数プロジェクトを作成する必要があります。
- ローカル環境には、参照する変数が含まれている必要があります。
手順
ローカル環境変数を参照するには、以下の構文を使用します。
{{ env:ENV_VAR }}{{ env:ENV_VAR }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow ENV_VARを、使用するローカル環境の変数の名前に置き換えます。たとえば、ローカル環境で
API_KEY変数が利用可能な場合があります。その値をMY_API_KEY変数に割り当てることができます。これにより、関数内で直接使用できます。関数の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第10章 関数からのシークレットおよび Config Map へのアクセス リンクのコピーリンクがクリップボードにコピーされました!
関数がクラスターにデプロイされた後に、それらはシークレットおよび Config Map に保存されているデータにアクセスできます。このデータはボリュームとしてマウントすることも、環境変数に割り当てることもできます。Knative CLI を使用して、このアクセスを対話的に設定するか、関数設定 YAML ファイルを編集して手動で設定できます。
シークレットおよび Config Map にアクセスするには、関数をクラスターにデプロイする必要があります。この機能は、ローカルで実行している関数では利用できません。
シークレットまたは Config Map の値にアクセスできない場合、デプロイメントは失敗し、アクセスできない値を指定するエラーメッセージが表示されます。
10.1. シークレットおよび Config Map への関数アクセスの対話的な変更 リンクのコピーリンクがクリップボードにコピーされました!
kn func config 対話型ユーティリティーを使用して、関数がアクセスするシークレットおよび Config Map を管理できます。使用可能な操作には、config map とシークレットに環境変数として保存されている値の一覧表示、追加、および削除、およびボリュームの一覧表示、追加、および削除が含まれます。この機能を使用すると、クラスターに保存されているどのデータを関数からアクセスできるかを管理できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
関数プロジェクトディレクトリーで以下のコマンドを実行します。
kn func config
$ kn func configCopy to Clipboard Copied! Toggle word wrap Toggle overflow あるいは、
--pathまたは-pオプションを使用して、関数プロジェクトディレクトリーを指定できます。対話型インターフェイスを使用して必要な操作を実行します。たとえば、ユーティリティーを使用して設定したボリュームの一覧を表示すると、以下のような出力が生成されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このスキームは、対話型ユーティリティーで利用可能なすべての操作と、それらに移動する方法を示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:変更を反映させるため、関数をデプロイします。
kn func deploy -p test
$ kn func deploy -p testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. 特殊なコマンドを使用したシークレットおよび Config Map への関数アクセスの対話的な変更 リンクのコピーリンクがクリップボードにコピーされました!
kn func config ユーティリティーを実行するたびにダイアログ全体を移動して、直前のセクションで示されているように、必要な操作を選択する必要があります。ステップを保存するには、kn func config コマンドのより具体的なフォームを実行することで、特定の操作を直接実行します。
設定した環境変数を一覧表示するには、以下を実行します。
kn func config envs [-p <function-project-path>]
$ kn func config envs [-p <function-project-path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 関数設定に環境変数を追加するには、以下を実行します。
kn func config envs add [-p <function-project-path>]
$ kn func config envs add [-p <function-project-path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 関数設定から環境変数を削除するには、以下を実行します。
kn func config envs remove [-p <function-project-path>]
$ kn func config envs remove [-p <function-project-path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定したボリュームを一覧表示するには、以下を実行します。
kn func config volumes [-p <function-project-path>]
$ kn func config volumes [-p <function-project-path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 関数設定にボリュームを追加するには、以下を実行します。
kn func config volumes add [-p <function-project-path>]
$ kn func config volumes add [-p <function-project-path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 関数設定からボリュームを削除するには、以下を実行します。
kn func config volumes remove [-p <function-project-path>]
$ kn func config volumes remove [-p <function-project-path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. シークレットおよび Config Map への関数アクセスの手動による追加 リンクのコピーリンクがクリップボードにコピーされました!
シークレットおよび Config Map にアクセスするための設定を手動で関数に追加できます。これは、既存の設定スニペットがある場合などに、kn func config 対話型ユーティリティーとコマンドを使用するよりも望ましい場合があります。
10.3.1. シークレットのボリュームとしてのマウント リンクのコピーリンクがクリップボードにコピーされました!
シークレットをボリュームとしてマウントできます。シークレットがマウントされると、関数から通常のファイルとしてアクセスできます。これにより、関数がアクセスする必要がある URI のリストなど、関数が必要とするデータをクラスターに格納できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 ボリュームとしてマウントするシークレットごとに、以下の YAML を
volumesセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
mysecretをターゲットシークレットの名前に置き換えます。 /workspace/secretは、シークレットをマウントするパスに置き換えます。たとえば、
addressesシークレットをマウントするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
10.3.2. Config Map のボリュームとしてのマウント リンクのコピーリンクがクリップボードにコピーされました!
Config Map をボリュームとしてマウントできます。Config Map がマウントされると、関数から通常のファイルとしてアクセスできます。これにより、関数がアクセスする必要がある URI のリストなど、関数が必要とするデータをクラスターに格納できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 ボリュームとしてマウントする Config Map ごとに、以下の YAML を
volumesセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
myconfigmapをターゲット Config Map の名前に置き換えます。 /workspace/configmapは、Config Map をマウントするパスに置き換えます。たとえば、
addressesconfig map をマウントするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
10.3.3. シークレットで定義されるキー値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
シークレットとして定義されたキー値から環境変数を設定できます。以前にシークレットに保存された値は、実行時に関数によって環境変数としてアクセスできます。これは、ユーザーの ID など、シークレットに格納されている値にアクセスする場合に役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 環境変数に割り当てる秘密鍵と値のペアからの値ごとに、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
EXAMPLEを環境変数の名前に置き換えます。 -
mysecretをターゲットシークレットの名前に置き換えます。 keyをターゲット値にマッピングしたキーに置き換えます。たとえば、
userdetailssecretに保存されているユーザー ID にアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
10.3.4. Config Map で定義されるキー値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
config map として定義されたキー値から環境変数を設定できます。以前に config map に格納された値は、実行時に関数によって環境変数としてアクセスできます。これは、ユーザーの ID など、config map に格納されている値にアクセスするのに役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 環境変数に割り当てる Config Map のキーと値のペアからの値ごとに、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
EXAMPLEを環境変数の名前に置き換えます。 -
myconfigmapをターゲット Config Map の名前に置き換えます。 keyをターゲット値にマッピングしたキーに置き換えます。たとえば、
userdetailsmapに格納されているユーザー ID にアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
10.3.5. シークレットで定義されたすべての値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
シークレットで定義されているすべての値から環境変数を設定できます。以前にシークレットに保存された値は、実行時に関数によって環境変数としてアクセスできます。これは、シークレットに格納されている値のコレクション (ユーザーに関する一連のデータなど) に同時にアクセスする場合に役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 すべてのキーと値のペアを環境変数としてインポートするすべてのシークレットについて、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
mysecretをターゲットシークレットの名前に置き換えます。
たとえば、
userdetailssecretに保存されているすべてのユーザー データにアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 設定を保存します。
10.3.6. Config Map で定義されたすべての値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
config map で定義されたすべての値から環境変数を設定できます。以前に config map に格納された値は、実行時に関数によって環境変数としてアクセスできます。これは、config map に格納されている値のコレクション (ユーザーに関する一連のデータなど) に同時にアクセスする場合に役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 すべてのキーと値のペアを環境変数としてインポートするすべての Config Map について、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
myconfigmapをターゲット Config Map の名前に置き換えます。
たとえば、
userdetailsmapに保存されているすべてのユーザー データにアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
第11章 アノテーションの関数への追加 リンクのコピーリンクがクリップボードにコピーされました!
デプロイされたサーバーレス機能に Kubernetes アノテーションを追加できます。注釈を使用すると、関数の目的に関するメモなど、任意のメタデータを関数に添付できます。注釈は、func.yaml 設定ファイルの annotations セクションに追加されます。
関数アノテーション機能には、以下の 2 つの制限があります。
-
関数アノテーションがクラスター上の対応する Knative サービスに伝播されると、
func.yamlファイルから削除することでサービスから削除することはできません。サービスの YAML ファイルを直接変更するか、または OpenShift Container Platform Web コンソールを使用して、Knative サービスからアノテーションを削除する必要があります。 -
autoscalingアノテーションなど、Knative によって設定されるアノテーションを設定することはできません。
11.1. 関数へのアノテーションの追加 リンクのコピーリンクがクリップボードにコピーされました!
関数にアノテーションを追加できます。ラベルと同様に、アノテーションはキーと値のマップとして定義されます。アノテーションは、関数の作成者など、関数に関するメタデータを提供する場合などに役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 追加するすべてのアノテーションについて、以下の YAML を
annotationsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<annotation_name>: "<annotation_value>"をお使いのアノテーションに置き換えます。
たとえば、関数が Alice によって作成者されたことを示すには、以下のアノテーションを含めることができます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 設定を保存します。
次に関数をクラスターにデプロイすると、アノテーションが対応する Knative サービスに追加されます。
第12章 関数開発リファレンスガイド リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Functions は、基本的な関数を作成するために使用できるテンプレートを提供します。テンプレートは、関数プロジェクトのボイラープレートを開始し、kn func ツールで使用できるように準備します。各関数テンプレートは特定のランタイム用に調整されており、その規則に従います。テンプレートを使用すると、関数プロジェクトを自動的に開始できます。
次のランタイムのテンプレートが利用可能です。
12.1. Node.js コンテキストオブジェクトのリファレンス リンクのコピーリンクがクリップボードにコピーされました!
context オブジェクトには、関数開発者が利用可能なプロパティーが複数あります。これらのプロパティーにアクセスすると、HTTP 要求に関する情報が提供され、出力がクラスターログに書き込まれます。
12.1.1. log リンクのコピーリンクがクリップボードにコピーされました!
出力をクラスターロギングに書き込むために使用可能なロギングオブジェクトを提供します。ログは Pino logging API に準拠します。
ログの例
function handle(context) {
context.log.info(“Processing customer”);
}
function handle(context) {
context.log.info(“Processing customer”);
}
kn func invoke コマンドを使用して、この関数にアクセスできます。
コマンドの例
kn func invoke --target 'http://example.function.com'
$ kn func invoke --target 'http://example.function.com'
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
ログレベルは、fatal、error、warn、info、debug、trace、または silent のいずれかに設定できます。これを実行するには、config コマンドを使用してこれらの値のいずれかを環境変数 FUNC_LOG_LEVEL に割り当てて、logLevel の値を変更します。
12.1.2. query リンクのコピーリンクがクリップボードにコピーされました!
要求のクエリー文字列 (ある場合) をキーと値のペアとして返します。これらの属性はコンテキストオブジェクト自体にも表示されます。
サンプルクエリー
kn func invoke コマンドを使用して、この関数にアクセスできます。
コマンドの例
kn func invoke --target 'http://example.com?name=tiger'
$ kn func invoke --target 'http://example.com?name=tiger'
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
12.1.3. ボディー リンクのコピーリンクがクリップボードにコピーされました!
要求ボディー (ある場合) を返します。要求ボディーに JSON コードが含まれる場合には、属性は直接利用できるように解析されます。
ボディーの例
function handle(context) {
// log the incoming request body's 'hello' parameter
context.log.info(context.body.hello);
}
function handle(context) {
// log the incoming request body's 'hello' parameter
context.log.info(context.body.hello);
}
curl コマンドを使用してこの関数を呼び出すことができます。
コマンドの例
kn func invoke -d '{"Hello": "world"}'
$ kn func invoke -d '{"Hello": "world"}'
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
12.1.4. ヘッダー リンクのコピーリンクがクリップボードにコピーされました!
HTTP 要求ヘッダーをオブジェクトとして返します。
ヘッダーの例
function handle(context) {
context.log.info(context.headers["custom-header"]);
}
function handle(context) {
context.log.info(context.headers["custom-header"]);
}
kn func invoke コマンドを使用して、この関数にアクセスできます。
コマンドの例
kn func invoke --target 'http://example.function.com'
$ kn func invoke --target 'http://example.function.com'
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
12.1.5. HTTP 要求 リンクのコピーリンクがクリップボードにコピーされました!
- 方法
- HTTP 要求メソッドを文字列として返します。
- httpVersion
- HTTP バージョンを文字列として返します。
- httpVersionMajor
- HTTP メジャーバージョン番号を文字列として返します。
- httpVersionMinor
- HTTP マイナーバージョン番号を文字列として返します。
12.2. Typescript コンテキストオブジェクトの参照 リンクのコピーリンクがクリップボードにコピーされました!
context オブジェクトには、関数開発者が利用可能なプロパティーが複数あります。これらのプロパティーにアクセスすると、着信 HTTP 要求に関する情報が提供され、出力がクラスターログに書き込まれます。
12.2.1. log リンクのコピーリンクがクリップボードにコピーされました!
出力をクラスターロギングに書き込むために使用可能なロギングオブジェクトを提供します。ログは Pino logging API に準拠します。
ログの例
kn func invoke コマンドを使用して、この関数にアクセスできます。
コマンドの例
kn func invoke --target 'http://example.function.com'
$ kn func invoke --target 'http://example.function.com'
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
ログレベルは、fatal、error、warn、info、debug、trace、または silent のいずれかに設定できます。これを実行するには、config コマンドを使用してこれらの値のいずれかを環境変数 FUNC_LOG_LEVEL に割り当てて、logLevel の値を変更します。
12.2.2. query リンクのコピーリンクがクリップボードにコピーされました!
要求のクエリー文字列 (ある場合) をキーと値のペアとして返します。これらの属性はコンテキストオブジェクト自体にも表示されます。
サンプルクエリー
kn func invoke コマンドを使用して、この関数にアクセスできます。
コマンドの例
kn func invoke --target 'http://example.function.com' --data '{"name": "tiger"}'
$ kn func invoke --target 'http://example.function.com' --data '{"name": "tiger"}'
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
12.2.3. ボディー リンクのコピーリンクがクリップボードにコピーされました!
要求ボディー (ある場合) を返します。要求ボディーに JSON コードが含まれる場合には、属性は直接利用できるように解析されます。
ボディーの例
kn func invoke コマンドを使用して、この関数にアクセスできます。
コマンドの例
kn func invoke --target 'http://example.function.com' --data '{"hello": "world"}'
$ kn func invoke --target 'http://example.function.com' --data '{"hello": "world"}'
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
12.2.4. ヘッダー リンクのコピーリンクがクリップボードにコピーされました!
HTTP 要求ヘッダーをオブジェクトとして返します。
ヘッダーの例
curl コマンドを使用してこの関数を呼び出すことができます。
コマンドの例
curl -H'x-custom-header: some-value’' http://example.function.com
$ curl -H'x-custom-header: some-value’' http://example.function.com
出力例
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
12.2.5. HTTP 要求 リンクのコピーリンクがクリップボードにコピーされました!
- 方法
- HTTP 要求メソッドを文字列として返します。
- httpVersion
- HTTP バージョンを文字列として返します。
- httpVersionMajor
- HTTP メジャーバージョン番号を文字列として返します。
- httpVersionMinor
- HTTP マイナーバージョン番号を文字列として返します。