View a markdown version of this page

Membuat aplikasi untuk melakukan pemeliharaan database terjadwal - AWS Lambda

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

Membuat aplikasi untuk melakukan pemeliharaan database terjadwal

Anda dapat menggunakannya AWS Lambda untuk mengganti proses terjadwal seperti pencadangan sistem otomatis, konversi file, dan tugas pemeliharaan. Dalam contoh ini, Anda membuat aplikasi tanpa server yang melakukan pemeliharaan terjadwal reguler pada tabel DynamoDB dengan menghapus entri lama. Aplikasi ini menggunakan EventBridge Scheduler untuk memanggil fungsi Lambda pada jadwal cron. Saat dipanggil, fungsi menanyakan tabel untuk item yang lebih tua dari satu tahun, dan menghapusnya. Fungsi mencatat setiap item yang dihapus di CloudWatch Log.

Untuk mengimplementasikan contoh ini, pertama-tama buat tabel DynamoDB dan isi dengan beberapa data uji untuk fungsi Anda untuk kueri. Kemudian, buat fungsi Python Lambda dengan pemicu EventBridge Scheduler dan peran eksekusi IAM yang memberikan izin fungsi untuk membaca, dan menghapus, item dari tabel Anda.

Diagram menunjukkan aliran data antara EventBridge jadwal Scheduler, fungsi Lambda dan tabel DynamoDB.
Tip

Jika Anda baru mengenal Lambda, kami sarankan Anda menyelesaikan tutorial Buat fungsi Lambda pertama Anda sebelum membuat aplikasi contoh ini.

Anda dapat menerapkan aplikasi secara manual dengan membuat dan mengonfigurasi sumber daya dengan Konsol Manajemen AWS. Anda juga dapat menerapkan aplikasi dengan menggunakan AWS Serverless Application Model (AWS SAM). AWS SAM adalah alat infrastruktur sebagai kode (IAc). Dengan iAC, Anda tidak membuat sumber daya secara manual, tetapi mendefinisikannya dalam kode dan kemudian menerapkannya secara otomatis.

Jika Anda ingin mempelajari lebih lanjut tentang menggunakan Lambda dengan IaC sebelum menerapkan aplikasi contoh ini, lihat. Menggunakan Lambda dengan infrastruktur sebagai kode (IAc)

Prasyarat

Sebelum Anda dapat membuat aplikasi contoh, pastikan Anda memiliki alat dan program baris perintah yang diperlukan diinstal.

  • Python

    Untuk mengisi tabel DynamoDB yang Anda buat untuk menguji aplikasi, contoh ini menggunakan skrip Python dan file CSV untuk menulis data ke dalam tabel. Pastikan Anda memiliki Python versi 3.8 atau yang lebih baru diinstal pada mesin Anda.

  • AWS SAM CLI

    Jika Anda ingin membuat tabel DynamoDB dan menerapkan aplikasi contoh menggunakan AWS SAM, Anda perlu menginstal CLI. AWS SAM Ikuti petunjuk instalasi di Panduan AWS SAM Pengguna.

  • AWS CLI

    Untuk menggunakan skrip Python yang disediakan untuk mengisi tabel pengujian Anda, Anda harus menginstal dan mengonfigurasi AWS CLI. Ini karena skrip menggunakan AWS SDK untuk Python (Boto3), yang membutuhkan akses ke kredenSIAL AWS Identity and Access Management (IAM) Anda. Anda juga memerlukan yang AWS CLI diinstal untuk menyebarkan sumber daya menggunakan AWS SAM. Instal CLI dengan mengikuti petunjuk instalasi di Panduan AWS Command Line Interface Pengguna.

  • Pelabuhan

    Untuk menerapkan aplikasi menggunakan AWS SAM, Docker juga harus diinstal pada mesin build Anda. Ikuti petunjuk di Instal Docker Engine di situs web dokumentasi Docker.

Mengunduh file aplikasi contoh

Untuk membuat database contoh dan aplikasi pemeliharaan terjadwal, Anda perlu membuat file berikut di direktori proyek Anda:

