将扩展包与 AWS Schema Conversion Tool - AWS Schema Conversion Tool

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将扩展包与 AWS Schema Conversion Tool

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 库,您可以使用这些库将 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:模拟 ISNULLREPLACENULL 内置函数。

    • ssis_string.py:模拟字符串内置函数。

    有关这些库的更多信息,请参阅为 AWS SCT 扩展包使用自定义库

您可以通过两种方式应用 AWS SCT 扩展包:

  • AWS SCT 在应用目标数据库脚本时,可以通过从上下文菜单中选择 “应用于数据库” 来自动应用扩展包。 AWS SCT 先应用扩展包,然后再应用所有其他架构对象。

  • 要手动应用扩展包,请选择目标数据库,然后从上下文菜单中选择应用扩展包。对于大多数情况,自动应用已足够。但是,如果意外删除了扩展包,则可能需要手动应用该包。

每次将 AWS SCT 扩展包应用于目标数据存储时,组件都会被覆盖,并 AWS SCT 显示有关此的通知。要关闭这些通知,请选择设置全局设置通知,然后选择隐藏扩展包更换提醒

要从 Microsoft SQL Server 转换到 PostgreSQL,你可以使用中的SQL服务器到 Postgre SQL 扩展包。 AWS SCT此扩展包模拟SQL服务器代理和SQL服务器数据库邮件。有关更多信息,请参阅使用扩展包在 Postgr SQL e 中模拟SQL服务器代理使用扩展包在 Postgre SQL 中模拟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数据库的扩展包架构根据源数据库命名如下:

  • 微软SQL服务器:AWS_SQLSERVER_EXT

  • 我的SQL:AWS_MYSQL_EXT

  • Oracle:AWS_ORACLE_EXT

  • Postgre: SQL AWS_POSTGRESQL_EXT

OLAP数据仓库应用程序的扩展包架构根据源数据存储命名,如下所示:

  • Greenplum:AWS_GREENPLUM_EXT

  • 微软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,打开上下文(右键单击)菜单,选择 A pply extension pack for,然后选择您的源数据库平台。

    “应用扩展包”上下文菜单

    扩展包向导随即出现。

  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 提供了一个扩展包,其中包含用于发送电子邮件、作业调度的 Lambda 函数以及其他用于托管在 Amazon 上的数据库的功能。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,打开上下文(右键单击)菜单,选择 A pply extension pack for,然后选择您的源数据库平台。

    “应用扩展包”上下文菜单

    扩展包向导随即出现。

  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