Amazon Redshift との Amazon ゼロ ETL 統合の作成 - Amazon Aurora

Amazon Redshift との Amazon ゼロ ETL 統合の作成

Aurora ゼロ ETL 統合を作成するには、ソース Aurora DB クラスターとターゲットの Amazon Redshift データウェアハウスを指定します。暗号化設定をカスタマイズし、タグを追加することもできます。Aurora はソース DB クラスターとそのターゲットの間の統合を作成します。統合がアクティブになると、ソース DB クラスターに挿入したデータはすべて、設定された Amazon Redshift ターゲットにレプリケートされます。

前提条件

ゼロ ETL 統合を作成する前に、ソースの DB クラスターとターゲットの Amazon Redshift データウェアハウスを作成する必要があります。また、DB クラスターを承認済みの統合ソースとして追加することによって、データウェアハウスへのレプリケーションを許可する必要があります。

これらの各手順の実行方法については、「Amazon Redshift との Aurora ゼロ ETL 統合の開始方法」を参照してください。

必要なアクセス許可

ゼロ ETL 統合を作成するには、特定の IAM アクセス権限が必要です。少なくとも、次のアクションを実行するためのアクセス権限が必要です。

  • ソースの Aurora DB クラスターのゼロ ETL 統合を作成します。

  • すべてのゼロ ETL 統合を表示および削除します。

  • ターゲットデータウェアハウスへのインバウンド統合を作成します。同じアカウントが Amazon Redshift データウェアハウスを所有していて、このアカウントがそのデータウェアハウスの承認済みプリンシパルである場合は、このアクセス許可が不要となります。承認済みプリンシパルの追加については、「Amazon Redshift データウェアハウスの承認の設定」を参照してください。

以下のサンプルポリシーは、インテグレーションの作成と管理に必要な最小特権を示しています。ユーザーまたはロールが AdministratorAccess マネージドポリシーなど、より広範なアクセス許可を持つ場合、これらの正確なアクセス許可を必要としない場合があります。

注記

