使用擴充功能套件 AWS Schema Conversion Tool - AWS Schema Conversion Tool

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

使用擴充功能套件 AWS Schema Conversion Tool

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

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

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

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

  • 資料庫的自訂程式OLAP庫 — 包括一組 Java 和 Python 程式庫,您可以使用這些程式庫將 Microsoft SQL 伺服器整合服務 (SSIS) 擷取、轉換和載入 (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 服務器到 Postgre 的轉換SQL,您可以使用SQL服務器到後續SQL擴展包中。 AWS SCT此延伸套件會模擬SQL伺服器代理程式和SQL伺服器資料庫郵件。如需詳細資訊,請參閱 SQL使用擴展包在 Postgre 中模擬SQL服務器代理SQL使用擴展包在 Postgre 中模擬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 伺服器:AWS_SQLSERVER_EXT

  • 我的SQL:AWS_MYSQL_EXT

  • Oracle: AWS_ORACLE_EXT

  • 後者:SQLAWS_POSTGRESQL_EXT

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

  • Greenplum:AWS_GREENPLUM_EXT

  • Microsoft SQL 伺服器: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 Schema Conversion Tool

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

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

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

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

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

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

    請確定您的 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"] } ] }

    在前面的例子中,替換 111122223333:user/DataExtractionAgentName 使用您的IAM用戶的名稱。

  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 上託管之資料庫的電子郵件、任務排程和其他功能的 Lambda 函數EC2。

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

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

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

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

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

重要

只有在 Amazon 上安裝和自我管理的資料庫才支援 AWS 服務模擬功能。EC2如果目標資料庫位於 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 Schema Conversion Tool

  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 Schema Conversion Tool

設定 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