AWS Glue で Git のバージョン管理システムを使用する - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Glue で Git のバージョン管理システムを使用する

注記

ノートブックは現在、AWS Glue Studio のバージョン管理には対応していません。ただし、AWS Glue ジョブスクリプトとビジュアル ETL ジョブのバージョン管理はサポートされています。

リモートリポジトリがあり、そのリポジトリを使用して AWS Glue ジョブを管理する場合は、AWS Glue Studio または AWS CLI を使用して、リポジトリと AWS Glue のジョブへの変更を同期できます。この方法で変更を同期すると、ジョブは AWS Glue Studio からリポジトリにプッシュされるか、リポジトリから AWS Glue Studio にプルされます。

AWS Glue Studio での Git との統合により、次のことができるようになります。

  • AWS CodeCommit、GitHub、GitLab、 Bitbucket など、Git のバージョン管理システムとの統合

  • ビジュアルジョブやスクリプトジョブを使用するかどうかにかかわらず、AWS Glue Studio で AWS Glue ジョブを編集し、リポジトリに同期する

  • ジョブのソースとターゲットをパラメータ化する

  • リポジトリからジョブをプルし、AWS Glue Studio で編集する

  • AWS Glue Studio のマルチブランチワークフローを利用して、ブランチからプルしたり、ブランチにプッシュしたりして、ジョブをテストする

  • リポジトリからファイルをダウンロードし、ジョブを AWS Glue Studio にアップロードしてクロスアカウントジョブを作成する

  • 選択した自動化ツール (Jenkins、AWS CodeDeploy など) を使用する

このビデオでは、AWS Glue を Git と統合し、継続的な共有コードパイプラインを構築する方法について紹介します。

IAM アクセス許可

ジョブに次の IAM アクセス許可のいずれかがあることを確認します。IAM アクセス許可の設定方法の詳細については、「AWS Glue Studio に対する IAM のアクセス許可の設定」を参照してください。

  • AWSGlueServiceRole

  • AWSGlueConsoleFullAccess

Git との統合では、少なくとも次のアクションが必要です。

  • glue:UpdateJobFromSourceControl - バージョン管理システムに存在するジョブで AWS Glue を更新できるようにする

  • glue:UpdateSourceControlFromJob - AWS Glue に保存されているジョブでバージョン管理システムを更新できるようにする

  • s3:GetObject - バージョン管理システムにプッシュしている間にジョブのスクリプトを取得できるようにする

  • s3:PutObject - ソース管理システムからジョブをプルする際にスクリプトを更新できるようにする

前提条件

ジョブをソース管理リポジトリにプッシュするには、以下が必要です。

  • 管理者によってすでに作成されているリポジトリ

  • リポジトリ内のブランチ

  • 個人アクセストークン (Bitbucket の場合、これはリポジトリアクセストークン)

  • リポジトリの所有者のユーザー名

  • AWS Glue Studio にリポジトリの読み取りと書き込みを許可するためのアクセス許可をリポジトリに設定

    • [GitLab] — トークンスコープを api、read_repository、write_repository に設定

    • [Bitbucket] — アクセス許可を次のように設定します。

      • [Workspace membership] — 読み取り、書き込み

      • [プロジェクト] — 書き込み、管理者による読み取り

      • [リポジトリ] — 読み取り、書き込み、管理、削除

注記

AWS CodeCommit の使用時には、個人アクセストークンとリポジトリの所有者は必要ありません。「Git および AWS CodeCommit の開始方法」を参照してください。

AWS Glue Studio のソースコントロールリポジトリのジョブを使用する

AWS Glue Studio 以外にあるソース管理リポジトリからジョブを取得し、そのジョブを AWS Glue Studio で使用するための前提条件は、ジョブのタイプによって異なります。