Contoh file database

  • template.yaml- AWS SAM Template yang dapat Anda gunakan untuk membuat tabel DynamoDB

  • sample_data.csv- File CSV berisi data sampel untuk dimuat ke tabel Anda

  • load_sample_data.py- skrip Python yang menulis data dalam file CSV ke dalam tabel

Scheduled-maintenance file aplikasi

  • lambda_function.py- kode fungsi Python untuk fungsi Lambda yang melakukan pemeliharaan database

  • requirements.txt- file manifes yang mendefinisikan dependensi yang dibutuhkan kode fungsi Python Anda

  • template.yaml- AWS SAM Template yang dapat Anda gunakan untuk menyebarkan aplikasi

Berkas uji

  • test_app.py- skrip Python yang memindai tabel dan mengonfirmasi keberhasilan operasi fungsi Anda dengan mengeluarkan semua catatan yang lebih tua dari satu tahun

Perluas bagian berikut untuk melihat kode dan mempelajari lebih lanjut tentang peran setiap file dalam membuat dan menguji aplikasi Anda. Untuk membuat file di mesin lokal Anda, salin dan tempel kode di bawah ini.

Salin dan tempel kode berikut ke dalam file bernamatemplate.yaml.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: SAM Template for DynamoDB Table with Order_number as Partition Key and Date as Sort Key Resources: MyDynamoDBTable: Type: AWS::DynamoDB::Table DeletionPolicy: Retain UpdateReplacePolicy: Retain Properties: TableName: MyOrderTable BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: Order_number AttributeType: S - AttributeName: Date AttributeType: S KeySchema: - AttributeName: Order_number KeyType: HASH - AttributeName: Date KeyType: RANGE SSESpecification: SSEEnabled: true GlobalSecondaryIndexes: - IndexName: Date-index KeySchema: - AttributeName: Date KeyType: HASH Projection: ProjectionType: ALL PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true Outputs: TableName: Description: DynamoDB Table Name Value: !Ref MyDynamoDBTable TableArn: Description: DynamoDB Table ARN Value: !GetAtt MyDynamoDBTable.Arn
catatan

AWS SAM template menggunakan konvensi penamaan standartemplate.yaml. Dalam contoh ini, Anda memiliki dua file template - satu untuk membuat database contoh dan satu lagi untuk membuat aplikasi itu sendiri. Simpan di sub-direktori terpisah di folder proyek Anda.

AWS SAM Template ini mendefinisikan sumber daya tabel DynamoDB yang Anda buat untuk menguji aplikasi Anda. Tabel menggunakan kunci utama Order_number dengan semacam kunciDate. Agar fungsi Lambda Anda menemukan item secara langsung berdasarkan tanggal, kami juga mendefinisikan Indeks Sek under Global bernamaDate-index.

Untuk mempelajari lebih lanjut tentang membuat dan mengonfigurasi tabel DynamoDB menggunakan AWS::DynamoDB::Table sumber daya, lihat AWS: :DynamoDB: :Table di Panduan Pengguna. AWS CloudFormation

Salin dan tempel kode berikut ke dalam file bernamasample_data.csv.

Date,Order_number,CustomerName,ProductID,Quantity,TotalAmount 2023-09-01,ORD001,Alejandro Rosalez,PROD123,2,199.98 2023-09-01,ORD002,Akua Mansa,PROD456,1,49.99 2023-09-02,ORD003,Ana Carolina Silva,PROD789,3,149.97 2023-09-03,ORD004,Arnav Desai,PROD123,1,99.99 2023-10-01,ORD005,Carlos Salazar,PROD456,2,99.98 2023-10-02,ORD006,Diego Ramirez,PROD789,1,49.99 2023-10-03,ORD007,Efua Owusu,PROD123,4,399.96 2023-10-04,ORD008,John Stiles,PROD456,2,99.98 2023-10-05,ORD009,Jorge Souza,PROD789,3,149.97 2023-10-06,ORD010,Kwaku Mensah,PROD123,1,99.99 2023-11-01,ORD011,Li Juan,PROD456,5,249.95 2023-11-02,ORD012,Marcia Oliveria,PROD789,2,99.98 2023-11-03,ORD013,Maria Garcia,PROD123,3,299.97 2023-11-04,ORD014,Martha Rivera,PROD456,1,49.99 2023-11-05,ORD015,Mary Major,PROD789,4,199.96 2023-12-01,ORD016,Mateo Jackson,PROD123,2,199.99 2023-12-02,ORD017,Nikki Wolf,PROD456,3,149.97 2023-12-03,ORD018,Pat Candella,PROD789,1,49.99 2023-12-04,ORD019,Paulo Santos,PROD123,5,499.95 2023-12-05,ORD020,Richard Roe,PROD456,2,99.98 2024-01-01,ORD021,Saanvi Sarkar,PROD789,3,149.97 2024-01-02,ORD022,Shirley Rodriguez,PROD123,1,99.99 2024-01-03,ORD023,Sofia Martinez,PROD456,4,199.96 2024-01-04,ORD024,Terry Whitlock,PROD789,2,99.98 2024-01-05,ORD025,Wang Xiulan,PROD123,3,299.97

