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
{ "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}
::integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:
{account-id}
{region}
::namespace:
{account-id}
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::
:root" }, "Action":"sts:AssumeRole" } ] }
{external-account-id}
ロールを作成する手順については、「カスタム信頼ポリシーを使用したロールの作成」を参照してください。
ゼロ ETL 統合の作成
AWS Management Console、AWS CLI、または RDS API を使用してゼロ ETL 統合を作成できます。
ゼロ ETL 統合を作成するには
AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/
を開きます。 -
左側のナビゲーションペインから、[ゼロ ETL 統合] を選択します。
-
[ゼロ ETL 統合の作成] を選択します。
-
[統合 ID] に、統合の名前を入力します。名前には最大 63 文字の英数字を使用でき、ハイフンを含めることができます。
-
[次へ] を選択します。
[ソース] で、データの送信元となる Aurora DB クラスターを選択します。
注記
DB クラスターパラメータが正しく設定されていないと、RDS から通知されます。このメッセージを受け取った場合は、[Fix it for me] を選択するか、手動で設定することができます。手動で修正する手順については、「ステップ 1: カスタム DB クラスターのパラメータグループを作成する」を参照してください。
DB クラスターパラメータを変更するには再起動が必要です。統合を作成する前に、再起動が完了し、新しいパラメータ値ののクラスターへの適用が正常に完了している必要があります。
-
(オプション) [データフィルタリングオプションのカスタマイズ] を選択して、統合にデータフィルターを追加します。データフィルターを使用して、ターゲットデータウェアハウスへのレプリケーションの範囲を定義できます。詳細については、「Amazon Redshift との Aurora ゼロ ETL 統合でのデータフィルタリング」を参照してください。
-
ソース DB クラスターが正常に設定されたら、[次へ] を選択します。
[ターゲット] で、以下を実行します。
(オプション) Amazon Redshift ターゲットとして別の AWS アカウント を使用するには、[別のアカウントを指定] を選択します。次に、データウェアハウスを表示するアクセス許可を持つ IAM ロールの ARN を入力します。IAM ロールの作成手順については、「別のアカウントでターゲットデータウェアハウスを選択する」を参照してください。
[Amazon Redshift データウェアハウス] で、ソース DB クラスターからのレプリケートデータのターゲットを選択します。ターゲットとして、プロビジョニングされた Amazon Redshift クラスターまたは Redshift Serverless 名前空間を選択できます。
注記
指定したデータウェアハウスのリソースポリシーまたは大文字と小文字の区別の設定が正しく構成されていないと、RDS から通知されます。このメッセージを受け取った場合は、[Fix it for me] を選択するか、手動で設定することができます。手動で修正する手順については、「Amazon Redshift 管理ガイド」の「データウェアハウスの大文字と小文字の区別を有効にする」と「データウェアハウスの認可を設定する」を参照してください。
プロビジョニングされた Redshift クラスターの大文字と小文字の区別を変更するには、再起動が必要です。インテグレーションを作成する前に、再起動を完了し、新しいパラメータ値をクラスターに正常に適用する必要があります。
選択したソースとターゲットの AWS アカウント が異なる場合、Amazon RDS はこれらの設定を自動的に修正できません。他のアカウントに移動し、Amazon Redshift で手動で修正する必要があります。
-
ターゲットデータウェアハウスを正しく設定したら、[次へ] を選択します。
-
(オプション) [タグ] で、1 つ以上のタグを統合に追加します。詳細については、「Amazon Aurora および Amazon RDS リソースのタグ付け」を参照してください。
-
[暗号化] として、統合の暗号化方法を指定します。デフォルトでは、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」を参照してください。
-
-
[Next] を選択します。
統合設定を確認し、[ゼロ ETL 統合を作成] を選択します。
作成に失敗した場合は、トラブルシューティングの手順について「ゼロ ETL 統合を作成できない」を参照してください。
統合のステータスは、作成中は Creating
であり、ターゲットの Amazon Redshift データウェアハウスのステータスは Modifying
です。この間、データウェアハウスをクエリしたり、設定を変更したりすることはできません。
統合が正常に作成されると、統合とターゲットの Amazon Redshift データウェアハウスの両方のステータスが Active
に変わります。
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
Amazon RDS API を使用してゼロ ETL 統合を作成するには、以下のパラメータを指定して CreateIntegration
オペレーションを使用します。
-
IntegrationName
— 統合の名前を指定します。 -
SourceArn
— 統合のソースとなる Aurora DB クラスターの ARN を指定します。 -
TargetArn
— 統合のターゲットとなる Amazon Redshift データウェアハウスの ARN を指定します。
カスタマーマネージドキーでの統合の暗号化
統合の作成時に AWS 所有のキー ではなくカスタム KMS キーを指定する場合、キーポリシーは Amazon Redshift サービスプリンシパルに CreateGrant
アクションへのアクセスを提供する必要があります。さらに、現在のユーザーに DescribeKey
アクションと CreateGrant
アクションの実行を許可する必要があります。
次のポリシー例は、キーポリシーに必要なアクセス許可を指定する方法を示しています。アクセス許可の範囲をさらに狭めるためのコンテキストキーが含まれています。
{ "Version": "2012-10-17", "Id": "Key policy", "Statement": [ { "Sid": "Enables IAM user permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
{account-ID}
:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Redshift service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:{context-key}
":"{context-value}
" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current user or role to add a grant to a KMS key", "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.us-east-1.amazonaws.com" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current uer or role to retrieve information about a KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-ID}
:role/{role-name}
" }, "Action": "kms:DescribeKey", "Resource": "*" } ] }
詳細については、「AWS Key Management Service デベロッパーガイド」の「キーポリシーの作成」を参照してください。
次のステップ
ゼロ ETL 統合を正常に作成した後、ターゲット Amazon Redshift クラスターまたはワークグループ内にデスティネーションデータベースを作成する必要があります。これで、ソースの Aurora DB クラスターにデータを追加し、Amazon Redshift でクエリを実行できるようになります。手順については、「Amazon Redshift でのデスティネーションデータベースの作成」を参照してください。