Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Tutorial: Menggunakan fungsi Lambda untuk mengakses basis data Amazon RDS

Mode fokus
Tutorial: Menggunakan fungsi Lambda untuk mengakses basis data Amazon RDS - Layanan Basis Data Relasional Amazon

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

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

Dalam tutorial ini, Anda menggunakan fungsi Lambda untuk menulis data ke basis data Amazon Relational Database Service (Amazon RDS) melalui Proksi RDS. Fungsi Lambda Anda membaca catatan dari antrean Amazon Simple Queue Service (Amazon SQS) dan menulis item baru ke tabel di basis data Anda setiap kali ada pesan yang ditambahkan. Dalam contoh ini, Anda menggunakan AWS Management Console untuk menambahkan pesan secara manual ke antrean. Diagram berikut menunjukkan AWS sumber daya yang Anda gunakan untuk menyelesaikan tutorial.

Instance AWS Management Console menghubungkan ke antrean standar Amazon SQS, yang terhubung ke fungsi Lambda, yang selanjutnya terhubung ke database RDS untuk MySQL melalui RDS Proxy.

Dengan Amazon RDS, Anda dapat menjalankan basis data relasional terkelola di cloud menggunakan produk basis data umum seperti Microsoft SQL Server, MariaDB, MySQL, Oracle Database, dan PostgreSQL. Dengan mengakses basis data menggunakan Lambda, Anda dapat membaca dan menulis data sebagai respons terhadap peristiwa, seperti pelanggan baru yang mendaftar ke situs web Anda. Fungsi, instans basis data, dan proksi secara otomatis diskalakan untuk memenuhi periode saat permintaan sedang tinggi.

Untuk menyelesaikan tutorial ini, lakukan tugas berikut:

  1. Luncurkan RDS untuk instance database MySQL dan proxy di VPC default Anda Akun AWS.

  2. Buat dan uji fungsi Lambda yang membuat tabel baru di basis data Anda dan menulis data ke dalamnya.

  3. Buat antrean Amazon SQS dan konfigurasikan untuk menginvokasi fungsi Lambda Anda setiap kali ada pesan baru yang ditambahkan.

  4. Uji penyiapan lengkap dengan menambahkan pesan ke antrian Anda menggunakan AWS Management Console dan memantau hasilnya menggunakan CloudWatch Log.

Dengan menyelesaikan langkah-langkah ini, Anda belajar:

  • Cara menggunakan Amazon RDS untuk membuat instans basis data dan proksi, serta menghubungkan fungsi Lambda ke proksi.

  • Cara menggunakan Lambda untuk melakukan operasi pembuatan dan pembacaan pada basis data Amazon RDS.

  • Cara menggunakan Amazon SQS untuk menginvokasi fungsi Lambda.

Anda dapat menyelesaikan tutorial ini menggunakan AWS Management Console atau AWS Command Line Interface (AWS CLI).

Prasyarat

Sebelum memulai, selesaikan langkah-langkah di bagian berikut:

Buat instans DB Amazon RDS

Diagram alur kerja tutorial menampilkan langkah pembuatan basis data.

Instans DB Amazon RDS adalah lingkungan basis data terisolasi yang berjalan di AWS Cloud. Instans dapat berisi satu atau beberapa basis data yang dibuat pengguna. Kecuali Anda menentukan sebaliknya, Amazon RDS membuat instance database baru di VPC default yang disertakan dalam file Anda. Akun AWS Untuk informasi selengkapnya tentang Amazon VPC, lihat Panduan Pengguna Amazon Virtual Private Cloud.

Dalam tutorial ini, Anda membuat instance baru di VPC default Anda Akun AWS dan membuat database bernama ExampleDB dalam contoh itu. Anda dapat membuat instans dan database DB Anda menggunakan salah satu AWS Management Console atau AWS CLI.

Untuk membuat instans basis data
  1. Buka konsol Amazon RDS dan pilih Buat basis data.

  2. Pilih Pembuatan standar, lalu di Opsi mesin, pilih MySQL.

  3. Di Templat, pilih Tingkat gratis.

  4. Di Pengaturan, untuk Pengidentifikasi instans DB, masukkan MySQLForLambda.

  5. Tetapkan nama pengguna dan kata sandi Anda dengan melakukan hal berikut:

    1. Di Pengaturan kredensial, atur Nama pengguna utama sebagai admin.

    2. Untuk Kata sandi utama, masukkan dan konfirmasikan kata sandi untuk mengakses basis data Anda.

  6. Tentukan nama basis data dengan melakukan hal berikut:

    • Pilih semua sesuai opsi default-nya, kemudian gulir ke bawah ke bagian Konfigurasi tambahan.

    • Perluas bagian ini dan masukkan ExampleDB sebagai Nama basis data awal.

  7. Pilih semua sesuai opsi default-nya dan pilih Buat basis data.