File ini berisi beberapa contoh data pengujian untuk mengisi tabel DynamoDB Anda dalam format nilai yang dipisahkan koma (CSV) standar.

Salin dan tempel kode berikut ke dalam file bernamaload_sample_data.py.

import boto3 import csv from decimal import Decimal # Initialize the DynamoDB client dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('MyOrderTable') print("DDB client initialized.") def load_data_from_csv(filename): with open(filename, 'r') as file: csv_reader = csv.DictReader(file) for row in csv_reader: item = { 'Order_number': row['Order_number'], 'Date': row['Date'], 'CustomerName': row['CustomerName'], 'ProductID': row['ProductID'], 'Quantity': int(row['Quantity']), 'TotalAmount': Decimal(str(row['TotalAmount'])) } table.put_item(Item=item) print(f"Added item: {item['Order_number']} - {item['Date']}") if __name__ == "__main__": load_data_from_csv('sample_data.csv') print("Data loading completed.")

Skrip Python ini pertama kali menggunakan AWS SDK untuk Python (Boto3) untuk membuat koneksi ke tabel DynamoDB Anda. Kemudian mengulangi setiap baris dalam file CSV data contoh, membuat item dari baris itu, dan menulis item ke tabel DynamoDB menggunakan boto3 SDK.

Salin dan tempel kode berikut ke dalam file bernamalambda_function.py.

import boto3 from datetime import datetime, timedelta from boto3.dynamodb.conditions import Key, Attr import logging logger = logging.getLogger() logger.setLevel("INFO") def lambda_handler(event, context): # Initialize the DynamoDB client dynamodb = boto3.resource('dynamodb') # Specify the table name table_name = 'MyOrderTable' table = dynamodb.Table(table_name) # Get today's date today = datetime.now() # Calculate the date one year ago one_year_ago = (today - timedelta(days=365)).strftime('%Y-%m-%d') # Scan the table using a global secondary index response = table.scan( IndexName='Date-index', FilterExpression='#date < :one_year_ago', ExpressionAttributeNames={ '#date': 'Date' }, ExpressionAttributeValues={ ':one_year_ago': one_year_ago } ) # Delete old items with table.batch_writer() as batch: for item in response['Items']: Order_number = item['Order_number'] batch.delete_item( Key={ 'Order_number': Order_number, 'Date': item['Date'] } ) logger.info(f'deleted order number {Order_number}') # Check if there are more items to scan while 'LastEvaluatedKey' in response: response = table.scan( IndexName='DateIndex', FilterExpression='#date < :one_year_ago', ExpressionAttributeNames={ '#date': 'Date' }, ExpressionAttributeValues={ ':one_year_ago': one_year_ago }, ExclusiveStartKey=response['LastEvaluatedKey'] ) # Delete old items with table.batch_writer() as batch: for item in response['Items']: batch.delete_item( Key={ 'Order_number': item['Order_number'], 'Date': item['Date'] } ) return { 'statusCode': 200, 'body': 'Cleanup completed successfully' }

Kode fungsi Python berisi fungsi handler (lambda_handler) yang dijalankan Lambda saat fungsi Anda dipanggil.

