Otomatiskan replikasi instans Amazon RDS di seluruh Akun AWS - AWS Prescriptive Guidance

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

Otomatiskan replikasi instans Amazon RDS di seluruh Akun AWS

Parag Nagwekar dan Arun Chandapillai, Amazon Web Services

Ringkasan

Pola ini menunjukkan kepada Anda cara mengotomatiskan proses mereplikasi, melacak, dan memutar kembali instans DB Amazon Relational Database Service (Amazon RDS) Anda di berbagai tempat dengan menggunakan dan. Akun AWS AWS Step Functions AWS Lambda Anda dapat menggunakan otomatisasi ini untuk melakukan replikasi skala besar instans RDS DB tanpa dampak kinerja atau overhead operasional—terlepas dari ukuran organisasi Anda. Anda juga dapat menggunakan pola ini untuk membantu organisasi Anda mematuhi strategi tata kelola data wajib atau persyaratan kepatuhan yang meminta agar data Anda direplikasi dan berlebihan di berbagai bidang. Akun AWS Wilayah AWS Replikasi lintas akun data Amazon RDS dalam skala besar adalah proses manual yang tidak efisien dan rawan kesalahan yang dapat memakan biaya dan memakan waktu, tetapi otomatisasi dalam pola ini dapat membantu Anda mencapai replikasi lintas akun dengan aman, efektif, dan efisien.

Prasyarat dan batasan

Prasyarat

  • Dua Akun AWS

  • Instans RDS DB, aktif dan berjalan di sumber Akun AWS

  • Grup subnet untuk instans RDS DB di tujuan Akun AWS

  • Kunci AWS Key Management Service (AWS KMS) yang dibuat di sumber Akun AWS dan dibagikan dengan akun tujuan (Untuk informasi selengkapnya tentang detail kebijakan, lihat bagian Informasi tambahan dari pola ini.)

  • Sebuah AWS KMS key di tujuan Akun AWS untuk mengenkripsi database di akun tujuan

Batasan

Versi produk

  • Python 3.9 (menggunakan) AWS Lambda

  • PostgreSQL 11.3, 13.x, dan 14.x

Arsitektur

Tumpukan teknologi

  • Amazon Relational Database Service (Amazon RDS)

  • Amazon Simple Notification Service (Amazon SNS)

  • AWS Key Management Service (AWS KMS)

  • AWS Lambda

  • AWS Secrets Manager

  • AWS Step Functions

Arsitektur target

Diagram berikut menunjukkan arsitektur untuk menggunakan Step Functions untuk mengatur replikasi instans RDS DB yang dijadwalkan dan sesuai permintaan dari akun sumber (akun A) ke akun tujuan (akun B).

Mereplikasi instans Amazon RDS DB di seluruh akun sumber dan tujuan dengan menggunakan Step Functions.

Di akun sumber (akun A dalam diagram), mesin status Step Functions melakukan hal berikut:

  1. Membuat snapshot dari instans RDS DB di akun A.

  2. Menyalin dan mengenkripsi snapshot dengan akun AWS KMS key A. Untuk memastikan enkripsi dalam perjalanan, snapshot dienkripsi apakah instans DB dienkripsi atau tidak.

  3. Berbagi snapshot DB dengan akun B dengan memberikan akses akun B ke snapshot.

  4. Mendorong pemberitahuan ke topik SNS, dan kemudian topik SNS memanggil fungsi Lambda di akun B.

Di akun tujuan (akun B dalam diagram), fungsi Lambda menjalankan mesin status Step Functions untuk mengatur hal-hal berikut:

  1. Menyalin snapshot bersama dari akun A ke akun B, saat menggunakan AWS KMS key dari akun A untuk mendekripsi data terlebih dahulu dan kemudian mengenkripsi data dengan menggunakan akun dalam B. AWS KMS key

  2. Membaca rahasia dari Secrets Manager untuk menangkap nama instans DB saat ini.

  3. Mengembalikan instans DB dari snapshot dengan nama baru dan default untuk AWS KMS key Amazon RDS.

  4. Membaca endpoint dari database baru dan memperbarui rahasia di Secrets Manager dengan endpoint database baru, dan kemudian tag instance DB sebelumnya sehingga dapat dihapus nanti.

  5. Menyimpan instance N terbaru dari database dan menghapus semua instance lainnya.