Buat fungsi Lambda dan proksi

Diagram alur kerja tutorial menampilkan langkah fungsi Lambda untuk membuat peran eksekusi.

Anda dapat menggunakan konsol RDS untuk membuat fungsi Lambda dan proksi di VPC yang sama dengan basis data.

catatan

Anda hanya dapat membuat sumber daya terkait ini jika basis data Anda telah selesai dibuat dan berstatus Tersedia.

Untuk membuat fungsi dan proksi terkait
  1. Dari halaman Basis Data, periksa apakah basis data Anda sudah berstatus Tersedia. Jika sudah, lanjutkan ke langkah berikutnya. Jika belum, tunggu hingga basis data tersedia.

  2. Pilih basis data dan pilih Siapkan koneksi Lambda dari Tindakan.

  3. Di halaman Siapkan koneksi Lambda, pilih Buat fungsi baru.

    Atur Nama fungsi Lambda baru ke LambdaFunctionWithRDS.

  4. Di bagian Proksi RDS, pilih opsi Hubungkan menggunakan Proksi RDS. Selanjutnya pilih Buat proksi baru.

    • Untuk Kredensial basis data, pilih Nama pengguna dan kata sandi basis data.

    • Untuk Nama pengguna, pilih admin.

    • Untuk Kata sandi, masukkan kata sandi untuk instans basis data Anda.

  5. Pilih Siapkan untuk menyelesaikan pembuatan proksi dan fungsi Lambda.

Wizard menyelesaikan penyiapan dan menyediakan tautan ke konsol Lambda untuk meninjau fungsi baru Anda. Catat titik akhir proksi sebelum beralih ke konsol Lambda.

Buat peran eksekusi fungsi

Diagram alur kerja tutorial menampilkan langkah fungsi Lambda untuk membuat peran eksekusi.

Sebelum membuat fungsi Lambda, Anda membuat peran eksekusi untuk memberikan izin yang diperlukan ke fungsi Anda. Untuk tutorial ini, Lambda memerlukan izin untuk mengelola koneksi jaringan ke VPC yang berisi instans basis data Anda dan untuk melakukan polling pesan dari antrean Amazon SQS.

Untuk memberikan izin yang diperlukan oleh fungsi Lambda, tutorial ini menggunakan kebijakan terkelola IAM. Ini adalah kebijakan yang memberikan izin untuk banyak kasus penggunaan umum dan tersedia di Akun AWS Anda. Untuk informasi selengkapnya tentang penggunaan kebijakan terkelola, lihat Praktik terbaik kebijakan.

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

  2. Untuk Jenis entitas tepercaya, pilih Layanan AWS , dan untuk Kasus penggunaan, pilih Lambda.

  3. Pilih Berikutnya.

  4. Tambahkan kebijakan terkelola IAM dengan melakukan hal berikut:

    1. Menggunakan kotak pencarian kebijakan, cari AWSLambdaSQSQueueExecutionRole.

    2. Di dalam daftar hasil, centang kotak di samping peran, lalu pilih Hapus filter.

    3. Menggunakan kotak pencarian kebijakan, cari AWSLambdaVPCAccessExecutionRole.

    4. Di dalam daftar hasil, centang kotak di samping peran, lalu pilih Berikutnya.

  5. Untuk Nama peran, masukkan lambda-vpc-sqs-role, lalu pilih Buat peran.

Nantinya dalam tutorial ini, Anda memerlukan Amazon Resource Name (ARN) untuk peran eksekusi yang baru saja Anda buat.

Untuk menemukan ARN peran eksekusi
  1. Buka halaman Peran di konsol IAM dan pilih peran (lambda-vpc-sqs-role) Anda.

  2. Salin ARN yang ditampilkan di bagian Ringkasan.

Buat paket deployment Lambda

Diagram alur kerja tutorial menampilkan langkah fungsi Lambda untuk membuat paket deployment