Ketika fungsi dipanggil oleh EventBridge Scheduler, ia menggunakan AWS SDK untuk Python (Boto3) untuk membuat koneksi ke tabel DynamoDB di mana tugas pemeliharaan terjadwal akan dilakukan. Kemudian menggunakan pust datetime aka Python untuk menghitung tanggal satu tahun yang lalu, sebelum memindai tabel untuk item yang lebih tua dari ini dan menghapusnya.

Perhatikan bahwa respons dari kueri DynamoDB dan operasi pemindaian dibatasi hingga ukuran maksimum 1 MB. Jika respons lebih besar dari 1 MB, DynamoDB mempaginasi data dan mengembalikan LastEvaluatedKey elemen dalam respons. Untuk memastikan bahwa fungsi kami memproses semua catatan dalam tabel, kami memeriksa keberadaan kunci ini dan terus melakukan pemindaian tabel dari posisi terakhir yang dievaluasi hingga seluruh tabel dipindai.

Salin dan tempel kode berikut ke dalam file bernamarequirements.txt.

boto3

Untuk contoh ini, kode fungsi Anda hanya memiliki satu dependensi yang bukan bagian dari pustaka Python standar - SDK untuk Python (Boto3) yang digunakan fungsi untuk memindai dan menghapus item dari tabel DynamoDB.

catatan

Versi SDK untuk Python (Boto3) disertakan sebagai bagian dari runtime Lambda, sehingga kode Anda akan berjalan tanpa menambahkan Boto3 ke paket penerapan fungsi Anda. Namun, untuk mempertahankan kontrol penuh atas dependensi fungsi Anda dan menghindari kemungkinan masalah dengan ketidaksejajaran versi, praktik terbaik untuk Python adalah memasukkan semua dependensi fungsi dalam paket penerapan fungsi Anda. Lihat Dependensi runtime di Python untuk mempelajari selengkapnya.

Salin dan tempel kode berikut ke dalam file bernamatemplate.yaml.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: SAM Template for Lambda function and EventBridge Scheduler rule Resources: MyLambdaFunction: Type: AWS::Serverless::Function Properties: FunctionName: ScheduledDBMaintenance CodeUri: ./ Handler: lambda_function.lambda_handler Runtime: python3.11 Architectures: - x86_64 Events: ScheduleEvent: Type: ScheduleV2 Properties: ScheduleExpression: cron(0 3 1 * ? *) Description: Run on the first day of every month at 03:00 AM Policies: - CloudWatchLogsFullAccess - Statement: - Effect: Allow Action: - dynamodb:Scan - dynamodb:BatchWriteItem Resource: !Sub 'arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/MyOrderTable' LambdaLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Sub /aws/lambda/${MyLambdaFunction} RetentionInDays: 30 Outputs: LambdaFunctionName: Description: Lambda Function Name Value: !Ref MyLambdaFunction LambdaFunctionArn: Description: Lambda Function ARN Value: !GetAtt MyLambdaFunction.Arn
catatan

AWS SAM template menggunakan konvensi penamaan standartemplate.yaml. Dalam contoh ini, Anda memiliki dua file template - satu untuk membuat database contoh dan satu lagi untuk membuat aplikasi itu sendiri. Simpan di sub-direktori terpisah di folder proyek Anda.

AWS SAM Template ini mendefinisikan sumber daya untuk aplikasi Anda. Kami mendefinisikan fungsi Lambda menggunakan AWS::Serverless::Function sumber daya. Jadwal Pen EventBridge jadwal dan pemicu untuk memanggil fungsi Lambda dibuat dengan menggunakan Events properti sumber daya ini menggunakan jenis. ScheduleV2 Untuk mempelajari selengkapnya tentang menentukan EventBridge jadwal Penjadwal dalam AWS SAM template, lihat ScheduleV2 di Panduan Peng AWS Serverless Application Model embang.

Selain fungsi Lambda dan EventBridge jadwal Penjadwal, kami juga menentukan grup CloudWatch log untuk fungsi Anda untuk mengirim catatan item yang dihapus ke.

Salin dan tempel kode berikut ke dalam file bernamatest_app.py.

