Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan Amazon S3 sebagai target AWS Database Migration Service
Anda dapat memigrasikan data ke Amazon S3 AWS DMS menggunakan dari salah satu sumber database yang didukung. Saat menggunakan Amazon S3 sebagai target dalam AWS DMS tugas, data full load dan change data capture (CDC) ditulis ke format comma-separated value (.csv) secara default. Untuk penyimpanan yang lebih ringkas dan pilihan kueri yang lebih cepat, Anda juga memiliki pilihan untuk membuat data ditulis ke format Apache Parquet (.parquet).
AWS DMS nama file yang dibuat selama pemuatan penuh menggunakan penghitung heksadesimal inkremental—misalnya LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A, dan seterusnya untuk file.csv. AWS DMS nama file CDC menggunakan stempel waktu, misalnya 20141029-1134010000.csv. Untuk setiap tabel sumber yang berisi catatan, AWS DMS buat folder di bawah folder target yang ditentukan (jika tabel sumber tidak kosong). AWS DMS menulis semua beban penuh dan file CDC ke bucket Amazon S3 yang ditentukan. Anda dapat mengontrol ukuran file yang AWS DMS dibuat dengan menggunakan pengaturan MaxFileSizeendpoint.
Parameter bucketFolder
berisi lokasi di mana file .csv atau .parquet disimpan sebelum diunggah ke bucket S3. Dengan file .csv, data tabel disimpan dalam format berikut dalam bucket S3, ditampilkan dengan file beban penuh.
database_schema_name
/table_name
/LOAD00000001.csvdatabase_schema_name
/table_name
/LOAD00000002.csv ...database_schema_name
/table_name
/LOAD00000009.csvdatabase_schema_name
/table_name
/LOAD0000000A.csvdatabase_schema_name
/table_name
/LOAD0000000B.csv ...database_schema_name
/table_name
/LOAD0000000F.csvdatabase_schema_name
/table_name
/LOAD00000010.csv ...
Anda dapat menentukan delimiter kolom, delimiter baru, dan parameter lainnya menggunakan atribut koneksi tambahan. Untuk informasi lebih lanjut tentang atribut koneksi tambahan, lihat Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS pada akhir bagian ini.
Anda dapat menentukan pemilik bucket dan mencegah sniping dengan menggunakan setelan endpoint ExpectedBucketOwner
Amazon S3, seperti yang ditunjukkan berikut ini. Kemudian, saat Anda membuat permintaan untuk menguji koneksi atau melakukan migrasi, S3 memeriksa ID akun pemilik bucket terhadap parameter yang ditentukan.
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
Saat Anda menggunakan AWS DMS untuk mereplikasi perubahan data menggunakan tugas CDC, kolom pertama dari file keluaran.csv atau.parquet menunjukkan bagaimana data baris diubah seperti yang ditunjukkan untuk file.csv berikut.
I,101,Smith,Bob,4-Jun-14,New York U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas
Untuk contoh ini, anggaplah ada EMPLOYEE
tabel di database sumber. AWS DMS menulis data ke file.csv atau .parquet, sebagai tanggapan atas peristiwa berikut:
-
Seorang karyawan baru (Bob Smith, ID karyawan 101) dipekerjakan pada 4-Jun-14 di kantor New York. Dalam file .csv atau .parquet,
I
di kolom pertama menunjukkan bahwa baris baru diINSERT
kan ke tabel EMPLOYEE di basis data sumber. -
Pada 8-Okt-15, Bob pindah ke kantor Los Angeles. Dalam file .csv atau .parquet,
U
menunjukkan bahwa baris yang sesuai dalam tabel EMPLOYEE diUPDATE
untuk mencerminkan lokasi kantor Bob yang baru. Sisa barisan mencerminkan baris dalam tabel EMPLOYEE seperti yang muncul setelahUPDATE
. -
Pada 13-Mar-17, Bob ditransfer lagi ke kantor Dallas. Dalam file .csv atau .parquet,
U
menunjukkan bahwa baris ini diUPDATE
lagi. Sisa barisan mencerminkan baris dalam tabel EMPLOYEE seperti yang muncul setelahUPDATE
. -
Setelah beberapa waktu bekerja di Dallas, Bob meninggalkan perusahaan. Dalam file .csv atau .parquet,
D
menunjukkan bahwa baris ini diDELETE
kan di tabel sumber. Sisa barisan mencerminkan bagaiman tampilan baris dalam tabel EMPLOYEE sebelum data baris dihapus.
Perhatikan bahwa secara default untuk CDC, AWS DMS menyimpan perubahan baris untuk setiap tabel database tanpa memperhatikan urutan transaksi. Jika Anda ingin menyimpan perubahan baris dalam file CDC sesuai urutan transaksi, Anda harus menggunakan pengaturan titik akhir S3 untuk menentukan hal ini dan jalur folder di mana Anda ingin file transaksi CDC disimpan pada target S3. Untuk informasi lebih lanjut, lihat Perubahan pengambilan data (CDC) termasuk transaksi order pada target S3.
Untuk mengontrol frekuensi menulis ke target Amazon S3 selama tugas replikasi data, Anda dapat mengonfigurasi atribut koneksi tambahan cdcMaxBatchInterval
dan cdcMinFileSize
. Hal ini dapat menghasilkan performa yang lebih baik ketika menganalisis data tanpa operasi overhead tambahan. Untuk informasi lebih lanjut, lihat Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS
Topik
- Prasyarat penggunaan Amazon S3 sebagai target
- Keterbatasan penggunaan Amazon S3 sebagai target
- Keamanan
- Menggunakan Apache Parquet untuk menyimpan objek Amazon S3
- Penandaan objek Amazon S3
- Membuat AWS KMS kunci untuk mengenkripsi objek target Amazon S3
- Menggunakan partisi folder berdasarkan tanggal
- Beban paralel sumber yang dipartisi saat menggunakan Amazon S3 sebagai target AWS DMS
- Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS
- Menggunakan AWS Glue Data Catalog dengan target Amazon S3 untuk AWS DMS
- Menggunakan enkripsi data, file parket, dan CDC pada target Amazon S3 Anda
- Menunjukkan operasi sumber DB dalam data S3 bermigrasi
- Tipe data target untuk S3 Parquet
Prasyarat penggunaan Amazon S3 sebagai target
Sebelum menggunakan Amazon S3 sebagai target, pastikan bahwa hal berikut ini benar:
-
Bucket S3 yang Anda gunakan sebagai target berada di AWS Wilayah yang sama dengan instance replikasi DMS yang Anda gunakan untuk memigrasikan data Anda.
-
AWS Akun yang Anda gunakan untuk migrasi memiliki peran IAM dengan akses tulis dan hapus ke bucket S3 yang Anda gunakan sebagai target.
-
Peran ini memiliki akses penandaan sehingga Anda dapat menandai objek S3 apa pun yang ditulis ke target bucket.
-
IAM role memiliki DMS (dms.amazonaws.com) yang ditambahkan sebagai entitas terpercaya.
Untuk AWS DMS versi 3.4.7 dan yang lebih tinggi, DMS harus mengakses bucket sumber melalui titik akhir VPC atau rute umum. Untuk informasi tentang titik akhir VPC, lihat. Mengkonfigurasi titik akhir VPC sebagaiAWSSumber DMS dan titik akhir target
Untuk mengatur akses akun ini, pastikan peran yang diberikan ke akun pengguna yang digunakan untuk membuat tugas migrasi memiliki serangkaian izin berikut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::buckettest2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::buckettest2" ] } ] }
Untuk prasyarat untuk menggunakan validasi dengan S3 sebagai target, lihat. Prasyarat validasi target S3
Keterbatasan penggunaan Amazon S3 sebagai target
Batasan berikut berlaku saat menggunakan Amazon S3 sebagai target:
-
Jangan aktifkan pembuatan versi untuk S3. Jika Anda memerlukan versi S3, gunakan kebijakan siklus hidup untuk menghapus versi lama secara aktif. Jika tidak, Anda mungkin mengalami kegagalan koneksi pengujian titik akhir karena batas waktu
list-object
panggilan S3. Untuk membuat kebijakan siklus hidup bucket S3, lihat Mengelola siklus hidup penyimpanan. Untuk menghapus versi objek S3, lihat Menghapus versi objek dari bucket berkemampuan versi. -
Bucket S3 berkemampuan VPC (gateway VPC) didukung dalam versi 3.4.7 dan yang lebih tinggi.
-
Perintah bahasa definisi data berikut (DDL) didukung untuk perubahan penangkapan data (CDC): Truncate Table, Drop Table, Create Table, Rename Table, Add Column, Drop Column, Rename Column, dan Change COlumn Data Type. Perhatikan bahwa ketika kolom ditambahkan, dihapus, atau diganti namanya pada database sumber, tidak ada pernyataan ALTER yang direkam dalam bucket S3 target, dan AWS DMS tidak mengubah catatan yang dibuat sebelumnya agar sesuai dengan struktur baru. Setelah perubahan, AWS DMS membuat catatan baru menggunakan struktur tabel baru.
catatan
Operasi pemotongan DDL menghapus semua file dan folder tabel yang terkait dari bucket S3. Anda dapat menggunakan pengaturan tugas untuk menonaktifkan perilaku itu dan mengonfigurasi cara DMS menangani perilaku DDL selama pengambilan perubahan data (CDC). Untuk informasi lebih lanjut, lihat Pengaturan tugas untuk DDL penanganan pemrosesan perubahan.
-
Mode LOB penuh tidak didukung.
-
Perubahan pada struktur tabel sumber selama beban penuh tidak didukung. Perubahan data didukung selama beban penuh.
-
Beberapa tugas yang mereplikasi data dari tabel sumber yang sama untuk titik akhir bucket S3 target yang sama, mengakibatkan tugas-tugas itu menulis ke dalam file yang sama. Kami sarankan Anda menentukan titik akhir target yang berbeda (buckets) jika sumber data Anda berasal dari tabel yang sama.
-
BatchApply
tidak didukung untuk titik akhir S3. Menggunakan penerapan Batch (misalnya, pengaturan tugas metadata targetBatchApplyEnabled
) untuk target S3 dapat mengakibatkan hilangnya data. -
Anda tidak dapat menggunakan
DatePartitionEnabled
atauaddColumnName
bersama-sama denganPreserveTransactions
atauCdcPath
. -
AWS DMS tidak mendukung penggantian nama beberapa tabel sumber ke folder target yang sama menggunakan aturan transformasi.
-
Jika ada penulisan intensif ke tabel sumber selama fase beban penuh, DMS dapat menulis catatan duplikat ke bucket S3 atau perubahan cache.
-
Jika Anda mengonfigurasi tugas dengan
TargetTablePrepMode
ofDO_NOTHING
, DMS dapat menulis catatan duplikat ke bucket S3 jika tugas berhenti dan dilanjutkan secara tiba-tiba selama fase pemuatan penuh. -
Jika Anda mengonfigurasi titik akhir target dengan
PreserveTransactions
pengaturantrue
, memuat ulang tabel tidak akan menghapus file CDC yang dihasilkan sebelumnya. Untuk informasi selengkapnya, lihat Perubahan pengambilan data (CDC) termasuk transaksi order pada target S3.
Untuk batasan penggunaan validasi dengan S3 sebagai target, lihat. Batasan untuk menggunakan validasi target S3
Keamanan
Untuk menggunakan Amazon S3 sebagai target, akun yang digunakan untuk migrasi harus memiliki akses tulis dan hapus terhadap bucket Amazon S3 yang digunakan sebagai target. Tentukan Amazon Resource Name (ARN) dari IAM role yang memiliki izin yang diperlukan untuk mengakses Amazon S3.
AWS DMS mendukung serangkaian hibah yang telah ditentukan untuk Amazon S3, yang dikenal sebagai daftar kontrol akses kaleng (ACL). Setiap ACL terekam memiliki serangkaian penerima dan izin yang dapat Anda gunakan untuk mengatur izin bucket Amazon S3. Anda dapat menentukan ACL terekam menggunakan cannedAclForObjects
pada atribut string koneksi untuk titik akhir target S3 Anda. Untuk informasi lebih lanjut tentang penggunaan atribut koneksi tambahan cannedAclForObjects
, lihat Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS. Untuk informasi lebih lanjut tentang ACL terekam Amazon S3, lihat ACL Terekam.
IAM role yang Anda gunakan untuk migrasi harus dapat melakukan Operasi API s3:PutObjectAcl
.
Menggunakan Apache Parquet untuk menyimpan objek Amazon S3
Format comma-separated value (.csv) adalah format penyimpanan default untuk objek target Amazon S3. Untuk penyimpanan yang lebih ringkas dan kueri lebih cepat, sebagai gantinya Anda bisa menggunakan Apache Parquet (.parquet) sebagai format penyimpanan.
Apache Parquet adalah format penyimpanan file sumber terbuka yang awalnya dirancang untuk Hadoop. Untuk informasi lebih lanjut tentang Apache Parket, lihat https://parquet.apache.org/
Untuk mengatur .parquet sebagai format penyimpanan untuk objek target S3 dimigrasikan, Anda dapat menggunakan mekanisme berikut:
-
Pengaturan titik akhir yang Anda berikan sebagai parameter objek JSON ketika Anda membuat titik akhir menggunakan AWS CLI atau API untuk AWS DMS. Untuk informasi selengkapnya, lihat Menggunakan enkripsi data, file parket, dan CDC pada target Amazon S3 Anda.
-
Atribut koneksi tambahan yang Anda berikan sebagai daftar yang dipisahkan titik koma saat Anda membuat titik akhir. Untuk informasi lebih lanjut, lihat Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS.
Penandaan objek Amazon S3
Anda dapat menandai objek Amazon S3 yang dibuat oleh instans replikasi dengan menentukan objek JSON yang sesuai sebagai bagian dari aturan pemetaan tabel tugas. Untuk informasi selengkapnya tentang persyaratan dan opsi untuk penandaan objek S3, termasuk nama tag yang valid, lihat Penandaan objek di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. Untuk informasi lebih lanjut tentang pemetaan tabel menggunakan JSON, lihat Menentukan pemilihan tabel dan transformasi aturan menggunakan JSON.
Anda menandai objek S3 yang dibuat untuk tabel dan skema tertentu dengan menggunakan satu atau lebih objek JSON dari jenis aturan selection
. Anda kemudian mengikuti objek selection
ini (atau beberapa objek) oleh satu atau lebih objek JSON dari jenis aturan post-processing
dengan tindakan add-tag
. Aturan pasca-pemrosesan ini mengidentifikasi objek S3 yang ingin Anda, tandai dan menentukan nama dan nilai-nilai tanda yang ingin Anda tambahkan ke objek S3 ini.
Anda dapat menemukan parameter yang akan ditetapkan dalam objek JSON dari tipe aturan post-processing
dalam tabel berikut.
Parameter | Kemungkinan nilai | Deskripsi |
---|---|---|
rule-type |
post-processing |
Nilai yang menerapkan tindakan pasca pemrosesan untuk objek target yang dihasilkan. Anda dapat menentukan satu atau lebih aturan pasca-pemrosesan untuk menandai objek S3 yang dipilih. |
rule-id |
Nilai numerik. | Nilai numerik yang unik untuk mengidentifikasi aturan. |
rule-name |
Nilai alfanumerik. | Nama unik untuk mengidentifikasi aturan. |
rule-action |
add-tag |
Tindakan pasca-pemrosesan yang ingin Anda terapkan ke objek S3. Anda dapat menambahkan satu atau lebih tanda menggunakan satu objek pasca-pemrosesan JSON tindakan add-tag . |
object-locator |
|
Nama setiap skema dan tabel tempat aturannya berlaku. Anda dapat menggunakan tanda “%” persen sebagai wildcard untuk semua atau sebagian dari nilai masing-masing parameter
|
tag-set |
|
Nama dan nilai-nilai untuk satu atau beberapa tanda yang ingin Anda tetapkan pada setiap objek S3 dibuat cocok dengan yang ditentukan Anda juga dapat menentukan nilai dinamis untuk semua atau sebagian dari nilai untuk parameter catatanpentingJika Anda memasukkan nilai dinamis untuk parameter |
Ketika Anda menentukan beberapa jenis aturan post-processing
untuk menandai pilihan objek S3, setiap objek S3 ditandai menggunakan hanya satu objek tag-set
dari satu aturan pasca-pemrosesan. Seperangkat tanda tertentu yang digunakan untuk menandai objek S3 yang diberikan adalah yang berasal dari aturan pasca-pemrosesan yang pencari objek terkaitnya paling sesuai dengan objek S3 tersebut.
Misalnya anggaplah bahwa dua aturan pasca-pemrosesan mengidentifikasi objek S3 yang sama. Misalkan juga pencari objek dari satu aturan menggunakan wildcard dan pencari objek dari aturan lain menggunakan exact match untuk mengidentifikasi objek S3 (tanpa wildcard). Dalam hal ini, seperangkat tanda yang terkait dengan aturan pasca-pemrosesan dengan exact match digunakan untuk menandai objek S3. Jika beberapa aturan pasca-pemrosesan cocok dengan objek S3 yang diberikan dengan sama baiknya, seperangkat tanda yang terkait dengan aturan pasca-pemrosesan pertama digunakan untuk menandai objek.
contoh Menambahkan tanda statis ke objek S3 yang dibuat untuk tabel dan skema tunggal
Aturan pemilihan dan pasca-pemrosesan berikut menambahkan tiga tanda (tag_1
, tag_2
, dan tag_3
dengan nilai statis yang sesuai value_1
, value_2
, dan value_3
) ke objek S3 yang sudah dibuat. Objek S3 ini berkaitan dengan sebuah tabel di sumber bernama STOCK
dengan skema bernama aat2
.
{ "rules": [ { "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" }, { "key": "tag_3", "value": "value_3" } ] } ] }
contoh Menambahkan tanda statis ke objek S3 yang dibuat untuk beberapa tabel dan skema
Contoh berikut memiliki satu pilihan dan dua aturan pasca-pemrosesan, dengan masukan dari sumber mencakup semua tabel dan semua skema mereka.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "%", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_${table-name}" } ] }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat", "table-name": "ITEM", }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" } ] } ] }
Aturan pasca-pemrosesan pertama menambahkan dua tanda (dw-schema-name
dan dw-schema-table
) dengan nilai dinamis yang sesuai (${schema-name}
dan my_prefix_${table-name}
) untuk hampir semua objek S3 yang dibuat dalam target. Kecuali ketika objek S3 diidentifikasi dan ditandai dengan aturan pasca-pemrosesan kedua. Sehingga setiap objek target S3 yang teridentifikasi oleh pencari objek wildcard dibuat dengan penanda yang mengidentifikasi skema dan tabel yang sesuai dengan sumbernya.
Aturan pasca-pemrosesan kedua menambahkan tag_1
dan tag_2
dengan nilai statis yang sesuai dengan value_1
dan value_2
ke objek S3 yang sudah dibuat yang teridentifikasi oleh pencari objek yang sama persis. Objek S3 yang dibuat ini sesuai dengan tabel tunggal di sumber bernama ITEM
dengan skema bernama aat
. Karena objek yang sama persis, tanda ini menggantikan tanda apa pun pada objek yang ditambahkan dari aturan pasca-pemrosesan pertama ini, yang membandingkan objek S3 hanya berdasarkan wildcard saja.
contoh Menambahkan nilai maupun nama tanda dinamis ke objek S3
Contoh berikut memiliki dua aturan seleksi dan satu aturan pasca-pemrosesan. Di sini, masukan dari sumber hanya menyertakan tabel ITEM
di skema retail
atau wholesale
.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "retail", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "wholesale", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "ITEM", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_ITEM" }, { "key": "${schema-name}_ITEM_tag_1", "value": "value_1" }, { "key": "${schema-name}_ITEM_tag_2", "value": "value_2" } ] ] }
Tanda yang ditetapkan untuk aturan pasca-pemrosesan menambahkan dua tanda (dw-schema-name
dan dw-schema-table
) untuk semua objek S3 yang dibuat untuk tabel ITEM
di target. Tanda pertama mempunyai nilai dinamis "${schema-name}"
dan tanda kedua memiliki nilai statis, "my_prefix_ITEM"
. Jadi, setiap objek target S3 dibuat dengan tanda yang mengidentifikasi skema dan tabel yang sesuai dengan sumbernya.
Selain itu, sekolompok tanda menambahkan dua tanda tambahan dengan nama dinamis (${schema-name}_ITEM_tag_1
dan "${schema-name}_ITEM_tag_2"
). Tanda Ini memiliki nilai statis yang sesuai value_1
dan value_2
. Sehingga penanda ini masing-masing dinamai untuk skema saat ini, retail
atau wholesale
. Anda tidak dapat membuat salinan penanda nama dinamis dalam objek ini karena setiap objek dibuat untuk satu nama skema unik. Nama skema digunakan untuk membuat nama tanda yang unik.
Membuat AWS KMS kunci untuk mengenkripsi objek target Amazon S3
Anda dapat membuat dan menggunakan AWS KMS kunci khusus untuk mengenkripsi objek target Amazon S3 Anda. Setelah membuat kunci KMS, Anda dapat menggunakannya untuk mengenkripsi objek menggunakan salah satu pendekatan berikut ketika Anda membuat titik akhir target S3:
-
Gunakan pilihan berikut untuk objek target S3 (dengan format penyimpanan file .csv default) ketika Anda menjalankan perintah
create-endpoint
menggunakan AWS CLI.--s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN
"}'Di sini,
adalah Amazon Resource Name (ARN) untuk kunci KMS Anda. Untuk informasi selengkapnya, lihat Menggunakan enkripsi data, file parket, dan CDC pada target Amazon S3 Anda.your-KMS-key-ARN
-
Tetapkan atribut koneksi tambahan
encryptionMode
ke nilaiSSE_KMS
dan atribut koneksi tambahanserverSideEncryptionKmsKeyId
ke ARN untuk kunci KMS Anda. Untuk informasi selengkapnya, lihat Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS.
Untuk mengenkripsi objek target Amazon S3 menggunakan kunci KMS, Anda memerlukan peran IAM yang memiliki izin untuk mengakses bucket Amazon S3. IAM role ini kemudian diakses dalam sebuah kebijakan (kebijakan kunci) yang dilampirkan ke kunci enkripsi yang Anda buat. Anda dapat melakukannya melalui konsol IAM Anda dengan membuat hal berikut:
-
Kebijakan dengan izin untuk mengakses bucket Amazon S3.
-
IAM role dengan kebijakan ini.
-
Kunci enkripsi kunci KMS dengan kebijakan kunci yang mereferensikan peran ini.
Prosedur berikut menjelaskan cara pembuatannya.
Membuat kebijakan IAM dengan izin mengakses bucket Amazon S3
Buka konsol IAM di https://console.aws.amazon.com/iam/
. -
Di panel navigasi, pilih Kebijakan. Halaman Kebijakan terbuka.
-
Pilih Buat kebijakan. Halaman Buat kebijakan terbuka.
-
Pilih Layanan dan pilih S3. Daftar izin tindakan ditampilkan.
-
Pilih Perluas semua untuk memperluas daftar dan minimal pilih izin berikut:
-
ListBucket
-
PutObject
-
DeleteObject
Pilih izin lain yang Anda butuhkan, lalu pilih Kolaps semua untuk menutup daftar.
-
-
Pilih Sumber Daya Untuk menentukan sumber daya yang ingin Anda akses. Minimal, pilih Semua sumber daya Untuk menyediakan akses sumber daya Amazon S3 secara umum.
-
Tambahkan kondisi atau izin lain apa pun yang Anda butuhkan, lalu pilih Tinjau kebijakan. Periksa hasil Anda di halaman Tinjau kebijakan.
-
Jika pengaturannya sudah sesuai kebutuhan Anda, masukkan nama untuk kebijakan (misalnya
DMS-S3-endpoint-access
), dan berikan deskripsi apa pun, lalu pilih Buat kebijakan. Halaman Kebijakan terbuka dengan pesan yang menunjukkan bahwa kebijakan Anda telah dibuat. -
Cari dan pilih nama kebijakan di daftar Kebijakan. Halaman Ringkasan muncul dengan menampilkan JSON untuk kebijakan yang serupa dengan berikut ini.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" } ] }
Anda sekarang telah membuat kebijakan baru untuk mengakses sumber daya Amazon S3 untuk enkripsi dengan nama tertentu, misalnya DMS-S3-endpoint-access
.
Membuat IAM role menggunakan kebijakan ini
-
Di panel navigasi konsol IAM, pilih Peran. Halaman detail Peran terbuka.
-
Pilih Buat peran. Halaman Buat peran terbuka.
-
Dengan AWS layanan yang dipilih sebagai entitas tepercaya, pilih DMS sebagai layanan untuk menggunakan peran IAM.
-
Pilih Berikutnya: Izin. Tampilan Lampirkan kebijakan izin muncul di halaman Buat peran.
-
Temukan dan pilih kebijakan IAM untuk IAM role yang Anda buat di prosedur sebelumnya (
DMS-S3-endpoint-access
). -
Pilih Berikutnya: Penandaan. Tampilan Tambahkan penandaan muncul di halaman Buat peran. Di sini, Anda dapat menambahkan tanda apa pun yang Anda inginkan.
-
Pilih Berikutnya: Tinjauan. Tampilan Ulasan muncul di halaman Buat peran. Di sini Anda dapat memverifikasi hasilnya.
-
Jika pengaturan sudah sesuai dengan kebutuhan Anda, masukkan nama untuk peran (wajib, misalnya,
DMS-S3-endpoint-access-role
), dan deskripsi tambahan apa pun, lalu pilih Buat peran. Halaman detail Peran terbuka dengan pesan yang menunjukkan bahwa peran Anda telah dibuat.
Anda sekarang telah membuat peran baru untuk mengakses sumber daya Amazon S3 untuk enkripsi dengan nama tertentu, misalnya, DMS-S3-endpoint-access-role
.
Untuk membuat kunci enkripsi kunci KMS dengan kebijakan kunci yang mereferensikan peran IAM Anda
catatan
Untuk informasi selengkapnya tentang cara AWS DMS kerja dengan kunci AWS KMS enkripsi, lihatMenyetel kunci enkripsi dan menentukan izin AWS KMS.
-
Masuk ke AWS Management Console dan buka konsol AWS Key Management Service (AWS KMS) di https://console.aws.amazon.com/kms
. -
Untuk mengubah Wilayah AWS, gunakan pemilih Wilayah di sudut kanan atas halaman.
-
Di panel navigasi, pilih Kunci yang dikelola pelanggan.
-
Pilih Buat kunci. Halaman Konfigurasi kunci terbuka.
-
Untuk Tipe Kunci, pilih Simetris.
catatan
Saat Anda membuat kunci ini, Anda hanya dapat membuat kunci simetris, karena semua AWS layanan, seperti Amazon S3, hanya berfungsi dengan kunci enkripsi simetris.
-
Pilih Pilihan lanjutan. Untuk Asal material kunci, pastikan bahwa KMS dipilih, lalu pilih Selanjutnya. Halaman Tambahkan label terbuka.
-
Untuk Buat alias dan deskripsi, masukkan alias untuk kunci (misalnya,
DMS-S3-endpoint-encryption-key
) dan keterangan tambahan apa pun. -
Untuk Penandaan, tambahkan tanda apa pun yang Anda inginkan untuk membantu mengidentifikasi kunci dan melacak penggunaannya, lalu pilih Selanjutnya. Halaman Tentukan izin administratif kunci terbuka dan menampilkan daftar pengguna dan peran yang dapat Anda pilih.
-
Tambahkan pengguna dan peran yang Anda inginkan untuk mengelola kunci. Pastikan bahwa pengguna dan peran ini memiliki izin yang diperlukan untuk mengelola kunci.
-
Untuk Penghapusan kunci, pilih apakah administrator kunci dapat menghapus kunci, lalu pilih Selanjutnya. Halaman Tentukan izin penggunaan kunci terbuka dengan menampilkan daftar pengguna dan peran tambahan yang dapat Anda pilih.
-
Untuk Akun ini, pilih pengguna yang tersedia Anda inginkan untuk melakukan operasi kriptografi pada target Amazon S3. Pilih juga peran yang sebelumnya Anda buat di Peran untuk mengaktifkan akses untuk mengenkripsi objek target Amazon S3, misalnya
DMS-S3-endpoint-access-role
). -
Jika Anda ingin menambahkan akun lain yang tidak terdaftar untuk memiliki akses yang sama, untuk AWS Akun lain, pilih Tambahkan AWS akun lain, lalu pilih Berikutnya. Halaman Tinjau dan edit kebijakan kunci terbuka dan menampilkan JSON untuk kebijakan kunci yang dapat Anda tinjau dan edit dengan mengetik ke JSON yang sudah ada. Di sini, Anda dapat melihat tempat kebijakan kunci mereferensikan peran dan pengguna (misalnya,
Admin
danUser1
) yang sudah Anda pilih pada langkah sebelumnya. Anda juga dapat melihat tindakan kunci berbeda yang diizinkan untuk principal yang berbeda (pengguna dan peran), seperti yang ditunjukkan pada contoh berikut.{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
-
Pilih Selesai. Halaman kunci Enkripsi terbuka dengan pesan yang menunjukkan bahwa kunci KMS Anda telah dibuat.
Anda sekarang telah membuat bukti kunci KMS baru dengan nama alias tertentu (misalnya DMS-S3-endpoint-encryption-key
). Kunci ini memungkinkan AWS DMS untuk mengenkripsi objek target Amazon S3.
Menggunakan partisi folder berdasarkan tanggal
AWS DMS mendukung partisi folder S3 berdasarkan tanggal komit transaksi saat Anda menggunakan Amazon S3 sebagai titik akhir target Anda. Dengan menggunakan partisi folder berdasarkan tanggal, Anda dapat menulis data dari tabel sumber tunggal ke struktur folder dengan hirarki waktu dalam bucket S3. Dengan partisi folder saat membuat titik akhir target S3, Anda dapat melakukan hal berikut:
-
Mengelola objek S3 Anda dengan lebih baik
-
Membatasi ukuran setiap folder S3
-
Mengoptimalkan kueri danau data atau operasi lain setelahnya
Anda dapat mengaktifkan partisi folder berdasarkan tanggal ketika Anda membuat titik akhir S3. Anda dapat mengaktifkannya ketika memigrasikan data yang ada dan mereplikasi perubahan yang sedang berlangsung (beban penuh + CDC), atau hanya mereplikasi perubahan data (CDC saja). Gunakan pengaturan titik akhir target berikut:
-
DatePartitionEnabled
– Menentukan partisi berdasarkan tanggal. Mengatur pilihan Boolean ini ketrue
untuk partisi folder bucket S3 berdasarkan tanggal melakukan transaksi.Anda tidak dapat menggunakan pengaturan ini dengan
PreserveTransactions
atauCdcPath
.Nilai default adalah
false
. -
DatePartitionSequence
– Mengidentifikasi urutan format tanggal yang digunakan selama partisi folder. Tetapkan pilihan ENUM ini keYYYYMMDD
,YYYYMMDDHH
,YYYYMM
,MMYYYYDD
, atauDDMMYYYY
. Nilai default adalahYYYYMMDD
. Gunakan pengaturan ini saatDatePartitionEnabled
diatur ketrue.
-
DatePartitionDelimiter
– Menentukan pembatas pemisahan tanggal untuk digunakan selama partisi folder. Tetapkan pilihan ENUM ini keSLASH
,DASH
,UNDERSCORE
, atauNONE
. Nilai default adalahSLASH
. Gunakan pengaturan ini saatDatePartitionEnabled
diatur ketrue
.
Contoh berikut menunjukkan cara mengaktifkan partisi folder berdasarkan tanggal, dengan nilai default untuk urutan partisi data dan pembatas. Ini menggunakan --s3-settings '{
opsi AWS CLI. json-settings
}'create-endpoint
perintah.
--s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'
Beban paralel sumber yang dipartisi saat menggunakan Amazon S3 sebagai target AWS DMS
Anda dapat mengonfigurasi beban penuh paralel sumber data yang dipartisi ke target Amazon S3. Pendekatan ini meningkatkan waktu muat untuk memigrasikan data yang dipartisi dari mesin basis data sumber yang didukung ke target S3. Untuk meningkatkan waktu muat data sumber yang dipartisi, Anda membuat subfolder target S3 yang dipetakan ke partisi setiap tabel dalam database sumber. Subfolder terikat partisi ini memungkinkan untuk AWS DMS menjalankan proses paralel untuk mengisi setiap subfolder pada target.
Untuk mengonfigurasi beban penuh paralel dari target S3, S3 mendukung tiga tipe parallel-load
aturan untuk table-settings
aturan pemetaan tabel:
partitions-auto
partitions-list
ranges
Untuk informasi selengkapnya tentang jenis aturan beban paralel ini, lihat. Tabel dan koleksi pengaturan aturan dan operasi
Untuk tipe partitions-auto
dan partitions-list
aturan, AWS DMS gunakan setiap nama partisi dari titik akhir sumber untuk mengidentifikasi struktur subfolder target, sebagai berikut.
bucket_name
/bucket_folder
/database_schema_name
/table_name
/partition_name
/LOADseq_num
.csv
Di sini, jalur subfolder tempat data dimigrasikan dan disimpan pada target S3 menyertakan
subfolder tambahan yang sesuai dengan partisi sumber dengan nama yang sama. partition_name
Subfolder ini kemudian menyimpan satu atau lebih partition_name
LOAD
file yang berisi data yang dimigrasikan dari partisi sumber yang ditentukan. Di sini, seq_num
.csv
adalah postfix nomor urut pada nama file.csv, seperti seq_num
00000001
di file.csv dengan nama,. LOAD00000001.csv
Namun, beberapa mesin database, seperti MongoDB dan DocumentDB, tidak memiliki konsep partisi. Untuk mesin database ini, AWS DMS tambahkan indeks segmen sumber berjalan sebagai awalan ke nama file.csv target, sebagai berikut.
.../
database_schema_name
/table_name
/SEGMENT1_LOAD00000001.csv .../database_schema_name
/table_name
/SEGMENT1_LOAD00000002.csv ... .../database_schema_name
/table_name
/SEGMENT2_LOAD00000009.csv .../database_schema_name
/table_name
/SEGMENT3_LOAD0000000A.csv
Di sini, file SEGMENT1_LOAD00000001.csv
dan SEGMENT1_LOAD00000002.csv
diberi nama dengan awalan indeks segmen sumber berjalan yang sama,SEGMENT1
. Mereka dinamai demikian karena data sumber yang dimigrasi untuk dua file.csv ini dikaitkan dengan indeks segmen sumber berjalan yang sama. Di sisi lain, data migrasi yang disimpan di setiap target SEGMENT2_LOAD00000009.csv
dan SEGMENT3_LOAD0000000A.csv
file dikaitkan dengan indeks segmen sumber berjalan yang berbeda. Setiap file memiliki nama file yang diawali dengan nama indeks segmen yang sedang berjalan, SEGMENT2
danSEGMENT3
.
Untuk jenis ranges
beban paralel, Anda menentukan nama kolom dan nilai kolom menggunakan columns
dan boundaries
pengaturan aturan. table-settings
Dengan aturan ini, Anda dapat menentukan partisi yang sesuai dengan nama segmen, sebagai berikut.
"parallel-load": { "type": "ranges", "columns": [ "region", "sale" ], "boundaries": [ [ "NORTH", "1000" ], [ "WEST", "3000" ] ], "segment-names": [ "custom_segment1", "custom_segment2", "custom_segment3" ] }
Di sini, segment-names
pengaturan mendefinisikan nama untuk tiga partisi untuk memigrasikan data secara paralel pada target S3. Data yang dimigrasi dimuat secara paralel dan disimpan dalam file.csv di bawah subfolder partisi secara berurutan, sebagai berikut.
.../
database_schema_name
/table_name
/custom_segment1/LOAD[00000001...].csv .../database_schema_name
/table_name
/custom_segment2/LOAD[00000001...].csv .../database_schema_name
/table_name
/custom_segment3/LOAD[00000001...].csv
Di sini, AWS DMS menyimpan serangkaian file.csv di masing-masing dari tiga subfolder partisi. Rangkaian file.csv di setiap subfolder partisi diberi nama secara bertahap mulai dari LOAD00000001.csv
hingga semua data dimigrasikan.
Dalam beberapa kasus, Anda mungkin tidak secara eksplisit memberi nama subfolder partisi untuk jenis ranges
beban paralel menggunakan pengaturan. segment-names
Dalam hal ini, AWS DMS terapkan default untuk membuat setiap seri file.csv di bawah subfoldernya
. Di sini, AWS DMS awalan nama file dari setiap seri file.csv dengan nama indeks segmen sumber berjalan, sebagai berikut.table_name
.../
database_schema_name
/table_name
/SEGMENT1_LOAD[00000001...].csv .../database_schema_name
/table_name
/SEGMENT2_LOAD[00000001...].csv .../database_schema_name
/table_name
/SEGMENT3_LOAD[00000001...].csv ... .../database_schema_name
/table_name
/SEGMENTZ
_LOAD[00000001...].csv
Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS
Anda dapat menggunakan pengaturan titik akhir untuk mengonfigurasi basis data target Amazon S3 mirip dengan menggunakan atribut koneksi tambahan. Anda menentukan pengaturan saat Anda membuat titik akhir target menggunakan AWS DMS konsol, atau dengan menggunakan create-endpoint
perintah di AWS CLI, dengan sintaks --s3-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
Tabel berikut menunjukkan pengaturan titik akhir yang dapat Anda gunakan dengan Amazon S3 sebagai target.
Opsi | Deskripsi |
---|---|
CsvNullValue |
Parameter opsional yang menentukan bagaimana AWS DMS memperlakukan nilai-nilai null. Saat menangani nilai null, Anda dapat menggunakan parameter ini untuk meneruskan string yang ditetapkan pengguna sebagai null saat menulis ke target. Misalnya, ketika kolom target dapat dibatalkan, Anda dapat menggunakan opsi ini untuk membedakan antara nilai string kosong dan nilai null. Jadi, jika Anda menetapkan nilai parameter ini ke string kosong (”” atau “), AWS DMS memperlakukan string kosong sebagai nilai null, bukan. Nilai default: Nilai valid: string apapun yang benar Contoh: |
AddColumnName |
Parameter opsional yang ketika diatur ke Anda tidak dapat menggunakan parameter ini dengan Nilai default: Nilai valid: Contoh: |
AddTrailingPaddingCharacter |
Gunakan pengaturan titik akhir target S3 Tipe: Boolean Contoh: |
BucketFolder |
Parameter opsional untuk menentukan nama folder dalam bucket S3. Jika tersedia, objek target dibuat sebagai file .csv atau .parquet di jalur Contoh: |
BucketName |
Nama bucket S3 di mana objek target S3 dibuat sebagai file .csv atau .parquet. Contoh: |
CannedAclForObjects |
Nilai yang memungkinkan AWS DMS untuk menentukan daftar kontrol akses (kalengan) yang telah ditentukan sebelumnya untuk objek yang dibuat di bucket S3 sebagai file.csv atau .parquet. Untuk informasi lebih lanjut tentang ACL terekam Amazon S3, lihat ACL Terekam di Panduan Developer Amazon S3. Nilai default: NONE Nilai valid untuk atribut ini adalah: NONE; PRIVATE; PUBLIC_READ_WRITE; AUTHENTICATED_READ; AWS_EXEC_READ; BUCKET_OWNER_READ; BUCKET_OWNER_FULL_CONTROL. Contoh: |
CdcInsertsOnly |
Parameter opsional selama beban pengambilan data perubahan (CDC) beban hanya bisa menulis operasi INSERT ke file output comma-separated value (.csv) atau penyimpanan berbentuk kolom (.parquet). Secara default (Pengaturan Untuk format .csv saja, cara pencatatan INSERT ini bergantung pada nilai Nilai default: Nilai valid: Contoh: |
CdcInsertsAndUpdates |
Mengaktifkan beban perubahan pengambilan data (CDC) untuk menulis operasi INSERT dan UPDATE untuk file keluaran .csv atau .parquet (penyimpanan berbentuk kolom). Pengaturan default adalah Khusus format file .csv, cara pencatatan INSERT dan UPDATE ini tergantung pada nilai parameter Untuk informasi lebih lanjut tentang cara parameter ini bekerja sama, lihat Menunjukkan operasi sumber DB dalam data S3 bermigrasi. catatan
Nilai default: Nilai valid: Contoh: |
|
Menentukan jalur folder file CDC. Untuk sumber S3, pengaturan ini diperlukan jika sebuah tugas menangkap perubahan data; jika tidak, itu opsional. Jika Anda tidak dapat menggunakan parameter ini dengan Jenis: String Misalnya, jika Anda menentukan Jika Anda menentukan catatanPengaturan ini didukung dalam AWS DMS versi 3.4.2 dan yang lebih tinggi. Saat menangkap perubahan data dalam urutan transaksi, DMS selalu menyimpan perubahan baris dalam file.csv terlepas dari nilai pengaturan DataFormat S3 pada target. DMS tidak menyimpan perubahan data dalam urutan transaksi menggunakan file .parquet. |
|
Kondisi panjang interval maksimum, didefinisikan dalam detik, untuk keluaran file ke Amazon S3. Nilai default: 60 detik Kapan |
|
Kondisi ukuran file minimum seperti yang didefinisikan dalam kilobyte untuk menampilkan file ke Amazon S3. Nilai default: 32000 KB Kapan |
|
Jika diatur ke Anda tidak dapat menggunakan parameter ini dengan Jenis: Boolean Saat menangkap perubahan data dalam urutan transaksi, DMS selalu menyimpan perubahan baris dalam file.csv terlepas dari nilai pengaturan DataFormat S3 pada target. DMS tidak menyimpan perubahan data dalam urutan transaksi menggunakan file .parquet. catatanPengaturan ini didukung dalam AWS DMS versi 3.4.2 dan yang lebih tinggi. |
IncludeOpForFullLoad |
Parameter opsional selama beban penuh untuk menulis operasi INSERT hanya pada file keluaran comma-seperated value (.csv). Untuk beban penuh, catatan hanya bisa dimasukkan. Secara default (pengaturan catatanParameter ini bekerja sama dengan Nilai default: Nilai valid: Contoh: |
CompressionType |
Parameter opsional ketika diatur ke Nilai default: Nilai yang valid: Contoh: |
CsvDelimiter |
Pembatas yang digunakan untuk memisahkan kolom dalam file sumber .csv. Default adalah koma (,). Contoh: |
CsvRowDelimiter |
Pembatas yang digunakan untuk memisahkan baris dalam file sumber .csv. Default adalah baris baru (\ n). Contoh: |
|
Nilai yang menentukan ukuran maksimum (dalam KB) dari file.csv apa pun yang akan dibuat saat bermigrasi ke target S3 selama pemuatan penuh. Nilai default: 1.048.576 KB (1 GB) Nilai valid: 1-1.048.576 Contoh: |
Rfc4180 |
Parameter opsional yang digunakan untuk mengatur perilaku agar sesuai dengan RFC untuk data yang dimigrasi ke Amazon S3 menggunakan format file .csv saja. Ketika nilai ini disetel ke Nilai default: Nilai valid: Contoh: |
EncryptionMode |
Mode enkripsi sisi server yang Anda inginkan untuk mengenkripsi file .csv atau .parquet objek disalin ke S3. Nilai valid adalah catatanAnda juga dapat menggunakan perintah CLI Nilai default: Nilai yang valid: Contoh: |
ServerSideEncryptionKmsKeyId |
Jika Anda menyetel Contoh: |
DataFormat |
Format output untuk file yang AWS DMS digunakan untuk membuat objek S3. Untuk target Amazon S3, AWS DMS mendukung file.csv atau .parquet. File .parquet memiliki format penyimpanan kolom biner dengan pilihan kompresi yang efisien dan performa kueri yang lebih cepat. Untuk informasi lebih lanjut tentang file .parquet https://parquet.apache.org/ Nilai default: Nilai yang valid: Contoh: |
EncodingType |
Jenis pengodean Parquet. Pilihan tipe pengodean mencakup hal berikut:
Nilai default: Nilai valid: Contoh: |
DictPageSizeLimit |
Ukuran maksimum yang diizinkan, dalam byte, untuk halaman kamus dalam file .parquet. Jika halaman kamus melebihi nilai ini, maka halaman menggunakan pengodean biasa. Nilai default: 1.024.000 (1 MB) Nilai valid: Setiap nilai integer yang valid Contoh: |
RowGroupLength |
Jumlah baris dalam satu grup baris dari file .parquet. Nilai default: 10.024 (10 KB) Nilai yang valid: Setiap bilangan bulat yang valid Contoh: |
DataPageSize |
Ukuran maksimum yang diizinkan, dalam byte, untuk halaman data dalam file .parquet. Nilai default: 1.024.000 (1 MB) Nilai yang valid: Setiap bilangan bulat yang valid Contoh: |
ParquetVersion |
Versi format file .parquet. Nilai default: Nilai yang valid: Contoh: |
EnableStatistics |
Atur ke Nilai default: Nilai valid: Contoh: |
TimestampColumnName |
Parameter opsional untuk menyertakan kolom stempel waktu dalam data titik akhir target S3. AWS DMS menyertakan Untuk beban penuh, setiap baris dari kolom stempel waktu ini berisi stempel waktu untuk ketika data ditransfer dari sumber ke target oleh DMS. Untuk beban CDC, setiap baris kolom stempel waktu berisi stempel waktu untuk menjalankan baris tersebut dalam basis data sumber. Format string untuk nilai kolom stempel waktu ini adalah Ketika Contoh: |
UseTaskStartTimeForFullLoadTimestamp |
Ketika diatur ke Saat Nilai default: Nilai valid: Contoh:
|
ParquetTimestampInMillisecond |
Parameter opsional yang menentukan ketepatan dari nilai kolom Ketika atribut ini disetel ke Saat ini, Amazon Athena dan hanya AWS Glue dapat menangani presisi milidetik untuk catatan
Nilai default: Nilai valid: Contoh: |
GlueCatalogGeneration |
Untuk menghasilkan AWS Glue Data Catalog, atur pengaturan titik akhir ini ke Nilai default: Nilai yang valid: Contoh: Catatan: Jangan gunakan |
Menggunakan AWS Glue Data Catalog dengan target Amazon S3 untuk AWS DMS
AWS Glue adalah layanan yang menyediakan cara sederhana untuk mengkategorikan data, dan terdiri dari repositori metadata yang dikenal sebagai. AWS Glue Data Catalog Anda dapat berintegrasi AWS Glue Data Catalog dengan titik akhir target Amazon S3 dan kueri data Amazon S3 melalui layanan lain AWS seperti Amazon Athena. Amazon Redshift berfungsi dengan AWS Glue tetapi AWS DMS tidak mendukungnya sebagai opsi yang dibuat sebelumnya.
Untuk menghasilkan katalog data, atur pengaturan GlueCatalogGeneration
endpoint ketrue
, seperti yang ditunjukkan pada AWS CLI contoh berikut.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "DataFormat": "parquet", "GlueCatalogGeneration": true}'
Untuk tugas replikasi beban penuh yang menyertakan data csv
tipe, setel IncludeOpForFullLoad
ketrue
.
Jangan gunakan GlueCatalogGeneration
dengan PreserveTransactions
danCdcPath
. AWS Glue Crawler tidak dapat merekonsiliasi skema berbeda dari file yang disimpan di bawah yang ditentukan. CdcPath
Agar Amazon Athena dapat mengindeks data Amazon S3 Anda, dan agar Anda dapat melakukan kueri data menggunakan kueri SQL standar melalui Amazon Athena, peran IAM yang dilampirkan ke titik akhir harus memiliki kebijakan berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::bucket123", "arn:aws:s3:::bucket123/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:GetDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:111122223333:catalog", "arn:aws:glue:*:111122223333:database/*", "arn:aws:glue:*:111122223333:table/*" ] }, { "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:CreateWorkGroup" ], "Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*" } ] }
Referensi
Menggunakan enkripsi data, file parket, dan CDC pada target Amazon S3 Anda
Anda dapat menggunakan pengaturan target titik akhir S3 pengaturan untuk mengonfigurasi hal berikut:
-
Kunci KMS khusus untuk mengenkripsi objek target S3 Anda.
-
Parquet file sebagai format penyimpanan untuk objek target S3.
-
Penangkapan perubahan data (CDC) termasuk transaksi order pada target S3.
-
Integrasikan AWS Glue Data Catalog dengan titik akhir target Amazon S3 Anda dan kueri data Amazon S3 melalui layanan lain seperti Amazon Athena.
AWS KMS pengaturan kunci untuk enkripsi data
Contoh berikut menunjukkan konfigurasi kunci KMS kustom untuk mengenkripsi objek target S3 Anda. Untuk memulai, Anda dapat menjalankan perintah create-endpoint
CLI berikut.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'
Di sini, objek JSON ditentukan oleh pilihan --s3-settings
yang mendefinisikan dua parameter. Satu berupa parameter EncryptionMode
dengan nilai SSE_KMS
. Yang lainnya berupa parameter ServerSideEncryptionKmsKeyId
dengan nilai arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480
. Nilai ini adalah Amazon Resource Name (ARN) untuk kunci KMS kustom Anda. Untuk target S3, Anda juga menentukan pengaturan tambahan. Ini mengidentifikasi peran akses server, menyediakan pembatas untuk format penyimpanan objek CSV default, dan memberikan lokasi dan nama bucket untuk menyimpan objek target S3.
Secara default, enkripsi data S3 terjadi menggunakan enkripsi pada sisi server S3. Untuk target S3 di contoh sebelumnya, ini juga setara dengan menentukan pengaturan titik akhir seperti dalam contoh berikut.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_S3"}'
Untuk informasi lebih lanjut tentang bekerja dengan enkripsi sisi server S3, lihat Melindungi Data Menggunakan Enkripsi Sisi Server.
catatan
Anda juga dapat menggunakan perintah CLI modify-endpoint
untuk mengubah nilai parameter EncryptionMode
untuk titik akhir yang sudah ada dari SSE_KMS
ke SSE_S3
. Tapi Anda tidak dapat mengubah nilai EncryptionMode
dari SSE_S3
ke SSE_KMS
.
Pengaturan dalam menggunakan file .parquet untuk menyimpan objek target S3
Format default untuk membuat objek target S3 adalah file .csv. Contoh berikut menunjukkan beberapa pengaturan titik akhir untuk menentukan file .parquet sebagai format untuk membuat objek target S3. Anda dapat menentukan format file .parquet dengan semua default, seperti dalam contoh berikut.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "DataFormat": "parquet"}'
Di sini, parameter DataFormat
diatur ke parquet
untuk mengaktifkan format dengan semua default S3. Default ini juga termasuk pengodean kamus ("EncodingType: "rle-dictionary"
) yang menggunakan kombinasi pengodean bit-packing dan run-length untuk lebih efisien menyimpan nilai-nilai berulang.
Anda dapat menambahkan pengaturan tambahan untuk pilihan selain default seperti dalam contoh berikut.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "CompressionType": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000, "EnableStatistics": false }'
Di sini, selain parameter untuk beberapa pilihan bucket S3 standar dan parameter DataFormat
, parameter file .parquet tambahan berikut ditetapkan:
-
EncodingType
– Atur ke pengodean kamus (plain-dictionary
) yang menyimpan nilai-nilai yang ditemui di setiap kolom dalam potongan perkolom dari halaman kamus. -
DictPageSizeLimit
– Atur ke ukuran halaman kamus maksimum 3 MB. -
EnableStatistics
– Nonaktifkan default yang memungkinkan pengumpulan statistik tentang halaman file Parquet dan grup baris.
Perubahan pengambilan data (CDC) termasuk transaksi order pada target S3
Secara default saat AWS DMS menjalankan tugas CDC, ia menyimpan semua perubahan baris yang dicatat dalam database sumber Anda (atau database) dalam satu atau beberapa file untuk setiap tabel. Setiap set file yang berisi perubahan untuk tabel yang sama berada dalam satu direktori target yang terkait dengan tabel itu. AWS DMS membuat direktori target sebanyak tabel database yang dimigrasikan ke titik akhir target Amazon S3. File disimpan pada target S3 di direktori ini tanpa memperhatikan pesanan transaksi. Untuk informasi lebih lanjut tentang ketentuan penamaan file, konten data, dan format, lihat Menggunakan Amazon S3 sebagai target AWS Database Migration Service.
Untuk menangkap perubahan basis data sumber dengan cara yang juga menangkap urutan transaksi, Anda dapat menentukan pengaturan titik akhir S3 yang mengarahkan AWS DMS untuk menyimpan perubahan baris untuk semua tabel database dalam satu atau beberapa file.csv yang dibuat tergantung pada ukuran transaksi. File transaksi .csv ini berisi semua perubahan baris terdaftar secara berurutan dalam urutan transaksi untuk semua tabel yang terlibat dalam setiap transaksi. File-file transaksi ini diletakkan bersama dalam satu Direktori transaksi yang Anda juga tentukan pada target S3. Dalam setiap file transaksi, operasi transaksi dan identitas database dan tabel sumber untuk setiap perubahan baris disimpan sebagai bagian dari data baris sebagai berikut.
operation
,table_name
,database_schema_name
,field_value
,...
Di sini,
adalah operasi transaksi pada baris yang diubah, operation
adalah nama tabel basis data di mana baris diubah, table_name
adalah nama skema basis data tempat tabel berada, dan database_schema_name
adalah yang pertama dari satu atau lebih nilai field yang menentukan data untuk baris.field_value
Contoh berikut dari file transaksi menunjukkan baris yang diubah untuk satu atau beberapa transaksi yang melibatkan dua tabel.
I,Names_03cdcad11a,rdsTempsdb,13,Daniel U,Names_03cdcad11a,rdsTempsdb,23,Kathy D,Names_03cdcad11a,rdsTempsdb,13,Cathy I,Names_6d152ce62d,rdsTempsdb,15,Jane I,Names_6d152ce62d,rdsTempsdb,24,Chris I,Names_03cdcad11a,rdsTempsdb,16,Mike
Di sini, operasi transaksi pada setiap baris ditunjukkan oleh I
(insert), U
(update), atau D
(delete) di kolom pertama. Nama tabel adalah nilai kolom kedua (misalnya, Names_03cdcad11a
). Nama skema basis data adalah nilai kolom ketiga (misalnya, rdsTempsdb
). Dan kolom yang tersisa diisi dengan data baris Anda sendiri (misalnya, 13,Daniel
).
Selain itu, AWS DMS beri nama file transaksi yang dibuatnya pada target Amazon S3 menggunakan stempel waktu sesuai dengan konvensi penamaan berikut.
CDC_TXN-
timestamp
.csv
Di sini,
adalah waktu ketika file transaksi dibuat, seperti dalam contoh berikut. timestamp
CDC_TXN-20201117153046033.csv
Stempel waktu dalam nama file ini memastikan bahwa file transaksi dibuat dan tercantum dalam urutan transaksi ketika Anda mencantumkannya di direktori transaksi mereka.
catatan
Saat menangkap perubahan data dalam urutan transaksi, AWS DMS selalu simpan perubahan baris dalam file.csv terlepas dari nilai pengaturan DataFormat
S3 pada target. AWS DMS tidak menyimpan perubahan data dalam urutan transaksi menggunakan file.parquet.
Untuk mengontrol frekuensi penulisan ke target Amazon S3 selama tugas replikasi data, Anda dapat mengonfigurasi dan pengaturan. CdcMaxBatchInterval
CdcMinFileSize
Hal ini dapat menghasilkan performa yang lebih baik ketika menganalisis data tanpa operasi overhead tambahan. Untuk informasi lebih lanjut, lihat Pengaturan titik akhir saat menggunakan Amazon S3 sebagai target AWS DMS
Untuk memberitahu AWS DMS untuk menyimpan semua perubahan baris dalam urutan transaksi
-
Setel pengaturan
PreserveTransactions
S3 pada target ketrue
. -
Setel pengaturan
CdcPath
S3 pada target ke jalur folder relatif tempat Anda AWS DMS ingin menyimpan file transaksi.csv.AWS DMS membuat jalur ini baik di bawah bucket target S3 default dan direktori kerja atau di bawah folder bucket dan bucket yang Anda tentukan menggunakan pengaturan
BucketName
danBucketFolder
S3 pada target.
Menunjukkan operasi sumber DB dalam data S3 bermigrasi
Saat AWS DMS memigrasikan catatan ke target S3, itu dapat membuat bidang tambahan di setiap rekaman yang dimigrasi. Field tambahan ini menunjukkan operasi diterapkan ke catatan pada basis data sumber. Cara AWS DMS membuat dan menetapkan bidang pertama ini tergantung pada jenis tugas migrasi dan pengaturanincludeOpForFullLoad
,cdcInsertsOnly
, dancdcInsertsAndUpdates
.
Untuk beban penuh saat includeOpForFullLoad
adatrue
, AWS DMS selalu buat bidang pertama tambahan di setiap catatan.csv. Field ini berisi huruf I (INSERT) untuk menunjukkan bahwa baris dimasukkan pada basis data sumber. Untuk beban CDC ketika cdcInsertsOnly
false
(default), AWS DMS juga selalu membuat bidang pertama tambahan di setiap catatan.csv atau .parquet. Field ini berisi huruf I (INSERT), U (UPDATE), atau D (DELETE) untuk menunjukkan apakah baris dimasukkan, diperbarui, atau dihapus pada sumber basis data.
Dalam tabel berikut, Anda dapat melihat bagaimana pengaturan cdcInsertsOnly
atribut includeOpForFullLoad
dan bekerja sama untuk memengaruhi pengaturan catatan yang dimigrasi.
Dengan pengaturan parameter ini | DMS menetapkan catatan target sebagai berikut untuk keluaran.csv dan .parquet | ||
---|---|---|---|
includeOpForFullLoad | cdcInsertsOnly | Untuk beban penuh | Untuk beban CDC |
true |
true |
Menambahkan nilai field pertama yang ditetapkan ke I |
Menambahkan nilai field pertama yang ditetapkan ke I |
false |
false |
Tidak ada field tambahan | Menambahkan nilai field pertama yang ditetapkan ke I , U , atau D |
false |
true |
Tidak ada field tambahan | Tidak ada field tambahan |
true |
false |
Menambahkan nilai field pertama yang ditetapkan ke I |
Menambahkan nilai field pertama yang ditetapkan ke I , U , atau D |
Saat includeOpForFullLoad
dan cdcInsertsOnly
ditetapkan ke nilai yang sama, catatan target diatur menurut atribut yang mengontrol pengaturan catatan untuk jenis migrasi saat ini. Atribut tersebut adalah includeOpForFullLoad
untuk beban penuh dan cdcInsertsOnly
untuk beban CDC.
Kapan includeOpForFullLoad
dan cdcInsertsOnly
diatur ke nilai yang berbeda, AWS DMS membuat pengaturan catatan target konsisten untuk CDC dan beban penuh. Hal ini dilakukan dengan membuat pengaturan catatan untuk beban CDC sesuai dengan pengaturan catatan untuk semua beban penuh sebelumnya yang ditentukan oleh includeOpForFullLoad
.
Dengan kata lain, anggaplah beban penuh diatur untuk menambahkan field pertama untuk menunjukkan catatan yang dimasukkan. Dalam kasus ini, beban CDC berikut diatur untuk menambahkan field pertama yang menunjukkan catatan yang dimasukkan, diperbarui, atau dihapus sesuai sumbernya. Sebaliknya, anggaplah beban penuh diatur untuk tidak menambahkan field pertama untuk menunjukkan catatan yang dimasukkan. Dalam kasus ini, beban CDC juga diatur untuk tidak menambahkan field pertama untuk setiap catatan, terlepas dari operasi catatan yang sesuai sumbernya.
Demikian juga dengan bagaimana DMS membuat dan menetapkan field pertama tambahan bergantung pada pengaturan includeOpForFullLoad
dan cdcInsertsAndUpdates
. Dalam tabel berikut, Anda dapat melihat bagaimana pengaturan atribut includeOpForFullLoad
dan cdcInsertsAndUpdates
bekerja sama untuk memengaruhi pengaturan catatan yang dimigrasikan dalam format ini.
Dengan pengaturan parameter ini | DMS menetapkan catatan target sebagai berikut untuk keluaran .csv | ||
---|---|---|---|
includeOpForFullLoad | cdcInsertsAndUpdate | Untuk beban penuh | Untuk beban CDC |
true |
true |
Menambahkan nilai field pertama yang ditetapkan ke I |
Menambahkan nilai field pertama yang ditetapkan ke I atau U |
false |
false |
Tidak ada field tambahan | Menambahkan nilai field pertama yang ditetapkan ke I , U , atau D |
false |
true |
Tidak ada field tambahan | Menambahkan nilai field pertama yang ditetapkan ke I atau U |
true |
false |
Menambahkan nilai field pertama yang ditetapkan ke I |
Menambahkan nilai field pertama yang ditetapkan ke I , U , atau D |
Tipe data target untuk S3 Parquet
Tabel berikut menunjukkan tipe data target Parket yang didukung saat menggunakan AWS DMS dan pemetaan default dari tipe AWS DMS data.
Untuk informasi tambahan tentang tipe AWS DMS data, lihatTipe data untuk AWS Database Migration Service.
AWS DMS tipe data |
Tipe data parquet S3 |
---|---|
BYTES |
BINARY |
DATE |
DATE32 |
TIME |
TIME32 |
DATETIME |
TIMESTAMP |
INT1 |
INT8 |
INT2 |
INT16 |
INT4 |
INT32 |
INT8 |
INT64 |
NUMERIC |
DECIMAL |
REAL4 |
FLOAT |
REAL8 |
DOUBLE |
STRING |
STRING |
UINT1 |
UINT8 |
UINT2 |
UINT16 |
UINT4 |
UINT32 |
UINT8 |
UINT64 |
WSTRING |
STRING |
BLOB |
BINARY |
NCLOB |
STRING |
CLOB |
STRING |
BOOLEAN |
BOOL |