Contoh kode Python berikut menggunakan paket PyMySQL untuk membuka koneksi ke database Anda. Saat pertama kali diinvokasi, fungsi Anda juga membuat tabel baru bernama Customer. Tabel menggunakan skema berikut, dengan kunci primer CustID:

Customer(CustID, Name)

Fungsi ini juga menggunakan PyMy SQL untuk menambahkan catatan ke tabel ini. Fungsi ini menambahkan catatan menggunakan ID pelanggan dan nama yang ditentukan dalam pesan yang akan Anda tambahkan ke antrean Amazon SQS.

Kode ini membuat koneksi ke basis data Anda di luar fungsi handler. Membuat koneksi dalam kode inisialisasi memungkinkan koneksi untuk digunakan kembali oleh invokasi fungsi berikutnya dan meningkatkan performa. Dalam aplikasi produksi, Anda juga dapat menggunakan konkurensi yang tersedia untuk menginisialisasi sejumlah permintaan koneksi basis data. Koneksi ini langsung tersedia setelah fungsi Anda dipanggil.

import sys import logging import pymysql import json import os # rds settings user_name = os.environ['USER_NAME'] password = os.environ['PASSWORD'] rds_proxy_host = os.environ['RDS_PROXY_HOST'] db_name = os.environ['DB_NAME'] logger = logging.getLogger() logger.setLevel(logging.INFO) # create the database connection outside of the handler to allow connections to be # re-used by subsequent function invocations. try: conn = pymysql.connect(host=rds_proxy_host, user=user_name, passwd=password, db=db_name, connect_timeout=5) except pymysql.MySQLError as e: logger.error("ERROR: Unexpected error: Could not connect to MySQL instance.") logger.error(e) sys.exit(1) logger.info("SUCCESS: Connection to RDS for MySQL instance succeeded") def lambda_handler(event, context): """ This function creates a new RDS database table and writes records to it """ message = event['Records'][0]['body'] data = json.loads(message) CustID = data['CustID'] Name = data['Name'] item_count = 0 sql_string = f"insert into Customer (CustID, Name) values(%s, %s)" with conn.cursor() as cur: cur.execute("create table if not exists Customer ( CustID int NOT NULL, Name varchar(255) NOT NULL, PRIMARY KEY (CustID))") cur.execute(sql_string, (CustID, Name)) conn.commit() cur.execute("select * from Customer") logger.info("The following items have been added to the database:") for row in cur: item_count += 1 logger.info(row) conn.commit() return "Added %d items to RDS for MySQL table" %(item_count)
catatan

Dalam contoh ini, kredensial akses basis data Anda disimpan sebagai variabel lingkungan. Dalam aplikasi produksi, sebaiknya gunakan AWS Secrets Manager sebagai opsi yang lebih aman. Perlu diketahui bahwa jika fungsi Lambda Anda berada di dalam VPC, untuk terhubung ke Secrets Manager, Anda perlu membuat titik akhir VPC. Untuk mempelajari selengkapnya, lihat Cara terhubung ke layanan Secrets Manager dalam Virtual Private Cloud.

Untuk menyertakan ketergantungan PyMy SQL dengan kode fungsi Anda, buat paket.zip deployment. Perintah berikut dapat digunakan untuk Linux, macOS, atau Unix:

Untuk membuat paket deployment .zip
  1. Simpan kode contoh sebagai file bernama lambda_function.py.

  2. Di direktori yang sama di mana Anda membuat lambda_function.py file Anda, buat direktori baru bernama package dan instal perpustakaan PyMy SQL.

    mkdir package pip install --target package pymysql
  3. Buat file zip yang berisi kode aplikasi Anda dan perpustakaan PyMy SQL. Di Linux atau macOS, jalankan perintah CLI berikut. Di Windows, gunakan alat zip pilihan Anda untuk membuat file lambda_function.zip. File kode sumber lambda_function.py dan folder yang berisi dependensi Anda harus diinstal di root file .zip.

    cd package zip -r ../lambda_function.zip . cd .. zip lambda_function.zip lambda_function.py

    Anda juga dapat membuat paket deployment menggunakan lingkungan virtual Python. Lihat Melakukan deployment fungsi Lambda Python dengan arsip file .zip.

Perbarui fungsi Lambda