import boto3 from datetime import datetime, timedelta import json # Initialize the DynamoDB client dynamodb = boto3.resource('dynamodb') # Specify your table name table_name = 'YourTableName' table = dynamodb.Table(table_name) # Get the current date current_date = datetime.now() # Calculate the date one year ago one_year_ago = current_date - timedelta(days=365) # Convert the date to string format (assuming the date in DynamoDB is stored as a string) one_year_ago_str = one_year_ago.strftime('%Y-%m-%d') # Scan the table response = table.scan( FilterExpression='#date < :one_year_ago', ExpressionAttributeNames={ '#date': 'Date' }, ExpressionAttributeValues={ ':one_year_ago': one_year_ago_str } ) # Process the results old_records = response['Items'] # Continue scanning if we have more items (pagination) while 'LastEvaluatedKey' in response: response = table.scan( FilterExpression='#date < :one_year_ago', ExpressionAttributeNames={ '#date': 'Date' }, ExpressionAttributeValues={ ':one_year_ago': one_year_ago_str }, ExclusiveStartKey=response['LastEvaluatedKey'] ) old_records.extend(response['Items']) for record in old_records: print(json.dumps(record)) # The total number of old records should be zero. print(f"Total number of old records: {len(old_records)}")

Skrip pengujian ini menggunakan AWS SDK untuk Python (Boto3) untuk membuat koneksi ke tabel DynamoDB Anda dan memindai item yang lebih tua dari satu tahun. Untuk mengonfirmasi apakah fungsi Lambda telah berjalan dengan sukses, pada akhir pengujian, fungsi mencetak jumlah catatan yang lebih tua dari satu tahun masih dalam tabel. Jika fungsi Lambda berhasil, jumlah catatan lama dalam tabel harus nol.

Membuat dan mengisi contoh tabel DynamoDB

Untuk menguji aplikasi pemeliharaan terjadwal Anda, pertama-tama Anda membuat tabel DynamoDB dan mengisinya dengan beberapa data sampel. Anda dapat membuat tabel baik secara manual menggunakan Konsol Manajemen AWS atau dengan menggunakan AWS SAM. Sebaiknya gunakan AWS SAM untuk membuat dan mengkonfigurasi tabel dengan cepat menggunakan beberapa AWS CLI perintah.

Console
Untuk membuat tabel DynamoDB
  1. Buka halaman Tabel di konsol DynamoDB.

  2. Pilih Buat tabel.

  3. Buat tabel dengan melakukan hal berikut:

    1. Di bawah Detail tabel, untuk Nama tabel, masukkanMyOrderTable.

    2. Untuk kunci Partisi, masukkan Order_number dan biarkan tipe sebagai String.

    3. Untuk tombol S ort, masukkan Date dan biarkan tipe sebagai String.

    4. Biarkan pengaturan Tabel diatur ke Pengaturan default dan pilih Buat tabel.

  4. Ketika tabel Anda selesai dibuat dan Statusnya ditampilkan sebagai Aktif, buat indeks sekunder global (GSI) dengan melakukan hal berikut. Aplikasi Anda menggunakan GSI ini untuk mencari item secara langsung berdasarkan tanggal untuk menentukan apa yang akan dihapus.

    1. Pilih MyOrderTable dari daftar tabel.

    2. Pilih tab Indeks.

    3. Di bawah Indeks sekunder global, pilih Buat indeks.

    4. Di bawah rincian indeks, masukkan Date untuk kunci Partisi dan biarkan tipe data diatur ke String.

    5. Untuk Nama indeks, masukkan Date-index.

    6. Biarkan semua parameter lain diatur ke nilai defaultnya, gulir ke bagian bawah halaman, dan pilih Buat indeks.

