跳转至主要内容
Prefect Cloud 可以使用 Prefect 托管工作池代您运行流。 使用此工作池运行的流不需要 Worker 或云服务商账户——Prefect 会为您处理基础设施和代码执行。 托管执行是希望快速上手且无需设置任何基础设施的用户的理想选择。

创建托管部署

  1. 在 UI 或 CLI 中创建一个类型为“Prefect 托管”的新工作池。请使用此命令通过 CLI 创建新的工作池
    prefect work-pool create my-managed-pool --type prefect:managed
    
  2. 使用流的 deploy 方法或 prefect.yaml 创建部署。指定您的托管工作池名称,如下面的 deploy 方法示例所示
    managed-execution.py
    from prefect import flow
    
    if __name__ == "__main__":
        flow.from_source(
            source="https://github.com/prefecthq/demo.git",
            entrypoint="flow.py:my_flow",
        ).deploy(
            name="test-managed-flow",
            work_pool_name="my-managed-pool",
        )
    
  3. CLI 已认证到您的 Prefect Cloud 工作区的情况下,运行此脚本以创建部署
    python managed-execution.py
    
  4. 从 UI 或 CLI 运行部署。 此过程可在远程基础设施上运行流,无需进行任何基础设施设置、启动 Worker 或拥有云服务商账户。

添加依赖项

Prefect 可以在运行您流的容器中动态安装 Python 包。请在 UI 的“Pip Packages”字段中指定这些依赖项,或在创建部署时通过配置 job_variables={"pip_packages": ["pandas", "prefect-aws"]} 来指定,如下所示
from prefect import flow

if __name__ == "__main__":
    flow.from_source(
        source="https://github.com/prefecthq/demo.git",
        entrypoint="flow.py:my_flow",
    ).deploy(
        name="test-managed-flow",
        work_pool_name="my-managed-pool",
        job_variables={"pip_packages": ["pandas", "prefect-aws"]}
    )
或者,您可以创建一个 requirements.txt 文件,并在您的 prefect.yaml 拉取步骤 (pull step) 中引用它。

网络

静态出站 IP 地址

在 Prefect 托管基础设施上运行的流可以分配静态出站 IP 地址,这些地址将作为与您的系统或数据库交互请求的 source 地址。 将这些 source 地址添加到您的防火墙规则中,以明确允许流与您的环境进行通信。
  • 184.73.85.134
  • 52.4.218.198
  • 44.217.117.74

镜像

托管执行要求您运行官方的 Prefect Docker 镜像,例如 prefecthq/prefect:3-latest。但是,如上所述,您可以在运行时安装 Python 包依赖项。如果您需要使用自己的镜像,我们建议使用其他类型的工作池。

代码存储

您必须将流代码存储在可访问的远程位置。Prefect 支持基于 Git 的云服务商,如 GitHub、Bitbucket 或 GitLab。同时也支持基于远程 Block 的存储,因此 S3、GCS 和 Azure Blob 是其他的代码存储选项。

无需静态凭据访问 AWS

Prefect 托管工作池可以通过 Web 身份联合机制承担 AWS IAM 角色,并将临时 AWS 凭据注入到每次运行中。这使得拉取步骤和流代码无需在 Prefect Cloud 中存储静态访问密钥即可访问 AWS 服务。 请参阅 在 Prefect 托管工作池中使用 AWS 工作负载身份 获取设置说明。

资源与限制

所有流运行均可获得
  • 4 核 vCPU
  • 16 GB 内存
  • 128 GB 临时存储
流运行的最长运行时间限制为 24 小时。 每个账户在每个工作区都有一个每月重置的计算使用限额。使用的计算资源定义为从计算启动到销毁的时长,向上取整至最近的一分钟。这大约(虽然不完全准确)等同于流运行从 PENDING 状态变为 COMPLETED 的时长。

后续步骤

阅读更多关于创建部署的内容,请参阅 在 Docker 容器中运行流 如需对基础设施进行更多控制(例如运行自定义 Docker 镜像的能力),无服务器推送工作池 (serverless push work pools) 是一个不错的选择。