Alat

Layanan AWS

  • Amazon Relational Database Service (Amazon RDS) membantu Anda menyiapkan, mengoperasikan, dan menskalakan database relasional di. AWS Cloud

  • Amazon Simple Notification Service (Amazon SNS) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS

  • AWS Key Management Service (AWS KMS) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • AWS SDK untuk Python (Boto3)adalah kit pengembangan perangkat lunak yang membantu Anda mengintegrasikan aplikasi, perpustakaan, atau skrip Python Anda. Layanan AWS

  • AWS Secrets Managermembantu Anda mengganti kredensi hardcode dalam kode Anda, termasuk kata sandi, dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram.

  • AWS Step Functionsadalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi Lambda dan lainnya untuk membangun aplikasi bisnis yang penting. Layanan AWS

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub Crossaccount RDS Replication.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan CloudFormation tumpukan di akun sumber.

  1. Masuk ke AWS Management Console akun sumber (akun A) dan buka CloudFormation konsol.

  2. Di panel navigasi, pilih Stacks (Tumpukan).

  3. Pilih Buat tumpukan, lalu pilih Dengan sumber daya yang ada (sumber daya impor).

  4. Pada halaman Identifikasi sumber daya, pilih Berikutnya.

  5. Pada halaman Tentukan templat, pilih Unggah templat.

  6. Pilih Pilih file, pilih Cloudformation-SourceAccountRDS.yaml file dari repositori RDS Replikasi GitHub Crossaccount, dan kemudian pilih Berikutnya.

  7. Untuk nama Stack, masukkan nama untuk tumpukan Anda.

  8. Di bagian Parameter, tentukan parameter yang ditentukan dalam template tumpukan:

    • Untuk DestinationAccountNumber, masukkan nomor akun untuk instans RDS DB tujuan Anda.

    • Untuk KeyName, masukkan Anda AWS KMS key.

    • Untuk ScheduleExpression, masukkan ekspresi cron (defaultnya adalah 12:00 pagi setiap hari).

    • Untuk Sumber DBIdentifier, masukkan nama database sumber.

    • Untuk DBSnapshotNama Sumber, masukkan nama snapshot atau terima default.

  9. Pilih Berikutnya.

  10. Pada halaman Configure stack options, tinggalkan nilai default, lalu pilih Next.

  11. Tinjau konfigurasi tumpukan Anda, lalu pilih Kirim.

  12. Pilih tab Sumber Daya untuk tumpukan Anda, lalu catat Nama Sumber Daya Amazon (ARN) dari topik SNS.

Administrator cloud, arsitek Cloud

Menyebarkan CloudFormation tumpukan di akun tujuan.

  1. Masuk ke AWS Management Console akun tujuan (akun B) dan buka CloudFormation konsol.

  2. Di panel navigasi, pilih Stacks (Tumpukan).

  3. Pilih Buat tumpukan, lalu pilih Dengan sumber daya yang ada (sumber daya impor).

  4. Pada halaman Identifikasi sumber daya, pilih Berikutnya.

  5. Pada halaman Tentukan templat, pilih Unggah templat.

  6. Pilih file, pilih Cloudformation-DestinationAccountRDS.yaml file dari repositori GitHub Crossaccount RDS Replication, dan kemudian pilih Next.

  7. Untuk nama Stack, masukkan nama untuk tumpukan Anda.

  8. Di bagian Parameter, tentukan parameter yang ditentukan dalam template tumpukan:

    • Untuk DatabaseName, masukkan nama untuk database Anda.

    • Untuk Engine, masukkan jenis mesin database yang cocok dengan database sumber.

    • Untuk DBInstanceKelas, masukkan jenis instance database pilihan atau terima default.

    • Untuk Subnetgroups, masukkan grup subnet VPC yang ada. Untuk petunjuk tentang membuat grup subnet, lihat Langkah 2: Membuat grup subnet DB dalam dokumentasi Amazon RDS.

    • Untuk SecretName, masukkan jalur dan nama rahasia, atau terima default.

    • Untuk SGID, masukkan ID grup keamanan klaster tujuan Anda.

    • Untuk KMSKey, masukkan ARN kunci KMS di akun tujuan Anda.

    • Untuk NoOfOlderInstances, masukkan jumlah salinan lama dari instans RDS DB yang ingin Anda simpan untuk rollback.

  9. Pilih Berikutnya.

  10. Pada halaman Configure stack options, tinggalkan nilai default, lalu pilih Next.

  11. Tinjau konfigurasi tumpukan Anda, lalu pilih Kirim.

  12. Pilih tab Sumber Daya untuk tumpukan Anda, lalu catat ID Fisik dan ARN dari. InvokeStepFunction

