Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Secara otomatis mengarsipkan item ke Amazon S3 menggunakan DynamoDB TTL
Tabby Ward, Amazon Web Services
Ringkasan
Pola ini menyediakan langkah-langkah untuk menghapus data lama dari tabel Amazon DynamoDB dan mengarsipkannya ke bucket Amazon Simple Storage Service (Amazon S3) di Amazon Web Services (AWS) tanpa harus mengelola armada server.
Pola ini menggunakan Amazon DynamoDB Time to Live (TTL) untuk secara otomatis menghapus item lama dan Amazon DynamoDB Streams untuk menangkap item kedaluwarsa TTL. Kemudian menghubungkan DynamoDB Streams ke AWS Lambda, yang menjalankan kode tanpa menyediakan atau mengelola server apa pun.
Saat item baru ditambahkan ke aliran DynamoDB, fungsi Lambda dimulai dan menulis data ke aliran pengiriman Amazon Data Firehose. Firehose menyediakan solusi sederhana dan terkelola sepenuhnya untuk memuat data sebagai arsip ke Amazon S3.
DynamoDB sering digunakan untuk menyimpan data time series, seperti data klik-aliran halaman web atau data Internet of Things (IoT) dari sensor dan perangkat yang terhubung. Daripada menghapus item yang jarang diakses, banyak pelanggan ingin mengarsipkannya untuk tujuan audit. TTL menyederhanakan pengarsipan ini dengan secara otomatis menghapus item berdasarkan atribut timestamp.
Item yang dihapus oleh TTL dapat diidentifikasi di DynamoDB Streams, yang menangkap urutan modifikasi tingkat item yang diurutkan waktu dan menyimpan urutan dalam log hingga 24 jam. Data ini dapat dikonsumsi oleh fungsi Lambda dan diarsipkan dalam bucket Amazon S3 untuk mengurangi biaya penyimpanan. Untuk mengurangi biaya lebih lanjut, aturan siklus hidup Amazon S3 dapat dibuat untuk mentransisikan data secara otomatis (segera setelah dibuat) ke kelas penyimpanan
Prasyarat dan batasan
Prasyarat
Akun AWS aktif.
AWS Command Line Interface (AWS CLI) 1.7 atau yang lebih baru, diinstal dan dikonfigurasi di macOS, Linux, atau Windows.
Python 3.7
atau yang lebih baru. Boto3
, diinstal dan dikonfigurasi. Jika Boto3 belum diinstal, jalankan python -m pip install boto3perintah untuk menginstalnya.
Arsitektur
Tumpukan teknologi
Amazon DynamoDB
Amazon DynamoDB Streams
Amazon Data Firehose
AWS Lambda
Amazon S3

