通过公共 API 管理环境

Microsoft Fabric REST API 为 Fabric 项的创建、读取、更新和删除 (CRUD) 操作提供服务终结点。 本文介绍可用的环境 REST API 及其用法。

重要

  • 新版本包括新的 API、API 弃用和 API 响应/请求协定的更改。 以下部分中的表汇总了所有 API 更改。

环境 API 摘要

类别 API(应用程序编程接口) 说明 注意
项操作 创建环境 在工作区中创建新的空环境。 无更改
项操作 使用定义创建环境 使用定义创建新环境。 新 API
项操作 删除环境 删除现有环境。 无更改
项操作 列出环境 获取工作区中环境的列表。 无更改
项操作 获取环境 获取环境的元数据。 响应包括环境的状态。 响应协定更新
项操作 获取环境定义 获取环境的定义。 新 API
项操作 更新环境变量 更新环境的元数据,例如名称和说明。 无更改
项操作 更新环境定义 更新环境的定义。 新 API
项操作 发布环境 使用当前挂起的更改触发环境发布。 响应协定更新
项操作 取消发布环境 取消正在进行的环境发布 无更改
分期 列出暂存库 获取完整的暂存库列表。 此列表包括已发布的和挂起的库。 响应协定更新
分期 导入外部库 将外部库作为environment.yml文件上传到环境中。 它替代环境中现有外部库的列表。 新 API
分期 导出外部库 以environment.yml文件的形式获取完整的外部库。 新 API
分期 删除外部库 从环境中删除外部库。 此 API 一次接受一个库 新 API
分期 上传自定义库 在环境中上传自定义包。 此 API 允许一次上传一个文件。 支持的文件格式是.jar、.py、.whl 和.tar.gz。 新 API
分期 删除自定义库 从环境中删除自定义包。 将自定义包全名与扩展一起放入 API 请求中,以将其删除。 新 API
分期 上传暂存库 在环境中添加一个自定义库或一个/多个公共库。 已弃用
分期 删除暂存库 删除一个暂存自定义库或所有公共库。 已弃用
分期 列出暂存 Spark 设置 获取完整的暂存计算配置。 暂存配置包括已发布和挂起的计算配置。 响应协定更新
分期 更新 Spark 设置 更新环境的计算配置和 Spark 属性 请求/响应协定更新
已发布 列出已发布的库 获取在 Spark 会话中已发布且有效的库。 响应协定更新
已发布 列出已发布的 Spark 设置 获取在 Spark 会话中发布且有效的 Spark 计算配置和 Spark 属性。 响应协定更新
已发布 导出外部库 以environment.yml文件的形式获取已发布的外部库。 新 API

项 API - 环境中详细了解现有环境公共 API

环境公共 API 更新详细信息

本部分介绍即将推出的现有 API 更新。

获取环境

在 Get Environment API 的响应中,“startTime”将变为“startDateTime”,“endTime”将变为“endDateTime”。 它们表示发布操作的开始/结束时间。

注意

“startTime”和“endTime”使用 Date-Time 格式,而“startDateTime”和“endDateTime”将是 字符串,该字符串采用 UTC 格式并使用 YYYY-MM-DDTHH:mm:ssZ 格式。

  • 接口

    GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/environments/{environmentId}
    
  • 原始示例响应

    {
      "displayName": "Environment_1",
      "description": "An Environment description",
      "type": "Environment",
      "workspaceId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
      "id": "5b218778-e7a5-4d73-8187-f10824047715",
      "properties": {
        "publishDetails": {
          "state": "Success",
          "targetVersion": "46838a80-5450-4414-bea0-40fb6f3e0c0d",
          "startTime": "2024-03-29T14:17:09.0697022Z",
          "endTime": "2024-03-29T14:48:09.0697022Z",
          "componentPublishInfo": {
            "sparkLibraries": {
              "state": "Success"
            },
            "sparkSettings": {
              "state": "Success"
            }
          }
        }
      }
    }
    
  • 新的示例响应

    {
      "displayName": "Environment_1",
      "description": "An Environment description",
      "type": "Environment",
      "workspaceId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
      "id": "5b218778-e7a5-4d73-8187-f10824047715",
      "properties": {
        "publishDetails": {
          "state": "Success",
          "targetVersion": "46838a80-5450-4414-bea0-40fb6f3e0c0d",
          "startDateTime": "2024-03-29T14:17:09Z",
          "endDateTime": "2024-03-29T14:48:09Z",
          "componentPublishInfo": {
            "sparkLibraries": {
              "state": "Success"
            },
            "sparkSettings": {
              "state": "Success"
            }
          }
        }
      }
    }
    

