DynamoDB のゼロ ETL 統合を作成する
ゼロ ETL 統合を作成する前に、「プレビューの制限事項」で概説されている考慮事項と要件を確認してください。この一般的なフローに従って、DynamoDB から Amazon Redshift へのゼロ ETL 統合を作成します。
ゼロ ETL 統合で DynamoDB のデータを Amazon Redshift にレプリケーションするには
サインイン認証情報で、Amazon Redshift と DynamoDB とのゼロ ETL 統合を実行するアクセス許可が付与されていることを確認します。IAM ポリシーの例については、「DynamoDB ゼロ ETL 統合と連携する IAM ポリシー」を参照してください。
-
「Amazon DynamoDB デベロッパーガイド」で説明されているように、DynamoDB コンソールから、ポイントインタイムリカバリ (PITR)、リソースポリシー、ID ベースのポリシー、暗号化キーのアクセス許可を持つ DynamoDB テーブルを設定します。
-
Amazon Redshift コンソール: ターゲット Amazon Redshift データウェアハウスを作成して設定する.
-
AWS CLI または Amazon Redshift コンソール: データウェアハウスの大文字と小文字の区別を有効にする.
-
Amazon Redshift コンソール: Amazon Redshift データウェアハウスの認可を設定する.
-
-
Amazon Redshift コンソールから、このトピックで後述するゼロ ETL 統合を作成します。
-
Amazon Redshift コンソールから、Amazon Redshift データウェアハウスに送信先データベースを作成します。詳細については、「Amazon Redshift でのデスティネーションデータベースの作成」を参照してください。
-
Amazon Redshift コンソールから、Amazon Redshift データウェアハウスでレプリケートされたデータをクエリします。詳細については、「Amazon Redshift でのレプリケートしたデータのクエリ」を参照してください。
このステップでは、Amazon Redshift との Amazon DynamoDB ゼロ ETL 統合を作成します。
DynamoDB ゼロ ETL 統合と連携する IAM ポリシー
ゼロ ETL 統合を作成する場合、サインイン認証情報には、DynamoDB アクションと Amazon Redshift アクションの両方、および統合のソースとターゲットとして関係するリソースに対するアクセス許可が必要です。以下は、必要な最小限のアクセス許可を示す例です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:ListTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "dynamodb:GetResourcePolicy", "dynamodb:PutResourcePolicy", "dynamodb:UpdateContinuousBackups" ], "Resource": [ "arn:aws:dynamodb:
<region>
:<account>
:table/my-ddb-table" ] }, { "Sid": "AllowRedshiftDescribeIntegration", "Effect": "Allow", "Action": [ "redshift:DescribeIntegrations" ], "Resource": "*" }, { "Sid": "AllowRedshiftCreateIntegration", "Effect": "Allow", "Action": "redshift:CreateIntegration", "Resource": "arn:aws:redshift:<region>
:<account>
:integration:*" }, { "Sid": "AllowRedshiftModifyDeleteIntegration", "Effect": "Allow", "Action": [ "redshift:ModifyIntegration", "redshift:DeleteIntegration" ], "Resource": "arn:aws:redshift:<region>
:<account>
:integration:<uuid>
" }, { "Sid": "AllowRedshiftCreateInboundIntegration", "Effect": "Allow", "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift:<region>
:<account>
:namespace:<uuid>
" } ] }
カスタマーマネージドキーでの DynamoDB 統合の暗号化
DynamoDB ゼロ ETL 統合の作成時に 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 Redshift からのリクエストに制限します。
{ "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":"redshift.{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 統合を暗号化する場合は、キーと値のペアを[追加の暗号化コンテキスト] として追加できます。また、これらのキーと値のペアを追加して、レプリケートされるデータに関するコンテキスト情報を追加できます。詳しくは、AWS Key Management Service デベロッパーガイドの Encryption context を参照してください。
Amazon Redshift は、ユーザーが追加したペアに加えて、以下の暗号化コンテキストのペアを追加します。
-
aws:redshift:integration:arn
-IntegrationArn
-
aws:servicename:id
-Redshift
これにより、追加できるペアの総数が 8 から 6 に減り、許可の制約の全体的な文字数制限に影響します。詳細については、「AWS Key Management Service デベロッパーガイド」の「Using grant constraints」を参照してください。