

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 AWS Glue 中將 ETL 程序轉換為 AWS Schema Conversion Tool
<a name="CHAP-converting-aws-glue-ui-process"></a>

您可以在下面找到將 ETL 指令碼轉換為 AWS Glue 的程序大綱 AWS SCT。在此範例中，我們將 Oracle 資料庫轉換為 Amazon Redshift，以及與來源資料庫和資料倉儲搭配使用的 ETL 程序。

**Topics**
+ [先決條件](#CHAP-converting-aws-glue-prerequisites)
+ [了解 AWS Glue Data Catalog](#CHAP-converting-aws-glue-data-catalog)
+ [AWS SCT 搭配 使用 轉換的限制 AWS Glue](#CHAP-converting-aws-glue-limitations)
+ [步驟 1：建立新的 專案](#CHAP-converting-aws-glue-step-ui-new-project)
+ [步驟 2：建立 AWS Glue 任務](#CHAP-converting-aws-glue-step-ui-config-job)

下列架構圖顯示資料庫遷移專案範例，其中包含將 ETL 指令碼轉換為 AWS Glue。

![\[圖表顯示資料庫和 ETL 的轉換。\]](http://docs.aws.amazon.com/zh_tw/SchemaConversionTool/latest/userguide/images/glue-conversion.png)


## 先決條件
<a name="CHAP-converting-aws-glue-prerequisites"></a>

開始之前，請執行以下動作：
+ 遷移您要遷移到的任何來源資料庫 AWS。
+ 將目標資料倉儲遷移至 AWS。
+ 收集 ETL 程序中所有代碼的清單。
+ 收集每個資料庫所有必要連線資訊的清單。

此外， AWS Glue 需要代表您存取其他 AWS 資源的許可。您可以使用 AWS Identity and Access Management (IAM) 提供這些許可。請確定您已建立 的 IAM 政策 AWS Glue。如需詳細資訊，請參閱[《 開發人員指南》中的為 AWS Glueservice 建立 IAM 政策](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html)。 *AWS Glue *

## 了解 AWS Glue Data Catalog
<a name="CHAP-converting-aws-glue-data-catalog"></a>

在轉換過程中， 會 AWS Glue 載入來源和目標資料庫的相關資訊。它會將此資訊組織成稱為*樹狀結構的類別。*結構包含以下項目：
+ **連線** – 連線參數 
+ **爬蟲程式** – 爬蟲程式清單，每個結構描述各一個爬蟲程式
+ **資料庫** – 存放資料表的容器
+ **資料表** – 代表資料表中資料的中繼資料定義
+ **ETL 任務** – 執行 ETL 工作的商業邏輯
+ **觸發 –** 控制 ETL 任務何時執行的邏輯 AWS Glue （無論是隨需、依排程或由任務事件觸發）

*AWS Glue 資料目錄*是資料的位置、結構描述及執行時間指標的索引。當您使用 AWS Glue 和 時 AWS SCT， AWS Glue Data Catalog 包含做為 ETL 任務來源和目標的資料參考 AWS Glue。若要建立資料倉儲，請將此資料編目。

您可以使用資料目錄中的資訊來建立和監控 ETL 任務。一般而言，您會執行爬蟲程式來清點資料存放區中的庫存，但仍有其他方式可將中繼資料資料表新增到資料目錄。

當您在資料目錄中定義資料表時，就會將資料表加入資料庫。資料庫用於組織 中的資料表 AWS Glue。

## AWS SCT 搭配 使用 轉換的限制 AWS Glue
<a name="CHAP-converting-aws-glue-limitations"></a>

 AWS SCT 搭配 使用 轉換時，適用下列限制 AWS Glue。


|  |  | 
| --- |--- |
| Resource | 預設值限制 | 
| 每個帳戶的資料庫數量 | 10,000 | 
| 每個資料庫的資料表數量 | 100,000 | 
| 每個資料表的分割區數量 | 1,000,000 | 
| 每個資料表的資料表版本數量 | 100,000 | 
| 每個帳戶的資料表數量 | 1,000,000 | 
| 每個帳戶的分割區數量 | 10,000,000 | 
| 每個帳戶的資料表版本數量 | 1,000,000 | 
| 每個帳戶的連線數量 | 1,000 | 
| 每個帳戶的爬蟲程式數量 | 25 | 
| 每個帳戶的任務數量 | 25 | 
| 每個帳戶的觸發數量 | 25 | 
| 每個帳戶的並行執行任務數量 | 30 | 
| 每個任務的並行執行任務數量 | 3 | 
| 每個觸發的任務數量 | 10 | 
| 每個帳戶的開發端點數量 | 5 | 
| 開發端點一次使用的最大資料處理單位 DPUs) | 5 | 
| 角色一次所能使用的 DPU 數量上限 | 100 | 
| 資料庫名稱長度 |  無限制 為了相容於其他中繼資料存放 (例如 Apache Hive)，名稱會變為使用小寫字元。 如果您計劃從 Amazon Athena 存取資料庫，請提供僅包含英數字元和底線字元的名稱。 | 
| 連線名稱長度 | 無限制 | 
| 爬蟲程式名稱長度 | 無限制 | 

## 步驟 1：建立新的 專案
<a name="CHAP-converting-aws-glue-step-ui-new-project"></a>

若要建立新的專案，請採取這些高階步驟：

1. 在 中建立新專案 AWS SCT。如需詳細資訊，請參閱[在 中啟動和管理專案 AWS SCT](CHAP_UserInterface.Project.md)。

1. 將來源和目標資料庫新增至專案。如需詳細資訊，請參閱[在 中將伺服器新增至專案 AWS SCT](CHAP_UserInterface.AddServers.md)。

   請確定您已在目標資料庫連線設定中選擇**使用 AWS Glue**。若要這樣做，請選擇 **AWS Glue** 標籤。針對**從 AWS 設定檔複製**，選擇您要使用的設定檔。設定檔應會自動填入 AWS 存取金鑰、私密金鑰和 Amazon S3 儲存貯體資料夾。若未自動填入，請手動輸入此資訊。選擇**確定**後， AWS Glue 會分析物件並將中繼資料載入 AWS Glue 資料目錄。

   根據您的安全設定，您可能會看到警告訊息，指出您的帳戶對於伺服器上的某些結構描述沒有足夠權限。若您可以存取正在使用的結構描述，則可以放心地忽略此訊息。

1. 若要完成準備匯入 ETL，請連線至來源和目標資料庫。若要這樣做，請在來源或目標中繼資料樹狀目錄中選擇您的資料庫，然後選擇**連線至伺服器**。

AWS Glue 會在來源資料庫伺服器上建立資料庫，並在目標資料庫伺服器上建立資料庫，以協助 ETL 轉換。目標伺服器上的資料庫包含 AWS Glue Data Catalog。若要尋找特定物件，請在來源或目標面板上使用搜尋。

若要查看特定物件如何轉換，請尋找您要轉換的項目，然後從其內容 （按一下滑鼠右鍵） 功能表中選擇**轉換結構描述**。 會將此選取的物件 AWS SCT 轉換為指令碼。

您可以從右側面板的 **Scripts** 資料夾檢閱轉換後的指令碼。目前，指令碼是虛擬物件，僅在您的 AWS SCT 專案中提供。

 若要使用轉換後的指令碼建立 AWS Glue 任務，請將指令碼上傳至 Amazon S3。若要將指令碼上傳至 Amazon S3，請選擇指令碼，然後從其內容 （按一下滑鼠右鍵） 功能表中選擇**儲存至 S3**。

## 步驟 2：建立 AWS Glue 任務
<a name="CHAP-converting-aws-glue-step-ui-config-job"></a>

將指令碼儲存到 Amazon S3 之後，您可以選擇指令碼，然後選擇**設定 AWS Glue 任務**以開啟精靈來設定 AWS Glue 任務。精靈可讓您更輕鬆地設定：

1. 在精靈**設計資料流程**的第一個索引標籤上，您可以選擇要包含在此任務中的執行策略和指令碼清單。您可以為每個指令碼選擇參數。您也可以重新安排指令碼，讓它們以正確的順序執行。

1. 在第二個索引標籤上，您可以為任務命名，並直接設定 的設定 AWS Glue。在此畫面上，您可以進行下列設定：
   + AWS Identity and Access Management (IAM) 角色
   + 指令碼檔案名稱和檔案路徑
   + 使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3) 來加密指令碼
   + 暫時目錄
   + 產生的 Python 程式庫路徑
   + 使用者 Python 程式庫路徑
   + 相依 .jar 檔案的路徑
   + 參考檔案路徑
   + 每個任務執行的並行 DPU 數
   + 並行上限
   + 任務逾時 (以分鐘為單位)
   + 延遲通知閾值 (以分鐘為單位)
   + 重試次數
   + 安全組態
   + 伺服器端加密

1. 在第三個步驟或標籤中，您可以選擇已設定的目標端點連線。

完成任務的設定後，它會在 AWS Glue 資料目錄中的 ETL 任務下顯示。如果您選擇任務，系統會顯示設定，以便您檢閱或編輯任務。若要在 中建立新任務 AWS Glue，請從** AWS Glue 任務的內容 （按一下滑鼠右鍵） 選單中選擇建立**任務。這麼做適用於結構描述定義。若要重新整理顯示，請選擇內容 (按一下滑鼠右鍵) 功能表中的 **Refresh from database (從資料庫重新整理)**。

此時，您可以在 AWS Glue 主控台中檢視您的任務。若要這麼做，請登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

您可以測試新任務是否能正確運作。若要這麼做，請先檢查來源資料表中的資料，並驗證目標資料表是否為空。執行任務，然後再檢查一次。您可以從 AWS Glue 主控台檢視錯誤日誌。