View a markdown version of this page

Tutorial: Menggunakan AWS Lambda dengan Amazon DocumentDB Streams - AWS Lambda

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

Tutorial: Menggunakan AWS Lambda dengan Amazon DocumentDB Streams

Dalam tutorial ini, Anda membuat fungsi Lambda dasar yang menggunakan peristiwa dari aliran perubahan Amazon DocumentDB (dengan kompatibilitas MongoDB). Untuk menyelesaikan tutorial ini, Anda melalui tahapan berikut:

  • Siapkan cluster Amazon DocumentDB Anda, sambungkan ke klaster tersebut, dan aktifkan aliran perubahan di dalamnya.

  • Buat fungsi Lambda Anda, dan konfigurasikan cluster Amazon DocumentDB Anda sebagai sumber peristiwa untuk fungsi Anda.

  • Uji pengaturan dengan memasukkan item ke database Amazon DocumentDB Anda.

Membuat cluster Amazon DocumentDB

  1. Buka konsol https://console.aws.amazon.com/docdb/home# Amazon DocumentDB. Di bawah Cluster, pilih Buat.

  2. Buat cluster dengan konfigurasi berikut:

    • Untuk tipe Cluster, pilih Instance-based cluster. Ini adalah pilihan default.

    • Di bawah Konfigur asi Cluster, pastikan Engine versi 5.0.0 dipilih. Ini adalah pilihan default.

    • Di bawah konfigurasi Instance:

      • Untuk kelas instance DB, pilih kelas yang dioptimalkan memori. Ini adalah pilihan default.

      • Untuk Jumlah instance replika biasa, pilih 1.

      • Untuk kelas Inst ance, gunakan pilihan default.

    • Di bawah O tentikasi, masukkan nama pengguna untuk pengguna utama, lalu pilih Dik elola sendiri. Masukkan kata sandi, lalu konfirmasikan.

    • Simpan semua pengaturan default lainnya.

  3. Pilih Buat klaster.

Buat rahasia di Manajer Rahasia

Saat Amazon DocumentDB membuat cluster Anda, buat AWS Secrets Manager rahasia untuk menyimpan kredenSIAL database Anda. Anda akan memberikan rahasia ini saat membuat pemetaan sumber peristiwa Lambda di langkah selanjutnya.

Untuk membuat rahasia di Manajer Rahasia
  1. Buka konsol Secrets Manager dan pilih Simpan rahasia baru.

  2. Untuk Pilih jenis rahasia, pilih opsi berikut:

    • Di bawah Detail Dasar:

      • Jenis rahasia: KredenSIAL untuk database Amazon DocumentDB Anda

      • Di bawah Kredensi, masukkan nama pengguna dan kata sandi yang sama yang Anda gunakan untuk membuat cluster Amazon DocumentDB Anda.

      • Database: Pilih cluster Amazon DocumentDB Anda.

      • Pilih Berikutnya.

  3. Untuk Konfigurasi rahasia, pilih opsi berikut:

    • Nama rahasia: DocumentDBSecret

    • Pilih Berikutnya.

  4. Pilih Berikutnya.

  5. Pilih Toko.

  6. Segarkan konsol untuk memverifikasi bahwa Anda berhasil menyimpan DocumentDBSecret rahasia.

Perhatikan Rahasia ARN. Anda akan membutuhkannya di langkah selanjutnya.

Menyambungkan ke klaster

Hubungkan ke cluster Amazon DocumentDB menggunakan AWS CloudShell
  1. Di konsol manajemen Amazon DocumentDB, di bawah Clu ster, cari cluster yang Anda buat. Pilih cluster Anda dengan memilih kotak centang di sebelahnya.

  2. Pilih Hu bungkan ke cluster. L CloudShell ayar perintah Run muncul.

  3. Di bidang Nama lingkungan baru, masukkan nama unik, seperti “uji” dan pilih Buat dan jalankan.

  4. Saat diminta, masukkan kata sandi Anda. Ketika prompt munculrs0 [direct: primary] <env-name>>, Anda berhasil terhubung ke cluster Amazon DocumentDB Anda.

