View a markdown version of this page

AWS Integrasi zero-ETL untuk sumber database yang dikelola sendiri - AWS Layanan Migrasi Database

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AWS Integrasi zero-ETL untuk sumber database yang dikelola sendiri

AWS Integrasi zero-ETL adalah solusi yang dikelola sepenuhnya yang membuat data transaksional dan operasional tersedia di Amazon Redshift, Amazon S3, dan Amazon S3 Tables dari berbagai sumber database operasional dan transaksional. Menggunakan Zero-ETL, Anda dapat mereplikasi data dari database sumber yang dikelola sendiri seperti MySQL, PostgreSQL, SQL Server, dan Oracle ke Amazon Redshift melalui titik akhir sumber () yang ada AWS Database Migration Service .AWS DMS Sinkronisasi otomatis menghindari proses ekstrak, transformasi, dan muat (ETL) tradisional. Ini juga memungkinkan analitik real-time dan beban kerja AI. Untuk informasi selengkapnya, lihat Integrasi Zero-ETL di Panduan Manajemen Amazon Redshift.

Zero-ETL integrasi memberikan manfaat sebagai berikut:

  • Real-time replikasi data — Sinkronisasi data berkelanjutan dari database Oracle ke Amazon Redshift dengan latensi minimal.

  • Penghapusan pipeline ETL yang kompleks - Tidak perlu membangun dan memelihara solusi integrasi data khusus.

  • Mengurangi overhead operasional — Pengaturan dan manajemen otomatis melalui AWS API.

  • Arsitektur integrasi data yang disederhanakan — Integrasi mulus antara database yang dikelola sendiri dan layanan AWS analitik.

  • Keamanan yang ditingkatkan - Built-in enkripsi dan kontrol akses IAM.

Cara kerja integrasi Zero-ETL untuk sumber database yang dikelola sendiri

Anda dapat menggunakan AWS DMS titik akhir yang ada yang sebelumnya dibuat untuk database yang dikelola sendiri atau membuat yang baru.

  • Gunakan AWS Glue konsol atau CLI untuk membuat integrasi Zero-ETL dengan Amazon Redshift sebagai target dalam katalog. AWS Glue Anda dapat menentukan skema dan filter tabel saat membuat integrasi Zero-ETL.

  • Sumber daya read-only tambahan yang terkait dengan integrasi secara otomatis dibuat dalam layanan. AWS DMS Sumber daya ini termasuk mesin Zero-ETL digunakan untuk memulai beban penuh dan proses perubahan data berkelanjutan, untuk menyinkronkan data dengan database target Amazon Redshift.

  • Anda mengontrol enkripsi data saat membuat sumber integrasi, saat membuat integrasi Zero-ETL, dan saat membuat gudang data Amazon Redshift.

  • Integrasi memantau kondisi pipeline data dan memulihkan dari masalah jika memungkinkan.

  • Anda dapat membuat integrasi dari sumber jenis yang sama ke dalam gudang data Amazon Redshift tunggal untuk mendapatkan wawasan holistik di beberapa aplikasi.

Setelah data direplikasi, Anda dapat menggunakan kemampuan analitik Amazon Redshift. Misalnya, pembelajaran mesin bawaan (ML), tampilan terwujud, berbagi data, dan akses langsung ke beberapa penyimpanan data dan danau data. Untuk insinyur data, integrasi Zero-ETL menyediakan akses ke data sensitif waktu yang sebaliknya dapat tertunda oleh kesalahan intermiten dalam pipeline data yang kompleks. Anda dapat menjalankan kueri analitis dan model ML pada data transaksional untuk mendapatkan wawasan tepat waktu untuk peristiwa yang sensitif terhadap waktu dan keputusan bisnis.

Anda dapat membuat langganan notifikasi acara Amazon Redshift agar diberi tahu secara otomatis saat terjadi masalah untuk integrasi Zero-ETL apa pun. Untuk melihat daftar notifikasi peristiwa terkait integrasi, lihat pemberitahuan acara Zero-ETL integrasi dengan Amazon. EventBridge Cara paling sederhana untuk membuat langganan adalah dengan konsol Amazon Simple Notification Service. Untuk informasi tentang membuat topik Amazon SNS dan berlangganan, lihat Memulai Amazon SNS di Panduan Pengembang Layanan Pemberitahuan S ederhana Amazon.