AWS SAM
Untuk membuat tabel DynamoDB
  1. Arahkan ke folder tempat Anda menyimpan template.yaml file untuk tabel DynamoDB. Perhatikan bahwa contoh ini menggunakan dua template.yaml file. Pastikan mereka disimpan dalam sub-folder terpisah dan bahwa Anda berada di folder yang benar berisi template untuk membuat tabel DynamoDB Anda.

  2. Jalankan perintah berikut.

    sam build

    Perintah ini mengumpulkan artefak build untuk sumber daya yang ingin Anda gunakan dan menempatkannya dalam format dan lokasi yang tepat untuk menyebarkannya.

  3. Untuk membuat sumber daya DynamoDB yang ditentukan dalam template.yaml file, jalankan perintah berikut.

    sam deploy --guided

    Menggunakan ben --guided dera berarti AWS SAM menunjukkan kepada Anda petunjuk untuk memandu Anda melalui proses penerapan. Untuk penerapan ini, masukkan a Stack name ofcron-app-test-db, dan terima default untuk semua opsi lain dengan menggunakan Enter.

    Setelah AWS SAM selesai membuat sumber daya DynamoDB, Anda akan melihat pesan berikut.

    Successfully created/updated stack - cron-app-test-db in us-west-2
  4. Anda juga dapat mengonfirmasi bahwa tabel DynamoDB telah dibuat dengan membuka halaman Tabel dari konsol DynamoDB. Anda harus melihat tabel bernamaMyOrderTable.

Setelah membuat tabel, Anda selanjutnya menambahkan beberapa contoh data untuk menguji aplikasi Anda. File CSV yang sample_data.csv Anda unduh sebelumnya berisi sejumlah entri contoh yang terdiri dari nomor pesanan, tanggal, serta informasi pelanggan dan pesanan. Gunakan skrip python yang disediakan load_sample_data.py untuk menambahkan data ini ke tabel Anda.

Untuk menambahkan data sampel ke tabel
  1. Arahkan ke direktori yang berisi load_sample_data.py file sample_data.csv dan. Jika file-file ini berada di direktori terpisah, pindahkan mereka sehingga disimpan di lokasi yang sama.

  2. Buat lingkungan virtual Python untuk menjalankan skrip dengan menjalankan perintah berikut. Kami menyarankan Anda menggunakan lingkungan virtual karena pada langkah berikut Anda harus menginstal AWS SDK untuk Python (Boto3).

    python -m venv venv
  3. Aktifkan lingkungan virtual dengan menjalankan perintah berikut.

    source venv/bin/activate
  4. Instal SDK untuk Python (Boto3) di lingkungan virtual Anda dengan menjalankan perintah berikut. Skrip menggunakan pustaka ini untuk terhubung ke tabel DynamoDB Anda dan menambahkan item.

    pip install boto3
  5. Jalankan skrip untuk mengisi tabel dengan menjalankan perintah berikut.

    python load_sample_data.py

    Jika skrip berhasil berjalan, skrip harus mencetak setiap item ke konsol saat memuatnya dan melaporkanData loading completed.

  6. Nonaktifkan lingkungan virtual dengan menjalankan perintah berikut.

    deactivate
  7. Anda dapat memverifikasi bahwa data telah dimuat ke tabel DynamoDB Anda dengan melakukan hal berikut:

    1. Buka halaman Jelajahi item pada konsol DynamoDB dan pilih tabel Anda ()MyOrderTable.

    2. Di panel Item dikembalikan, Anda akan melihat 25 item dari file CSV yang ditambahkan skrip ke tabel.

Membuat aplikasi pemeliharaan terjadwal

Anda dapat membuat dan menyebarkan sumber daya untuk aplikasi contoh ini langkah demi langkah menggunakan Konsol Manajemen AWS atau dengan menggunakan AWS SAM. Di lingkungan produksi, kami menyarankan Anda menggunakan alat Infrustracture-as-Code (iAc) seperti AWS SAM untuk menerapkan aplikasi tanpa server secara berulang tanpa menggunakan proses manual.

Untuk contoh ini, ikuti petunjuk konsol untuk mempelajari cara mengonfigurasi setiap AWS sumber daya secara terpisah, atau ikuti AWS SAM petunjuk untuk menerapkan aplikasi dengan cepat menggunakan AWS CLI perintah.

Console
Untuk membuat fungsi menggunakan Konsol Manajemen AWS

