使用 AWS SCT 擴充套件 - AWS Schema Conversion Tool

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

使用 AWS SCT 擴充套件

AWS SCT 擴充套件是一種附加元件模組,可模擬將物件轉換為目標資料庫時所需的來源資料庫中存在的函數。在您可以安裝 AWS SCT 擴充套件之前,請先轉換資料庫結構描述。

每個 AWS SCT 擴展包包括以下組件:

  • 資料庫結構描述 — 包含用於模擬特定線上交易處理 (OLTP) 和線上分析處理 (OLAP) 資料庫物件 (例如序列) 的 SQL 函數、程序和表格。此外,模擬來源資料庫 built-in-functions 中不受支援的功能。此結構描述的名稱格式如下:aws_database_engine_name_ext

  • AWS Lambda 函數 (適用於特定 OLTP 資料庫) — 包含模擬複雜資料庫功能的 AWS Lambda 函數,例如作業排程和傳送電子郵件。

  • OLAP 資料庫的自訂程式庫 — 包括一組 Java 和 Python 程式庫,您可以使用這些程式庫將擷取、轉換和載入 (ETL) 指令碼移轉至或。 AWS Glue AWS Glue Studio

    Java 庫包括以下模塊:

    • spark-excel_2.11-0.13.1.jar— 模擬 Excel 來源元件和目標元件的功能。

    • spark-xml_2.11-0.9.0.jarpoi-ooxml-schemas-4.1.2.jar、和 xmlbeans-3.1.0.jar — 模擬 XML 來源元件的功能。

    Python 庫包括以下模塊:

    • sct_utils.py— 模擬來源資料類型並準備 Spark SQL 查詢的參數。

    • ssis_datetime.py— 模擬日期和時間內置功能。

    • ssis_null.py— 模擬ISNULL和內REPLACENULL置功能。

    • ssis_string.py-模擬字符串內置函數。

    如需這些程式庫的詳細資訊,請參閱 使用 AWS SCT 擴充套件的自訂程式庫

您可以使用兩種方式套用 AWS SCT 擴充功能套件:

  • AWS SCT 當您從內容功能表中選擇套用至資料庫,套用目標資料庫指令集時,可以自動套用擴充套件。 AWS SCT 在套用所有其他綱要物件之前,先套用擴充功能套件。

  • 若要手動套用擴充功能套件,請選擇目標資料庫,然後從內容功能表 (按一下滑鼠右鍵) 選擇 [套用擴充功能套件]。在大多數情況下,自動應用就足夠了。不過,如果意外刪除套件,您可能會想要手動套用套件。

每次將 AWS SCT 擴充功能套件套用至目標資料倉庫時,元件都會遭到覆寫,並 AWS SCT 顯示有關此項目的通知。若要關閉這些通知,請選擇 [設定]、[全域設定]、[通知],然後選取 [隱藏延伸套件更換警示]。

對於從 Microsoft SQL 服務器轉換為 PostgreSQL,您可以使用 SQL 服務器到 PostgreSQL 擴展包。 AWS SCT此延伸套件會模擬 SQL 伺服器代理程式和 SQL 伺服器資料庫郵件。如需詳細資訊,請參閱 使用擴充套件在 PostgreSQL 中模擬 SQL 伺服器代理程式使用擴充套件在 PostgreSQL 中模擬 SQL 伺服器資料庫郵件

接下來,您可以找到有關使用 AWS SCT 擴充功能套件的詳細資訊。

使用 AWS SCT 擴充功能套件的權限

