Prefect見てみる PrefectCloud触ってみる編その2
not-rogue.hatenablog.comの続きです。
前回はPrefect Cloudのアカウントを作ったので、さっそく触ってみます。
ダッシュボードの左側、サイドメニューにはチュートリアル(下図)があります。
それをやってみます。
1. プロジェクトの選択
Prefectでは、「チーム」の下に「プロジェクト」という概念があります。
flowはプロジェクトにひも付くので、ここでプロジェクトを作成します。
2. flowのデプロイ
自動で下のflowのコードがデプロイされます(DockerHubのDockerイメージから)。
import prefect from prefect import task, Flow from prefect.environments.storage import Docker @task(name="Welcome", slug="welcome-task") def welcome_logger(): logger = prefect.context["logger"] with open("/ascii-welcome.txt", "r") as f: lines = "\n\n" + "".join(f.readlines()) + "\n\n" logger.info(lines) storage = Docker( registry_url="prefecthq", image_name="flows", image_tag="welcome-flow", files={"welcome.txt": "/ascii-welcome.txt"}, ) f = Flow("Welcome Flow", tasks=[welcome_logger], storage=storage)
3. ローカル環境の設定
- Python3.6以上
- Dockerデーモン
が必要です。
その後
pip install prefect -U
を実行します。
4. Prefect CLIでログイン
以下の手順でログインします。
5. ローカルでDocker agent動かす
PrefectではAgentでflowのスケジュール状態を監視し、適当なタスクをExecution Environmentで実行します。
Agentには、
- local
- Docker
- Kubernates
- Fargate
の四種類があります。
チュートリアルではDocker Agent | Prefect Docsを使用するので、以下の手順で設定します。
なお、Docker agentとPrefect CLIのログインの二箇所でトークンを作りましたが、それらは別物です(Personal TokenとAPI Token)。
成功すると、Prefect CloudのWebUIにagent動いているよ的な表示が更新されます(下図の右下)。
6. デモのFlowを動かす
チュートリアルページに「Run Demo Flow」ボタンが表示されるので、ポチっとしましょう。
すると、起動したDocker agentで、Docker imageのpullが行われ、Prefect WebUIでFlowの情報が表示されます。
ダッシュボード画面
Flowの詳細画面(ダッシュボードのActivityをクリック)
Flowのログ(Flow の詳細画面の「LOGS」)。flowコードのタスク(WELOCOME TO PREFECT CLOUDのアスキーアートを表示)が実行されていることがわかります。