Pertama, buat fungsi yang berisi kode starter dasar. Anda kemudian mengganti kode ini dengan kode fungsi Anda sendiri dengan menyalin dan menempelkan kode langsung di editor kode Lambda, atau dengan mengunggah kode Anda sebagai .zip paket. Untuk tugas ini, kami sarankan menyalin dan menempelkan kode.

  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih Buat fungsi.

  3. Pilih Penulis dari scratch.

  4. Di bagian Informasi dasar, lakukan hal berikut:

    1. Untuk Nama fungsi, masukkan ScheduledDBMaintenance.

    2. Untuk Runtime pilih versi Python terbaru.

    3. Untuk Arsitektur, pilih x86_64.

  5. Pilih Buat fungsi.

  6. Setelah fungsi Anda dibuat, Anda dapat mengkonfigurasi fungsi Anda dengan kode fungsi yang disediakan.

    1. Di panel sumber kode, ganti kode Hello world yang dibuat Lambda dengan kode fungsi Python dari lambda_function.py file yang Anda simpan sebelumnya.

    2. Di bagian DEPLOY, pilih De ploy untuk memperbarui kode fungsi Anda:

      Menyebarkan tombol di editor kode konsol Lambda
Untuk mengkonfigurasi fungsi memori dan batas waktu (konsol)
  1. Pilih tab Konfigurasi untuk fungsi Anda.

  2. Di panel konfigurasi umum, pilih Edit.

  3. Atur Mem ori ke 256 MB dan Timeout menjadi 15 detik. Jika Anda memproses tabel besar dengan banyak catatan, misalnya dalam kasus lingkungan produksi, Anda dapat mempertimbangkan untuk mengatur batas waktu ke jumlah yang lebih besar. Ini memberi fungsi Anda lebih banyak waktu untuk memindai, dan membersihkan database.

  4. Pilih Simpan.

Untuk mengkonfigurasi format log (konsol)

Anda dapat mengonfigurasi fungsi Lambda untuk menampilkan log baik dalam teks tidak terstruktur atau format JSON. Sebaiknya gunakan format JSON untuk log agar lebih mudah mencari dan memfilter data log. Untuk mempelajari lebih lanjut tentang opsi konfigurasi log Lambda, lihatMengkonfigurasi kontrol logging lanjutan untuk fungsi Lambda.

  1. Pilih tab Konfigurasi untuk fungsi Anda.

  2. Pilih Alat Pemantauan dan operasi.

  3. Di panel konfigurasi logging, pilih Edit.

  4. Untuk konfigurasi Logging, pilih JSON.

  5. Pilih Simpan.

Untuk mengatur izin IAM

Untuk memberikan fungsi Anda izin yang diperlukan untuk membaca dan menghapus item DynamoDB, Anda perlu menambahkan kebijakan ke peran eksekusi fungsi Anda yang menentukan izin yang diperlukan.

  1. Buka tab Konfigurasi, lalu pilih Izin dari bilah navigasi kiri.

  2. Pilih nama peran di bawah Per an eksekusi.

  3. Di konsol IAM, pilih Tam bah izin, lalu Buat kebijakan sebaris.

  4. Gunakan editor JSON dan masukkan kebijakan berikut:

    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:Scan", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": "arn:aws:dynamodb:*:*:table/MyOrderTable" } ] }
  5. Beri nama kebijakanDynamoDBCleanupPolicy, lalu buat.

Untuk mengatur EventBridge Scheduler sebagai pemicu (konsol)
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi Anda (ScheduledDBMaintenance).

  3. Di panel I khtisar fungsi, pilih Tam bah pemicu.

  4. Dari dropdown sumber pemicu, pilih Scheduler.

  5. Konfigurasikan jadwal dengan melakukan hal berikut:

    1. Untuk Nama Jadwal, masukkanDynamoDBCleanupSchedule.

    2. Untuk grup Jadwal, tinggalkan default (default).

    3. Untuk Jenis Jadwal, pilih Jadwal berulang dan masukkan ekspresi cron berikut:cron(0 3 1 * ? *).

      Saat dievaluasi, ekspresi cron ini berjalan pada hari pertama setiap bulan pukul 03:00 pagi.

    4. Untuk Jen dela waktu fleksibel, pilih N onaktif.

    5. Biarkan bidang Payload kosong.

    6. Untuk peran eksekusi, pilih Buat peran baru untuk jadwal ini dan masukkan nama peran. EventBridge Penjadwal membuat kebijakan baru dengan izin yang diperlukan jadwal untuk memanggil fungsi Anda.

  6. Pilih Tambahkan.