Item dihapus oleh TTL.
Pemicu aliran DynamoDB memanggil fungsi prosesor aliran Lambda.
Fungsi Lambda menempatkan catatan dalam aliran pengiriman Firehose dalam format batch.
Catatan data diarsipkan dalam bucket S3.
Alat
AWS CLI — AWS Command Line Interface (AWS CLI) Command Line Interface (AWS CLI) adalah alat terpadu untuk mengelola layanan AWS Anda.
Amazon DynamoDB - Amazon DynamoDB adalah database nilai kunci dan dokumen yang memberikan kinerja milidetik satu digit pada skala apa pun.
Amazon DynamoDB Time to Live (TTL) - Amazon DynamoDB TTL membantu Anda menentukan stempel waktu per item untuk menentukan kapan item tidak lagi diperlukan.
Amazon DynamoDB Streams - Amazon DynamoDB Streams menangkap urutan modifikasi tingkat item yang diurutkan waktu di tabel DynamoDB apa pun dan menyimpan informasi ini dalam log hingga 24 jam.
Amazon Data Firehose — Amazon Data Firehose adalah cara termudah untuk memuat data streaming secara andal ke dalam data lake, penyimpanan data, dan layanan analitik.
AWS Lambda — AWS Lambda menjalankan kode tanpa perlu menyediakan atau mengelola server. Anda hanya membayar untuk waktu komputasi yang Anda konsumsi.
Amazon S3 — Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja terdepan di industri.
Kode
Kode untuk pola ini tersedia di item GitHub Arsip ke S3 menggunakan repositori DynamoDB TTL
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat tabel DynamoDB. | Gunakan AWS CLI untuk membuat tabel di DynamoDB yang disebut.
| Arsitek cloud, Pengembang aplikasi |
Nyalakan DynamoDB TTL. | Gunakan AWS CLI untuk mengaktifkan DynamoDB TTL untuk atribut.
| Arsitek cloud, Pengembang aplikasi |
Nyalakan aliran DynamoDB. | Gunakan AWS CLI untuk mengaktifkan aliran DynamoDB untuk
Aliran ini akan berisi catatan untuk item baru, item yang diperbarui, item yang dihapus, dan item yang dihapus oleh TTL. Catatan untuk item yang dihapus oleh TTL berisi atribut metadata tambahan untuk membedakannya dari item yang dihapus secara manual. Dalam pola ini, hanya item yang dihapus oleh TTL yang diarsipkan, tetapi Anda hanya dapat mengarsipkan catatan di mana | Arsitek cloud, Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat ember S3. | Gunakan AWS CLI untuk membuat bucket S3 tujuan di Wilayah AWS Anda, ganti
Pastikan nama bucket S3 Anda unik secara global, karena namespace dibagikan oleh semua akun AWS. | Arsitek cloud, Pengembang aplikasi |
Buat kebijakan siklus hidup 30 hari untuk bucket S3. |
| Arsitek cloud, Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat dan konfigurasikan aliran pengiriman Firehose. | Unduh dan edit contoh Kode ini ditulis dengan Python dan menunjukkan cara membuat aliran pengiriman Firehose dan peran AWS Identity and Access Management (IAM). Peran IAM akan memiliki kebijakan yang dapat digunakan oleh Firehose untuk menulis ke bucket S3 tujuan. Untuk menjalankan skrip, gunakan argumen perintah dan baris perintah berikut. Argumen 1= Argumen 2= Nama Firehose Anda (Pilot ini Argumen 3= Nama peran IAM Anda (Pilot ini menggunakan
Jika peran IAM yang ditentukan tidak ada, skrip akan membuat peran asumsi dengan kebijakan hubungan tepercaya, serta kebijakan yang memberikan izin Amazon S3 yang memadai. Untuk contoh kebijakan ini, lihat bagian Informasi tambahan. | Arsitek cloud, Pengembang aplikasi |
Verifikasi aliran pengiriman Firehose. | Jelaskan aliran pengiriman Firehose dengan menggunakan AWS CLI untuk memverifikasi bahwa aliran pengiriman berhasil dibuat.
| Arsitek cloud, Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat kebijakan kepercayaan untuk fungsi Lambda. | Buat file kebijakan kepercayaan dengan informasi berikut.
Ini memberi izin fungsi Anda untuk mengakses sumber daya AWS. | Arsitek cloud, Pengembang aplikasi |
Buat peran eksekusi untuk fungsi Lambda. | Untuk membuat peran eksekusi, jalankan kode berikut.
| Arsitek cloud, Pengembang aplikasi |
Tambahkan izin ke peran. | Untuk menambahkan izin ke peran, gunakan
| Arsitek cloud, Pengembang aplikasi |
Buat fungsi Lambda. | Kompres
Saat Anda membuat fungsi Lambda, Anda akan memerlukan peran eksekusi Lambda ARN. Untuk mendapatkan ARN, jalankan kode berikut.
Untuk membuat fungsi Lambda, jalankan kode berikut.
| Arsitek cloud, Pengembang aplikasi |
Konfigurasikan pemicu fungsi Lambda. | Gunakan AWS CLI untuk mengonfigurasi pemicu (DynamoDB Streams), yang memanggil fungsi Lambda. Ukuran batch 400 adalah untuk menghindari masalah konkurensi Lambda.
| Arsitek cloud, Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tambahkan item dengan cap waktu kedaluwarsa ke tabel Reservasi. | Untuk menguji fungsionalitas, tambahkan item dengan stempel waktu epoch kedaluwarsa ke tabel. Fungsi Lambda dimulai pada aktivitas DynamoDB Stream, dan memfilter acara untuk mengidentifikasi aktivitas atau item yang dihapus. Aliran pengiriman Firehose mentransfer item ke bucket S3 tujuan dengan awalan. pentingUntuk mengoptimalkan pengambilan data, konfigurasikan Amazon S3 dengan | Arsitek awan |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus semua sumber daya. | Hapus semua sumber daya untuk memastikan bahwa Anda tidak dikenakan biaya untuk layanan apa pun yang tidak Anda gunakan. | Arsitek cloud, Pengembang aplikasi |
Sumber daya terkait
Informasi tambahan
Membuat dan mengonfigurasi aliran pengiriman Firehose — Contoh kebijakan
Dokumen contoh kebijakan hubungan tepercaya Firehose
firehose_assume_role = { 'Version': '2012-10-17', 'Statement': [ { 'Sid': '', 'Effect': 'Allow', 'Principal': { 'Service': 'firehose.amazonaws.com' }, 'Action': 'sts:AssumeRole' } ] }
Contoh kebijakan izin S3
s3_access = { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "{your s3_bucket ARN}/*", "{Your s3 bucket ARN}" ] } ] }
Uji fungsionalitas - konfigurasi Amazon S3
Konfigurasi Amazon S3 dengan yang berikut ini Prefix dan ErrorOutputPrefix dipilih untuk mengoptimalkan pengambilan data.
prefix
firehosetos3example/year=! {timestamp: yyyy}/month=! {timestamp:MM}/day=! {timestamp:dd}/hour=!{timestamp:HH}/
Firehose pertama kali membuat folder dasar yang disebut firehosetos3example langsung di bawah bucket S3. Kemudian mengevaluasi ekspresi!{timestamp:yyyy},,!{timestamp:MM}, dan !{timestamp:HH} ke tahun!{timestamp:dd}, bulan, hari, dan jam menggunakan DateTimeFormatter
Misalnya, perkiraan timestamp kedatangan 1604683577 dalam waktu zaman Unix mengevaluasi,,, dan. year=2020 month=11 day=06 hour=05 Oleh karena itu, lokasi di Amazon S3, tempat catatan data dikirimkan, dievaluasi. firehosetos3example/year=2020/month=11/day=06/hour=05/
ErrorOutputPrefix
firehosetos3erroroutputbase/!{firehose:random-string}/!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd}/
ErrorOutputPrefixHasilnya dalam folder dasar yang dipanggil firehosetos3erroroutputbase langsung di bawah bucket S3. Ekspresi !{firehose:random-string} mengevaluasi ke string acak 11 karakter seperti. ztWxkdg3Thg Lokasi untuk objek Amazon S3 tempat catatan gagal dikirimkan dapat dievaluasi. firehosetos3erroroutputbase/ztWxkdg3Thg/processing-failed/2020/11/06/