Aktifkan aliran perubahan

Untuk tutorial ini, Anda akan melacak perubahan pada products koleksi docdbdemo database di cluster Amazon DocumentDB Anda. Anda melakukan ini dengan mengaktifkan aliran perubahan.

Untuk membuat database baru dalam cluster Anda
  1. Jalankan perintah berikut untuk membuat database baru yang disebutdocdbdemo:

    use docdbdemo
  2. Di jendela terminal, gunakan perintah berikut untuk memasukkan catatan kedocdbdemo:

    db.products.insertOne({"hello":"world"})

    Anda akan melihat output seperti ini:

    {
      acknowledged: true,
      insertedId: ObjectId('67f85066ca526410fd531d59')
    }
  3. Selanjutnya, aktifkan aliran perubahan pada products koleksi docdbdemo database menggunakan perintah berikut:

    db.adminCommand({modifyChangeStreams: 1, database: "docdbdemo", collection: "products", enable: true});

    Anda akan melihat output seperti ini:

    { "ok" : 1, "operationTime" : Timestamp(1680126165, 1) }

Buat titik akhir antarmuka VPC

Selanjutnya, buat titik akhir VPC antarmuka untuk memastikan bahwa Lambda dan Secrets Manager (digunakan nanti untuk menyimpan kredenSIAL akses cluster kami) dapat terhubung ke VPC default Anda.

Untuk membuat titik akhir VPC antarmuka
  1. Buka konsol https://console.aws.amazon.com/vpc/home# VPC. Di menu sebelah kiri, di bawah Virtual private cloud, pilih Endpoints.

  2. Pilih Buat titik akhir. Buat titik akhir dengan konfigurasi berikut:

    • Untuk Tag Nama, masukkanlambda-default-vpc.

    • Untuk kategori Layanan, pilih AWS layanan.

    • Untuk Layanan, masukkan lambda di kotak pencarian. Pilih layanan dengan formatcom.amazonaws.<region>.lambda.

    • Untuk VPC, pilih VPC tempat cluster Amazon DocumentDB Anda berada. Ini biasanya VPC https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html default.

    • Untuk Subnets, centang kotak di samping setiap zona ketersediaan. Pilih ID subnet yang benar untuk setiap zona ketersediaan.

    • Untuk jenis alamat IP, pilih IPv4.

    • Untuk grup Keamanan, pilih grup keamanan yang digunakan cluster Amazon DocumentDB Anda. Ini biasanya kelompok default keamanan.

    • Simpan semua pengaturan default lainnya.

    • Pilih Buat titik akhir.

  3. Sekali lagi, pilih Buat titik akhir. Buat titik akhir dengan konfigurasi berikut:

    • Untuk Tag Nama, masukkansecretsmanager-default-vpc.

    • Untuk kategori Layanan, pilih AWS layanan.

    • Untuk Layanan, masukkan secretsmanager di kotak pencarian. Pilih layanan dengan formatcom.amazonaws.<region>.secretsmanager.

    • Untuk VPC, pilih VPC tempat cluster Amazon DocumentDB Anda berada. Ini biasanya VPC https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html default.

    • Untuk Subnets, centang kotak di samping setiap zona ketersediaan. Pilih ID subnet yang benar untuk setiap zona ketersediaan.

    • Untuk jenis alamat IP, pilih IPv4.

    • Untuk grup Keamanan, pilih grup keamanan yang digunakan cluster Amazon DocumentDB Anda. Ini biasanya kelompok default keamanan.

    • Simpan semua pengaturan default lainnya.

    • Pilih Buat titik akhir.

Ini melengkapi bagian pengaturan cluster dari tutorial ini.

Buat peran eksekusi

