Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat integrasi Zero-ETL untuk DynamoDB
Sebelum membuat integrasi Zero-ETL, tinjau pertimbangan dan persyaratan yang diuraikan diPertimbangan saat menggunakan integrasi Zero-ETL dengan Amazon Redshift. Ikuti alur umum ini untuk membuat integrasi Zero-ETL dari DynamoDB ke Amazon Redshift
Pada langkah ini, Anda membuat integrasi Amazon DynamoDB Zero-ETL dengan Amazon Redshift.
- Amazon Redshift console
-
Cara membuat integrasi Amazon DynamoDB Zero-ETL dengan Amazon Redshift menggunakan konsol Amazon Redshift
-
Dari konsol Amazon Redshift, pilih Zero-ETL integrasi. Pada panel dengan daftar integrasi Zero-ETL, pilih Buat integrasi Zero-ETL, Buat integrasi Dynamo DB.
-
Pada halaman untuk membuat integrasi, masukkan informasi tentang integrasi sebagai berikut:
-
Masukkan nama Integrasi — Yang merupakan nama unik yang dapat digunakan untuk mereferensikan integrasi Anda.
-
Masukkan Deskripsi - Itu menjelaskan data yang akan direplikasi dari sumber ke target.
-
Pilih tabel Sumber DynamoDB — Satu tabel DynamoDB dapat dipilih. Point-in-time pemulihan (PITR) harus diaktifkan di atas meja. Hanya tabel dengan ukuran tabel hingga 100 tebibytes (TiB) yang ditampilkan. Tabel sumber DynamoDB harus dienkripsi. Sumber juga harus memiliki kebijakan sumber daya dengan prinsipal resmi dan sumber integrasi. Jika kebijakan ini tidak benar, Anda disajikan dengan opsi Per baiki untuk saya.
-
Pilih gudang data Amazon Redshift target — Gudang data dapat berupa cluster yang disediakan Amazon Redshift atau kelompok kerja Redshift Serverless. Jika target Amazon Redshift Anda ada di akun yang sama, Anda dapat memilih target. Jika target berada di akun yang berbeda, Anda menentukan gudang data Redshift AR N. Target harus memiliki kebijakan sumber daya dengan prinsipal resmi dan sumber integrasi dan enable_case_sensitive_identifier parameter disetel ke true. Jika Anda tidak memiliki kebijakan sumber daya yang benar pada target dan target Anda berada di akun yang sama, Anda dapat memilih opsi Per baiki untuk saya untuk menerapkan kebijakan sumber daya secara otomatis selama proses integrasi buat. Jika target Anda berbeda Akun AWS, Anda perlu menerapkan kebijakan sumber daya di gudang Amazon Redshift secara manual. Jika gudang data Amazon Redshift target Anda tidak memiliki opsi grup parameter yang benar enable_case_sensitive_identifier dikonfigurasi sebagaitrue, Anda dapat memilih opsi Per baiki untuk saya untuk memperbarui grup parameter ini secara otomatis dan me-reboot gudang selama proses integrasi buat.
-
Masukkan hingga 50 K unci tag dan dengan Nilai opsional — Untuk memberikan metadata tambahan tentang integrasi. Untuk informasi selengkapnya, lihat Menandai sumber daya di Amazon Redshift.
-
Pilih Opsi enkripsi — Untuk mengenkripsi integrasi. Untuk informasi selengkapnya, lihat Mengenkripsi integrasi DynamoDB dengan kunci yang dikelola pelanggan.
Saat Anda mengenkripsi integrasi, Anda juga dapat menambahkan konteks enkripsi tambahan. Untuk informasi selengkapnya, lihat Konteks enkripsi.
-
Halaman ulasan ditampilkan di mana Anda dapat memilih Buat integrasi DynamoDB.
-
Halaman kemajuan ditampilkan di mana Anda dapat melihat kemajuan berbagai tugas untuk membuat integrasi Zero-ETL.
-
Setelah integrasi dibuat dan aktif, pada halaman detail integrasi, pilih Hubun gkan ke database. Saat gudang data Amazon Redshift Anda pertama kali dibuat, database juga dibuat. Anda perlu terhubung ke database apa pun di gudang data target Anda untuk membuat database lain untuk integrasi. Di halaman Hubungkan ke database, tentukan apakah Anda dapat menggunakan koneksi terbaru dan memilih metode Oten tikasi. Tergantung pada metode otentikasi Anda, masukkan informasi untuk terhubung ke database yang ada di target Anda. Informasi otentikasi ini dapat mencakup nama Database yang ada (biasanya,dev) dan pengguna Database yang ditentukan saat database dibuat dengan gudang data Amazon Redshift.
-
Setelah Anda terhubung ke database, pilih Buat database dari integrasi untuk membuat database yang menerima data dari sumber. Ketika Anda membuat database, Anda memberikan ID Integrasi, nama gudang data, dan nama Database.
-
Setelah status integrasi dan database tujuanActive, data mulai mereplikasi dari tabel DynamoDB Anda ke tabel target. Saat Anda menambahkan data ke sumber, data akan mereplikasi secara otomatis ke gudang data Amazon Redshift target.
- AWS CLI
-
Untuk membuat integrasi Amazon DynamoDB Zero-ETL dengan Amazon Redshift menggunakan AWS CLI, gunakan create-integration perintah dengan opsi berikut:
-
integration-name – Tentukan nama untuk integrasi.
-
source-arn— Tentukan ARN dari sumber DynamoDB.
-
target-arn— Tentukan namespace ARN dari cluster yang disediakan Amazon Redshift atau target kelompok kerja Redshift Serverless.
Contoh berikut membuat integrasi dengan memberikan nama integrasi, sumber ARN, dan target ARN. Integrasi tidak dienkripsi.
aws redshift create-integration \
--integration-name ddb-integration \
--source-arn arn:aws:dynamodb:us-east-1:123456789012:table/books \
--target-arn arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222
{
"Status": "creating",
"IntegrationArn": "arn:aws:redshift:us-east-1:123456789012:integration:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Errors": [],
"ResponseMetadata": {
"RetryAttempts": 0,
"HTTPStatusCode": 200,
"RequestId": "132cbe27-fd10-4f0a-aacb-b68f10bb2bfb",
"HTTPHeaders": {
"x-amzn-requestid": "132cbe27-fd10-4f0a-aacb-b68f10bb2bfb",
"date": "Sat, 24 Aug 2024 05:44:08 GMT",
"content-length": "934",
"content-type": "text/xml"
}
},
"Tags": [],
"CreateTime": "2024-08-24T05:44:08.573Z",
"KMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
"AdditionalEncryptionContext": {},
"TargetArn": "arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"IntegrationName": "ddb-integration",
"SourceArn": "arn:aws:dynamodb:us-east-1:123456789012:table/books"
}
Contoh berikut membuat integrasi menggunakan kunci yang dikelola pelanggan untuk enkripsi. Sebelum membuat integrasi:
-
Buat kunci yang dikelola pelanggan (disebut “CMCMK” dalam contoh) di akun yang sama (disebut “AccountA” dalam contoh) di tabel DynamoDB sumber.
-
Pastikan bahwa user/role (disebut “rolEA” dalam contoh) digunakan untuk membuat integrasi memiliki kms:CreateGrant dan kms:DescribeKey izin pada kunci KMS ini.
-
Tambahkan yang berikut ini ke kebijakan utama.
{
"Sid": "Enable RoleA to create grants with key",
"Effect": "Allow",
"Principal": {
"AWS": "RoleA-ARN"
},
"Action": "kms:CreateGrant",
"Resource": "*",
"Condition": {
// Add "StringEquals" condition if you plan to provide additional encryption context
// for the zero-ETL integration. Ensure that the key-value pairs added here match
// the key-value pair you plan to use while creating the integration.
// Remove this if you don't plan to use additional encryption context
"StringEquals": {
"kms:EncryptionContext:context-key1": "context-value1"
},
"ForAllValues:StringEquals": {
"kms:GrantOperations": [
"Decrypt",
"GenerateDataKey",
"CreateGrant"
]
}
}
},
{
"Sid": "Enable RoleA to describe key",
"Effect": "Allow",
"Principal": {
"AWS": "RoleA-ARN"
},
"Action": "kms:DescribeKey",
"Resource": "*"
},
{
"Sid": "Allow use by RS SP",
"Effect": "Allow",
"Principal": {
"Service": "redshift.amazonaws.com"
},
"Action": "kms:CreateGrant",
"Resource": "*"
}
aws redshift create-integration \
--integration-name ddb-integration \
--source-arn arn:aws:dynamodb:us-east-1:123456789012:table/books \
--target-arn arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333 \
--additional-encryption-context key33=value33 // This matches the condition in the key policy.
{
"IntegrationArn": "arn:aws:redshift:us-east-1:123456789012:integration:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"IntegrationName": "ddb-integration",
"SourceArn": "arn:aws:dynamodb:us-east-1:123456789012:table/books",
"SourceType": "dynamodb",
"TargetArn": "arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Status": "creating",
"Errors": [],
"CreateTime": "2024-10-02T18:29:26.710Z",
"KMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
"AdditionalEncryptionContext": {
"key33": "value33"
},
"Tags": []
}
Kebijakan IAM untuk bekerja dengan integrasi DynamoDB Zero-ETL
Saat membuat integrasi Zero-ETL, kredentif masuk Anda harus memiliki izin untuk tindakan DynamoDB dan Amazon Redshift dan juga pada sumber daya yang terlibat sebagai sumber dan target integrasi. Berikut ini adalah contoh yang menunjukkan izin minimum yang diperlukan.
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:ListTables"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"dynamodb:GetResourcePolicy",
"dynamodb:PutResourcePolicy",
"dynamodb:UpdateContinuousBackups"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:111122223333:table/my-ddb-table"
]
},
{
"Sid": "AllowRedshiftDescribeIntegration",
"Effect": "Allow",
"Action": [
"redshift:DescribeIntegrations"
],
"Resource": "*"
},
{
"Sid": "AllowRedshiftCreateIntegration",
"Effect": "Allow",
"Action": "redshift:CreateIntegration",
"Resource": "arn:aws:redshift:us-east-1:111122223333:integration:*"
},
{
"Sid": "AllowRedshiftModifyDeleteIntegration",
"Effect": "Allow",
"Action": [
"redshift:ModifyIntegration",
"redshift:DeleteIntegration"
],
"Resource": "arn:aws:redshift:us-east-1:111122223333:integration:<uuid>"
},
{
"Sid": "AllowRedshiftCreateInboundIntegration",
"Effect": "Allow",
"Action": "redshift:CreateInboundIntegration",
"Resource": "arn:aws:redshift:us-east-1:111122223333:namespace:<uuid>"
}
]
}
Mengenkripsi integrasi DynamoDB dengan kunci yang dikelola pelanggan
Jika Anda menentukan kunci KMS khusus dan bukan Kunci milik AWS saat Anda membuat integrasi DynamoDB Zero-ETL, kebijakan kunci harus menyediakan akses utama layanan Amazon Redshift ke tindakan tersebut. CreateGrant Selain itu, harus mengizinkan akun pemohon atau izin peran untuk menjalankan CreateGrant tindakan DescribeKey dan.
Contoh pernyataan kebijakan utama berikut menunjukkan izin yang diperlukan dalam kebijakan Anda. Beberapa contoh termasuk kunci konteks untuk lebih mengurangi ruang lingkup izin.
Pernyataan kebijakan berikut memungkinkan akun atau peran pemohon untuk mengambil informasi tentang kunci KMS.
{
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::{account-ID}:role/{role-name}"
},
"Action":"kms:DescribeKey",
"Resource":"*"
}
Pernyataan kebijakan berikut memungkinkan akun atau peran pemohon untuk menambahkan hibah ke kunci KMS. K kms:ViaService unci kondisi membatasi penggunaan kunci KMS untuk permintaan dari Amazon Redshift.
{
"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":"redshift.{region}.amazonaws.com"
},
"ForAllValues:StringEquals":{
"kms:GrantOperations":[
"Decrypt",
"GenerateDataKey",
"CreateGrant"
]
}
}
}
Pernyataan kebijakan berikut memungkinkan prinsipal layanan Amazon Redshift menambahkan hibah ke kunci KMS.
{
"Effect":"Allow",
"Principal":{
"Service":"redshift.amazonaws.com"
},
"Action":"kms:CreateGrant",
"Resource":"*",
"Condition":{
"StringEquals":{
"kms:EncryptionContext:{context-key}":"{context-value}",
"aws:SourceAccount":"{account-ID}"
},
"ForAllValues:StringEquals":{
"kms:GrantOperations":[
"Decrypt",
"GenerateDataKey",
"CreateGrant"
]
},
"ArnLike":{
"aws:SourceArn":"arn:aws:*:{region}:{account-ID}:integration:*"
}
}
}
Untuk informasi selengkapnya, lihat Membuat kebijakan kunci di Panduan Developer AWS Key Management Service .
Konteks enkripsi
Saat Anda mengenkripsi integrasi Zero-ETL, Anda dapat menambahkan pasangan kunci-nilai sebagai konteks enkripsi tambahan. Anda mungkin ingin menambahkan pasangan kunci-nilai ini untuk menambahkan informasi kontekstual tambahan tentang data yang sedang direplikasi. Untuk informasi lebih lanjut, lihat Konteks enkripsi di Panduan Developer AWS Key Management Service .
Amazon Redshift menambahkan pasangan konteks enkripsi berikut selain yang Anda tambahkan:
Ini mengurangi jumlah keseluruhan pasangan yang dapat Anda tambahkan dari 8 menjadi 6, dan berkontribusi pada batas karakter keseluruhan dari batasan hibah. Untuk informasi selengkapnya, lihat Menggunakan batasan hibah di Panduan AWS Key Management Service Pengembang.