AWS

AWS Glue Git統合の活用

yassan

最近は怒涛の人生イベントが重なり、そろそろ落ち着いてほしいと思うやっさんでございます。本ブログ投稿では、AWS GlueのGit統合を開発工程で活用しましたので、その方法についてご紹介します。尚、こちらの題材はAPNのライトニングトークでも発表させて頂きました内容となっております。

AWS Glue Git統合とは

AWS Glue Git統合 は 2022年10月に発表されたAWS Glueの新機能で、 Glue Studio で作成したGlue JobをGitリポジトリで管理する機能です。対象のGitリポジトリはAWS CodeCommitGitHub に対応しています。

AWS Glue Git統合 について具体的な利用方法を以下にご紹介します。今回はリポジトリ管理に CodeCommit を利用しています。

AWS Glue Job の Gitリポジトリへのプッシュ

AWS Glue Jobを既に作成済みの場合は、すぐにGitリポジトリにプッシュ可能です。以下画像のようにGitリポジトリを指定します。Glue Job名がそのままリポジトリにプッシュされるファイル名になります。


「Actions」から「Push to repository」を選択することで、Gitリポジトリにプッシュされます。

プッシュされたファイルは以下画像のようになっております。 json ファイルにGlue Jobの各種設定やビジュアルエディタでの記述内容が記載されており、 python ファイルにはビジュアルエディタではなくスクリプトエディタを利用している場合にスクリプト内容が保存されます。

AWS Glue JobのGitリポジトリからのプル

Gitリポジトリから最新の変更をGlue Jobに反映したい場合は以下画像のように「Actions」→「Pull from repository」を選択することでGlue Jobに反映されます。簡単ですね。

AWSアカウントをまたいだGlue Jobスクリプト移行の勘所

今回、一度検証用AWSアカウントで作成したGlue Jobを異なるAWSアカウントに移行する必要がありました。その時にマネージメントコンソールで作成していたGlue Jobを移行する際に、この Git統合 を便利に活用いたしました。保存された json ファイルや python ファイルにほんの少し変更を加えるだけで移行できます。

変更箇所について

以下画像のように、 AWSアカウントID は全て移行先のIDに変更します。AWS Glue Jobが利用するロール名に変更がある場合も修正します。

もしGlue JobでDBコネクションがあり、コネクション名が移行先で異なる名称の場合は以下のように変更します。

そして、Glueデータカタログとテーブルも移行先で異なる名称の場合は以下のように変更します。

あとは、マネージメントコンソールで新規Glue Jobを作成時に、ジョブ名だけ移行元の名前と一致するように変更したあとに、「Pull from repository」を選択することで簡単に移行できます。

一括でGlub Jobにスクリプトをプルしたい時は

実は今回AWSアカウント移行の対象となったGlue Jobは一つではなく、数十のGlue Jobを移行する必要がありました。数十のGlue Jobとなるとマネージメントコンソールでポチポチと一つずつ移行するのは大変です。そんな時はAWS CLIが利用できます。

以下のコマンドのように、 update-job-from-source-control コマンドを利用することで、1コマンドでGlue Jobを新しいAWSアカウントに移行できます。※事前にGitリポジトリが移行済みの前提となります。

aws glue update-job-from-source-control \
--job-name import_script \
--provider AWS_CODE_COMMIT \
--repository-name webiner-glue-job \
--branch-name master \
--folder src \
--region ap-northeast-1

Glue Jobにはどのバージョンがプルされるのか

気になるのが、Glue Jobにプルした場合にどのバージョンが反映されるのかでした。こちらは、指定したGitブランチの最新のコミットIDの状態に紐づくGlue Jobが反映されるようでした。

まとめ

AWS Glue Git統合 を利用することで、Glue Jobを簡単にリポジトリ管理することが出来ました。実際にプッシュされたスクリプトとジョブ定義ファイルはCloudFormationとはまた異なるフォーマットになっており、ジョブ定義ファイルをCloudFormationやTerraformなど異なるIaCに移行したい場合においては移行方法を検討する必要があるかなと思いました。Glue Studioで直接スクリプトを編集した場合はマネージメントコンソールのタイムアウト制限に気をつける必要がありましたので、一度Glue Studioで作成したスクリプトはすぐにGit統合でローカルで編集できるようにすることで効率的な開発が出来ました。

ご参考になれば幸いです。

AUTHOR
Yasuyuki Sato
Yasuyuki Sato
記事URLをコピーしました