Amazon SageMaker Lakehouse との Amazon RDS ゼロ ETL 統合の作成
Amazon SageMaker Lakehouse と Amazon RDS ゼロ ETL 統合を作成するときは、ソース RDS データベースとターゲット AWS Glue マネージドカタログを指定します。暗号化設定をカスタマイズし、タグを追加することもできます。Amazon RDS はソースデータベースとそのターゲットの間の統合を作成します。統合がアクティブになると、ソースデータベースに挿入したデータはすべて、設定されたターゲットにレプリケートされます。
前提条件
Amazon SageMaker Lakehouse とゼロ ETL 統合を作成する前に、ソースデータベースとターゲット AWS Glue マネージドカタログを作成する必要があります。また、データベースを承認済みの統合ソースとして追加することによって、カタログへのレプリケーションを許可する必要があります。
これらの各手順の実行方法については、「Amazon RDS ゼロ ETL 統合の開始方法」を参照してください。
必要なアクセス許可
Amazon SageMaker Lakehouse とのゼロ ETL 統合を作成するには、特定の IAM アクセス許可が必要です。少なくとも、次のアクションを実行するためのアクセス権限が必要です。
ソースの RDS データベースのゼロ ETL 統合を作成します。
すべてのゼロ ETL 統合を表示および削除します。
ターゲット AWS Glue マネージドカタログへのインバウンド統合を作成します。
AWS Glue マネージドカタログで使用される Amazon S3 バケットにアクセスします。
カスタム暗号化が設定されている場合は、暗号化に AWS KMS キーを使用します。
Lake Formation にリソースを登録します。
AWS Glue マネージドカタログにリソースポリシーを配置して、インバウンド統合を承認します。
以下のサンプルポリシーは、Amazon SageMaker Lakehouse との統合の作成と管理に必要な最小特権を示しています。ユーザーまたはロールが AdministratorAccess
マネージドポリシーなど、より広範なアクセス許可を持つ場合、これらの正確なアクセス許可を必要としない場合があります。
さらに、ターゲット AWS Glue マネージドカタログでリソースポリシーを設定して、インバウンド統合を承認する必要があります。次に、以下の AWS CLI コマンドを実行してリソースポリシーを適用します。
aws glue put-resource-policy \ --policy-in-json '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": [ "glue:AuthorizeInboundIntegration" ], "Resource": ["arn:aws:glue:
region
:account_id
:catalog/catalog_name
"], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:rds:region
:account_id
:db:source_name
" } } }, { "Effect": "Allow", "Principal": { "AWS": "account_id
" }, "Action": ["glue:CreateInboundIntegration"], "Resource": ["arn:aws:glue:region
:account_id
:catalog/catalog_name
"] } ] }' \ --regionregion
注記
Glue カタログの Amazon リソースネーム (ARN) 形式は次のようになります。
-
Glue カタログ –
arn:aws:glue:{region}:{account-id}:catalog/
catalog-name
別のアカウントでターゲット AWS Glue マネージドカタログを選択する
別の AWS アカウント にあるターゲット AWS Glue マネージドカタログを指定する場合は、現在のアカウントのユーザーがターゲットアカウントのリソースにアクセスするのを許可するロールを作成する必要があります。詳細については、「所有している別の AWS アカウント の IAM ユーザーにアクセス権を付与する」を参照してください。
ロールには次のアクセス許可が必要です。これにより、ユーザーはターゲットアカウントで使用可能な AWS Glue カタログを表示できます。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "glue:GetCatalog" ], "Resource":[ "*" ] } ] }
ロールには、ターゲットアカウント ID を指定する次の信頼ポリシーが必要です。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": "arn:aws:iam::
{external-account-id}
:root" }, "Action":"sts:AssumeRole" } ] }
ロールを作成する手順については、「カスタム信頼ポリシーを使用したロールの作成」を参照してください。
Amazon SageMaker Lakehouse とのゼロ ETL 統合の作成
AWS Management Console、AWS CLI、または RDS API を使用して Amazon SageMaker Lakehouse とのゼロ ETL 統合を作成できます。
重要
Amazon SageMaker Lakehouse とのゼロ ETL 統合は、更新または再同期オペレーションをサポートしていません。作成後に統合で問題が発生した場合は、統合を削除して新しい統合を作成する必要があります。
デフォルトで、RDS for MySQL はバイナリログファイルをすぐに消去します。ゼロ ETL 統合では、ソースからターゲットへのデータレプリケーションをバイナリログに依存しているため、ソースデータベースインスタンスの保持期間は 1 時間以上である必要があります。統合を作成したら、直ちに Amazon RDS は選択したソースデータベースのバイナリログファイルの保持期間を確認します。現在の値が 0 時間の場合、Amazon RDS は自動的に 1 時間に変更します。それ以外の場合、値は変わりません。
Amazon SageMaker Lakehouse とゼロ ETL 統合を作成する方法
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
左側のナビゲーションペインから、[ゼロ ETL 統合] を選択します。
-
[ゼロ ETL 統合の作成] を選択します。
-
[統合 ID] に、統合の名前を入力します。名前には最大 63 文字の英数字を使用でき、ハイフンを含めることができます。
-
[次へ] を選択します。
[ソース] で、データの送信元となる RDS データベースを選択します。
注記
DBパラメータが正しく設定されていないと、RDS から通知されます。このメッセージを受け取った場合は、[Fix it for me] を選択するか、手動で設定することができます。手動で修正する手順については、「ステップ 1: カスタム DB のパラメータグループを作成する」を参照してください。
DB パラメータを変更するには再起動が必要です。統合を作成する前に、再起動が完了し、新しいパラメータ値のデータベースのへの適用が正常に完了している必要があります。
-
ソースデータベースが正常に設定されたら、[次へ] を選択します。
[ターゲット] で、以下を実行します。
(オプション) Amazon SageMaker Lakehouse ターゲットとして別の AWS アカウントを使用するには、[別のアカウントを指定] を選択します。次に、AWS Glue カタログを表示するアクセス許可を持つ IAM ロールの ARN を入力します。IAM ロールの作成手順については、「別のアカウントでターゲット AWS Glue マネージドカタログを選択する」を参照してください。
AWS Glue カタログで、ソースデータベースからのレプリケートデータのターゲットを選択します。既存の AWS Glue マネージドカタログをターゲットとして選択できます。
ターゲット IAM ロールは、ターゲットカタログに対する記述アクセス許可を必要とし、次のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "glue:GetCatalog", "Resource": [ "arn:aws:glue:
region
:account-id
:catalog/*", "arn:aws:glue:region
:account-id
:catalog" ] } ] }ターゲット IAM ロールには、次の信頼関係が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
ステップ 3b: Amazon SageMaker ゼロ ETL 統合用の AWS Glue カタログを作成する で作成された Lake Formation 管理者ロールを使用して、ターゲット AWS Glue マネージドカタログの記述アクセス許可をターゲット IAM ロールに付与する必要があります。
注記
指定された AWS Glue マネージドカタログのリソースポリシーまたは設定が正しく設定されていない場合、RDS から通知されます。このメッセージを受け取った場合は、[修正をお願いする] を選択するか、手動で設定することができます。
選択したソースとターゲットの AWS アカウント が異なる場合、Amazon RDS はこれらの設定を自動的に修正できません。他のアカウントに移動し、SageMaker Unified Studio で手動で修正する必要があります。
-
ターゲット AWS Glue マネージドカタログが正しく設定されたら、[次へ] を選択します。
-
(オプション) [タグ] で、1 つ以上のタグを統合に追加します。詳細については、「Amazon RDS リソースのタグ付け」を参照してください。
-
[暗号化] として、統合の暗号化方法を指定します。デフォルトでは、RDS はすべての統合を AWS 所有のキー で暗号化します。代わりにカスタマーマネージドキーを選択するには、[暗号化設定のカスタマイズ] を有効にして、暗号化に使用する KMS キーを選択します。詳細については、「Amazon RDS リソースの暗号化」を参照してください。
オプションで、暗号化コンテキストを追加します。詳しくは、AWS Key Management Service デベロッパーガイドの Encryption context を参照してください。
注記
Amazon RDS は、追加する以下に加えて、次の暗号化コンテキストペアを追加します。
-
aws:glue:integration:arn
-IntegrationArn
-
aws:servicename:id
-glue
これにより、追加できるペアの総数が 8 から 6 に減り、許可の制約の全体的な文字数制限に影響します。詳細については、「AWS Key Management Service デベロッパーガイド」の「Using grant constraints」を参照してください。
-
-
[次へ] を選択します。
統合設定を確認し、[ゼロ ETL 統合を作成] を選択します。
作成に失敗した場合は、トラブルシューティングの手順について「Amazon RDS ゼロ ETL 統合のトラブルシューティング」を参照してください。
統合のステータスは、作成中は Creating
であり、ターゲット Amazon SageMaker Lakehouse のステータスは Modifying
です。この間、カタログをクエリしたり、設定を変更したりすることはできません。
統合が正常に作成されると、統合とターゲット Amazon SageMaker Lakehouse の両方のステータスが Active
に変わります。
AWS CLI を使用してゼロ ETL 統合用のターゲット AWS Glue マネージドカタログを準備するには、まず create-integration-resource-property コマンドを次のオプションとともに使用する必要があります。
-
--resource-arn
– 統合のターゲットとなる AWS Glue マネージドカタログの ARN を指定します。 -
--target-processing-properties
– ターゲット AWS Glue マネージドカタログにアクセスするための IAM ロールの ARN を指定します。
aws glue create-integration-resource-property --region us-east-1 --resource-arn arn:aws:glue:
region
:account_id
:catalog/catalog_name
\ --target-processing-properties '{"RoleArn" : "arn:aws:iam::account_id
:role/TargetIamRole"}'
AWS CLI を使用して Amazon SageMaker Lakehouse とのゼロ ETL 統合を作成するには、create-integration コマンドに以下のオプションを指定して使用します。
-
--integration-name
— 統合の名前を指定します。 -
--source-arn
— 統合のソースとなる RDS データベースの ARN を指定します。 -
--target-arn
– 統合のターゲットとなる AWS Glue マネージドカタログの ARN を指定します。
Linux、macOS、Unix の場合:
aws rds create-integration \ --integration-name
my-sagemaker-integration
\ --source-arn arn:aws:rds:{region}
:{account-id}
:my-db
\ --target-arn arn:aws:glue:{region}
:{account-id}
:catalog/catalog-name
Windows の場合:
aws rds create-integration ^ --integration-name
my-sagemaker-integration
^ --source-arn arn:aws:rds:{region}
:{account-id}
:my-db
^ --target-arn arn:aws:glue:{region}
:{account-id}
:catalog/catalog-name
Amazon RDS API を使用して Amazon SageMaker とのゼロ ETL 統合を作成するには、以下のパラメータを指定して CreateIntegration
オペレーションを使用します。
注記
カタログ名は 19 文字に制限されています。カタログ名として使用する場合は、IntegrationName パラメータがこの要件を満たしていることを確認します。
-
IntegrationName
— 統合の名前を指定します。 -
SourceArn
— 統合のソースとなる RDS データベースの ARN を指定します。 -
TargetArn
– 統合のターゲットとなる AWS Glue マネージドカタログの ARN を指定します。
カスタマーマネージドキーでの統合の暗号化
Amazon SageMaker との統合の作成時に AWS 所有のキー ではなくカスタム KMS キーを指定する場合、キーポリシーは SageMaker Unified Studio サービスプリンシパルに 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 Glue service principal to add a grant to an AWS KMS key", "Effect": "Allow", "Principal": { "Service": "glue.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 デベロッパーガイド」の「キーポリシーの作成」を参照してください。
次のステップ
Amazon SageMaker とのゼロ ETL 統合を正常に作成したら、ソース RDS データベースへのデータの追加と、Amazon SageMaker Lakehouse でのクエリを開始できます。データは自動的にレプリケートされ、分析や機械学習のワークロードで利用できるようになります。