Menggunakan paket .zip yang baru saja Anda buat, perbarui fungsi Lambda Anda menggunakan konsol Lambda. Agar fungsi dapat mengakses basis data, variabel lingkungan juga perlu dikonfigurasikan dengan kredensial akses.

Untuk memperbarui fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda dan pilih fungsi LambdaFunctionWithRDS.

  2. Di tab Runtime settings, pilih Edit untuk mengubah Runtime fungsi ke Python 3.10.

  3. Ubah Handler ke lambda_function.lambda_handler.

  4. Di tab Kode, pilih Unggah dari kemudian File .zip.

  5. Pilih file lambda_function.zip yang Anda buat di tahap sebelumnya dan pilih Simpan.

Sekarang konfigurasikan fungsi dengan peran eksekusi yang Anda buat sebelumnya. Dengan demikian, fungsi dapat memperoleh izin yang diperlukan untuk mengakses instans basis data Anda dan melakukan polling antrean Amazon SQS.

Untuk mengonfigurasi peran eksekusi fungsi
  1. Di halaman Fungsi pada konsol Lambda, pilih tab Konfigurasi, lalu pilih Izin.

  2. Di Peran eksekusi, pilih Edit.

  3. Di Peran yang ada, pilih peran eksekusi Anda (lambda-vpc-sqs-role).

  4. Pilih Simpan.

Untuk mengonfigurasi variabel lingkungan fungsi Anda
  1. Di halaman Fungsi pada konsol Lambda, pilih tab Konfigurasi, lalu pilih Variabel lingkungan.

  2. Pilih Edit.

  3. Untuk menambahkan kredensial akses basis data, lakukan hal berikut:

    1. Pilih Tambahkan variabel lingkungan, lalu untuk Kunci masukkan USER_NAME dan untuk Nilai masukkan admin.

    2. Pilih Tambahkan variabel lingkungan, lalu untuk Kunci masukkan DB_NAME dan untuk Nilai masukkan ExampleDB.

    3. Pilih Tambahkan variabel lingkungan, lalu untuk Kunci masukkan PASSWORD dan untuk Nilai masukkan kata sandi yang Anda pilih saat membuat basis data.

    4. Pilih Tambahkan variabel lingkungan, lalu untuk Kunci masukkan RDS_PROXY_HOST dan untuk Nilai masukkan titik akhir Proksi RDS yang Anda catat sebelumnya.

    5. Pilih Simpan.

Uji fungsi Lambda Anda di konsol

Diagram alur kerja tutorial menunjukkan Anda berada di langkah pengujian fungsi Lambda

Anda dapat menggunakan konsol Lambda untuk menguji fungsi. Anda membuat peristiwa pengujian yang meniru data yang akan diterima fungsi saat diinvokasi menggunakan Amazon SQS pada tahap akhir tutorial ini. Peristiwa pengujian berisi objek JSON yang menentukan ID pelanggan dan nama pelanggan yang akan ditambahkan ke tabel Customer buatan fungsi Anda.

