Amazon SageMaker Lakehouse との Amazon RDS ゼロ ETL 統合の作成 - Amazon Relational Database Service

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"] } ] }' \ --region region
注記

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 統合を作成する方法
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

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

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

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

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

    注記

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

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

  7. ソースデータベースが正常に設定されたら、[次へ] を選択します。

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

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

    2. AWS Glue カタログで、ソースデータベースからのレプリケートデータのターゲットを選択します。既存の AWS Glue マネージドカタログをターゲットとして選択できます。

    3. ターゲット 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" } ] }
    4. ステップ 3b: Amazon SageMaker ゼロ ETL 統合用の AWS Glue カタログを作成する で作成された Lake Formation 管理者ロールを使用して、ターゲット AWS Glue マネージドカタログの記述アクセス許可をターゲット IAM ロールに付与する必要があります。

    注記

    指定された AWS Glue マネージドカタログのリソースポリシーまたは設定が正しく設定されていない場合、RDS から通知されます。このメッセージを受け取った場合は、[修正をお願いする] を選択するか、手動で設定することができます。

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

  9. ターゲット AWS Glue マネージドカタログが正しく設定されたら、[次へ] を選択します。

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

  11. [暗号化] として、統合の暗号化方法を指定します。デフォルトでは、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」を参照してください。

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

  13. 統合設定を確認し、[ゼロ 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 でのクエリを開始できます。データは自動的にレプリケートされ、分析や機械学習のワークロードで利用できるようになります。