Arsitek cloud, DevOps insinyur, administrator Cloud

Verifikasi pembuatan instans RDS DB di akun tujuan.

  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS.

  2. Di panel navigasi, pilih Databases, lalu verifikasi bahwa instans RDS DB baru muncul di bawah cluster baru.

Administrator cloud, arsitek Cloud, DevOps insinyur

Berlangganan fungsi Lambda ke topik SNS.

Anda harus menjalankan perintah AWS Command Line Interface (AWS CLI) berikut untuk berlangganan fungsi Lambda di akun tujuan (akun B) ke topik SNS di akun sumber (akun A).

Di akun A, jalankan perintah berikut:

aws sns add-permission \ --label lambda-access --aws-account-id <DestinationAccount> \ --topic-arn <Arn of SNSTopic > \ --action-name Subscribe ListSubscriptionsByTopic

Di akun B, jalankan perintah berikut:

aws lambda add-permission \ --function-name <Name of InvokeStepFunction> \ --source-arn <Arn of SNSTopic > \ --statement-id function-with-sns \ --action lambda:InvokeFunction \ --principal sns.amazonaws.com

Di akun B, jalankan perintah berikut:

aws sns subscribe \ --protocol "lambda" \ --topic-arn <Arn of SNSTopic> \ --notification-endpoint <Arn of InvokeStepFunction>
Administrator cloud, arsitek Cloud, DBA

Sinkronkan instans RDS DB dari akun sumber dengan akun tujuan.

Memulai replikasi database on-demand dengan memulai mesin status Step Functions di akun sumber.

  1. Buka Konsol Step Functions.

  2. Di panel navigasi, pilih mesin Negara.

  3. Pilih mesin negara Anda.

  4. Pada tab Eksekusi, pilih fungsi Anda, lalu pilih Mulai eksekusi untuk memulai alur kerja.

catatan

Penjadwal tersedia untuk membantu Anda menjalankan replikasi secara otomatis sesuai jadwal, tetapi penjadwal dimatikan secara default. Anda dapat menemukan nama CloudWatch aturan Amazon untuk penjadwal di tab Sumber daya CloudFormation tumpukan di akun tujuan. Untuk petunjuk tentang cara mengubah aturan CloudWatch Peristiwa, lihat Menghapus atau Menonaktifkan Aturan CloudWatch Peristiwa dalam dokumentasi. CloudWatch

Arsitek cloud, DevOps insinyur, administrator Cloud

Kembalikan database Anda ke salinan sebelumnya bila diperlukan.

  1. Buka konsol Secrets Manager.

  2. Dari daftar rahasia, pilih rahasia yang Anda buat dengan menggunakan CloudFormation template sebelumnya. Aplikasi Anda menggunakan rahasia untuk mengakses database di cluster tujuan.

  3. Untuk memperbarui nilai rahasia dari halaman detail, di bagian Nilai rahasia, pilih Ambil nilai rahasia, lalu pilih Edit.

  4. Masukkan detail titik akhir database.

Administrator cloud, DBA, DevOps insinyur

Sumber daya terkait

Informasi tambahan

Anda dapat menggunakan contoh kebijakan berikut untuk membagikan informasi AWS KMS key Anda Akun AWS.

{ "Version": "2012-10-17", "Id": "cross-account-rds-kms-key", "Statement": [ { "Sid": "Enable user permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<SourceAccount>:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow administration of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<DestinationAccount>:root" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<DestinationAccount>:root", "arn:aws:iam::<SourceAccount>:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*" } ] }