ビジュアルジョブの場合:

  • ジョブ名と一致するジョブ定義のフォルダと JSON ファイルが必要です

    例えば、以下のジョブ定義を参照してください。リポジトリのブランチには、フォルダと JSON ファイルの両方がジョブ名と一致する my-visual-job/my-visual-job.json パスが含まれている必要があります。

    { "name" : "my-visual-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-visual-job.py", "pythonVersion" : "3" }, "codeGenConfigurationNodes" : "{\"node-nodeID\":{\"S3CsvSource\":{\"AdditionalOptions\":{\"EnableSamplePath\":false,\"SamplePath\":\"s3://notebook-test-input/netflix_titles.csv\"},\"Escaper\":\"\",\"Exclusions\":[],\"Name\":\"Amazon S3\",\"OptimizePerformance\":false,\"OutputSchemas\":[{\"Columns\":[{\"Name\":\"show_id\",\"Type\":\"string\"},{\"Name\":\"type\",\"Type\":\"string\"},{\"Name\":\"title\",\"Type\":\"choice\"},{\"Name\":\"director\",\"Type\":\"string\"},{\"Name\":\"cast\",\"Type\":\"string\"},{\"Name\":\"country\",\"Type\":\"string\"},{\"Name\":\"date_added\",\"Type\":\"string\"},{\"Name\":\"release_year\",\"Type\":\"bigint\"},{\"Name\":\"rating\",\"Type\":\"string\"},{\"Name\":\"duration\",\"Type\":\"string\"},{\"Name\":\"listed_in\",\"Type\":\"string\"},{\"Name\":\"description\",\"Type\":\"string\"}]}],\"Paths\":[\"s3://dalamgir-notebook-test-input/netflix_titles.csv\"],\"QuoteChar\":\"quote\",\"Recurse\":true,\"Separator\":\"comma\",\"WithHeader\":true}}}" }

スクリプトジョブの場合:

  • フォルダ、ジョブ定義の JSON ファイル、スクリプトが必要です。

  • フォルダと JSON ファイルはジョブ名と一致している必要があります。スクリプト名は、ファイル拡張子と共にジョブ定義の scriptLocation と一致している必要があります

    例えば、以下のジョブ定義では、リポジトリ内のブランチにパス my-script-job/my-script-job.json および my-script-job/my-script-job.py が含まれている必要があります。スクリプト名は、スクリプトの拡張子を含む scriptLocation の名前と一致している必要があります。

    { "name" : "my-script-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-script-job.py", "pythonVersion" : "3" } }

制限事項

  • 現在、AWS Glue は「GitLab-Groups」からのプッシュ・プルをサポートしていません。

バージョン管理リポジトリと AWS Glue の接続

バージョン管理リポジトリの詳細を入力して、AWS Glue Studio ジョブエディタの [Version Control] (バージョン管理) タブで管理できます。Git のリポジトリと統合するには、AWS Glue Studio にログインするたびにリポジトリに接続する必要があります。

