使用行內程式碼建立函數工作量

您可以使用行內程式碼來建立函數。 您的程式碼與您的函數一起儲存。 您可以從主控台或使用 CLI 來建立這種類型的功能。

程式碼組合是代表函數碼的檔案集合。 這個程式碼組合會注入執行時期儲存器中。 您的程式碼組合由 Code Engine 建立,並儲存在儲存器登錄中或與函數一起列入。 程式碼組合不是 Open Container Initiative (OCI) 標準儲存器映像檔。

使用主控台行內建立函數

從主控台建立具有行內程式碼的函數。

  1. 開啟 Code Engine 主控台。
  2. 選擇「開始建立」。
  3. 請從可用專案清單中選取一個專案。 您也可以 建立新的。 您必須選取專案才能建立函數。
  4. 選擇功能
  5. 輸入函數名稱;例如,myfunction。 請為您的函式取一個在該專案中具有唯一性的名稱。
  6. 選取函數碼的 執行時期映像檔。 如需相關資訊,請參閱 執行時期
  7. 選取此選項,將您的程式碼指定為內嵌程式碼包。 當您選取這個選項時,會以所選執行時期的範例程式碼組合來建立您的函數。 您可以在建立函數之後編輯範例程式碼。 程式碼組合與函數一起行內儲存。
  8. 指定資源資訊,包括 CPU 和記憶體組合縮減延遲
  9. 選擇性地指定 自訂網域環境變數。 您可以稍後新增這些選項。
  10. 按一下建立
  11. 在功能狀態變更為 備妥之後,您可以測試功能。 按一下 測試功能,然後按一下 傳送要求。 若要在網頁中開啟功能,請按一下功能 URL
  12. 您也可以在「編輯器」視窗中變更函數碼。 當您重新部署函數時,程式碼會行內儲存。

您可以按一下 測試功能,然後按一下 傳送要求,來呼叫您的功能。

您可以執行 function get 指令並搭配 --save 選項,來擷取用來建立任何行內函數的程式碼。 例如,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

您可以執行 function get 指令並搭配 --save 選項,以儲存用來建立任何行內函數的程式碼。 例如,ibmcloud ce function get --name myhellofun --save hellofun2.js

下一步

  • URL 函數建立後,您可以按一下控制台中的 Test function,或使用 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 儲存庫中的範例