在 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 整合後,您可以:

  • 與 Git 版本控制系統集成,例如 AWS CodeCommit, GitHub GitLab,和比特桶

  • 無論您是使用視覺化任務或指令碼任務,都能在 AWS Glue Studio 中編輯 AWS Glue 任務,並將任務同步到儲存庫

  • 將任務中的來源和目標參數化

  • 從儲存庫提取任務,並在 AWS Glue Studio 中編輯

  • 利用 AWS Glue Studio 的多分支工作流程,從分支提取任務及/或將任務推送到分支,藉以測試任務

  • 從儲存庫下載檔案並將任務上傳至 AWS Glue Studio,以便建立跨帳戶任務

  • 使用您選擇的自動化工具(例如詹金斯 AWS CodeDeploy等)

此影片示範如何將 G AWS lue 與 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,讀取存儲庫和寫入存儲庫

    • Bitbucket – 將許可設定為:

      • 工作區成員資格 – 讀取、寫入

      • 專案 – 寫入、管理員讀取

      • 儲存庫 – 讀取、寫入、管理員、刪除

注意

使用時 AWS CodeCommit,不需要個人訪問令牌和存儲庫所有者。請參閱 Getting started with Git and AWS CodeCommit

使用來自 AWS Glue Studio 中的來源控制儲存庫的任務

為了從來源控制儲存庫提取不在 AWS Glue Studio 中的任務,並在 AWS Glue Studio 使用該任務,不同任務類型會有不同的先決條件。

對於視覺化任務:

  • 您需要一個資料夾和任務定義 (需與任務名稱相符) 的 JSON 檔案

    如需範例,請參閱下方的任務定義。儲存庫中的分支應包含路徑 my-visual-job/my-visual-job.json,其中資料夾和 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.jsonmy-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 連線

您可以輸入您的版本控制儲存庫詳細資訊,並在 AWS Glue Studio 任務編輯器的 Version Control (版本控制) 索引標籤中管理。若要與您的 Git 儲存庫整合,則必須在每次登入 AWS Glue Studio 時連線至您的儲存庫。

連接 Git 版本控制系統:

  1. 在 AWS Glue Studio 中,開始新任務並選擇 Version Control (版本控制) 索引標籤。

    如螢幕擷取畫面所顯示,任務的「Version Control」(版本控制) 索引標籤已選取。
  2. 版本控制系統中按一下下拉式選單,從可用選項中選擇 Git 服務。

    • AWS CodeCommit

    • GitHub

    • GitLab

    • Bitbucket

  3. 根據您選擇的 Git 版本控制系統,您會需要完成不同的欄位。

    對於 AWS CodeCommit

    選取任務的儲存庫和分支,完成儲存庫組態:

    • 存放庫 — 如果您已在中設定存放庫 AWS CodeCommit,請從下拉式功能表中選取存放庫。您的儲存庫會自動填入清單中

    • 分支 – 從下拉式選單中選取分支

    • 資料夾選用 – 輸入要儲存任務的資料夾名稱。如果留空,系統會為您自動建立資料夾。資料夾名稱會預設為任務名稱

    對於 GitHub

    完成下列欄位以完成 GitHub 設定:

    • 個人訪問令牌-這是存 GitHub 儲庫提供的令牌。有關個人訪問令牌的更多信息,請參閱 GitHub 文檔

    • 存放庫擁有者 — 這是 GitHub 存放庫的擁有者。

    從中選取儲存區域和分支,以完成儲存區域組態 GitHub。

    • 存放庫 — 如果您已在中設定存放庫 GitHub,請從下拉式功能表中選取存放庫。您的儲存庫會自動填入清單中

    • 分支 – 從下拉式選單中選取分支

    • 資料夾選用 – 輸入要儲存任務的資料夾名稱。如果留空,系統會為您自動建立資料夾。資料夾名稱會預設為任務名稱

    對於 GitLab

    • 個人訪問令牌-這是存 GitLab 儲庫提供的令牌。有關個人訪問令牌的更多信息,請參閱 GitLab 個人訪問令牌

    • 存放庫擁有者 — 這是 GitLab 存放庫的擁有者。

    從中選取儲存區域和分支,以完成儲存區域組態 GitLab。

    • 存放庫 — 如果您已在中設定存放庫 GitLab,請從下拉式功能表中選取存放庫。您的儲存庫會自動填入清單中

    • 分支 – 從下拉式選單中選取分支

    • 資料夾選用 – 輸入要儲存任務的資料夾名稱。如果留空,系統會為您自動建立資料夾。資料夾名稱會預設為任務名稱

    對於 Bitbucket

    • 應用程序密碼 — Bitbucket 使用應用程序密碼,而不是存儲庫訪問令牌。如需應用程式密碼的詳細資訊,請參閱應用程式密碼

    • 儲存庫擁有者 – 這是 Bitbucket 儲存庫的擁有者。在 Bitbucket 中,擁有者是儲存庫的建立者。

    選取 Bitbucket 的工作空間、儲存庫、分支和資料夾,完成儲存庫組態。

    • 工作空間 – 如果您在 Bitbucket 中設定工作空間,請從下拉式選單中選取該工作空間。系統會自動填入您的工作空間

    • 儲存庫 – 如果您在 Bitbucket 中設定儲存庫,請從下拉式選單中選取該儲存庫。系統會自動填入您的儲存庫

    • 分支 – 從下拉式選單中選取分支。系統會自動填入您的分支

    • 資料夾選用 – 輸入要儲存任務的資料夾名稱。如果留空,系統會使用任務名稱為您自動建立資料夾。

  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 任務

只要您在 Version control (版本控制) 索引標籤中輸入 Git 儲存庫的詳細資訊,您也可以從儲存庫提取任務,並在 AWS Glue Studio 中編輯。

  1. 在 AWS Glue Studio 任務中,選擇 Actions (動作)。其他選單選項會隨即開啟。

    如螢幕擷取畫面所顯示,任務的「Actions」(動作) 選單已開啟。畫面上會顯示「Push to repository」(推送到儲存庫) 選項。
  2. 選擇 Pull from repository (從儲存庫提取)。

  3. 選擇 Confirm (確認)。如要這麼做,您必須先從儲存庫取得最新的遞交,並在 AWS Glue Studio 中更新任務。

  4. 在 AWS Glue Studio 中編輯任務。完成變更後,您可以從 Actions (動作) 選單中選擇 Push to repository (推送到儲存庫),將任務同步至儲存庫。