Dalam rangkaian langkah berikutnya, Anda akan membuat fungsi Lambda Anda. Pertama, Anda perlu membuat peran eksekusi yang memberikan izin fungsi Anda untuk mengakses cluster Anda. Anda melakukannya dengan membuat kebijakan IAM terlebih dahulu, lalu melampirkan kebijakan ini ke peran IAM.

Untuk membuat kebijakan IAM
  1. Buka halaman Kebijakan di konsol IAM dan pilih Buat kebijakan.

  2. Pilih tab JSON. Dalam kebijakan berikut, ganti sumber daya Manajer Rahasia ARN di baris terakhir pernyataan dengan ARN rahasia Anda dari sebelumnya, dan salin kebijakan ke editor.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "LambdaESMNetworkingAccess", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "LambdaDocDBESMAccess", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters", "rds:DescribeDBClusterParameters", "rds:DescribeDBSubnetGroups" ], "Resource": "*" }, { "Sid": "LambdaDocDBESMGetSecretValueAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:DocumentDBSecret" } ] }
  3. Pilih Berikutnya: Tag, lalu pilih Berikutnya: Review.

  4. Untuk Nama, masukkan AWSDocumentDBLambdaPolicy.

  5. Pilih Buat kebijakan.

Untuk membuat peran IAM
  1. Buka halaman Peran di konsol IAM dan pilih Buat peran.

  2. Untuk Pilih entitas tepercaya, pilih opsi berikut:

    • Jenis entitas tepercaya: AWS layanan

    • Layanan atau kasus penggunaan: Lambda

    • Pilih Berikutnya.

  3. Untuk Tambah izin, pilih AWSDocumentDBLambdaPolicy kebijakan yang baru saja Anda buat, serta AWSLambdaBasicExecutionRole untuk memberikan izin fungsi Anda untuk menulis ke Amazon CloudWatch Logs.

  4. Pilih Berikutnya.

  5. Untuk Nama peran, masukkan AWSDocumentDBLambdaExecutionRole.

  6. Pilih Buat peran.

Buat fungsi Lambda

Tutorial ini menggunakan runtime Python 3.14, tetapi kami juga telah menyediakan file kode contoh untuk runtime lainnya. Anda dapat memilih tab di kotak berikut untuk melihat kode untuk runtime yang Anda minati.

Kode menerima input acara Amazon DocumentDB dan memproses pesan yang dikandungnya.

Untuk membuat fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih Buat fungsi.

  3. Pilih Penulis dari awal

  4. Di bagian Informasi dasar, lakukan hal berikut:

    1. Untuk Nama fungsi, masukkan ProcessDocumentDBRecords

    2. Untuk Runtime, pilih Python 3.14.

    3. Untuk Arsitektur, pilih x86_64.

  5. Di tab Ubah peran eksekusi default, lakukan hal berikut:

    1. Perluas tab, lalu pilih Gunakan peran yang ada.

    2. Pilih yang AWSDocumentDBLambdaExecutionRole Anda buat sebelumnya.

  6. Pilih Buat fungsi.

