AWS Schema Conversion Tool 拡張パックの使用
AWS SCT 拡張パックは、ソースデータベースにある関数をエミュレートするアドオンモジュールです。これらの関数は、オブジェクトをターゲットデータベースに変換する際に必要です。AWS SCT 拡張パックをインストールする前に、データベーススキーマを変換します。
AWS SCT 拡張パックには以下のコンポーネントが含まれています。
DB スキーマ-シーケンスなどの特定のオンライントランザクション処理 (OLTP) やオンライン分析処理 (OLAP) データベースオブジェクトをエミュレートする SQL 関数、プロシージャ、プロシージャ、プロシージャ、プロシージャ、プロシージャ、テーブルが含まれています。また、サポートされていない組み込み関数をソースデータベースからエミュレートします。このスキーマの名前の形式は
aws_のようになりま。database_engine_name_extAWS Lambda 関数 (特定の OLTP データベース) - AWS Lambda 関数が含まれています。これらの関数により、ジョブのスケジュール設定や E メールの送信など、複雑なデータベース機能をエミュレートします。
OLAP データベース用のカスタムライブラリ — Microsoft SQL Server 統合サービス (SSIS) の抽出、変換、ロード (ETL) スクリプトを AWS Glueまたは AWS Glue Studio に移行するために使用できる一連の Java および Python ライブラリが含まれています。
Java ライブラリには、以下のモジュールが含まれています。
spark-excel_2.11-0.13.1.jar— Excel のソースコンポーネントとターゲットコンポーネントの機能をエミュレートします。spark-xml_2.11-0.9.0.jar、poi-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 拡張パックは次の 2 つの方法で適用できます。
コンテキストメニューの [データベースに適用] を選択してターゲットデータベーススクリプトを適用すると、AWS SCT によって自動的に拡張パックが適用されます。他のすべてのスキーマオブジェクトが適用される前に、AWS SCT で拡張パックが適用されます。
拡張パックを手動で適用するには、ターゲットデータベースを選択し、コンテキスト (右クリック) メニューの [拡張パックの適用]を選択します。ほとんどの場合、自動適用で十分です。ただし、パックを誤って削除した場合は、これを手動で適用する必要があります。
AWS SCT 拡張パックをターゲットデータストアに適用するたびに、コンポーネントが上書きされ、AWS SCT にはこれに関する通知が表示されます。これらの通知をオフにするには、[設定]、[グローバル設定]、[通知] の順に選択し、[拡張パックの交換通知を非表示にする] を選択します。
Microsoft SQL Server から PostgreSQL への変換には、AWS SCT で SQL Server から PostgreSQL への拡張パックインを使用できます。この拡張パックは SQL Server エージェントと SQL Server データベースメールをエミュレートします。詳細については、「拡張パックを使用して PostgreSQL で SQL Server エージェントをエミュレートする」および「拡張パックを使用して PostgreSQL で SQL Server データベースメールをエミュレートする」を参照してください。
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 DB クラスターを 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 DB クラスターに関連付けます。
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 拡張パックウィザードを使用するか、変換したコードをターゲットデータベースに適用するときに適用できます。
拡張パックウィザードを使用して拡張パックを適用するには
-
AWS Schema Conversion Tool のターゲットデータベースのツリーで、コンテキスト (右クリック) メニューを開き、[拡張パックの適用] を選択してから、ソースデータベースプラットフォームを選択します。
拡張パックウィザードが表示されます。
-
[Welcome] ページをお読みの上、[Next] (次へ) を選択します。
-
[AWS プロファイルの設定] ページで、以下の操作を行います。
-
拡張パックスキーマのみを再インストールする場合は、[このステップを今すぐスキップ]、[次へ] の順に選択します。[このステップを今すぐスキップ] オプションは、オンライントランザクション処理 (OLTP) データベースでのみ使用できます。
-
新しいライブラリをアップロードした場合は、認証情報を入力して AWS アカウント に接続します。このステップは OLAP データベースまたは ETL スクリプトを変換する場合にのみ使用してください。AWS Command Line Interface がインストールされている場合は、AWS CLI (AWS CLI) 認証情報を使用できます。また、グローバルアプリケーション設定で以前プロファイルに保存した認証情報を使用して、プロジェクトと関連付けることもできます。必要に応じて、[プロジェクト設定に移動] を選択し、別のプロファイルを AWS SCT プロジェクトに関連付けます。詳細については、「AWS Schema Conversion Tool でのプロファイルの管理」を参照してください。
-
-
新しいライブラリをアップロードする場合は、[ライブラリのアップロード] ページで [ライブラリをアップロードする必要がある] を選択します。このステップは OLAP データベースまたは ETL スクリプトを変換する場合にのみ使用してください。次に、Amazon S3 パスを指定し、[ライブラリを S3 にアップロード] を選択します。
ライブラリを既にアップロードしている場合は、[ライブラリを既にアップロードしている] を選択し、[ライブラリのアップロード] ページで既存の S3 バケットを使用してください。次に、Amazon S3 パスを指定します。
終了したら、[Next] (次へ) を選択します。
-
[関数エミュレーション] ページで、[拡張パックの作成] を選択します。拡張パックの操作ステータスとメッセージが表示されます。
完了したら、[Finish] (完了) を選択します。
変換したコードを適用するときに拡張パックを適用するには
-
AWS サービスプロファイルで Amazon S3 バケットを指定します。このステップは OLAP データベースまたは ETL スクリプトを変換する場合にのみ使用してください。詳細については、「AWS Schema Conversion Tool でのプロファイルの管理」を参照してください。
Amazon S3 バケットポリシーに以下のアクセス許可が含まれていることを確認してください。
前述の例では、
111122223333:user/DataExtractionAgentNameを IAM ユーザーの名前に置き換えます。 -
ソースデータウェアハウススキーマを変換します。詳細については、「データウェアハウススキーマの変換」を参照してください。
-
右側のペインで、変換されたスキーマを選択します。
-
スキーマ要素のコンテキスト (右クリック) メニューを開き、[Apply to database] (データベースに適用) を選択します。
-
AWS SCT は必要なコンポーネントを含む拡張パックを生成し、ターゲットツリーに
aws_スキーマを追加します。次に、AWS SCT は変換されたコードと拡張パックスキーマをターゲットデータウェアハウスに適用します。database_engine_name_extAmazon Redshift と AWS Glue をターゲットデータベースプラットフォームとして組み合わせて使用すると、AWS SCT によって拡張パックにスキーマが追加されます。
AWS SCT 拡張パックの AWS Lambda 関数の使用
AWS SCT 拡張パックは、Amazon EC2 でホストされているデータベースに E メール、ジョブのスケジュール、その他の機能を提供する Lambda 関数を提供します。
AWS Lambda 関数を使用したデータベース機能のエミュレート
場合によって、データベース機能は同等の Amazon RDS 機能に変換できないことがあります。例えば、Oracle で送信される E メール呼び出しに UTL_SMTP が使用されている場合や、Microsoft SQL Server でジョブスケジューラが使用される場合があります。Amazon EC2 でデータベースをホストして自己管理する場合は、代わりに AWS のサービスを使用して、これらの機能をエミュレートできます。
E メール送信やジョブのスケジュール設定などの機能をエミュレートするために、Lambda 関数のインストール、作成、設定を行うには、AWS SCT 拡張パックのウィザードを使用します。
拡張パックの適用 (Lambda 関数のサポート)
拡張パックウィザードを使用するか、変換したコードをターゲットデータベースに適用するときに、拡張パックを Lambda 関数をサポートするように適用できます。
重要
AWS のサービスのエミュレーション機能は、Amazon EC2 にインストールされて自己管理されるデータベースに対してのみサポートされています。ターゲットデータベースが Amazon RDS DB インスタンス上にある場合は、サービスエミュレーション機能をインストールしないでください。
拡張パックウィザードを使用して拡張パックを適用するには
-
AWS Schema Conversion Tool のターゲットデータベースのツリーで、コンテキスト (右クリック) メニューを開き、[拡張パックの適用] を選択してから、ソースデータベースプラットフォームを選択します。
拡張パックウィザードが表示されます。
-
[Welcome] ページをお読みの上、[Next] (次へ) を選択します。
-
[AWS プロファイルの設定] ページで、以下の操作を行います。
-
拡張パックスキーマのみを再インストールする場合は、[このステップを今すぐスキップ]、[次へ] の順に選択します。
-
AWS のサービスをインストールした場合は、認証情報を入力して AWS アカウント アカウントに接続します。AWS CLI がインストールされている場合は、AWS CLI 認証情報を使用できます。また、グローバルアプリケーション設定で以前プロファイルに保存した認証情報を使用して、プロジェクトと関連付けることもできます。必要に応じて、[Navigate to Project Settings] (プロジェクト設定に移動) を選択し、別のプロファイ次へルをプロジェクトに関連付けます。必要に応じて、[Global Settings] (グローバル設定) を選択して、新しいプロファイルを作成します。詳細については、「AWS Schema Conversion Tool でのプロファイルの管理」を参照してください。
-
-
[Email Sending Service] (E メール送信サービス) ページで、以下の作業を行います。
-
拡張パックスキーマのみを再インストールする場合は、[Skip this step for now] (今のところこのステップをスキップ)、[Next] (次へ) の順に選択します。
-
AWS のサービスをインストールする場合、既存の Lambda 関数があれば、それを指定できます。それ以外の場合は、ウィザードで自動的に作成されます。終了したら、[Next] (次へ) を選択します。
-
-
[Job Emulation Service] (ジョブのエミュレーションサービス) で、次の作業を行います。
-
拡張パックスキーマのみを再インストールする場合は、[Skip this step for now] (今のところこのステップをスキップ)、[Next] (次へ)の順に選択します。
-
AWS のサービスをインストールする場合、既存の Lambda 関数があれば、それを指定できます。それ以外の場合は、ウィザードで自動的に作成されます。終了したら、[Next] (次へ) を選択します。
-
-
[関数エミュレーション] ページで、[拡張パックの作成] を選択します。拡張パックの操作ステータスとメッセージが表示されます。
完了したら、[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_stringaws_sqlserver_ext.conv_date_to_stringaws_sqlserver_ext.conv_string_to_dateaws_sqlserver_ext.conv_string_to_datetimeaws_sqlserver_ext.conv_string_to_datetimeaws_sqlserver_ext.parse_to_dateaws_sqlserver_ext.parse_to_datetimeaws_sqlserver_ext.parse_to_time