如何在Prefect Cloud免费层无需本地Agent实现Flow无服务器部署?
无需本地Agent运行Prefect Flow的下一步操作
你当前用的Process基础设施块和LocalFileSystem存储块都依赖本地环境,要实现无服务器运行,必须替换成云端托管的存储和基础设施组件,具体步骤如下:
1. 替换本地存储为云端存储块
LocalFileSystem仅能被本地Agent访问,Prefect Cloud无法直接拉取上面的Flow代码。你需要换成云端存储块,比如S3、GCS或Azure Blob Storage:
- 可直接在Prefect UI创建对应存储块,配置好存储服务的凭证(如AWS Access Key、GCP服务账号)和存储路径;
- 也可通过代码创建,以S3块为例:
from prefect.filesystems import S3 s3_block = S3( bucket_path="my-prefect-flows/reporting", aws_access_key_id="你的AWS密钥ID", aws_secret_access_key="你的AWS密钥" ) s3_block.save("my-cloud-storage", overwrite=True)
2. 替换Process块为无服务器基础设施块
Process块需要本地Agent启动进程,要实现无服务器运行,需使用对应云服务商的无服务器基础设施块:
- AWS用户:创建
ECSTask块,配置Fargate集群、任务定义(确保镜像包含Prefect依赖)、子网和安全组; - GCP用户:创建
CloudRunJob块,配置服务账号、镜像和资源限制; - Azure用户:创建
AzureContainerAppsJob块,配置容器应用环境和镜像信息;
这些块可在Prefect UI或代码中创建,核心是让Prefect Cloud能直接触发云端无服务器资源。
3. 重新构建并应用部署
使用新的存储块和基础设施块重新构建部署,示例命令:
prefect deployment build -n reporting_ff_dev-serverless -sb s3/my-cloud-storage -ib ecs-task/my-ecs-fargate-block flow.py:my_flow -a
-a参数会自动完成部署应用,无需单独执行prefect deployment apply。
4. 触发Flow运行
现在你可以在Prefect UI手动触发Flow,或设置调度规则。此时Prefect Cloud会直接调用云端无服务器基础设施拉取Flow代码并执行,完全无需本地Agent运行。
注意:Prefect Cloud免费层有每月执行次数限制,部分高级运维功能无法使用,但基础无服务器触发流程是支持的。
内容的提问来源于stack exchange,提问作者user15915737
相关产品推荐
相关产品推荐