Konfigurasi database sumber sebelum membuat integrasi

Sebelum mengkonfigurasi integrasi Zero-ETL, Anda harus mengkonfigurasi database sumber dengan benar sesuai dengan persyaratan untuk mesin database Anda. Setiap mesin memiliki persyaratan dan batasan konfigurasi tertentu.

SQL Server

catatan

RDS SQL Server dan Azure SQL Server tidak dapat digunakan sebagai sumber untuk integrasi Zero-ETL yang dikelola sendiri.

Oracle

MySQL

PostgreSQL

Menyiapkan izin dan enkripsi IAM untuk integrasi Zero-ETL

Untuk membuat dan mengelola integrasi Zero-ETL, Anda perlu mengonfigurasi izin IAM yang sesuai, kunci enkripsi AWS Key Management Service (AWS KMS), dan kebijakan sumber daya. Bagian ini memberikan panduan untuk menyiapkan komponen keamanan yang diperlukan.

Prasyarat

Sebelum membuat integrasi Zero-ETL, pastikan Anda memiliki yang berikut:

  • Pengguna atau peran IAM dengan izin yang sesuai untuk membuat dan mengelola integrasi

  • Konfigurasikan titik akhir AWS DMS sumber untuk database yang dikelola sendiri. Untuk informasi selengkapnya, lihat Konfigurasi database sumber sebelum membuat integrasi.

  • Cluster yang disediakan Amazon Redshift sebagai target

    catatan

    Amazon Redshift Serverless tidak dapat digunakan sebagai target untuk integrasi Zero-ETL dari sumber yang dikelola sendiri.

  • Konfigurasi jaringan termasuk subnet VPC dan grup keamanan

Membuat kunci KMS

Pertama, buat AWS KMS kunci yang dikelola pelanggan untuk mengenkripsi data dalam integrasi Zero-ETL Anda. Contoh berikut membuat kunci enkripsi simetris:

aws kms create-key \ --description "On-prem Zero-ETL Integration Encryption Key" \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --region region

Perhatikan KeyId dan Arn dari tanggapan, karena Anda akan membutuhkannya saat mengonfigurasi kebijakan kunci dan membuat integrasi.

Contoh output:

{ "KeyMetadata": { "AWSAccountId": "account-id", "KeyId": "4e2c14f8-7abe-4aec-851a-379f6ed973a8", "Arn": "arn:aws:kms:region:account-id:key/4e2c14f8-7abe-4aec-851a-379f6ed973a8", "CreationDate": 1763155061.148, "Enabled": true, "Description": "Zero-ETL Integration Encryption Key", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } }

Mengkonfigurasi kebijakan kunci KMS

Setelah membuat kunci KMS, konfigurasikan kebijakan kunci agar Amazon Redshift dan AWS Glue layanan dapat menggunakan kunci untuk operasi enkripsi dan dekripsi. Kebijakan kunci harus memberikan izin yang diperlukan kepada prinsipal layanan dan menyertakan konteks enkripsi yang akan digunakan selama pembuatan integrasi.

Contoh berikut menunjukkan kebijakan utama untuk integrasi Zero-ETL:

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Redshift and glue service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "glue.amazonaws.com" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:context-key": "context-value" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant", "GenerateDataKeyWithoutPlaintext", "ReEncryptTo" ] } } } ] }

kms:EncryptionContextKondisi harus sesuai dengan konteks enkripsi tambahan yang Anda tentukan saat membuat integrasi. Anda dapat memperbarui kebijakan kunci menggunakan AWS KMS konsol atau perintah CLI berikut:

aws kms put-key-policy \ --key-id key-id \ --policy-name default \ --policy file://kms-key-policy.json

Membuat pengguna IAM dan mengonfigurasi AWS CLI

Buat pengguna IAM yang akan digunakan untuk mengelola integrasi Zero-ETL dan mengonfigurasi AWS CLI dengan kredenSIAL yang sesuai.

  1. Buat pengguna IAM:

    aws iam create-user --user-name cli-user
  2. Buat kunci akses untuk pengguna:

    aws iam create-access-key --user-name cli-user

    Simpan AccessKeyId dan SecretAccessKey dari output, karena Anda akan membutuhkannya untuk mengkonfigurasi AWS CLI.