AWS SAM
Untuk menyebarkan aplikasi menggunakan AWS SAM
  1. Arahkan ke folder tempat Anda menyimpan template.yaml file untuk aplikasi. Perhatikan bahwa contoh ini menggunakan dua template.yaml file. Pastikan mereka disimpan dalam sub-folder terpisah dan bahwa Anda berada di folder yang benar berisi template untuk membuat aplikasi.

  2. Salin requirements.txt file lambda_function.py dan yang Anda unduh sebelumnya ke folder yang sama. Lokasi kode yang ditentukan dalam AWS SAM template adalah./, yang berarti lokasi saat ini. AWS SAM mencari di folder ini untuk kode fungsi Lambda saat Anda mencoba menerapkan aplikasi.

  3. Jalankan perintah berikut.

    sam build --use-container

    Perintah ini mengumpulkan artefak build untuk sumber daya yang ingin Anda gunakan dan menempatkannya dalam format dan lokasi yang tepat untuk menyebarkannya. Menentukan --use-container opsi membangun fungsi Anda di dalam wadah Lambda-like Docker. Kami menggunakannya di sini sehingga Anda tidak perlu menginstal Python 3.12 di mesin lokal Anda agar build berfungsi.

  4. Untuk membuat sumber daya Lambda dan EventBridge Penjadwal yang ditentukan dalam template.yaml file, jalankan perintah berikut.

    sam deploy --guided

    Menggunakan ben --guided dera berarti AWS SAM menunjukkan kepada Anda petunjuk untuk memandu Anda melalui proses penerapan. Untuk penerapan ini, masukkan a Stack name ofcron-maintenance-app, dan terima default untuk semua opsi lain dengan menggunakan Enter.

    Setelah AWS SAM selesai membuat sumber daya Lambda dan EventBridge Penjadwal, Anda akan melihat pesan berikut.

    Successfully created/updated stack - cron-maintenance-app in us-west-2
  5. Anda juga dapat mengonfirmasi bahwa fungsi Lambda telah dibuat dengan membuka halaman Functions dari konsol Lambda. Anda harus melihat fungsi bernamaScheduledDBMaintenance.

Menguji aplikasi

Untuk menguji apakah jadwal Anda memicu fungsi Anda dengan benar, dan bahwa fungsi Anda membersihkan catatan dari database dengan benar, Anda dapat mengubah sementara jadwal Anda untuk berjalan satu kali pada waktu tertentu. Anda kemudian dapat menjalankan sam deploy lagi untuk mengatur ulang jadwal pengulangan Anda untuk berjalan sebulan sekali.

Untuk menjalankan aplikasi menggunakan Konsol Manajemen AWS
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi Anda (ScheduledDBMaintenance).

  3. Di bagian Pemicu, pilih DynamoDBCleanupSchedule pemicunya.

  4. Pilih Edit.

  5. Untuk Jenis Jadwal, pilih One-time jadwal.

  6. Setel waktu pemanggilan menjadi beberapa menit dari sekarang, lalu pilih S impan.

Setelah jadwal berjalan dan memanggil targetnya, Anda menjalankan test_app.py skrip untuk memverifikasi bahwa fungsi Anda berhasil menghapus semua catatan lama dari tabel DynamoDB.

Untuk memverifikasi bahwa catatan lama dihapus menggunakan skrip Python
  1. Di baris perintah Anda, arahkan ke folder tempat Anda menyimpantest_app.py.

  2. Jalankan penulisan.

    python test_app.py

    Jika berhasil, Anda melihat output berikut.

    Total number of old records: 0

Langkah selanjutnya

Anda sekarang dapat memodifikasi EventBridge jadwal Scheduler untuk memenuhi persyaratan aplikasi khusus Anda. EventBridge Penjadwal mendukung ekspresi jadwal berikut: cron, rate, dan jadwal satu kali.

Untuk informasi selengkapnya tentang ekspresi EventBridge jadwal Penjadwal, lihat Jenis Jadwal di Panduan Pengguna EventBridge Penjadwal. Manajemen Ak ses di Panduan Pengguna IAM