カーキ色はヒンディー語らしい

技術記事は https://zenn.dev/notrogue

Prefect見てみる PrefectCloud触ってみる編その2

not-rogue.hatenablog.comの続きです。

 

前回はPrefect Cloudのアカウントを作ったので、さっそく触ってみます。

 

ダッシュボードの左側、サイドメニューにはチュートリアル(下図)があります。

それをやってみます。

 

f:id:toukoudo:20200505065356p:plain

 

 

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でログイン

以下の手順でログインします。

  1. トークン名を決めて、「Create token」(名前は何でも良い?)
  2. ローカルでprefect auth   login -t 表示されるトーク
  3. Login successful

 

5. ローカルでDocker agent動かす

PrefectではAgentでflowのスケジュール状態を監視し、適当なタスクをExecution Environmentで実行します。

Agentには、

  • local
  • Docker
  • Kubernates
  • Fargate

の四種類があります。

 

チュートリアルではDocker Agent | Prefect Docsを使用するので、以下の手順で設定します。

  1. (起動していなければ)Docker Daemonの起動
  2. トークン名を決めて、「Create token」
  3. prefect agent start docker -t 表示されるトーク

なお、Docker agentとPrefect CLIのログインの二箇所でトークンを作りましたが、それらは別物です(Personal TokenとAPI Token)。

 

成功すると、Prefect CloudのWebUIにagent動いているよ的な表示が更新されます(下図の右下)。

f:id:toukoudo:20200505072619p:plain

 

6.  デモのFlowを動かす

チュートリアルページに「Run Demo Flow」ボタンが表示されるので、ポチっとしましょう。

 

すると、起動したDocker agentで、Docker imageのpullが行われ、Prefect WebUIでFlowの情報が表示されます。

 

 

ダッシュボード画面

f:id:toukoudo:20200505073933p:plain

 

Flowの詳細画面(ダッシュボードのActivityをクリック)

f:id:toukoudo:20200505074005p:plain

 

Flowのログ(Flow の詳細画面の「LOGS」)。flowコードのタスク(WELOCOME TO PREFECT CLOUDのアスキーアートを表示)が実行されていることがわかります。

f:id:toukoudo:20200505074111p:plain