インライン・コードを使用した関数ワークロードの作成

インライン・コードを使用して関数を作成できます。 コードは関数とともに保管されます。 このタイプの機能は、コンソールまたは CLI を使用して作成できます。

コード・バンドルは、関数コードを表すファイルの集合です。 このコード・バンドルは、ランタイム・コンテナーに注入されます。 コード・バンドルは Code Engine によって作成され、コンテナー・レジストリーに保管されるか、関数とともにインラインで保管されます。 コード・バンドルは、Open Container Initiative (OCI) 標準コンテナー・イメージではありません。

コンソールを使用したインラインでの関数の作成

コンソールからインライン・コードを使用して関数を作成します。

  1. Code Engine コンソールを開きます。
  2. 作成を開始 」を選択します。
  3. 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 関数を作成するプロジェクトを選択する必要があります。
  4. 機能 」を選択してください。
  5. 関数の名前を入力してください。例: myfunction。 関数名には、プロジェクト内で一意のものを使用してください。
  6. 機能コードの 「ランタイム・イメージ」 を選択します。 詳しくは、 ランタイム を参照してください。
  7. 選択して、 コードをインラインコードバンドルとして指定してください。 このオプションを選択すると、選択したランタイムのサンプル・コード・バンドルを使用して関数が作成されます。 関数の作成後にサンプル・コードを編集できます。 コード・バンドルは、関数とともにインラインで保管されます。
  8. CPU とメモリーの組み合わせスケールダウン遅延 などのリソース情報を指定します。
  9. オプションで、 カスタム・ドメイン または 環境変数 を指定します。 これらのオプションは後で追加できます。
  10. 「作成」 をクリックします。
  11. 機能のステータスが「 Ready 」に変わったら、その機能をテストできます。 「テスト機能」 をクリックし、 「要求の送信」 をクリックします。 Webページでこの関数を開くには、「 Function URL 」をクリックしてください。
  12. エディター・ウィンドウで機能コードを変更することもできます。 関数を再デプロイすると、コードはインラインで保管されます。

「関数のテスト」 をクリックして 「要求の送信」 をクリックすると、関数を呼び出すことができます。

--save オプションを指定して function get コマンドを実行することにより、インライン関数の作成に使用されたコードを取得できます。 例えば、ibmcloud ce function get --name myfunction --save hellofun2.jsです。

CLI でのインライン・コードを使用した関数の作成

ibmcloud ce function create コマンドを使用して、CLI でインライン・コードを使用する関数を作成します。 オプションの完全な一覧については、 ibmcloud ce function create コマンドを参照してください。

開始前に

この例では、 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 リポジトリのサンプルをご覧ください。