AWS Glue DataBrewにレシピをインポートしてみた(AWSマネジメントコンソール編)

2021.07.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の鈴木です。

AWS Glue DataBrew(以降、DataBrew)のレシピを、ほかの人と共有したい場合に、どのようにすれば良いのか気になりました。調べたところ、レシピのエクスポート方法はとても簡単で文献も多かったのですが、インポートの方法についてはなかなかイメージが湧かなかったので、実際に試してみました。

記事の目的

DataBrewでは、データの前処理をレシピとして定義・保存することができます。レシピは複数の公開バージョンを持つことができ、DataBrewのサービス内でバージョン管理を行うことが可能です。

一方で、レシピファイルとしてDataBrew外へエクスポートもできるので、レシピファイルをGitHubなどで管理したり、そこからほかのメンバーや開発チームに共有したいことがあると思います。

初めてこのようなことがしたい場合に、レシピファイルのインポートの具体的な操作が分かるとイメージしやすいので、その方法を共有します。

先に結論

以下のような方法で、AWSマネジメントコンソールからレシピファイルをインポートすることができました。

  • ローカルなどにあるJSON形式のレシピファイルから、新しいレシピを作成する。更新したいレシピを接続したプロジェクトから、そのレシピを上書きでインポートする。
  • インポートしたレシピを、プロジェクトに接続されたレシピの新しいバージョンとして公開する。

検証の説明

前提

今回の検証は、以下の前提で実施しました。

  • AWSマネジメントコンソールから作業を行う。
  • 予めプロジェクトが作成されていて、更新したいレシピが接続されている。そのレシピを、レシピファイルをインポートして更新する。
  • DataBrewにインポートされた状態のものをレシピ、ローカルなどにJSON形式などでダウンロードされたファイルをレシピファイルと呼ぶこととする。

検証の手順

以下の手順で検証を行いました。

  1. プロジェクトでレシピを作成し、バージョン1.0のレシピを発行する。
  2. 同じプロジェクトで、レシピにステップを追加し、バージョン2.0のレシピを発行する。
  3. バージョン1.0のレシピファイルをJSON形式でエクスポートする。
  4. バージョン1.0のレシピファイルをインポートし、バージョン3.0のレシピとして発行する。

実際の開発だと、手順4で別のエンジニアやチームから受け渡された新しいレシピファイルを、既存のプロジェクトにインポートするような場面を想定しています。エクスポートした旧バージョンのレシピを再インポートすることでも、同じことが確認できるだろうという算段です。

やってみた

検証用プロジェクトと最初のレシピの発行

まず、検証に使うプロジェクトを作成しました。[プロジェクトを作成]画面で、プロジェクト・レシピ・データセットを新しく作成しました。 データセットは"有名なチェスゲームの動き"サンプルファイルを使って作りました。

プロジェクト作成1

プロジェクト作成2

プロジェクト作成3

続いて、以下の記事にならってレシピを作成しました(作成方法が気になる方はご参照ください)。

AWS Glue DataBrew入門チュートリアル実践 #2 – “レシピ” を定義してデータを集約・加工する | DevelopersIO

レシピはこのようになりました。

第1版のレシピ

[発行]からバージョン1.0を発行しておきました。

レシピのアップデート

続いて、レシピを更新しました。以下の記事にならって、ステップを追加します。

AWS Glue DataBrew入門チュートリアル実践 #3 – 変換処理の追加と”レシピ”のバージョン管理 | DevelopersIO

更新したレシピはこのようになりました。

第2版のレシピ

[発行]からバージョン2.0を発行しておきました。

レシピのエクスポート

[レシピ]から、先ほど作成したレシピを選択し、バージョン1.0をエクスポートしました。

レシピはレシピファイルとして、JSON形式およびYAML形式でエクスポート可能です。

後述しますが、記事執筆時点では、マネージメントコンソールからのレシピのインポートがJSON形式を想定したものだったため、JSON形式でエクスポートしました。

レシピのエクスポート

これでインポート先のプロジェクトと、インポートするレシピができたので、準備万端です。いよいよインポート方法を行います。

レシピのインポート

[レシピ]画面から、[レシピをアップロード]を選択します。 レシピをアップロード

[レシピをアップロード画面]でJSON形式のレシピファイルを選択し、DataBrewにアップロードし、新しいレシピを作成・公開しました。 レシピをアップロード画面

このとき、レシピをアップロードの欄に、JSON形式でアップロードする想定であることが記載されています。

完了したら、[レシピの作成と公開]をクリックします。

続いて、プロジェクトに戻り、作成したレシピをインポートしました。[詳細]から[レシピをインポート]をクリックします。

レシピのインポート

[ステップ1 レシピを選択]でインポートしたいレシピを選択します。

レシピを選択

[ステップ2 インポートオプション]でレシピのインポートの仕方を指定します。今回は受け取ったレシピファイルの内容をそのまま反映したいので、[上書き]を選択して[次へ]を押します。

インポートオプション

[ステップ3 レシピのステップを検証]では自動で検証が行われるので、"検証済み"と表示されたら[インポート]を押します。

レシピのステップを検証

ここまで終わると、レシピファイルの内容がプロジェクトに反映されます。今回はバージョン2.0で追加した4ステップを元に戻したので、"4件の未公開の変更"をバージョン2.0で行ったことになります。表示内容も一致しています。

インポート後のレシピ

最後に[発行]を押して、バージョン3.0を発行しました。

公開済みのレシピバージョン3.0

発行できました。

念のため、[レシピ]画面からレシピの内容を確認したところ、期待通りバージョン1.0と2.0の内容も残っており、バージョン3.0が付け足された形になっていました。 全バージョンのレシピ

まとめ

AWSマネジメントコンソールからGlue DataBrewのレシピファイルを既存のレシピにインポートしてみました。

JSON形式のインポートが想定されているなど注意が必要な点もありましたが、簡単にレシピファイルをインポートすることができました。これであれば、気軽にメンバーやチーム、環境間でレシピファイルを受け渡しできそうです。

また、今回はマネジメントコンソールからの操作を紹介しましたが、CI/CDパイプラインへの組み込みなどを想定して、CLIやSDKで行いたい方も多いと思います。そちらは追って記事にできればと思っています。