{"height":"190","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fohbarye.hatenablog.jp%2Fentry%2F2020%2F10%2F18%2Fwhy-airflow-have-two-web-ui\" title=\"Airflow webserver\u306eUI\u304c\u306a\u305c2\u7a2e\u985e\u5b58\u5728\u3059\u308b\u306e\u304b - valid,invalid\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","width":"100%","published":"2020-10-18 16:12:02","image_url":"https://avatars3.githubusercontent.com/u/1811616","blog_url":"https://ohbarye.hatenablog.jp/","url":"https://ohbarye.hatenablog.jp/entry/2020/10/18/why-airflow-have-two-web-ui","description":"Airflow\u3067DAG\u5b9f\u884c\u6642\u306bGUI, CLI, REST API\u304b\u3089\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6e21\u3059 - valid,invalid\u4ef6\u306e\u8abf\u67fb\u3092\u3057\u3066\u3044\u3066\u77e5\u3063\u305f\u306e\u3060\u304c\u3001Airflow webserver\u306eUI\u306b\u306f2\u7a2e\u985e\u306eUI\u304c\u5b58\u5728\u3059\u308b\u3002 \u5229\u7528\u3067\u304d\u308b\u6a5f\u80fd\u306b\u5dee\u5206\u304c\u3042\u308b\u3046\u3048\u306b\u3001Airflow\u672c\u4f53\u306e\u30ea\u30ea\u30fc\u30b9\u30d5\u30ed\u30fc\u3082\u521d\u898b\u3067\u306f\u308f\u304b\u3089\u305a\u3001\u3084\u3084\u3053\u3057\u304b\u3063\u305f\u306e\u3067\u6574\u7406\u3059\u308b\u3002 2\u7a2e\u985e\u306eUI 1. flask-admin based web UI 1\u7cfb\u3067\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u4f7f\u7528\u3055\u308c\u308bUI\u3002\u540d\u524d\u306e\u901a\u308aflask-admin\u30d9\u30fc\u30b9\u3067\u4f5c\u3089\u308c\u3066\u3044\u308b\u3002 2. FAB based web UI Roll Based Access Control\u3092\u63d0\u4f9b\u3057\u3066\u2026","provider_url":"https://hatena.blog","author_url":"https://blog.hatena.ne.jp/ohbarye/","version":"1.0","categories":["Airflow","Python"],"title":"Airflow webserver\u306eUI\u304c\u306a\u305c2\u7a2e\u985e\u5b58\u5728\u3059\u308b\u306e\u304b","blog_title":"valid,invalid","author_name":"ohbarye","provider_name":"Hatena Blog","type":"rich"}