Git バージョン管理システムに接続するには:

  1. AWS Glue Studio で、新しいジョブを開始し、[Version Control] (バージョン管理) タブを選択します。

    スクリーンショットは、[Version Control] (バージョン管理) タブが選択されたジョブを示しています。
  2. [Version control system] で、ドロップダウンメニューをクリックし、利用可能なオプションから Git サービスを選択します。

    • AWS CodeCommit

    • GitHub

    • GitLab

    • Bitbucket

  3. 選択した Git バージョン管理システムによって、入力するフィールドは異なります。

    AWS CodeCommit の場合

    ジョブのリポジトリとブランチを選択して、リポジトリの設定を完了します。

    • [Repository] (リポジトリ) - AWS CodeCommit でリポジトリを設定した場合は、ドロップダウンメニューからリポジトリを選択します。リストに自動的にリポジトリが入力されます

    • [Branch] (ブランチ) - ドロップダウンメニューからブランチを選択します。

    • [Folder] (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダが自動的に作成されます。フォルダ名はデフォルトでジョブ名になります。

    GitHub の場合:

    次のフィールドに入力して GitHub の設定を完了します。

    • [Personal access token] (個人用のアクセストークン) - GitHub リポジトリによって提供されるトークンです。個人用のアクセストークンの詳細については、「GitHub Docs」を参照してください。

    • [Repository owner] (リポジトリ所有者) - GitHub リポジトリの所有者です。

    GitHub からリポジトリとブランチを選択して、リポジトリの設定を完了します。

    • [Repository] (リポジトリ) - GitHub でリポジトリを設定している場合は、ドロップダウンメニューからリポジトリを選択します。リストに自動的にリポジトリが入力されます

    • [Branch] (ブランチ) - ドロップダウンメニューからブランチを選択します。

    • [Folder] (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダが自動的に作成されます。フォルダ名はデフォルトでジョブ名になります。

    GitLab の場合:

    注記

    現在、AWS Glue は「GitLab-Groups」からのプッシュ・プルをサポートしていません。

    • [個人用アクセストークン] - これは GitLab リポジトリによって提供されるトークンです。個人用のアクセストークンの詳細については、「GitLab の個人アクセストークン」を参照してください。

    • [リポジトリの所有者] - これは GitLab リポジトリの所有者です。

    GitLab からリポジトリとブランチを選択して、リポジトリの設定を完了します。

    • [リポジトリ] - GitLab でリポジトリを設定している場合は、ドロップダウンメニューからリポジトリを選択します。リストに自動的にリポジトリが入力されます

    • [Branch] (ブランチ) - ドロップダウンメニューからブランチを選択します。

    • [Folder] (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダが自動的に作成されます。フォルダ名はデフォルトでジョブ名になります。

    Bitbucket の場合:

    • [アプリパスワード] – Bitbucket はリポジトリアクセストークンではないく、アプリパスワードを使用します。アプリパスワードの詳細については、「アプリパスワード」を参照してください。

    • [リポジトリの所有者] - これは Bitbucket リポジトリの所有者です。Bitbucket では、所有者はリポジトリの作成者です。

    Bitbucket からワークスペース、リポジトリ、ブランチ、フォルダを選択することで、リポジトリの設定を完了します。

    • [ワークスペース] — Bitbucket にワークスペースを設定している場合は、ドロップダウンメニューからワークスペースを選択します。ワークスペースは自動的に入力されます

    • [リポジトリ] - Bitbucket でリポジトリを設定した場合は、ドロップダウンメニューからリポジトリを選択します。リポジトリは自動的に入力されます

    • [分岐] - ドロップダウンメニューから分岐を選択します。分岐は自動的に入力されます

    • [Folder] (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダがジョブ名で自動的に作成されます。

  4. AWS Glue Studio ジョブの上部で、[Save] (保存) を選択します。

ソースリポジトリに AWS Glue ジョブをプッシュする

バージョン管理システムの詳細を入力したら、AWS Glue Studio でジョブを編集してソースリポジトリにプッシュできます。プッシュやプルなどの Git の概念に慣れていない場合は、「Git および AWS CodeCommit の開始方法」で、このチュートリアルを参照してください。

ジョブをリポジトリにプッシュするには、バージョン管理システムの詳細を入力してジョブを保存する必要があります。

  1. AWS Glue Studio ジョブで、[Actions] (アクション) を選択します。これにより、追加のメニューオプションが開きます。

    スクリーンショットは、[Actions] (アクション) メニューを開いたジョブを示しています。[Push to repository] (リポジトリにプッシュ) オプションが表示されます。
  2. [Push to repository] (リポジトリにプッシュ) を選択します。

    このアクションによってジョブが保存されます。リポジトリにプッシュすると、AWS Glue Studio は最後に保存した変更をプッシュします。リポジトリ内のジョブが自分または別のユーザーによって変更され、AWS Glue Studio のジョブと同期していない場合は、AWS Glue Studio からジョブをプッシュする際にリポジトリ内のジョブが AWS Glue Studio に保存されたジョブで上書きされます。

  3. [Confirm] (確認) を選択してアクションを完了します。これにより、リポジトリに新しいコミットが作成されます。AWS CodeCommit を使用している場合、AWS CodeCommit での最新のコミットへのリンクが確認メッセージに表示されます。

ソースリポジトリからの AWS Glue ジョブのプル

Git リポジトリの詳細を [Version control] (バージョン管理) タブに入力したら、リポジトリからジョブを取得して AWS Glue Studio で編集することもできます。

  1. AWS Glue Studio ジョブで、[Actions] (アクション) を選択します。これにより、追加のメニューオプションが開きます。

    スクリーンショットは、[Actions] (アクション) メニューを開いたジョブを示しています。[Push to repository] (リポジトリにプッシュ) オプションが表示されます。
  2. [Pull from repository] (リポジトリからプル) を選択します。

  3. [確認] を選択します。これにより、リポジトリから最新のコミットが取得され、AWS Glue Studio のジョブが更新されます。

  4. AWS Glue Studio でジョブを編集します。変更を加えた場合は、[Actions] (アクション) ドロップダウンメニューから [Push to repository] (リポジトリにプッシュ) を選択して、ジョブをリポジトリに同期できます。