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.jarxmlbeans-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 コンテキストメニューから [Apply to database] を選択してターゲットデータベーススクリプトを適用すると、拡張パックを自動的に適用できます。 AWS SCT 他のすべてのスキーマオブジェクトを適用する前に、拡張パックを適用します。

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

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

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

AWS SCT 拡張パックの操作に関する詳細情報は以下に記載されています。

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

Amazon Aurora AWS SCT の拡張パックは、関数を使用してメール送信、ジョブスケジューリング、キューイング、およびその他の操作をエミュレートします。 AWS Lambda AWS SCT 拡張パックをターゲットの Aurora データベースに適用すると、新しい AWS Identity and Access Management (IAM) ロールとインライン IAM AWS SCT ポリシーが作成されます。次に、新しい Lambda AWS SCT 関数を作成し、Aurora DB クラスターをへのアウトバウンド接続用に設定します。 AWS Lambdaこれらのオペレーションを実行するには、必ず IAM ユーザーに次の必要なアクセス許可を付与してください。

  • iam:CreateRole— アカウント用の新しい IAM ロールを作成します。 AWS

  • iam:CreatePolicy— アカウント用の新しい IAM ポリシーを作成します。 AWS

  • 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 LambdaAWS SCT エクステンションパックの関数を使用する 」を参照してください。

拡張パックの適用

エクステンションパックは、 AWS SCT エクステンションパックウィザードを使用するか、変換したコードをターゲットデータベースに適用するときに適用できます。

拡張パックウィザードを使用して拡張パックを適用するには
  1. のターゲットデータベースツリーで AWS Schema Conversion Tool、コンテキスト (右クリック) メニューを開いて [Extension Pack for] を選択し、ソースデータベースプラットフォームを選択します。

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

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

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

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

    • 拡張パックスキーマのみを再インストールする場合は、[このステップを今すぐスキップ]、[次へ] の順に選択します。[このステップを今すぐスキップ] オプションは、オンライントランザクション処理 (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:user/ DataExtractionAgentName を 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 LambdaAWS SCT エクステンションパックの関数を使用する

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

AWS Lambda 関数を使用してデータベース機能をエミュレートする

場合によって、データベース機能は同等の Amazon RDS 機能に変換できないことがあります。例えば、Oracle で送信される E メール呼び出しに UTL_SMTP が使用されている場合や、Microsoft SQL Server でジョブスケジューラが使用される場合があります。Amazon EC2 でデータベースをホストして自己管理する場合は、 AWS サービスの代わりにこれらの機能をエミュレートできます。

AWS SCT 拡張パックウィザードを使用すると、メール、ジョブスケジューリング、その他の機能をエミュレートする Lambda 関数のインストール、作成、設定を行うことができます。

拡張パックの適用 (Lambda 関数のサポート)

拡張パックウィザードを使用するか、変換したコードをターゲットデータベースに適用するときに、拡張パックを Lambda 関数をサポートするように適用できます。

重要

AWS サービスエミュレーション機能は、Amazon EC2 にインストールされ、自己管理されているデータベースでのみサポートされます。ターゲットデータベースが Amazon RDS DB インスタンス上にある場合は、サービスエミュレーション機能をインストールしないでください。

拡張パックウィザードを使用して拡張パックを適用するには
  1. のターゲットデータベースツリーで AWS Schema Conversion Tool、コンテキスト (右クリック) メニューを開き、[Apply extension pack for] を選択して、ソースデータベースプラットフォームを選択します。

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

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

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

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

    • 拡張パックスキーマのみを再インストールする場合は、[このステップを今すぐスキップ]、[次へ] の順に選択します。

    • 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」を参照してください。

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