使用 Lithops 架構執行工作

Lithops 是一種開放程式碼架構,專門設計用來大規模擴充 Python 應用程式。 Litops 提供 IBM Cloud® Code Engine 體驗的簡單推送,因此您可以聚焦於 Python 程式碼,而 Lithops 則聚焦於大規模部署程式碼,同時監視執行、取得結果等等。 Lithops 使用 Lithops API 來啟用原生 Python 與 Code Engine 的整合。 如需 Lithops 的相關資訊,請參閱 Lithops 快速入門手冊

使用 Lithops 架構執行第一個流程

您必須先安裝 Lithops 並設定儲存體後端,然後才能執行參照 Lithops 架構的工作。

開始之前

安裝 Lithops

  1. 安裝 Lithops

  2. 建立 Lithops 配置檔

  3. 安裝 Docker(社群版本)版。

  4. 登入 Docker。

    docker login
    

設定 Lithops 的儲存體後端

選取 支援的儲存體後端; 例如,IBM Cloud Object Storage。

若要設定 IBM Cloud Object Storage、

  1. 建立 IBM Cloud Object Storage 帳戶
  2. 在您要使用的地區中建立儲存區。
  3. 在側邊導覽中,按一下 端點 以尋找 API 端點。 您必須複製已建立儲存區之地區的公用及專用端點。
  4. 建立認證以存取 IBM Cloud Object Storage 帳戶。 選擇一個選項

Lithops 的選項 1 (API 金鑰)

  1. 從 IBM Cloud Object Storage 導覽中,按一下 服務認證

  2. 按一下 新建認證 +,並提供名稱及選取角色。

  3. 按一下新增,以產生服務認證。

  4. 按一下檢視憑證,然後複製 apikey 值。

  5. 編輯 lithops 配置檔,並新增下列金鑰。

    lithops:
        storage_backend: ibm_cos
    
    ibm_cos:
        endpoint   : <REGION_ENDPOINT>  
        private_endpoint : <PRIVATE_REGION_ENDPOINT>
        api_key    : <API_KEY>
    

Lithops 的選項 2 (IBM Cloud Object Storage HMAC 認證)

  1. 從 IBM Cloud Object Storage 導覽中,按一下 服務認證

  2. 按一下 新建認證 +,並提供名稱及選取角色。

  3. 按一下 進階選項 並啟用選項 Include HMAC Credential

  4. 按一下新增,以產生服務認證。

  5. 按一下 檢視認證,並複製 access_key_idsecret_access_key 值。

  6. 編輯 lithops 配置檔,並新增下列索引鍵:

    lithops:
        storage_backend: ibm_cos
    
    ibm_cos:
        endpoint   : <REGION_ENDPOINT>  
        private_endpoint : <PRIVATE_REGION_ENDPOINT>
        access_key    : <ACCESS_KEY_ID>
        secret_key    : <SECRET_KEY_ID>
    

Lithops 的選項 3 (IBM IAM API 金鑰)

  1. 如果您沒有 IAM API 金鑰,請導覽至 IBM IAM 儀表板

  2. 按一下建立 IBM Cloud API 金鑰。 輸入 API 金鑰的名稱和可選描述,然後按一下建立

  3. 複製產生的 IAM API 金鑰 (您只能在建立金鑰時看到該金鑰,因此請務必複製它)。

  4. 編輯 lithops 配置檔,並新增下列索引鍵:

    lithops:
        storage_backend: ibm_cos
    
    ibm:
        iam_api_key: <IAM_API_KEY>
    
    ibm_cos:
        endpoint   : <REGION_ENDPOINT>  
        private_endpoint : <PRIVATE_REGION_ENDPOINT>
    

使用 Lithops 部署您的第一個 Code Engine 工作

執行下列 hello world 範例:

import lithops

iterdata = [1,2,3,4,5]

def my_map_function(data):
    return data + 1

if __name__ == '__main__':
    pw = lithops.function_executor(type = "serverless", backend='code_engine')
    futures = pw.map(my_map_function, iterdata)
    print (pw.get_result())
    pw.clean()

Lithops 的後續步驟

您可以在 Lithops 專案頁面上找到更多範例和使用案例,以及詢問問題。