Oracle Database@AWS と Amazon Redshift の統合の設定
Oracle データベースと Amazon Redshift 間のゼロ ETL 統合を設定するには、次の手順を実行します。
-
ODB ネットワークでゼロ ETL を有効にします。
-
Oracle データベースの前提条件を設定します。
-
AWS Secrets Manager と AWS Key Management Service をセットアップします。
-
IAM 許可を設定します。
-
Amazon Redshift リソースポリシーを設定します。
-
ゼロ ETL 統合を作成します。
-
Amazon Redshift にターゲットデータベースを作成します。
ステップ 1: ODB ネットワークのゼロ ETL を有効にする
ソース VM クラスターに関連付けられた ODB ネットワークのゼロ ETL 統合を有効にできます。デフォルトでは、この統合は無効になっています。
ゼロ ETL 統合を有効にするには
-
https://console.aws.amazon.com/odb/
で Oracle Database@AWS コンソールを開きます。 -
ナビゲーションペインで [ODB ネットワーク] を選択します。
-
ゼロ ETL 統合を有効にする ODB ネットワークを選択します。
-
[Modify] (変更) を選択します。
-
[ゼロ ETL] を選択します。
-
[続行] を選択してから、[修正] を選択します。
ゼロ ETL 統合を有効にするには、--zero-etl-access パラメータを指定して update-odb-network コマンドを使用します。
aws odb update-odb-network \ --odb-network-idodb-network-id\ --zero-etl-access ENABLED
ソース VM クラスターに関連付けられた ODB ネットワークのゼロ ETL 統合を有効にするには、update-odb-network コマンドを使用します。このコマンドは、ゼロ ETL 統合に必要なネットワークインフラストラクチャを設定します。
aws odb update-odb-network \ --odb-network-idyour-odb-network-id\ --zero-etl-access ENABLED
ステップ 2: Oracle データベースの設定
「前提条件」の説明に従って Oracle データベース設定を完了します。
レプリケーションユーザーを作成し、必要なアクセス許可を付与します。
アーカイブ REDO ログを有効にします。
SSL を設定します (Oracle Exadata のみ)。
該当する場合、ASM ユーザーを設定します (Oracle Exadata のみ)。
ステップ 3: AWS Secrets Manager と AWS Key Management Service をセットアップする
カスタマーマネージドキー (CMK) を作成し、データベース認証情報を保存します。
-
create-keyコマンドを使用して AWS Key Management Service で CMK を作成します。aws kms create-key \ --description "ODB Zero-ETL Integration Key" \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT -
AWS Secrets Manager にデータベース認証情報を保存します。
aws secretsmanager create-secret \ --name "ODBZeroETLCredentials" \ --description "Credentials for Oracle Database@AWS Zero-ETL integration" \ --kms-key-idyour-cmk-key-arn\ --secret-string file://secret-content.json -
Oracle Database@AWS アクセスを許可するには、シークレットにリソースポリシーをアタッチします。
aws secretsmanager put-resource-policy \ --secret-id "ODBZeroETLCredentials" \ --resource-policy file://secret-resource-policy.json上記のコマンドでは、
secret-resource-policy.jsonに次の JSON が含まれています。 -
CMK にリソースポリシーをアタッチします。暗号化されたゼロ ETL 統合をサポートするには、CMK リソースポリシーに Oracle Database@AWS サービスプリンシパルと Amazon Redshift サービスプリンシパルの両方のアクセス許可を含める必要があります。
aws kms put-key-policy \ --key-idyour-cmk-key-arn\ --policy-name default \ --policy file://cmk-resource-policy.jsoncmk-resource-policy.jsonには次のポリシーステートメントを含める必要があります。最初のステートメントは Oracle Database@AWS サービスアクセスを許可し、2 番目のステートメントは Amazon Redshift が暗号化されたデータオペレーションの KMS キーに許可を作成できるようにします。
ステップ 4: IAM のアクセス許可を設定する
ゼロ ETL 統合オペレーションを許可する IAM ポリシーを作成してアタッチします。
aws iam create-policy \ --policy-name "ODBZeroETLIntegrationPolicy" \ --policy-document file://odb-zetl-iam-policy.json aws iam attach-user-policy \ --user-nameyour-iam-username\ --policy-arnpolicy-arn
次のポリシーは必要なアクセス許可を付与します。
ステップ 5: Amazon Redshift リソースポリシーを設定する
Amazon Redshift クラスターにリソースポリシーを設定して、インバウンド統合を承認します。
aws redshift put-resource-policy \ --no-verify-ssl \ --resource-arn "your-redshift-cluster-arn" \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "redshift:AuthorizeInboundIntegration" ], "Condition": { "StringEquals": { "aws:SourceArn": "your-vm-cluster-arn" } } }, { "Effect": "Allow", "Principal": { "AWS": "your-account-id" }, "Action": [ "redshift:CreateInboundIntegration" ] } ] }' \ --region us-west-2
ヒント
または、AWS コンソールで [私のために修正] オプションを使用することもできます。このオプションを使用すると、手動で設定する必要なく、必要な Amazon Redshift ポリシーが自動的に設定されます。
ステップ 6: AWS Glue を使用してゼロ ETL 統合を作成する
AWS Glue create-integration コマンドを使用してゼロ ETL 統合を作成します。このコマンドでは、ソース VM クラスターとターゲット Amazon Redshift 名前空間を指定します。
次の例では、Exadata VM クラスターで実行されている pdb1 という名前の PDB との統合を作成します。ソース ARN で cloud-vm-cluster を cloud-autonomous-vm-cluster に置き換えることで、Autonomous VM クラスターを作成することもできます。KMS キーの指定はオプションです。キーを指定する場合、ステップ 3: AWS Secrets Manager と AWS Key Management Service をセットアップする で作成したキーとは異なる場合があります。
aws glue create-integration \ --integration-name "MyODBZeroETLIntegration" \ --source-arn "arn:aws:odb:region:account:cloud-vm-cluster/cluster-id" \ --target-arn "arn:aws:redshift:region:account:namespace/namespace-id" \ --data-filter "include:pdb1.*.*" \ --integration-config '{ "RefreshInterval": "10", "IntegrationMode": "DEFAULT", "SourcePropertiesMap": { "secret-arn": "arn:aws:secretsmanager:region:account:secret:secret-name" } }' \ --description "Zero-ETL integration for Oracle to Amazon Redshift" \ --kms-key-id "arn:aws:kms:region:account:key/key-id"
コマンドは統合 ARN を返し、ステータスを creating に設定します。describe-integrations コマンドを使用して統合ステータスをモニタリングできます。
aws glue describe-integrations \ --integration-identifierintegration-id
重要
統合ごとに 1 つの PDB のみがサポートされます。データフィルターでは、include: pdb1.*.* のように単一の PDB を指定する必要があります。ソースは、統合が作成される AWS リージョンおよびアカウントと同じリージョンおよびアカウントにある必要があります。
ステップ 7: Amazon Redshift でターゲットデータベースを作成する
統合がアクティブになったら、Amazon Redshift クラスターにターゲットデータベースを作成します。
-- Connect to your Amazon Redshift cluster psql -hyour-redshift-endpoint-Uusername-ddatabase-- Create database from integration CREATE DATABASEtarget_database_nameFROM INTEGRATION 'integration-id' DATABASE "source_pdb_name";
ターゲットデータベースを作成したら、レプリケートされたデータをクエリできます。
-- List databases to verify creation \l -- Connect to the new database \ctarget_database_name-- List tables to see replicated data \dt
ゼロ ETL 統合を検証する
AWS Glue で統合ステータスをクエリし、Oracle の変更が Amazon Redshift にレプリケートされていることを確認することで、統合が機能していることを確認します。
ゼロ ETL 統合が正しく機能していることを確認するには
-
統合ステータスを確認します。
aws glue describe-integrations \ --integration-identifierintegration-idステータスは
ACTIVEまたはREPLICATINGである必要があります。 -
Oracle データベースに変更を加え、Amazon Redshift に反映されるかどうかを確認して、データのレプリケーションを検証します。
-
Amazon CloudWatch でレプリケーションメトリクスをモニタリングします (利用可能な場合)。