Redshift Amazon リソースネーム (ARN) の形式は次のとおりです。サーバーレス名前空間 UUID の前にコロン (:) ではなくフォワードスラッシュ ((/) を使用していることに注意してください。

  • プロビジョニング済みクラスタ — arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

  • サーバーレス - arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

重要

Aurora PostgreSQL プレビューでは、Amazon RDS データベースプレビュー環境内のすべての ARN とアクションは、サービス名前空間への -preview が追加されました。例えば、rds-preview:CreateIntegrationarn:aws:rds-preview:… です。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rds:CreateIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:cluster:source-db", "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeIntegrations" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "rds:DeleteIntegration", "rds:ModifyIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid" ] }] }

別のアカウントでターゲットデータウェアハウスを選択する

別の AWS アカウント にあるターゲット Amazon Redshift データウェアハウスを指定する場合は、現在のアカウントのユーザーがターゲットアカウントのリソースにアクセスするのを許可するロールを作成する必要があります。詳細については、「所有している別の AWS アカウント の IAM ユーザーにアクセス権を付与する」を参照してください。

ロールには以下のアクセス許可が必要です。これにより、ユーザーは使用可能な Amazon Redshift のプロビジョニング済みクラスターとターゲットアカウントの Redshift Serverless 名前空間を表示できます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusters", "redshift-serverless:ListNamespaces" ], "Resource":[ "*" ] } ] }

ロールには、ターゲットアカウント ID を指定する次の信頼ポリシーが必要です。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": "arn:aws:iam::{external-account-id}:root" }, "Action":"sts:AssumeRole" } ] }

ロールを作成する手順については、「カスタム信頼ポリシーを使用したロールの作成」を参照してください。

ゼロ ETL 統合の作成

AWS Management Console、AWS CLI、または RDS API を使用して、Aurora MySQL ゼロ ETL 統合を作成できます。Aurora PostgreSQL 統合を作成するには、AWS Management Console を使用する必要があります。

ゼロ ETL 統合を作成するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

    統合のソースとして Aurora PostgreSQL DB クラスターを使用する場合、https://us-east-2.console.aws.amazon.com/rds-preview/home?region=us-east-2#databases で Amazon RDS データベースプレビュー環境にサインインする必要があります。

  2. 左側のナビゲーションペインから、[ゼロ ETL 統合] を選択します。

  3. [ゼロ ETL 統合の作成] を選択します。

  4. [統合 ID] に、統合の名前を入力します。名前には最大 63 文字の英数字を使用でき、ハイフンを含めることができます。

  5. [次へ] を選択します。

  6. [ソース] で、データの送信元となる Aurora DB クラスターを選択します。

    注記

    MySQL ソースでは、DB クラスターパラメータが正しく設定されていないと、RDS から通知されます。このメッセージを受け取った場合は、[Fix it for me] を選択するか、手動で設定することができます。手動で修正する手順については、「ステップ 1: カスタム DB クラスターのパラメータグループを作成する」を参照してください。

    DB クラスターパラメータを変更するには再起動が必要です。統合を作成する前に、再起動が完了し、新しいパラメータ値ののクラスターへの適用が正常に完了している必要があります。

  7. Aurora PostgreSQL ソースクラスターを選択した場合、[名前付きデータベース] で、統合のソースとして使用する名前付きデータベースを指定します。PostgreSQL リソースモデルでは、1 つの DB クラスター内に複数のデータベースを作成できますが、ゼロ ETL 統合ごとに使用できるデータベースは 1 つだけです。

    名前付きデータベースは template1 から作成する必要があります。詳細については、PostgreSQL ドキュメントの「テンプレートデータベース」を参照してください。

  8. (オプション) Aurora MySQL ソース DB クラスターを選択した場合は、[データフィルタリングオプションのカスタマイズ] を選択して、統合にデータフィルターを追加します。データフィルターを使用して、ターゲットデータウェアハウスへのレプリケーションの範囲を定義できます。詳細については、「Amazon Redshift との Aurora ゼロ ETL 統合でのデータフィルタリング」を参照してください。

  9. ソース DB クラスターが正常に設定されたら、[次へ] を選択します。

  10. [ターゲット] で、以下を実行します。

    1. (オプション) Amazon Redshift  ターゲットとして別の AWS アカウント を使用するには、[別のアカウントを指定] を選択します。次に、データウェアハウスを表示するアクセス許可を持つ IAM ロールの ARN を入力します。IAM ロールの作成手順については、「別のアカウントでターゲットデータウェアハウスを選択する」を参照してください。

    2. [Amazon Redshift データウェアハウス] で、ソース DB クラスターからのレプリケートデータのターゲットを選択します。ターゲットとして、プロビジョニングされた Amazon Redshift クラスターまたは Redshift Serverless 名前空間を選択できます。

    注記

    指定したデータウェアハウスのリソースポリシーまたは大文字と小文字の区別の設定が正しく構成されていないと、RDS から通知されます。このメッセージを受け取った場合は、[Fix it for me] を選択するか、手動で設定することができます。手動で修正する手順については、Amazon Redshift 管理ガイドの「データウェアハウスで大文字と小文字の区別を有効にする」と「データウェアハウスの認証を設定する」を参照してください。

    プロビジョニングされた Redshift クラスターの大文字と小文字の区別を変更するには、再起動が必要です。インテグレーションを作成する前に、再起動を完了し、新しいパラメータ値をクラスターに正常に適用する必要があります。

    選択したソースとターゲットの AWS アカウント が異なる場合、Amazon RDS はこれらの設定を自動的に修正できません。他のアカウントに移動し、Amazon Redshift で手動で修正する必要があります。

  11. ターゲットデータウェアハウスを正しく設定したら、[次へ] を選択します。

  12. (オプション) [タグ] で、1 つ以上のタグを統合に追加します。詳細については、「Amazon Aurora および Amazon RDS リソースのタグ付け」を参照してください。

  13. [暗号化] として、統合の暗号化方法を指定します。デフォルトでは、RDS はすべての統合を AWS 所有のキー で暗号化します。代わりにカスタマーマネージドキーを選択するには、[暗号化設定のカスタマイズ] を有効にして、暗号化に使用する KMS キーを選択します。詳細については、「Amazon Aurora リソースの暗号化」を参照してください。

    オプションで、暗号化コンテキストを追加します。詳しくは、AWS Key Management Service デベロッパーガイドEncryption context を参照してください。

    注記

    Amazon RDS は、追加する以下に加えて、次の暗号化コンテキストペアを追加します。

    • aws:redshift:integration:arn - IntegrationArn

    • aws:servicename:id - Redshift

    これにより、追加できるペアの総数が 8 から 6 に減り、許可の制約の全体的な文字数制限に影響します。詳細については、「AWS Key Management Service デベロッパーガイド」の「Using grant constraints」を参照してください。

  14. [次へ] を選択します。

  15. 統合設定を確認し、[ゼロ ETL 統合を作成] を選択します。

    作成に失敗した場合は、トラブルシューティングの手順について「ゼロ ETL 統合を作成できない」を参照してください。

統合のステータスは、作成中は Creating であり、ターゲットの Amazon Redshift データウェアハウスのステータスは Modifying です。この間、データウェアハウスをクエリしたり、設定を変更したりすることはできません。

統合が正常に作成されると、統合とターゲットの Amazon Redshift データウェアハウスの両方のステータスが Active に変わります。

注記

Aurora PostgreSQL ゼロ ETL 統合のプレビュー中は、AWS Management Console を介してのみ統合を作成できます。AWS CLI、Amazon RDS API、または任意の SDK を使用することはできません。

AWS CLI を使用してゼロ ETL 統合を作成するには、create-integration コマンドに以下のオプションを指定して使用します。

  • --integration-name — 統合の名前を指定します。

  • --source-arn — 統合のソースとなる Aurora DB クラスターの ARN を指定します。

  • --target-arn — 統合のターゲットとなる Amazon Redshift データウェアハウスの ARN を指定します。

Linux、macOS、Unix の場合:

aws rds create-integration \ --integration-name my-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-db \ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

Windows の場合:

aws rds create-integration ^ --integration-name my-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-db ^ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid
注記

Aurora PostgreSQL ゼロ ETL 統合のプレビュー中は、AWS Management Console を介してのみ統合を作成できます。AWS CLI、Amazon RDS API、または任意の SDK を使用することはできません。

Amazon RDS API を使用してゼロ ETL 統合を作成するには、以下のパラメータを指定して CreateIntegration オペレーションを使用します。

  • IntegrationName — 統合の名前を指定します。

  • SourceArn — 統合のソースとなる Aurora DB クラスターの ARN を指定します。

  • TargetArn — 統合のターゲットとなる Amazon Redshift データウェアハウスの ARN を指定します。

カスタマーマネージドキーでの統合の暗号化

統合の作成時に AWS 所有のキー ではなくカスタム KMS キーを指定する場合、キーポリシーは Amazon Redshift サービスプリンシパルに CreateGrant アクションへのアクセスを提供する必要があります。さらに、リクエスタアカウントまたはロールが DescribeKey および CreateGrant アクションを実行することを許可する必要があります。

次のキーポリシーステートメントの例は、ポリシードキュメントに必要なアクセス許可を示しています。例として、アクセス許可の範囲をさらに縮小するためのコンテキストキーなどがあります。

次のポリシーステートメントでは、リクエスタアカウントまたはロールが KMS キーに関する情報を取得することを許可します。

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:DescribeKey", "Resource":"*" }

次のポリシーステートメントは、リクエスタアカウントまたはロールが KMS キーに許可を追加することを許可します。kms:ViaService 条件キーは、KMS キーの使用を Amazon RDS からのリクエストに制限します。

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "kms:ViaService":"rds.{region}.amazonaws.com" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }

次のポリシーステートメントでは、Amazon Redshift サービスプリンシパルが KMS キーに権限を追加することを許可します。

{ "Effect":"Allow", "Principal":{ "Service":"redshift.amazonaws.com" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "aws:SourceAccount":"{account-ID}" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] }, "ArnLike":{ "aws:SourceArn":"arn:aws:*:{region}:{account-ID}:integration:*" } } }

詳細については、「AWS Key Management Service デベロッパーガイド」の「キーポリシーの作成」を参照してください。

次のステップ

ゼロ ETL 統合を正常に作成した後、ターゲット Amazon Redshift クラスターまたはワークグループ内にデスティネーションデータベースを作成する必要があります。これで、ソースの Aurora DB クラスターにデータを追加し、Amazon Redshift でクエリを実行できるようになります。手順については、「Amazon Redshift でのデスティネーションデータベースの作成」を参照してください。