Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWSIntegrasi nol-ETL untuk sumber database yang dikelola sendiri
AWSIntegrasi nol-ETL adalah solusi terkelola penuh yang membuat data transaksional dan operasional tersedia di Amazon Redshift, Amazon S3, dan Amazon S3 Tabel 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 beban (ETL) tradisional. Ini juga memungkinkan analitik real-time dan beban kerja AI. Untuk informasi selengkapnya, lihat Integrasi nol-ETL di Panduan Manajemen Pergeseran Merah Amazon.
Integrasi nol-ETL memberikan manfaat sebagai berikut:
-
Replikasi data real-time - Sinkronisasi data berkelanjutan dari database Oracle ke Amazon Redshift dengan latensi minimal.
-
Penghapusan jaringan pipa ETL yang kompleks — Tidak perlu membangun dan memelihara solusi integrasi data khusus.
-
Mengurangi overhead operasional - Pengaturan dan manajemen otomatis melalui AWSAPIs.
-
Arsitektur integrasi data yang disederhanakan - Integrasi tanpa batas antara database yang dikelola sendiri dan AWS layanan analitik.
-
Keamanan yang ditingkatkan - Enkripsi bawaan dan kontrol akses IAM.
Bagaimana integrasi nol-ETL bekerja untuk sumber database yang dikelola sendiri
Anda dapat menggunakan AWS DMS endpoint yang sudah ada yang sebelumnya dibuat untuk database yang dikelola sendiri atau membuat yang baru.
-
Gunakan AWS Glue konsol atau CLI untuk membuat integrasi nol-ETL dengan Amazon Redshift sebagai target dalam katalog. AWS Glue Anda dapat menentukan skema dan filter tabel saat membuat integrasi nol-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 basis data target Amazon Redshift.
-
Anda mengontrol enkripsi data saat membuat sumber integrasi, saat membuat integrasi nol-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 dengan jenis yang sama ke dalam satu gudang data Amazon Redshift untuk memperoleh 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 data lake. Untuk insinyur data, integrasi nol-ETL menyediakan akses ke data sensitif waktu yang jika tidak dapat ditunda oleh kesalahan intermiten dalam jaringan data yang kompleks. Anda dapat menjalankan kueri analitis dan model ML pada data transaksional untuk mendapatkan wawasan tepat waktu untuk peristiwa dan keputusan bisnis yang sensitif terhadap waktu.
Anda dapat membuat langganan notifikasi acara Amazon Redshift agar diberi tahu secara otomatis saat terjadi masalah untuk integrasi nol-ETL apa pun. Untuk melihat daftar notifikasi peristiwa terkait integrasi, lihat Notifikasi peristiwa integrasi nol-ETL dengan Amazon. EventBridge Cara termudah untuk membuat langganan adalah dengan konsol Amazon Simple Notification Service. Untuk informasi tentang cara membuat topik Amazon SNS dan berlangganan topik tersebut, lihat Memulai Amazon SNS di Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon.
Menyiapkan izin dan enkripsi IAM untuk integrasi nol-ETL
Untuk membuat dan mengelola integrasi nol-ETL, Anda perlu mengonfigurasi izin IAM yang sesuai, AWS Key Management Service (AWS KMS) kunci enkripsi, dan kebijakan sumber daya. Bagian ini memberikan panduan tentang pengaturan komponen keamanan yang diperlukan.
Prasyarat
Sebelum membuat integrasi nol-ETL, pastikan Anda memiliki yang berikut:
-
Pengguna IAM atau peran dengan izin yang sesuai untuk membuat dan mengelola integrasi
-
Titik akhir AWS DMS sumber yang ada untuk database yang dikelola sendiri
-
Cluster yang disediakan Amazon Redshift atau namespace tanpa server sebagai target
-
Konfigurasi jaringan termasuk subnet VPC dan grup keamanan
Membuat kunci KMS
Pertama, buat AWS KMS kunci yang dikelola pelanggan untuk mengenkripsi data dalam integrasi nol-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 \ --regionregion
Perhatikan KeyId dan Arn dari respons, 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 untuk memungkinkan Amazon Redshift AWS Glue dan layanan 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 kunci untuk integrasi nol-ETL:
{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id: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-idkey-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 nol-ETL dan mengkonfigurasi CLI dengan kredensil yang AWS sesuai.
-
Buat pengguna IAM:
aws iam create-user --user-namecli-user -
Buat kunci akses untuk pengguna:
aws iam create-access-key --user-namecli-userSimpan
AccessKeyIddanSecretAccessKeydari output, karena Anda akan membutuhkannya untuk mengkonfigurasi AWS CLI.
Membuat dan melampirkan kebijakan IAM
Buat kebijakan IAM yang memberikan izin untuk operasi integrasi nol-ETL. Kebijakan tersebut harus mencakup izin untuk AWS GlueAWS DMS, Amazon RedshiftAWS 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:*", "redshift-serverless:*", "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-namecli-user
Mengkonfigurasi profil AWS CLI
Konfigurasikan profil AWS CLI dengan kredensi pengguna yang dibuat pada langkah sebelumnya:
aws configure set aws_access_key_idACCESS_KEY_ID--profilecli-useraws configure set aws_secret_access_keySECRET_ACCESS_KEY--profilecli-useraws configure set regionregion--profilecli-useraws configure set output json --profilecli-user
Uji konfigurasi profil:
aws sts get-caller-identity --profilecli-user
Output harus menampilkan ID akun pengguna, ID pengguna, dan ARN, yang 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"], "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 arn:aws:redshift:region:account-id:namespace:namespace-id\ --regionregion
Ganti placeholder berikut:
-
region— AWS Wilayah 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 nol-ETL dengan enkripsi
Setelah menyiapkan izin dan kunci enkripsi yang diperlukan, Anda dapat membuat integrasi nol-ETL menggunakan API. AWS Glue Contoh berikut menunjukkan pembuatan integrasi dari sumber MySQL ke target Amazon Redshift dengan enkripsi KMS:
aws glue create-integration \ --integration-namemysql-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"}' \ --profilecli-user\ --regionregion
Perintah ini mencakup parameter kunci berikut:
-
--integration-name— Nama unik untuk integrasi Anda -
--source-arn— ARN dari titik akhir sumber Anda AWS DMS -
--target-arn— ARN dari namespace Amazon Redshift Anda -
--integration-config— Konfigurasi jaringan termasuk subnet IDs dan grup keamanan -
--data-filter- Menentukan skema dan tabel untuk mereplikasi -
--kms-key-id— ARN AWS KMS kunci untuk enkripsi -
--additional-encryption-context— Pasangan nilai kunci konteks enkripsi yang harus cocok dengan kebijakan kunci KMS (misalnya,){"context-key": "context-value"} -
--profile— Profil AWS CLI yang akan 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 nol-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 kredensil secara teratur - Jika menggunakan kunci akses pengguna IAM, putar secara teratur. Pertimbangkan untuk menggunakan peran IAM dengan kredensi sementara sebagai gantinya.
-
Akses monitor — Gunakan AWS CloudTrail untuk memantau panggilan API yang terkait dengan pembuatan dan manajemen 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.