Amazon Aurora 的 AWS SCT 擴充套件可使用功能模擬郵件傳送、任務排程、佇列和其他操作 AWS Lambda 。將 AWS SCT 擴充套件套用至目標 Aurora 資料庫時, AWS SCT 會建立新的 AWS Identity and Access Management (IAM) 角色和內嵌 IAM 政策。接下來, AWS SCT 建立新的 Lambda 函數,並設定 Aurora 資料庫叢集以進行輸出連線。 AWS Lambda若要執行這些作業,請務必將下列必要許可授與 IAM 使用者:

  • iam:CreateRole— 為您的 AWS 帳戶建立新的 IAM 角色。

  • iam:CreatePolicy— 為您的 AWS 帳戶建立新的 IAM 政策。

  • iam:AttachRolePolicy— 將指定的政策附加到您的 IAM 角色。

  • iam:PutRolePolicy— 更新內嵌在 IAM 角色中的內嵌政策文件。

  • iam:PassRole— 將指定的 IAM 角色傳遞給規則引擎。

  • iam:TagRole— 將標籤新增至 IAM 角色。

  • iam:TagPolicy— 將標籤新增至 IAM 政策。

  • lambda:ListFunctions-查看您的 Lambda 函數列表。

  • lambda:ListTags-查看 Lambda 函數的標籤列表。

  • lambda:CreateFunction-創建一個新的 Lambda 函數。

  • rds:AddRoleToDBCluster— 將 IAM 角色與您的 Aurora 資料庫叢集建立關聯。

Amazon Redshift 的 AWS SCT 擴充套件會模擬將轉換後的物件套用至 Amazon Redshift 時所需的來源資料倉儲基礎功能。在將轉換後的程式碼套用至 Amazon Redshift 之前,您必須先套用適用於 Amazon Redshift 的擴充套件。若要這麼做,請在 IAM 政策中包含該iam:SimulatePrincipalPolicy動作。

AWS SCT 使用 IAM 政策模擬器來檢查安裝 Amazon Redshift 擴充套件所需的許可。即使您已正確設定 IAM 使用者,IAM 政策模擬器仍會顯示錯誤訊息。這是 IAM 政策模擬器的已知問題。此外,當您的 IAM 政策中沒有iam:SimulatePrincipalPolicy動作時,IAM 政策模擬器會顯示錯誤訊息。在這些情況下,您可以忽略錯誤訊息,並使用擴充功能套件精靈套用擴充功能套件。如需詳細資訊,請參閱 套用擴充功能套件

使用擴充套件結構描述

當您轉換您的資料庫或資料倉儲結構描述, AWS SCT 會新增額外的結構描述到您的目標資料庫。此結構描述會實作來源資料庫的 SQL 系統功能,當您將已轉換的結構描述寫入至目標資料庫時需要這些功能。這個額外的結構描述稱為延伸套件結構描述。

OLTP 資料庫的延伸套件結構描述的命名是根據來源資料庫,如下所示:

  • Microsoft SQL Server: AWS_SQLSERVER_EXT

  • MySQL: AWS_MYSQL_EXT

  • Oracle: AWS_ORACLE_EXT

  • PostgreSQL:AWS_POSTGRESQL_EXT

OLAP 資料倉儲應用程式的延伸套件結構描述的命名是根據來源資料存放區,如下所示:

  • Greenplum:AWS_GREENPLUM_EXT

  • Microsoft SQL Server: AWS_SQLSERVER_EXT

  • Netezza:AWS_NETEZZA_EXT

  • Oracle: AWS_ORACLE_EXT

  • Teradata:AWS_TERADATA_EXT

  • Vertica:AWS_VERTICA_EXT

使用 AWS SCT 擴充套件的自訂程式庫

在某些情況下, AWS SCT 無法將來源資料庫功能轉換為目標資料庫中的對等功能。相關的 AWS SCT 擴充套件包含可模擬目標資料庫中某些來源資料庫功能的自訂程式庫。

如果要轉換交易式資料庫,請參閱使用 AWS SCT 擴展包中的 AWS Lambda 功能

套用擴充功能套件

您可以使用 AWS SCT 擴充套件精靈或將轉換後的程式碼套用至目標資料庫時,套用擴充功能套件。