发布环境

发布环境 API 将从发布版本开始支持长时间运行的操作,响应契约将发生变化。 发送请求的终结点保持不变。

  • 接口

    POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/environments/{environmentId}/staging/publish
    
  • 原始示例响应

    {
      "publishDetails": {
        "state": "Running",
        "targetVersion": "46838a80-5450-4414-bea0-40fb6f3e0c0d",
        "startTime": "2024-03-29T14:17:09.0697022Z",
        "componentPublishInfo": {
          "sparkLibraries": {
            "state": "Running"
          },
          "sparkSettings": {
            "state": "Running"
          }
        }
      }
    }
    
  • 新的示例响应

    
    Location: https://api.fabric.microsoft.com/v1/operations/abcdef00-9d7e-469a-abf1-fca847a0ea69
    x-ms-operation-id: abcdef00-9d7e-469a-abf1-fca847a0ea69
    Retry-After: 60
    
    

列出暂存/已发布库

这两个 API 可以获取环境暂存/已发布库的完整列表。 发送请求的终结点保持不变,而库将以不同的结构返回。

  • 接口

    获取暂存库

    GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/environments/{environmentId}/staging/libraries
    

    获取已发布的库

    GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/environments/{environmentId}/libraries
    
  • 原始示例响应

    
    {
      "customLibraries": {
        "wheelFiles": [
          "samplewheel-0.18.0-py2.py3-none-any.whl"
        ],
        "pyFiles": [
          "samplepython.py"
        ],
        "jarFiles": [
          "samplejar.jar"
        ],
        "rTarFiles": [
          "sampleR.tar.gz"
        ]
      },
      "environmentYml": "dependencies:\r\n- pip:\r\n  - matplotlib==3.4.3"
    }
    
    
  • 新的示例响应

    {
      "libraries": [
        {
          "name": "samplewheel-0.18.0-py2.py3-none-any.whl",
          "libraryType": "Custom"
        },
        {
          "name": "samplepython.py",
          "libraryType": "Custom"
        },
        {
          "name": "samplejar.jar",
          "libraryType": "Custom"
        },
        {
          "name": "sampleR.tar.gz",
          "libraryType": "Custom"
        },
        {
          "name": "fuzzywuzzy",
          "libraryType": "External",
          "version": "0.0.1"
        },
        {
          "name": "matplotlib",
          "libraryType": "External",
          "version": "0.0.1"
        }
      ],
      "continuationToken": "null",
      "continuationUri": "null"
    }
    
    

列出暂存/已发布的 Spark 设置

这两个 API 可以获取环境的 Spark 计算配置和属性。 发送请求的终结点保持不变,而配置将以不同的结构返回。 Spark 属性将更改为列表。

  • 接口

    获取 Spark 测试环境设置

    GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/environments/{environmentId}/staging/sparkcompute
    

    获取已发布的 Spark 设置

    GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/environments/{environmentId}/sparkcompute
    
  • 原始示例响应

    {
      "instancePool": {
        "name": "MyWorkspacePool",
        "type": "Workspace",
        "id": "78942136-106c-4f3e-80fc-7ff4eae11603"
      },
      "driverCores": 4,
      "driverMemory": "56g",
      "executorCores": 4,
      "executorMemory": "56g",
      "dynamicExecutorAllocation": {
        "enabled": false,
        "minExecutors": 1,
        "maxExecutors": 1
      },
      "sparkProperties": {
        "spark.acls.enable": "false"
      },
      "runtimeVersion": "1.2"
    }
    
  • 新的示例响应

    {
      "instancePool": {
        "name": "MyWorkspacePool",
        "type": "Workspace",
        "id": "78942136-106c-4f3e-80fc-7ff4eae11603"
      },
      "driverCores": "4",
          "driverMemory": "56G",
      "executorCores": "4",
      "executorMemory": "56G",
      "dynamicExecutorAllocation": {
        "enabled": false,
        "minExecutors": 1,
        "maxExecutors": 1
      },
      "sparkProperties": [
        {
          "key": "spark.acls.enable",
          "value": "false"
        }
      ],
      "runtimeVersion": "1.2"
    }
    

