AWS SCT拡張パックの使用 - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SCT拡張パックの使用

AWS SCT拡張パックは、オブジェクトをターゲットデータベースに変換するときに必要な、ソースデータベースに存在する機能をエミュレートするアドオンモジュールです。AWS SCT拡張パックをインストールする前に、データベーススキーマを変換します。

AWS SCT各拡張パックには次のコンポーネントが含まれています。

  • DB スキーマ — シーケンスなどの特定のオンライントランザクション処理 (OLTP) およびオンライン分析処理 (OLAP) データベースオブジェクトをエミュレートするための SQL 関数、プロシージャ、およびテーブルが含まれます。また、built-in-functionsソースデータベースではサポートされていないものをエミュレートします。aws_database_engine_name_extこのスキーマの名前は次の形式です:.

  • AWS Lambda関数 (特定の OLTP データベース用) — ジョブのスケジュール設定や電子メールの送信など、AWS Lambda複雑なデータベース機能をエミュレートする関数が含まれます。

  • OLAP データベース用のカスタムライブラリ — Microsoft SQL Server 統合サービス (SSIS) の抽出、変換、ロード (ETL) スクリプトをまたはに移行するために使用できる Java および Python ライブラリのセットが含まれています。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.pyISNULL REPLACENULL および組み込み関数をエミュレートするため。

    • ssis_string.py— 文字列の組み込み関数をエミュレートします。

    これらのライブラリの詳細については、「AWS SCT拡張パック用のカスタムライブラリの使用」を参照してください。

AWS SCT拡張パックは次の 2 つの方法で適用できます。

  • AWS SCTコンテキストメニューから [データベースに適用] を選択してターゲットデータベーススクリプトを適用すると、拡張パックを自動的に適用できます。 AWS SCT他のすべてのスキーマオブジェクトを適用する前に、拡張パックを適用します。

  • 拡張パックを手動で適用するには、対象のデータベースを選択し、コンテキスト (右クリック) メニューから [拡張パックの適用] を選択します。ほとんどの場合、自動適用で十分です。ただし、パックを誤って削除してしまった場合は、手動で適用したほうがよい場合があります。

AWS SCT拡張パックをターゲットデータストアに適用するたびに、コンポーネントは上書きされ、AWS SCTそれに関する通知が表示されます。これらの通知をオフにするには、[設定]、[グローバル設定]、[通知] の順に選択し、[拡張パックの交換通知を非表示にする] を選択します。

Microsoft SQL Server から PostgreSQL への変換には、SQL Server から PostgreSQL への拡張パックを使用できます。AWS SCTこの拡張パックは、SQL Server エージェントと SQL Server データベースメールをエミュレートします。詳細については、「拡張パックを使用して PostgreSQL で SQL サーバーエージェントをエミュレートする」および「拡張パックを使用して PostgreSQL で SQL Server データベースメールをエミュレートする」を参照してください。

以下に、AWS SCT拡張パックの使用に関する詳細情報を示します。

AWS SCT拡張パックを使用するための権限

Amazon Aurora AWS SCT の拡張パックは、関数を使用してメール送信、ジョブスケジューリング、キューイング、およびその他の操作をエミュレートします。AWS LambdaAWS SCT拡張パックをターゲットの Aurora データベースに適用すると、新しい AWS Identity and Access Management (IAM) ロールとインライン IAM AWS SCT ポリシーが作成されます。次に、新しい Lambda AWS SCT 関数を作成し、へのアウトバウンド接続用に 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 SCTIAM ポリシーシミュレーターを使用して、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、コンテキスト (右クリック) メニューを開き、「Extension Pack for for」を選択し、ソースデータベースプラットフォームを選択します。

    
                            拡張パックのコンテキストメニューを適用

    拡張パックウィザードが表示されます。

  2. [Welcome] ページをお読みの上、[Next] (次へ) を選択します。

  3. AWSプロファイル設定ページで、次の操作を行います。

    • 拡張パックスキーマのみを再インストールする場合は、[Skip this step for now] (今のところこのステップをスキップ)、[Next] (次へ) の順に選択します。「今すぐこのステップをスキップ」オプションは、オンライントランザクション処理 (OLTP) データベースでのみ使用できます。

    • 新しいライブラリをアップロードする場合は、に接続するための認証情報を入力してください。AWS アカウントこのステップは、OLAP データベースまたは ETL スクリプトを変換する場合にのみ使用してください。AWS Command Line Interface がインストールされている場合は、AWS CLI (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"] } ] }

    前の例では、111122223333: DataExtractionAgentName user/ を IAM ユーザーの名前に置き換えてください。

  2. ソースデータウェアハウスのスキーマを変換します。詳細については、「データウェアハウススキーマの Amazon Redshift への変換」を参照してください。

  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には、E メール用の Lambda 関数、ジョブスケジューリング、および Amazon EC2 でホストされているデータベース用のその他の機能を含む拡張パックが用意されています。

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 インスタンス上にある場合は、サービスエミュレーション機能をインストールしないでください。

拡張パックウィザードを使用して拡張パックを適用するには
  1. のターゲットデータベースツリーでAWS Schema Conversion Tool、コンテキスト (右クリック) メニューを開き、「Extension Pack for 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サービスプロファイルの保存AWS SCT」を参照してください。

  4. [Email Sending Service] (E メール送信サービス) ページで、以下の作業を行います。

    • 拡張パックスキーマのみを再インストールする場合は、[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 のインストール、検証、更新」を参照してください。