ローカル・ソースからの関数の実行
このチュートリアルでは、ローカルシステム上のコードから Code Engine CLI で関数を実行します
ファンクションとは、 HTTP リクエストによって呼び出されるとタスクを実行する、ステートレスなコードの断片です。 IBM Code Engine 機能により、スケーラブルでサーバーレスな方法でビジネスロジックを実行できます。 IBM Code Engine 機能は、低レイテンシと迅速なスケールアウトのシナリオをサポートする最適化された実行環境を提供します。 お客様の関数コードは、特定の Node.js または Python バージョンを含むマネージドランタイムに書き込むことができます。
コード・バンドルは、機能コードを表すファイルの集合です。 このコード・バンドルは、ランタイム・コンテナーに注入されます。 コード・バンドルは Code Engine によって作成され、コンテナー・レジストリーに保管されるか、関数とともにインラインで保管されます。 コード・バンドルは、Open Container Initiative (OCI) 標準コンテナー・イメージではありません。
開始前に
すべてのCode Engineユーザーは、従量課金 (PAYG) アカウントを持っている必要があります。 チュートリアルでは、費用が発生する場合があります。 コスト見積もりツールを使用して、使用量の見積もりに基づいてコスト見積もりを生成してください。 詳しくは、 Code Engine 価格設定 を参照してください。
環境を設定する
-
IBM Cloud CLI にログインします。
ibmcloud login -r us-south -
以下のコマンドを実行して、リソース・グループをターゲットに設定します。 リソースグループのリストを見るには、以下を実行する。
ibmcloud resource groups.ibmcloud target -g <resource_group>出力例
Targeted resource group default -
sampleという名前のプロジェクトをCode Engineに作成します。ibmcloud ce project create --name sample出力例
Creating project 'sample'... ID for project 'sample' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'. Waiting for project 'sample' to be active... Now selecting project 'sample'. OKプロジェクトがコンテキスト用にも選択されていることに注意してください。したがって、後続のすべてのアプリケーション関連コマンドは、この新規
sampleプロジェクトのスコープ内にあります。 -
コマンド・オプションを表示して、機能コマンドについてよく理解します。
ibmcloud ce fn --help
ソース・コードの作成
以下のサンプル・コードを使用して、 funhello.js という名前の Node.js ソース・ファイルを作成します。
function main(params) {
var msg = 'You did not tell me who you are.';
if (params.name) {
msg = `Hello, ${params.name}!`
} else {
msg = `Hello, Functions on CodeEngine!`
}
return {
headers: { 'Content-Type': 'text/html; charset=utf-8' },
body: `<html><body><h3>${msg}</h3></body></html>`
}
}
module.exports.main = main;
関数の作成
funhello.js ファイルから関数を作成します。
ibmcloud ce fn create --name funhello --runtime nodejs --build-source funhello.js
コマンド出力
Preparing function 'funhello' for build push...
Creating function 'funhello'...
Packaging files to upload from source path 'hello.js'...
Submitting build run 'funhello-run-230623-090738611'...
Creating image 'private.stg.icr.io/ce--8a6a0-13c66hbi3rhz/function-funhello:230623-1407-s8kzr'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n funhello-run-230623-090738611' to check the build run status.
Waiting for function 'funhello' to become ready...
Function 'funhello' is ready.
OK
Run 'ibmcloud ce function get -n funhello' to see more details.
https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud
関数が呼び出された後、 URL が利用可能になります。次のコマンドを使用して、関数に関する情報を検索します。
ibmcloud ce fn get -n funhello
前の**function create**コマンドについて詳しく見てみましょう。 コマンドの出力が function create コマンドの出力は、関数が作成されデプロイされるまでのビルドの進行に関する情報を提供することに注意してください。
- Code Engine は、ソース・コードから関数を作成する要求を受け取ります。
- Code Engine は、選択したプロジェクトに関連付けられているIAMサービスIDとAPIキーをチェックします。 このサービスIDは、 IBM Cloud Container Registry への読み書きが許可されていなければならない。 サービス ID が存在しない場合は、Code Engine によって作成されます。 このサービス ID は、同じプロジェクトから実行される後続の Code Engine ビルド依頼に使用されることに注意してください。
- この例では、ローカル・ソース (
--build-source) からコードをビルドします。ソース・コード (hello.js) はコード・バンドル・ファイルにまとめられ、アカウントの IBM Cloud Container Registry インスタンス内の管理されたネームスペースにアップロードされます。 ローカル・ビルドのターゲットにできるのは IBM Cloud Container Registry のみであることに注意してください。 クォータ制限やアクセスに関する情報など、 IBM Container Registry の詳細については、 IBM Cloud Container Registry を始めるを 参照してください。 - Code Engine は、ソース・コードをコード・バンドルにビルドします。 ソース・コード・バンドルは、ソース・アーカイブ・ファイルと同じ名前空間に作成されます。
- ビルドが完了すると、関数がデプロイされる。 提供された URL から自分の関数にアクセスできる。
関数の呼び出し
URL をブラウザウィンドウに貼り付けて、その機能を有効にします。 コマンド行で curl コマンドを使用することもできます。
Hello, Functions on CodeEngine!
Code Engine 関数が正常に作成され、呼び出されました。
関数のパラメーターを指定してください
URL の末尾に ?name=Sunshine を追加し、ブラウザウィンドウに貼り付けて、パラメータ付きで URL 関数を呼び出します。
https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud?name=Sunshine
Hello, Sunshine!
クリーンアップ
以下のコマンドを使用して、関数を削除できます。
ibmcloud ce fn delete -n funhello
機能を削除すると、関連するビルドファイルも削除されます。
最後に、 IBM Cloud Container Registry からビルドが作成したコードバンドルを削除します。
- 案内する Container Registry>画像の中にIBM Cloudコンソール。
- 地域を選択してください位置ログイン時に選択したドロップダウンメニューIBM Cloud 。
- 関数名を検索して、関数に関連付けられている画像(コードバンドルを表す)を見つけます(たとえば、
funhello)。 - 画像を選択します(例:
au.icr.io/ce--27b98-1jp42v8n9n3o/function-funhello@sha256:b53683f47e0e548b4fa1d3fc93404399fdc4008b54ccecc0852794ea88d01538)を選択し、消去省略記号 (...) メニューから選択します。
次のステップ
-
関数が作成された後、コンソールで 「Test function」 をクリックするか、コマンドを使用して関数の URL を見つけることで、関数にアクセスできます。
function getコマンドを使用して、 -
カスタム・ドメイン・マッピング を作成して、それを関数に割り当てることができます。
-
機能を作成してデプロイした後、コンソールから、または
ibmcloud ce function updateコマンドを使用して、必要に応じて機能を更新できます。 あなたの関数で使用するためにソースを更新したい場合は、--build-sourceオプションを指定する必要があります。function updateオプションを指定しなければならない。
関数を作成した後は、関数の作成方法や更新方法とは関係なく、以下のいずれかの方法で関数とその参照コードを更新できます:
-
既存のコード・バンドルがある場合は、アプリのデプロイ時にコンテナー・レジストリーの場所を指すイメージへの参照のみを指定する必要があります。 詳しくは、 既存のコード・バンドルからの関数ワークロードの作成 を参照してください。
function createコマンドを使用して関数を作成し、--build-sourceオプションを指定してローカルまたはリポジトリー・ソースからコード・バンドルをビルドし、別のコード・バンドルを指すように関数を変更する場合は、まず関数からビルドの関連付けを削除する必要があります。 例えば、ibmcloud ce function update -n FUN_NAME --build-clearを実行します。 関数からビルドの関連付けを削除した後、別のイメージを参照するように関数を更新できます。 -
Git リポジトリにあるソースコードから始める場合、 Code Engine にソースからコードバンドルをビルドさせ、 1回の操作で関数を作成させることができます。 このシナリオでは、 Code Engine があなたのコードバンドルを IBM Cloud® Container Registry にアップロードします。 詳しくは、 リポジトリー・ソース・コードからの関数の作成 を参照してください。
-
ローカル・ワークステーションにあるソース・コードから開始する場合は、 Code Engine を選択して、ソースからコード・バンドルをビルドし、 単一の CLI コマンドで関数を作成することができます。 このシナリオでは、 Code Engine がソース・コードとコード・バンドルを IBM Cloud® Container Registryにアップロードします。
例えば、 Code Engine、あなたがその機能のソース開発を発展させる間、ローカルソースを構築することを選択するかもしれない。 その後、コード・バンドルの成熟後に、必要な特定のコード・バンドルを参照するように関数を更新できます。 必要に応じて、このプロセスを繰り返すことができます。
コード・サンプルがさらに必要ですか? IBM Cloud Code Engine GitHub repoをチェックアウトします。