更新 Spark 设置

此 API 用于更新环境的 Spark 计算和属性,发布后,请求和响应中的 Spark 属性协定将更新。

  • 原始示例请求

    PATCH https://api.fabric.microsoft.com/v1/workspaces/f089354e-8366-4e18-aea3-4cb4a3a50b48/environments/707cfd07-cbf1-41da-aad7-dd157ddb8c11/staging/sparkcompute
    
    {
      "instancePool": {
        "name": "MyWorkspacePool",
        "type": "Workspace"
      },
      "driverCores": 4,
      "driverMemory": "56g",
      "executorCores": 4,
      "executorMemory": "56g",
      "dynamicExecutorAllocation": {
        "enabled": false,
        "minExecutors": 1,
        "maxExecutors": 1
      },
      "sparkProperties": {
        "spark.acls.enable": "false",
        "spark.admin.acls": null
      },
      "runtimeVersion": "1.2"
    }
    
  • 新的示例请求

    PATCH https://api.fabric.microsoft.com/v1/workspaces/f089354e-8366-4e18-aea3-4cb4a3a50b48/environments/707cfd07-cbf1-41da-aad7-dd157ddb8c11/staging/sparkcompute
    
    {
      "instancePool": {
        "name": "MyWorkspacePool",
        "type": "Workspace"
      },
      "driverCores": "4",
      "driverMemory": "56G",
      "executorCores": "4",
      "executorMemory": "56G",
      "dynamicExecutorAllocation": {
        "enabled": false,
        "minExecutors": 1,
        "maxExecutors": 1
      },
      "sparkProperties": [
        {
          "key": "spark.acls.enable",
          "value": "false"
        },
        {
          "key": "spark.admin.acls",
          "value": null
        }
      ],
      "runtimeVersion": "1.2"
    }
    
  • 原始示例响应

    {
      "instancePool": {
        "name": "MyWorkspacePool",
        "type": "Workspace",
        "id": "78942136-106c-4f3e-80fc-7ff4eae11603"
      },
      "driverCores": 4,
      "driverMemory": "56g",
      "executorCores": 4,
      "executorMemory": "56g",
      "dynamicExecutorAllocation": {
        "enabled": false,
        "minExecutors": 1,
        "maxExecutors": 1
      },
      "sparkProperties": {
        "spark.acls.enable": "false"
      },
      "runtimeVersion": "1.2"
    }
    
  • 新的示例响应

    {
      "instancePool": {
        "name": "MyWorkspacePool",
        "type": "Workspace",
        "id": "78942136-106c-4f3e-80fc-7ff4eae11603"
      },
      "driverCores": "4",
      "driverMemory": "56G",
      "executorCores": "4",
      "executorMemory": "56G",
      "dynamicExecutorAllocation": {
        "enabled": false,
        "minExecutors": 1,
        "maxExecutors": 1
      },
      "sparkProperties": [
        {
          "key": "spark.acls.enable",
          "value": "false"
        }
      ],
      "runtimeVersion": "1.2"
    }
    

环境公共 API 用例

重要

本部分不包括新的 API 和协定更改。

本部分演示如何使用当前可用的 API 来实现特定目标。 你可以将以下示例中的 {WORKSPACE_ID}{ARTIFACT_ID} 替换为相应的值。

创建新环境

可以使用以下 API 创建新的空环境。

  • 示例请求

    POST https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments
    
    {
        "displayName": "Environment_1",
        "description": "An environment description"
    }
    

管理暂存库

可以使用上传/删除暂存库 API 来管理环境中的库部分

检查环境已发布的库

在添加/删除库之前,可以使用已发布库 API 来检查哪些库当前有效。

  • 示例请求

    GET https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/libraries
    
  • 示例响应

    {
        "customLibraries": {
            "wheelFiles": [
                "samplewheel-0.18.0-py2.py3-none-any.whl"
            ],
            "pyFiles": [
                "samplepython.py"
            ],
            "jarFiles": [
                "samplejar.jar"
            ],
            "rTarFiles": [
                "sampleR.tar.gz"
            ]
        },
        "environmentYml": "dependencies:\r\n- pip:\r\n  - matplotlib==3.4.3"
    }
    