Membuat dan melampirkan kebijakan IAM

Buat kebijakan IAM yang memberikan izin untuk operasi integrasi Zero-ETL. Kebijakan harus mencakup izin untuk AWS Glue, AWS DMS, Amazon Redshift, AWS KMS, dan.

Simpan kebijakan berikut ke file (misalnya,/tmp/zetl-policy.json):

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ZetlGlueIntegrationAccess", "Effect": "Allow", "Action": [ "glue:CreateIntegration", "glue:ModifyIntegration", "glue:DeleteIntegration", "glue:DescribeIntegrations", "glue:DescribeInboundIntegrations" ], "Resource": "*" }, { "Sid": "DMSIntegrationAccess", "Effect": "Allow", "Action": [ "dms:CreateOutboundIntegration", "dms:ModifyOutboundIntegration", "dms:CreateEndpoint", "dms:DescribeEndpoints", "dms:ModifyEndpoint", "dms:DeleteEndpoint", "dms:TestConnection" ], "Resource": "*" }, { "Sid": "ZetlRedshiftFullAccess", "Effect": "Allow", "Action": [ "redshift:*", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "sns:CreateTopic", "sns:Get*", "sns:List*", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "cloudwatch:PutMetricAlarm", "cloudwatch:EnableAlarmActions", "cloudwatch:DisableAlarmActions", "tag:GetResources", "tag:UntagResources", "tag:GetTagValues", "tag:GetTagKeys", "tag:TagResources" ], "Resource": "*" }, { "Sid": "ZetlRedshiftDataAPI", "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:CancelStatement", "redshift-data:ListStatements", "redshift-data:GetStatementResult", "redshift-data:DescribeStatement", "redshift-data:ListDatabases", "redshift-data:ListSchemas", "redshift-data:ListTables", "redshift-data:DescribeTable" ], "Resource": "*" }, { "Sid": "ZetlKMSAccess", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ListKeys", "kms:CreateAlias", "kms:ListAliases", "kms:CreateGrant" ], "Resource": "*" }, { "Sid": "ZetlSecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DeleteSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets", "secretsmanager:GetResourcePolicy", "secretsmanager:PutResourcePolicy", "secretsmanager:ValidateResourcePolicy" ], "Resource": "*" } ] }

Buat kebijakan dan lampirkan ke pengguna IAM:

aws iam create-policy \ --policy-name ZetlCustomPolicy \ --policy-document file:///tmp/zetl-policy.json aws iam attach-user-policy \ --policy-arn arn:aws:iam::account-id:policy/ZetlCustomPolicy \ --user-name cli-user

Mengonfigurasi AWS Profil CLI

Konfigurasikan profil AWS CLI dengan kredenSIAL pengguna yang dibuat pada langkah sebelumnya:

aws configure set aws_access_key_id ACCESS_KEY_ID --profile cli-user aws configure set aws_secret_access_key SECRET_ACCESS_KEY --profile cli-user aws configure set region region --profile cli-user aws configure set output json --profile cli-user

Uji konfigurasi profil:

aws sts get-caller-identity --profile cli-user

Output harus menampilkan ID akun pengguna, ID pengguna, dan ARN, mengonfirmasi bahwa profil dikonfigurasi dengan benar.

Membuat kebijakan sumber daya Redshift

Buat kebijakan sumber daya Amazon Redshift untuk mengotorisasi titik akhir AWS DMS sumber untuk membuat integrasi masuk dengan namespace Amazon Redshift Anda. Kebijakan ini dilampirkan ke namespace Amazon Redshift dan mengontrol sumber mana yang dapat mereplikasi data ke dalamnya.

Contoh berikut menunjukkan cara membuat kebijakan sumber daya untuk namespace Amazon Redshift:

aws redshift put-resource-policy \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["redshift.amazonaws.com"] }, "Action": ["redshift:AuthorizeInboundIntegration"], "Resource": "arn:aws:redshift:region:account-id:namespace:namespace-id", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id" } } }, { "Effect": "Allow", "Principal": { "AWS": "account-id" }, "Action": [ "redshift:CreateInboundIntegration", "redshift:ModifyInboundIntegration" ], "Resource": "arn:aws:redshift:region:account-id:namespace:namespace-id" } ] }' \ --resource-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --region region