若要使用擴充套件精靈套用擴充功能套件
  1. 在目標資料庫樹狀結構中 AWS Schema Conversion Tool,開啟相關資訊環境 (按一下滑鼠右鍵) 功能表,選擇 [套用擴充功能套件],然後選擇您的來源資料庫平台。

    應用擴展包上下文菜單

    會顯示延伸套件精靈。

  2. 閱讀 Welcome (歡迎) 頁面,然後選擇 Next (下一步)。

  3. 在設定AWS 檔設定頁面上,執行下列動作:

    • 如果您只是要重新安裝延伸套件結構描述,請選擇 Skip this step for now (暫時略過此步驟),然後選擇 Next (下一步)。「立即略過此步驟」選項僅適用於線上交易處理 (OLTP) 資料庫。

    • 如果您要上傳新的程式庫,請提供認證以連線到您的 AWS 帳戶. 只有當您轉換 OLAP 資料庫或 ETL 指令碼時,才使用此步驟。如果您已 AWS CLI 安裝,則可以使用您的 AWS Command Line Interface (AWS CLI)憑據。您也可以使用先前存放在全域應用程式設定的設定檔中,並與專案建立關聯的登入資料。如有必要,請選擇 「導覽至全域設定」,以規劃將不同的設定檔與 AWS SCT 專案相關聯。如需詳細資訊,請參閱 將AWS服務設定檔儲存在AWS SCT

  4. 如果您要上傳新的資料庫,請選擇「圖庫上傳」頁面上的「我需要上傳圖庫」。只有當您轉換 OLAP 資料庫或 ETL 指令碼時,才使用此步驟。接下來,提供 Amazon S3 路徑,然後選擇「上傳程式庫到 S3」。

    如果您已經上傳程式庫,請選擇 [我已上傳程式庫],在 [程式庫上傳] 頁面上使用我現有的 S3 儲存貯體。接下來,提供 Amazon S3 路徑。

    完成時請選擇 Next (下一步)。

  5. 在 [函數模擬] 頁面上,選擇 [建立擴充功能套件]。會出現訊息,包含延伸套件操作的狀態。

    完成時請選擇 Finish (完成)。

套用轉換後的程式碼時套用擴充功能套件
  1. 在您的 AWS 服務設定檔中指定 Amazon S3 儲存貯體。只有當您轉換 OLAP 資料庫或 ETL 指令碼時,才使用此步驟。如需詳細資訊,請參閱 將AWS服務設定檔儲存在AWS SCT

    請確定您的 Amazon S3 儲存貯體政策包含下列許可:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["*"] }, { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["*"] }, { "Effect": "Allow", "Action": ["iam:SimulatePrincipalPolicy"], "Resource": ["*"] }, { "Effect": "Allow", "Action": ["iam:GetUser"], "Resource": ["arn:aws:iam::111122223333:user/DataExtractionAgentName"] } ] }

    在前面的範例中,將 11112222333:使用者/取代為您的身分與存取權管理員使用者DataExtractionAgentName的名稱。

  2. 轉換來源資料倉儲結構描述。如需詳細資訊,請參閱 將資料倉儲結構描述轉換為亞馬遜紅移

  3. 在右窗格中,選擇轉換後的結構描述。

  4. 開啟結構描述元素的內容 (按一下右鍵) 選單,然後選擇 Apply to database (套用至資料庫)。

  5. AWS SCT 產生具有必要元件的擴充套件,並在目標樹狀aws_database_engine_name_ext結構中新增結構描述。接下來, AWS SCT 將轉換後的代碼和擴展包結構描述應用到目標數據倉庫。

    當您使用 Amazon Redshift 和 AWS Glue 做為目標資料庫平台的組合時,會在擴充功能套件中 AWS SCT 新增額外的結構描述。

使用 AWS SCT 擴展包中的 AWS Lambda 功能

AWS SCT 提供延伸套件,其中包含用於 Amazon EC2 上託管之資料庫的電子郵件、任務排程和其他功能的 Lambda 函數。

使用 AWS Lambda 函數來模擬數據庫功能

在某些情況下,資料庫功能無法轉換為相等的 Amazon RDS 功能。例如,Oracle 傳送使用 UTL_SMTP 的電子郵件呼叫,而 Microsoft SQL Server 可以使用任務排程工具。如果您在 Amazon EC2 上託管和自行管理資料庫,則可以透過替換 AWS 服務來模擬這些功能。

AWS SCT 擴充套件精靈可協助您安裝、建立和設定 Lambda 函數,以模擬電子郵件、工作排程和其他功能。

