IBM Cloud Docs
使用内联代码创建函数工作负载

使用内联代码创建函数工作负载

您可以使用内联代码创建函数。 您的代码随您的函数一起存储。 您可以从控制台或使用 CLI 创建此类型的功能。

代码束是表示函数代码的文件的集合。 此代码束将注入到运行时容器中。 代码束由 Code Engine 创建,并存储在容器注册表中或与函数直接插入。 代码束不是开放式容器计划 (OCI) 标准容器映像。

使用内联控制台创建函数

从控制台创建具有内联代码的函数。

  1. 打开 Code Engine 控制台。
  2. 选择 让我们开始
  3. 选择功能
  4. 输入函数的名称,例如 myfunction。 为您的功能起一个在项目中独一无二的名称。
  5. 从可用项目列表中选择一个项目。 您还可以 创建新的。 您必须选择项目以创建函数。
  6. 为函数代码选择 运行时映像。 有关更多信息,请参阅 运行时
  7. 选择以将您的代码指定为内联代码包。 选择此选项时,将使用所选运行时的样本代码束来创建函数。 您可以在创建函数后编辑样本代码。 代码束以内联方式与函数一起存储。
  8. 指定资源信息,包括 CPU 和内存组合缩放延迟
  9. (可选) 指定 定制域环境变量。 您可以稍后添加这些选项。
  10. 单击创建
  11. 在功能状态更改为 就绪后,您可以测试功能。 单击 测试功能,然后单击 发送请求。 要在网页中打开该功能,请点击功能 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-20

示例输出

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

后续步骤

  • URL 创建函数后,您可以通过点击控制台中的 “测试函数” 或使用 function get 命令找到。

  • 您可以创建 定制域映射 并将其分配给函数。

  • 创建并部署函数后,可以从控制台或使用 ibmcloud ce function update 命令更新函数以满足您的需求。 如果要更新源以用于功能,那么必须在 function update 命令上提供 --build-source 选项。

创建函数后,您可以使用以下 任何 方法来更新函数及其引用的代码,而与您创建或先前更新函数的方式无关:

  • 如果您有现有代码束,那么只需要提供对映像的引用,该引用指向部署应用程序时容器注册表的位置。 有关更多信息,请参阅 从现有代码束创建函数工作负载

    如果使用 function create 命令创建了函数,并且指定了 --build-source 选项以从本地或存储库源构建代码束,并且要将函数更改为指向其他代码束,那么必须首先从函数中除去构建的关联。 例如,运行 ibmcloud ce function update -n FUN_NAME --build-clear。 从函数中除去构建的关联后,可以更新该函数以引用另一个映像。

  • 如果您是从位于 Git 存储库中的源代码开始,那么可以选择让 Code Engine 从源构建代码束并使用 单个 操作创建函数。 在此场景中,Code Engine 将代码束上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 从存储库源代码创建函数

  • 如果从本地工作站上的源代码开始,那么可以选择 Code Engine 从源构建代码束,并使用 单个 CLI 命令创建函数。 在此场景中,Code Engine 将源代码和代码束上载到 IBM Cloud® Container Registry。

    例如,您可以为 Code Engine 选择在开发函数的源时构建本地源。 然后,在代码束成熟后,您可以更新函数以引用所需的特定代码束。 您可以根据需要重复此过程。

要查找更多代码示例吗? 请查看 样本 IBM Cloud Code Engine GitHub 存储库