インライン・コードを使用した関数ワークロードの作成
インライン・コードを使用して関数を作成できます。 コードは関数とともに保管されます。 このタイプの機能は、コンソールまたは CLI を使用して作成できます。
コード・バンドルは、関数コードを表すファイルの集合です。 このコード・バンドルは、ランタイム・コンテナーに注入されます。 コード・バンドルは Code Engine によって作成され、コンテナー・レジストリーに保管されるか、関数とともにインラインで保管されます。 コード・バンドルは、Open Container Initiative (OCI) 標準コンテナー・イメージではありません。
コンソールを使用したインラインでの関数の作成
コンソールからインライン・コードを使用して関数を作成します。
- Code Engine コンソールを開きます。
- 「 作成を開始 」を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 関数を作成するプロジェクトを選択する必要があります。
- 「 機能 」を選択してください。
- 関数の名前を入力してください。例:
myfunction。 関数名には、プロジェクト内で一意のものを使用してください。 - 機能コードの 「ランタイム・イメージ」 を選択します。 詳しくは、 ランタイム を参照してください。
- 選択して、 コードをインラインコードバンドルとして指定してください。 このオプションを選択すると、選択したランタイムのサンプル・コード・バンドルを使用して関数が作成されます。 関数の作成後にサンプル・コードを編集できます。 コード・バンドルは、関数とともにインラインで保管されます。
- CPU とメモリーの組み合わせ や スケールダウン遅延 などのリソース情報を指定します。
- オプションで、 カスタム・ドメイン または 環境変数 を指定します。 これらのオプションは後で追加できます。
- 「作成」 をクリックします。
- 機能のステータスが「 Ready 」に変わったら、その機能をテストできます。 「テスト機能」 をクリックし、 「要求の送信」 をクリックします。 Webページでこの関数を開くには、「 Function URL 」をクリックしてください。
- エディター・ウィンドウで機能コードを変更することもできます。 関数を再デプロイすると、コードはインラインで保管されます。
「関数のテスト」 をクリックして 「要求の送信」 をクリックすると、関数を呼び出すことができます。
--save オプションを指定して function get コマンドを実行することにより、インライン関数の作成に使用されたコードを取得できます。 例えば、ibmcloud ce function get --name myfunction --save hellofun2.jsです。
CLI でのインライン・コードを使用した関数の作成
ibmcloud ce function create コマンドを使用して、CLI でインライン・コードを使用する関数を作成します。 オプションの完全な一覧については、 ibmcloud ce function create コマンドを参照してください。
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成して使用できるようにします。
この例では、 main.js という名前のコード・ファイルを使用します。 以下のサンプル・コードを使用して main.js ファイルを作成することも、独自のコードに置き換えることもできます。
/**
* The `main` function is the entry-point into the function.
* It has one optional argument, which carries all the
* parameters the function was invoked with.
*/
async function main(params) {
// log environment variables available to the function
console.log(process.env);
// log Code Engine system headers available to the function
console.log(params.__ce_headers);
// log all parameters for debugging purposes
console.log("params: "+params);
// since functions are invoked through http(s), we return an HTTP response
return {
statusCode: 200,
headers: { 'Content-Type': 'application/json' },
body: params };
}
// this step is necessary, if you gave your main function a different name
// we include it here for documentation purposes only
module.exports.main = main;
関数を作成し、コードをコマンドに組み込みます。 例えば、 ibmcloud ce function create コマンドを使用して、 myhellofun 関数を作成します。
ibmcloud ce fn create --name myhellofun --inline-code main.js --runtime nodejs
出力例
Creating function 'myhellofun'...
OK
Run 'ibmcloud ce function get -n myhellofun' to see more details.
https://myhellofun.glxo4kabcde.us-south.codeengine.appdomain.cloud
--save オプションを指定して function get コマンドを実行することにより、インライン関数の作成に使用されたコードを保存できます。 例えば、ibmcloud ce function get --name myhellofun --save hellofun2.jsです。
次のステップ
-
関数が作成された後、コンソールで 「Test function」 をクリックするか、コマンドを使用して関数の URL を見つけることで、関数にアクセスできます。
function getコマンドを使用して、 -
カスタム・ドメイン・マッピング を作成して、それを関数に割り当てることができます。
-
機能を作成してデプロイした後、コンソールから、または
ibmcloud ce function updateコマンドを使用して、必要に応じて機能を更新できます。--build-sourceこの関数で使用するためにソースを更新したい場合は、function updateコマンドでxml-ph-0000@deepl.internalオプションを指定する必要があります。
関数の作成後、その関数や参照されているコードは、関数の作成方法や過去の更新方法にかかわらず、以下のいずれかの方法で更新できます
-
既存のコード・バンドルがある場合は、アプリのデプロイ時にコンテナー・レジストリーの場所を指すイメージへの参照のみを指定する必要があります。 詳しくは、 既存のコード・バンドルからの関数ワークロードの作成 を参照してください。
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 リポジトリのサンプルをご覧ください。