套用擴充套件以支援 Lambda 函數

您可以使用擴充套件精靈或將轉換後的程式碼套用至目標資料庫時,套用擴充套件來支援 Lambda 函數。

重要

只有在 Amazon EC2 上安裝和自行管理的資料庫才支援 AWS 服務模擬功能。如果您的目標資料庫位於 Amazon RDS 資料庫執行個體上,請勿安裝服務模擬功能。

若要使用擴充套件精靈套用擴充功能套件
  1. 在目標資料庫樹狀結構中 AWS Schema Conversion Tool,開啟相關資訊環境 (按一下滑鼠右鍵) 功能表,選擇 [套用擴充功能套件],然後選擇您的來源資料庫平台。

    應用擴展包上下文菜單

    會顯示延伸套件精靈。

  2. 閱讀 Welcome (歡迎) 頁面,然後選擇 Next (下一步)。

  3. 在設定AWS 檔設定頁面上,執行下列動作:

    • 如果您只是要重新安裝延伸套件結構描述,請選擇 Skip this step for now (暫時略過此步驟),然後選擇 Next (下一步)。

    • 如果您要安裝 AWS 服務,請提供認證以連線到您的 AWS 帳戶. 如果您已 AWS CLI 安裝,則可以使用您的 AWS CLI 憑據。您也可以使用先前存放在全域應用程式設定的設定檔中,並與專案建立關聯的登入資料。如有需要,選擇 Navigate to Project Settings (前往專案設定) 將不同的設定檔關聯至專案。如有需要,可以選擇 Global Settings (全域設定) 來建立新的設定檔。如需詳細資訊,請參閱 將AWS服務設定檔儲存在AWS SCT

  4. Email Sending Service (電子郵件傳送服務) 頁面上,執行下列步驟:

    • 如果您只是要重新安裝延伸套件結構描述,請選擇 Skip this step for now (暫時略過此步驟),然後選擇 Next (下一步)。

    • 如果您正在安裝 AWS 服務,並且擁有現有的 Lambda 函數,則可以提供它。否則,精靈會為您建立。完成時請選擇 Next (下一步)。

  5. Job Emulation Service (任務模擬服務) 頁面上,執行下列步驟:

    • 如果您只是要重新安裝延伸套件結構描述,請選擇 Skip this step for now (暫時略過此步驟),然後選擇 Next (下一步)。

    • 如果您正在安裝 AWS 服務,並且擁有現有的 Lambda 函數,則可以提供它。否則,精靈會為您建立。完成時請選擇 Next (下一步)。

  6. 在 [函數模擬] 頁面上,選擇 [建立擴充功能套件]。會出現訊息,包含延伸套件操作的狀態。

    完成時請選擇 Finish (完成)。

注意

若要更新擴充功能套件並覆寫舊的延伸功能套件元件,請確定您使用的是最新版本的 AWS SCT。如需詳細資訊,請參閱 安裝、驗證和更新 AWS SCT

設定 AWS SCT 擴充套件的功能

擴展包包含使用前必須配置的功能。常數會CONVERSION_LANG定義服務套件使用的語言。這些功能可用於英語和德語。

若要將語言設定為英文或德文,請在函數程式碼中進行下列變更。查找以下常量聲明:

CONVERSION_LANG CONSTANT VARCHAR := '';

若要設定CONVERSION_LANG為英文,請將該行變更為以下內容:

CONVERSION_LANG CONSTANT VARCHAR := 'English';

若要設定CONVERSION_LANG為英文,請將該行變更為以下內容:

CONVERSION_LANG CONSTANT VARCHAR := 'Deutsch';

為下列功能設定此設定:

  • aws_sqlserver_ext.conv_datetime_to_string

  • aws_sqlserver_ext.conv_date_to_string

  • aws_sqlserver_ext.conv_string_to_date

  • aws_sqlserver_ext.conv_string_to_datetime

  • aws_sqlserver_ext.conv_string_to_datetime

  • aws_sqlserver_ext.parse_to_date

  • aws_sqlserver_ext.parse_to_datetime

  • aws_sqlserver_ext.parse_to_time