上传库

用于上传暂存库的 API 一次接受一个文件。 对于公共库,支持的文件类型包括 .whl.jar.tar.gz.pyenvironment.yml。 可以通过多部分/表单数据内容类型指定文件。

注意

  • 为了更有效地操作公共库,强烈建议在 environment.yml 文件中整合来自 PyPI 和 conda 的所有预期库。
  • 上传 API 允许在一个请求中最多 200 MB 的文件,公共 API 目前不支持超出此大小限制的库。
  • 示例请求

    POST https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/staging/libraries
    

删除库

通过指定带类型后缀的完整库文件名,可以一次删除一个库。

注意

  • 如果您将 environment.yml 指定为要删除的文件,则您将删除所有公共库。
  • 如果要删除现有公共库的子集,请改用上传库,并上传仅包含预期库的 environment.yml。 上传的 environment.yml 将完全替换现有的公共库部分。
  • 示例请求

    DELETE https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/staging/libraries?libraryToDelete=fuzzywuzzy-0.18.0-py2.py3-none-any.whl
    

管理暂存 Spark 计算

可以使用更新暂存 Spark 计算来管理 Spark 计算。

检查已发布的 Spark 计算的环境

在更改环境的配置之前,可以使用获取已发布的 Spark 计算 API 来检查当前有效的 Spark 计算配置内容。

  • 示例请求

    GET https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/sparkcompute
    
  • 示例响应

    {
        "instancePool": {
            "name": "Starter Pool",
            "type": "Workspace"
        },
        "driverCores": 4,
        "driverMemory": "56g",
        "executorCores": 4,
        "executorMemory": "56g",
        "dynamicExecutorAllocation": {
            "enabled": false,
            "minExecutors": 1,
            "maxExecutors": 1
        },
        "sparkProperties": {
            "spark.acls.enable": "false"
        },
        "runtimeVersion": "1.2"
    }
    

更新计算配置

可以通过编辑此 API 的请求正文来更新 Spark 运行时、切换到另一个池、优化计算配置以及添加/删除 Spark 属性。

可以通过指定池名称和池来切换附加池。 指定池名称为 Starter Pool,从而将池切换到默认设置。 要通过 REST API 获取工作区可用自定义池的完整列表,请参阅自定义池 – 列出工作区自定义池

如果要删除现有的 Spark 属性,则需要将值指定为 null(带要删除的密钥),如以下示例所示。

  • 示例请求

    PATCH https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/staging/sparkcompute
    
    {
        "instancePool": {
            "name": "Starter Pool",
            "type": "Workspace"
        },
        "driverCores": 4,
        "driverMemory": "56g",
        "executorCores": 4,
        "executorMemory": "56g",
        "dynamicExecutorAllocation": {
            "enabled": false,
            "minExecutors": 1,
            "maxExecutors": 1
        },
        "sparkProperties": {
            "spark.acls.enable": null
        },
        "runtimeVersion": "1.2"
    }
    

使更改生效

使用以下 API 集发布更改。

准备发布

环境一次可接受一个发布。 发布环境之前,可以验证环境的状态,并最终审查暂存更改。 成功发布环境后,暂存状态中的所有配置都会生效。

  • 步骤 1:获取环境的元数据

    GET https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/
    

    在响应正文中,可以清楚地判断环境的状态。 在进入下一步之前,请确保没有正在进行的发布。

  • 步骤 2:获取暂存库/Spark 计算以进行最终审查

    GET https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/staging/libraries
    
    GET https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/staging/sparkcompute
    

触发环境的发布

对暂存库和 Spark 计算进行的更改会缓存,但需要发布才能生效。 按照以下示例操作以触发发布。

  • 示例请求

    POST https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/staging/publish
    
  • 示例响应

    {
        "publishDetails":
        {
            "state": "Running",
            "targetVersion": "46838a80-5450-4414-bea0-40fb6f3e0c0d",
            "startTime": "2024-03-29T14:17:09.0697022Z",
            "componentPublishInfo": {
                "sparkLibraries": {
                    "state": "Running"
                },
                "sparkSettings": {
                    "state": "Running"
                }
            }
        }
    }   
    

在发布期间,还可以调用以下 API 来取消发布。

  • 示例请求

    POST https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/environments/{{ARTIFACT_ID}}/staging/cancelPublish