Ganti placeholder berikut:

  • region— Wil AWS ayah tempat sumber daya Anda berada

  • account-id— ID AWS akun Anda

  • endpoint-id— ID titik akhir AWS DMS sumber Anda

  • namespace-id— ID namespace Amazon Redshift Anda

Contoh: Membuat integrasi Zero-ETL dengan enkripsi

Setelah menyiapkan izin dan kunci enkripsi yang diperlukan, Anda dapat membuat integrasi Zero-ETL menggunakan AWS Glue API. Contoh berikut menunjukkan pembuatan integrasi dari sumber MySQL ke target Amazon Redshift dengan enkripsi KMS:

aws glue create-integration \ --integration-name mysql-onprem-integration \ --source-arn arn:aws:dms:region:account-id:endpoint:source-endpoint-id \ --target-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --description "MySQL to Redshift integration" \ --integration-config '{"SourceProperties":{"SubnetIds":"subnet-id1,subnet-id2,subnet-id3","VpcSecurityGroupIds":"sg-id"}}' \ --data-filter "include: mysql.*" \ --kms-key-id arn:aws:kms:region:account-id:key/key-id \ --additional-encryption-context '{"context-key": "context-value"}' \ --profile cli-user \ --region region

Perintah ini mencakup parameter kunci berikut:

  • --integration-name— Nama unik untuk integrasi Anda

  • --source-arn— ARN titik akhir AWS DMS sumber Anda

  • --target-arn— ARN dari namespace Amazon Redshift Anda

  • --integration-config— Konfigurasi jaringan termasuk ID subnet dan grup keamanan

  • --data-filter- Menentukan skema dan tabel mana yang akan direplikasi

  • --kms-key-id— ARN AWS KMS kunci untuk enkripsi

  • --additional-encryption-context— Pasangan kunci-nilai konteks enkripsi yang harus sesuai dengan kebijakan kunci KMS (mis.,) {"context-key": "context-value"}

  • --profile— Profil AWS CLI untuk digunakan (profil cli-user yang dibuat sebelumnya)

Setelah pembuatan berhasil, perintah mengembalikan detail integrasi termasuk ARN integrasi, status, dan parameter konfigurasi. Contoh output:

{ "SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id", "TargetArn": "arn:aws:redshift:region:account-id:namespace:namespace-id", "IntegrationName": "mysql-onprem-integration", "IntegrationArn": "arn:aws:glue:region:account-id:integration:integration-id", "KmsKeyId": "arn:aws:kms:region:account-id:key/key-id", "AdditionalEncryptionContext": { "context-key": "context-value" }, "Status": "CREATED", "CreateTime": 1763234086.001, "DataFilter": "include: mysql.*", "IntegrationConfig": { "SourceProperties": { "SubnetIds": "subnet-id1,subnet-id2,subnet-id3", "VpcSecurityGroupIds": "sg-id" } } }

Praktik terbaik keamanan

Ikuti praktik terbaik keamanan ini saat menyiapkan integrasi Zero-ETL:

  • Gunakan akses hak istimewa paling sedikit — Berikan hanya izin minimum yang diperlukan untuk membuat dan mengelola integrasi. Pertimbangkan untuk menggunakan izin tingkat sumber daya jika memungkinkan.

  • Aktifkan enkripsi — Selalu gunakan AWS KMS kunci yang dikelola pelanggan untuk mengenkripsi data integrasi. Tentukan konteks enkripsi untuk keamanan tambahan.

  • Putar kredenSIAL secara teratur — Jika menggunakan kunci akses pengguna IAM, putar secara teratur. Pertimbangkan untuk menggunakan peran IAM dengan kredenSIAL sementara sebagai gantinya.

  • Memantau akses — Digunakan AWS CloudTrail untuk memantau panggilan API yang terkait dengan pembuatan dan pengelolaan integrasi.

  • Batasi akses jaringan — Konfigurasikan grup keamanan VPC untuk membatasi akses jaringan hanya ke sumber daya yang diperlukan.

  • Gunakan kebijakan sumber daya — Terapkan kebijakan sumber daya Amazon Redshift untuk mengontrol sumber mana yang dapat membuat integrasi dengan gudang data Anda.

  • Sumber daya tag — Terapkan tag ke integrasi dan sumber daya terkait untuk organisasi dan pelacakan biaya yang lebih baik.