Untuk menguji fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda dan pilih fungsi Anda.

  2. Pilih bagian Uji.

  3. Pilih Buat peristiwa baru dan masukkan myTestEvent sebagai nama peristiwa.

  4. Salin kode berikut ke JSON peristiwa dan pilih Simpan.

    { "Records": [ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "{\n \"CustID\": 1021,\n \"Name\": \"Martha Rivera\"\n}", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:my-queue", "awsRegion": "us-west-2" } ] }
  5. Pilih Uji.

Di tab Hasil eksekusi, Anda akan melihat hasil yang mirip dengan yang ditampilkan di Log Fungsi:

[INFO] 2023-02-14T19:31:35.149Z bdd06682-00c7-4d6f-9abb-89f4bbb4a27f The following items have been added to the database: [INFO] 2023-02-14T19:31:35.149Z bdd06682-00c7-4d6f-9abb-89f4bbb4a27f (1021, 'Martha Rivera')

Buat antrean Amazon SQS

Diagram alur kerja tutorial menunjukkan Anda berada dalam langkah pembuatan antrean pesan.

Anda telah berhasil menguji integrasi fungsi Lambda dan instans basis data Amazon RDS. Sekarang Anda membuat antrean Amazon SQS yang akan Anda gunakan untuk menginvokasi fungsi Lambda di tahap akhir tutorial ini.

Untuk membuat antrean Amazon SQS (konsol)
  1. Buka halaman Antrean di konsol Amazon SQS dan pilih Buat antrean.

  2. Di bagian Jenis pilih Standar masukkan LambdaRDSQueue untuk nama antrean.

  3. Pilih semua sesuai opsi default-nya dan pilih Buat antrean.

Buat pemetaan sumber peristiwa untuk menginvokasi fungsi Lambda Anda

Diagram alur kerja tutorial menunjukkan Anda berada dalam langkah antrean pesan untuk membuat pemetaan sumber peristiwa.

Pemetaan sumber peristiwa adalah sumber daya Lambda yang membaca item dari aliran atau antrean dan menginvokasi fungsi Lambda. Saat mengonfigurasi pemetaan sumber peristiwa, Anda dapat menentukan ukuran batch sehingga catatan dari aliran atau antrean Anda dikumpulkan ke dalam satu payload. Dalam contoh ini, Anda mengatur ukuran batch ke 1 sehingga fungsi Lambda akan diinvokasi setiap kali Anda mengirim sebuah pesan ke antrean. Anda dapat mengonfigurasi pemetaan sumber peristiwa menggunakan konsol AWS CLI atau Lambda.

Untuk membuat pemetaan sumber peristiwa (konsol)
  1. Buka halaman Fungsi di konsol Lambda dan pilih fungsi Anda (LambdaFunctionWithRDS).

  2. Di bagian Ikhtisar fungsi, pilih Tambahkan pemicu.

  3. Untuk sumbernya, pilih Amazon SQS, lalu pilih nama antrean (LambdaRDSQueue).

  4. Untuk Ukuran batch, masukkan 1.

  5. Biarkan semua opsi lain diatur ke nilai default dan pilih Tambahkan.

Kini semua penyiapan Anda sudah siap diuji dengan menambahkan pesan ke antrean Amazon SQS Anda.

Uji dan pantau pengaturan Anda

Diagram alur kerja tutorial menunjukkan bahwa Anda berada dalam langkah pengujian dan pemantauan.

Untuk menguji seluruh pengaturan Anda, tambahkan pesan ke antrean Amazon SQS menggunakan konsol. Anda kemudian menggunakan CloudWatch Log untuk mengonfirmasi bahwa fungsi Lambda Anda menulis catatan ke database Anda seperti yang diharapkan.

Untuk menguji dan memantau pengaturan Anda
  1. Buka halaman Antrean di konsol Amazon SQS dan pilih antrean (LambdaRDSQueue).

  2. Pilih Kirim dan terima pesan dan tempelkan JSON berikut ke Konten pesan di bagian Kirim pesan.

    { "CustID": 1054, "Name": "Richard Roe" }
  3. Pilih Kirim pesan.

    Mengirim pesan ke antrean akan membuat Lambda menginvokasi fungsi Anda melalui pemetaan sumber peristiwa. Untuk mengonfirmasi bahwa Lambda telah memanggil fungsi Anda seperti yang diharapkan, gunakan CloudWatch Log untuk memverifikasi bahwa fungsi tersebut telah menulis nama pelanggan dan ID ke tabel database Anda.

  4. Buka halaman Grup log CloudWatch konsol dan pilih grup log untuk fungsi Anda (/aws/lambda/LambdaFunctionWithRDS).

  5. Di bagian Log stream, pilih log stream terbaru.

    Tabel Anda harus berisi dua catatan pelanggan, satu dari setiap invokasi fungsi Anda. Di log stream, Anda akan melihat pesan yang mirip dengan pesan berikut:

    [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 The following items have been added to the database: [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 (1021, 'Martha Rivera') [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 (1054, 'Richard Roe')

Bersihkan sumber daya Anda

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

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

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Pilih Hapus.

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

  2. Pilih peran eksekusi yang Anda buat.

  3. Pilih Hapus peran.

  4. Pilih Ya, Hapus.

Untuk menghapus instans DB MySQL
  1. Buka halaman Basis Data di konsol Amazon RDS.

  2. Pilih basis data yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Hapus kotak centang Buat snapshot terakhir.

  5. Masukkan delete me di kotak teks.

  6. Pilih Hapus.

Untuk menghapus antrean Amazon SQS
  1. Masuk ke AWS Management Console dan buka konsol Amazon SQS di https://console.aws.amazon.com/sqs/.

  2. Pilih antrean yang Anda buat.

  3. Pilih Hapus.

  4. Masukkan delete di kotak teks.

  5. Pilih Hapus.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.