Untuk menerapkan kode fungsi
  1. Pilih tab Python di kotak berikut dan salin kodenya.

    .NET
    SDK for .NET
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan Lambda menggunakan.NET.

    using Amazon.Lambda.Core; using System.Text.Json; using System; using System.Collections.Generic; using System.Text.Json.Serialization; //Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace LambdaDocDb; public class Function { /// <summary> /// Lambda function entry point to process Amazon DocumentDB events. /// </summary> /// <param name="event">The Amazon DocumentDB event.</param> /// <param name="context">The Lambda context object.</param> /// <returns>A string to indicate successful processing.</returns> public string FunctionHandler(Event evnt, ILambdaContext context) { foreach (var record in evnt.Events) { ProcessDocumentDBEvent(record, context); } return "OK"; } private void ProcessDocumentDBEvent(DocumentDBEventRecord record, ILambdaContext context) { var eventData = record.Event; var operationType = eventData.OperationType; var databaseName = eventData.Ns.Db; var collectionName = eventData.Ns.Coll; var fullDocument = JsonSerializer.Serialize(eventData.FullDocument, new JsonSerializerOptions { WriteIndented = true }); context.Logger.LogLine($"Operation type: {operationType}"); context.Logger.LogLine($"Database: {databaseName}"); context.Logger.LogLine($"Collection: {collectionName}"); context.Logger.LogLine($"Full document:\n{fullDocument}"); } public class Event { [JsonPropertyName("eventSourceArn")] public string EventSourceArn { get; set; } [JsonPropertyName("events")] public List<DocumentDBEventRecord> Events { get; set; } [JsonPropertyName("eventSource")] public string EventSource { get; set; } } public class DocumentDBEventRecord { [JsonPropertyName("event")] public EventData Event { get; set; } } public class EventData { [JsonPropertyName("_id")] public IdData Id { get; set; } [JsonPropertyName("clusterTime")] public ClusterTime ClusterTime { get; set; } [JsonPropertyName("documentKey")] public DocumentKey DocumentKey { get; set; } [JsonPropertyName("fullDocument")] public Dictionary<string, object> FullDocument { get; set; } [JsonPropertyName("ns")] public Namespace Ns { get; set; } [JsonPropertyName("operationType")] public string OperationType { get; set; } } public class IdData { [JsonPropertyName("_data")] public string Data { get; set; } } public class ClusterTime { [JsonPropertyName("$timestamp")] public Timestamp Timestamp { get; set; } } public class Timestamp { [JsonPropertyName("t")] public long T { get; set; } [JsonPropertyName("i")] public int I { get; set; } } public class DocumentKey { [JsonPropertyName("_id")] public Id Id { get; set; } } public class Id { [JsonPropertyName("$oid")] public string Oid { get; set; } } public class Namespace { [JsonPropertyName("db")] public string Db { get; set; } [JsonPropertyName("coll")] public string Coll { get; set; } } }
    Go
    SDK untuk Go V2
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan Lambda menggunakan Go.

    package main import ( "context" "encoding/json" "fmt" "github.com/aws/aws-lambda-go/lambda" ) type Event struct { Events []Record `json:"events"` } type Record struct { Event struct { OperationType string `json:"operationType"` NS struct { DB string `json:"db"` Coll string `json:"coll"` } `json:"ns"` FullDocument interface{} `json:"fullDocument"` } `json:"event"` } func main() { lambda.Start(handler) } func handler(ctx context.Context, event Event) (string, error) { fmt.Println("Loading function") for _, record := range event.Events { logDocumentDBEvent(record) } return "OK", nil } func logDocumentDBEvent(record Record) { fmt.Printf("Operation type: %s\n", record.Event.OperationType) fmt.Printf("db: %s\n", record.Event.NS.DB) fmt.Printf("collection: %s\n", record.Event.NS.Coll) docBytes, _ := json.MarshalIndent(record.Event.FullDocument, "", " ") fmt.Printf("Full document: %s\n", string(docBytes)) }
    Java
    SDK untuk Java 2.x
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan Lambda menggunakan Java.

    import java.util.List; import java.util.Map; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class Example implements RequestHandler<Map<String, Object>, String> { @SuppressWarnings("unchecked") @Override public String handleRequest(Map<String, Object> event, Context context) { List<Map<String, Object>> events = (List<Map<String, Object>>) event.get("events"); for (Map<String, Object> record : events) { Map<String, Object> eventData = (Map<String, Object>) record.get("event"); processEventData(eventData); } return "OK"; } @SuppressWarnings("unchecked") private void processEventData(Map<String, Object> eventData) { String operationType = (String) eventData.get("operationType"); System.out.println("operationType: %s".formatted(operationType)); Map<String, Object> ns = (Map<String, Object>) eventData.get("ns"); String db = (String) ns.get("db"); System.out.println("db: %s".formatted(db)); String coll = (String) ns.get("coll"); System.out.println("coll: %s".formatted(coll)); Map<String, Object> fullDocument = (Map<String, Object>) eventData.get("fullDocument"); System.out.println("fullDocument: %s".formatted(fullDocument)); } }
    JavaScript
    SDK untuk JavaScript (v3)
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan menggunakan Lambda. JavaScript

    console.log('Loading function'); exports.handler = async (event, context) => { event.events.forEach(record => { logDocumentDBEvent(record); }); return 'OK'; }; const logDocumentDBEvent = (record) => { console.log('Operation type: ' + record.event.operationType); console.log('db: ' + record.event.ns.db); console.log('collection: ' + record.event.ns.coll); console.log('Full document:', JSON.stringify(record.event.fullDocument, null, 2)); };

    Mengkonsumsi acara Amazon DocumentDB dengan menggunakan Lambda TypeScript

    import { DocumentDBEventRecord, DocumentDBEventSubscriptionContext } from 'aws-lambda'; console.log('Loading function'); export const handler = async ( event: DocumentDBEventSubscriptionContext, context: any ): Promise<string> => { event.events.forEach((record: DocumentDBEventRecord) => { logDocumentDBEvent(record); }); return 'OK'; }; const logDocumentDBEvent = (record: DocumentDBEventRecord): void => { console.log('Operation type: ' + record.event.operationType); console.log('db: ' + record.event.ns.db); console.log('collection: ' + record.event.ns.coll); console.log('Full document:', JSON.stringify(record.event.fullDocument, null, 2)); };
    PHP
    SDK untuk PHP
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan Lambda menggunakan PHP.

    <?php require __DIR__.'/vendor/autoload.php'; use Bref\Context\Context; use Bref\Event\Handler; class DocumentDBEventHandler implements Handler { public function handle($event, Context $context): string { $events = $event['events'] ?? []; foreach ($events as $record) { $this->logDocumentDBEvent($record['event']); } return 'OK'; } private function logDocumentDBEvent($event): void { // Extract information from the event record $operationType = $event['operationType'] ?? 'Unknown'; $db = $event['ns']['db'] ?? 'Unknown'; $collection = $event['ns']['coll'] ?? 'Unknown'; $fullDocument = $event['fullDocument'] ?? []; // Log the event details echo "Operation type: $operationType\n"; echo "Database: $db\n"; echo "Collection: $collection\n"; echo "Full document: " . json_encode($fullDocument, JSON_PRETTY_PRINT) . "\n"; } } return new DocumentDBEventHandler();
    Python
    SDK untuk Python (Boto3)
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan Lambda menggunakan Python.

    import json def lambda_handler(event, context): for record in event.get('events', []): log_document_db_event(record) return 'OK' def log_document_db_event(record): event_data = record.get('event', {}) operation_type = event_data.get('operationType', 'Unknown') db = event_data.get('ns', {}).get('db', 'Unknown') collection = event_data.get('ns', {}).get('coll', 'Unknown') full_document = event_data.get('fullDocument', {}) print(f"Operation type: {operation_type}") print(f"db: {db}") print(f"collection: {collection}") print("Full document:", json.dumps(full_document, indent=2))
    Ruby
    SDK untuk Ruby
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan Lambda menggunakan Ruby.

    require 'json' def lambda_handler(event:, context:) event['events'].each do |record| log_document_db_event(record) end 'OK' end def log_document_db_event(record) event_data = record['event'] || {} operation_type = event_data['operationType'] || 'Unknown' db = event_data.dig('ns', 'db') || 'Unknown' collection = event_data.dig('ns', 'coll') || 'Unknown' full_document = event_data['fullDocument'] || {} puts "Operation type: #{operation_type}" puts "db: #{db}" puts "collection: #{collection}" puts "Full document: #{JSON.pretty_generate(full_document)}" end
    Rust
    SDK for Rust
    catatan

    Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori contoh Nirserver.

    Mengkonsumsi acara Amazon DocumentDB dengan Lambda menggunakan Rust.

    use lambda_runtime::{service_fn, tracing, Error, LambdaEvent}; use aws_lambda_events::{ event::documentdb::{DocumentDbEvent, DocumentDbInnerEvent}, }; // Built with the following dependencies: //lambda_runtime = "0.11.1" //serde_json = "1.0" //tokio = { version = "1", features = ["macros"] } //tracing = { version = "0.1", features = ["log"] } //tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt"] } //aws_lambda_events = "0.15.0" async fn function_handler(event: LambdaEvent<DocumentDbEvent>) ->Result<(), Error> { tracing::info!("Event Source ARN: {:?}", event.payload.event_source_arn); tracing::info!("Event Source: {:?}", event.payload.event_source); let records = &event.payload.events; if records.is_empty() { tracing::info!("No records found. Exiting."); return Ok(()); } for record in records{ log_document_db_event(record); } tracing::info!("Document db records processed"); // Prepare the response Ok(()) } fn log_document_db_event(record: &DocumentDbInnerEvent)-> Result<(), Error>{ tracing::info!("Change Event: {:?}", record.event); Ok(()) } #[tokio::main] async fn main() -> Result<(), Error> { tracing_subscriber::fmt() .with_max_level(tracing::Level::INFO) .with_target(false) .without_time() .init(); let func = service_fn(function_handler); lambda_runtime::run(func).await?; Ok(()) }
  2. Di panel sumber kode pada konsol Lambda, tempel kode ke editor kode, menggantikan kode yang dibuat Lambda.

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

    Menyebarkan tombol di editor kode konsol Lambda

Buat pemetaan sumber peristiwa Lambda

Buat pemetaan sumber peristiwa yang mengaitkan aliran perubahan Amazon DocumentDB Anda dengan fungsi Lambda Anda. Setelah Anda membuat pemetaan sumber peristiwa ini, AWS Lambda segera mulai polling aliran.

Untuk membuat pemetaan sumber peristiwa
  1. Buka halaman Functions di konsol Lambda.

  2. Pilih ProcessDocumentDBRecords fungsi yang Anda buat sebelumnya.

  3. Pilih tab Konfigurasi, lalu pilih Pem icu di menu sebelah kiri.

  4. Pilih Tambahkan pemicu.

  5. Di bawah Konfigurasi pemicu, untuk sumber, pilih Amazon DocumentDB.

  6. Buat pemetaan sumber acara dengan konfigurasi berikut:

    • Cluster Amazon DocumentDB: Pilih cluster yang Anda buat sebelumnya.

    • Nama database: docdbdemo

    • Nama koleksi: produk

    • Ukuran batch: 1

    • Posisi awal: Terbaru

    • Otentikasi: BASIC_AUTH

    • Kunci Manajer Rahasia: Pilih rahasia untuk cluster Amazon DocumentDB Anda. Ini disebut sesuatu sepertirds!cluster-12345678-a6f0-52c0-b290-db4aga89274f.

    • Jendela batch: 1

    • Konfigurasi dokumen lengkap: UpdateLookup

  7. Pilih Tambahkan. Membuat pemetaan sumber acara Anda dapat memakan waktu beberapa menit.

Uji fungsi Anda

Tunggu pemetaan sumber peristiwa mencapai status Diaktifkan. Ini dapat memakan waktu beberapa menit. Kemudian, uji pengaturan ujung ke ujung dengan memasukkan, memperbarui, dan menghapus catatan database. Sebelum Anda memulai:

  1. Sambungkan kembali ke cluster Amazon DocumentDB di lingkungan Anda CloudShell .

  2. Jalankan perintah berikut untuk memastikan bahwa Anda menggunakan docdbdemo database:

    use docdbdemo

Masukkan catatan ke dalam products koleksi docdbdemo database:

db.products.insertOne({"name":"Pencil", "price": 1.00})

Verifikasi bahwa fungsi Anda berhasil memproses peristiwa ini dengan memeriksa CloudWatch Log. Anda akan melihat entri log seperti ini:

CloudWatch aliran log untuk penyisipan catatan database.

Perbarui catatan yang baru saja Anda masukkan dengan perintah berikut:

db.products.updateOne( { "name": "Pencil" }, { $set: { "price": 0.50 }} )

Verifikasi bahwa fungsi Anda berhasil memproses peristiwa ini dengan memeriksa CloudWatch Log. Anda akan melihat entri log seperti ini:

CloudWatch aliran log untuk pembaruan catatan basis data.

Hapus catatan yang baru saja Anda perbarui dengan perintah berikut:

db.products.deleteOne( { "name": "Pencil" } )

Verifikasi bahwa fungsi Anda berhasil memproses peristiwa ini dengan memeriksa CloudWatch Log. Anda akan melihat entri log seperti ini:

CloudWatch aliran log untuk penghapusan catatan database.

Pemecahan masalah

Jika Anda tidak melihat peristiwa database apa pun di CloudWatch log fungsi Anda, periksa hal berikut:

  • Pastikan pemetaan sumber peristiwa Lambda (juga dikenal sebagai pemicu) berada dalam status Di aktifkan. Pemetaan sumber peristiwa dapat memakan waktu beberapa menit untuk dibuat.

  • Jika pemetaan sumber peristiwa Di aktifkan tetapi Anda masih tidak melihat peristiwa database di CloudWatch:

    • Pastikan nama Database dalam pemetaan sumber peristiwa disetel kedocdbdemo.

      Detail pemetaan sumber peristiwa Lambda.
    • Periksa bidang pemetaan sumber peristiwa Hasil pemrosesan terakhir untuk pesan berikut “MASALAH: Kesalahan koneksi. VPC Anda harus dapat terhubung ke Lambda dan STS, serta Manajer Rahasia jika otentikasi diperlukan. Jika Anda melihat kesalahan ini, pastikan Anda membuat titik akhir antarmuka VPC Lambda dan Secrets Manager, dan bahwa titik akhir menggunakan VPC dan subnet yang sama dengan yang digunakan cluster Amazon DocumentDB Anda.

      Detail pemetaan sumber peristiwa Lambda.

Bersihkan sumber daya Anda

Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus sumber daya AWS yang tidak lagi Anda gunakan, Anda mencegah biaya yang tidak perlu untuk Akun AWS Anda.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik confirm di bidang input teks dan pilih H apus.

Untuk menghapus peran eksekusi
  1. Buka halaman Peran dari konsol IAM.

  2. Pilih peran eksekusi yang Anda buat.

  3. Pilih Hapus.

  4. Masukkan nama peran di bidang input teks dan pilih H apus.

Untuk menghapus titik akhir VPC
  1. Buka konsol https://console.aws.amazon.com/vpc/home# VPC. Di menu sebelah kiri, di bawah Virtual private cloud, pilih Endpoints.

  2. Pilih titik akhir yang Anda buat.

  3. Pilih Tindakan, Hapus titik akhir VPC.

  4. Masukkan delete di bidang input teks.

  5. Pilih Hapus.

Untuk menghapus cluster Amazon DocumentDB
  1. Buka konsol https://console.aws.amazon.com/docdb/home# Amazon DocumentDB.

  2. Pilih cluster Amazon DocumentDB yang Anda buat untuk tutorial ini, dan nonaktifkan perlindungan penghapusan.

  3. Di halaman Clu ster utama, pilih cluster Amazon DocumentDB Anda lagi.

  4. Pilih Tindakan, Hapus.

  5. Untuk Buat snapshot cluster akhir, pilih Tidak.

  6. Masukkan delete di bidang input teks.

  7. Pilih Hapus.

Untuk menghapus rahasia di Manajer Rahasia
  1. Buka konsol Secrets Manager.

  2. Pilih rahasia yang Anda buat untuk tutorial ini.

  3. Pilih T ind akan, Hapus rahasia.

  4. Pilih Jadwalkan penghapusan.