使用 Lithops 框架运行作业

光刻是一个开放式源代码框架,旨在大规模扩展 Python 应用程序。 Lithops 提供了对 IBM Cloud® Code Engine 体验的简单推送,以便您可以专注于 Python 代码,而 Lithops 则专注于大规模部署代码,同时监视执行,获取结果等。 通过使用 Lithops API,Ithops 支持本机 Python 与 Code Engine 集成。 有关 Lithops 的更多信息,请参阅 Lithops 快速入门指南

使用 Lithops 框架运行第一个流

必须先安装 Lithops 并设置存储后端,然后才能运行引用 Lithops 框架的作业。

准备工作

安装光刻胶

  1. 安装 Lithops

  2. 创建 Lithops 配置文件

  3. 安装 Docker(社区版本)V

  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 项目页面上找到更多示例和用例以及提问。