Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Lambda adalah layanan komputasi berbasis peristiwa yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Misalnya, Anda dapat menggunakan fungsi Lambda untuk memproses pemberitahuan peristiwa dari basis data, atau memuat data dari file setiap kali file baru diunggah ke Amazon S3. Untuk mempelajari lebih lanjut tentang Lambda, lihat Apa itu? AWS Lambda di Panduan AWS Lambda Pengembang.
catatan
AWS Lambda Fungsi pemanggilan didukung di Aurora PostgreSQL 11.9 dan lebih tinggi (termasuk Aurora Serverless v2).
Berikut ini, Anda dapat menemukan ringkasan langkah-langkah yang diperlukan.
Untuk informasi selengkapnya tentang fungsi Lambda, lihat Mulai menggunakan Lambda dan Dasar-dasar AWS Lambda di Panduan Developer AWS Lambda .
Topik
Langkah 3: Instal ekstensi aws_lambda untuk klaster DB Aurora PostgreSQL
Langkah 4: Gunakan fungsi pembantu Lambda dengan klaster DB Aurora PostgreSQL (Opsional)
Langkah 5: Invokasi fungsi Lambda dari klaster DB Aurora PostgreSQL Anda
Langkah 6: Berikan pengguna lain izin untuk menginvokasi fungsi Lambda
Langkah 1: Konfigurasikan Aurora PostgreSQL DB cluster Anda untuk instance PostgreSQL DB untuk koneksi keluar ke AWS Lambda
Fungsi Lambda selalu berjalan di dalam VPC Amazon yang dimiliki oleh layanan. AWS Lambda Lambda menerapkan akses jaringan dan aturan keamanan untuk VPC ini dan mempertahankan serta memantau VPC secara otomatis. Klaster DB Aurora PostgreSQL Anda mengirimkan lalu lintas jaringan ke VPC layanan Lambda. Cara Anda mengonfigurasi ini bergantung pada apakah instans DB primer klaster DB Aurora Anda bersifat publik atau pribadi.
Public Aurora PostgreSQL DB cluster utama cluster DB adalah publik jika terletak di adalah. PubliclyAccessible
true
Untuk menemukan nilai properti ini, Anda dapat menggunakan describe-db-instances AWS CLI perintah. Atau, Anda dapat menggunakan AWS Management Console untuk membuka tab Konektivitas & keamanan dan memeriksa apakah opsi Dapat diakses publik adalah Ya. Untuk memverifikasi bahwa instans ini ada di subnet publik VPC, Anda dapat menggunakan AWS Management Console atau AWS CLI.Untuk mengatur akses ke Lambda, Anda menggunakan AWS Management Console atau AWS CLI untuk membuat aturan keluar pada grup keamanan VPC Anda. Aturan keluar menentukan bahwa TCP dapat menggunakan port 443 untuk mengirim paket ke alamat apa pun IPv4 (0.0.0.0/0).
Private Aurora PostgreSQL DB cluster — Dalam hal ini, properti “” instance berada di subnet pribadi. PubliclyAccessible
false
Agar instans dapat berfungsi dengan Lambda, Anda dapat menggunakan gateway Network Address Translation (NAT). Untuk informasi selengkapnya, silakan lihat Gateway NAT. Atau, Anda dapat mengonfigurasi VPC dengan titik akhir VPC untuk Lambda. Untuk informasi selengkapnya, lihat Titik akhir VPC di Panduan Pengguna Amazon VPC. Titik akhir ini merespons panggilan yang dilakukan oleh klaster DB Aurora PostgreSQL ke fungsi Lambda Anda.
VPC Anda sekarang dapat berinteraksi dengan AWS Lambda VPC di tingkat jaringan. Selanjutnya, konfigurasikan izin menggunakan IAM.
AWS Lambda
Menginvokasi fungsi Lambda dari klaster DB Aurora PostgreSQL memerlukan hak istimewa tertentu. Untuk mengonfigurasi hak istimewa yang diperlukan, sebaiknya Anda membuat kebijakan IAM yang memungkinkan invokasi fungsi Lambda, menetapkan kebijakan ke peran, dan kemudian menerapkan peran tersebut ke klaster DB. Pendekatan ini memberikan hak istimewa klaster DB untuk menginvokasi fungsi Lambda yang ditentukan atas nama Anda. Langkah-langkah berikut menunjukkan cara melakukannya dengan menggunakan AWS CLI.
Untuk mengonfigurasi izin IAM untuk menggunakan klaster dengan Lambda
(ID pernyataan (Sid) adalah deskripsi opsional untuk pernyataan kebijakan Anda dan tidak berpengaruh pada penggunaan.) Kebijakan ini memberi klaster DB Aurora izin minimum yang diperlukan untuk menginvokasi fungsi Lambda yang ditentukan.
aws iam create-policy --policy-name
rds-lambda-policy
--policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToExampleFunction", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:
" } ] }'aws-region
:444455556666:function:my-functionSebagai alternatif, Anda dapat menggunakan kebijakan
AWSLambdaRole
yang ditentukan sebelumnya yang memungkinkan Anda menginvokasi fungsi Lambda apa pun. Untuk informasi selengkapnya, lihat Kebijakan IAM berbasis identitas untuk LambdaGunakan AWS CLI perintah create-role
untuk membuat peran IAM yang dapat diasumsikan oleh kebijakan saat runtime. aws iam create-role --role-name
rds-lambda-role
--assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'Terapkan kebijakan ke peran dengan menggunakan attach-role-policy
AWS CLI perintah. aws iam attach-role-policy \ --policy-arn arn:aws:iam::
444455556666
:policy/rds-lambda-policy
\ --role-namerds-lambda-role
--regionaws-region
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/add-role-to-db-cluster.html
AWS CLI Langkah terakhir ini memungkinkan pengguna basis data klaster DB menginvokasi fungsi Lambda. aws rds add-role-to-db-cluster \ --db-cluster-identifier
my-cluster-name
\ --feature-name Lambda \ --role-arn arn:aws:iam::444455556666:role/rds-lambda-role
\ --regionaws-region
Setelah menyelesaikan konfigurasi VPC dan IAM, Anda sekarang dapat menginstal ekstensi aws_lambda
. (Perhatikan bahwa Anda dapat menginstal ekstensi kapan saja, tetapi sebelum menyiapkan dukungan VPC dan hak istimewa IAM yang benar, ekstensi aws_lambda
tidak menambahkan apa pun ke kapabilitas klaster DB Aurora PostgreSQL.)
Langkah 3: Instal ekstensi aws_lambda
untuk klaster DB Aurora PostgreSQL
Ekstensi ini memberi klaster DB Aurora PostgreSQL kemampuan untuk memanggil fungsi Lambda dari PostgreSQL.
Untuk menginstal ekstensi aws_lambda
di klaster DB Aurora PostgreSQL Anda
Gunakan baris perintah psql
PostgreSQL atau alat pgAdmin untuk terhubung ke klaster DB Aurora PostgreSQL .
Hubungkan ke klaster DB Aurora PostgreSQL sebagai pengguna dengan hak istimewa
rds_superuser
. Penggunapostgres
default ditampilkan dalam contoh.psql -h
cluster-instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
-
Instal ekstensi
aws_lambda
. Ekstensiaws_commons
juga diperlukan. Ini memberikan fungsi pembantuaws_lambda
dan berbagai ekstensi Aurora lainnya untuk PostgreSQL. Jika belum ada di klaster DB Aurora PostgreSQL , ekstensi akan diinstal denganaws_lambda
seperti yang ditunjukkan sebagai berikut.CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE;
NOTICE: installing required extension "aws_commons" CREATE EXTENSION
Ekstensi aws_lambda
diinstal di instans DB primer klaster DB Aurora PostgreSQL. Anda sekarang dapat membuat struktur kemudahan untuk menginvokasi fungsi Lambda.
Langkah 4: Gunakan fungsi pembantu Lambda dengan klaster DB Aurora PostgreSQL (Opsional)
Anda dapat menggunakan fungsi pembantu di ekstensi aws_commons
untuk menyiapkan entitas yang dapat diinvokasi dengan lebih mudah dari PostgreSQL. Untuk melakukannya, Anda harus memiliki informasi berikut tentang fungsi Lambda:
-
Nama fungsi – Nama, Amazon Resource Name (ARN), versi, atau alias fungsi Lambda. Kebijakan IAM yang dibuat Langkah 2: Konfigurasikan IAM untuk klaster dan Lambda memerlukan ARN, jadi kami sarankan Anda menggunakan ARN fungsi Anda.
-
AWS Wilayah
Untuk menyimpan informasi nama fungsi Lambda, Anda menggunakan fungsi aws_commons.create_lambda_function_arn. Fungsi pembantu ini menciptakan struktur komposit aws_commons._lambda_function_arn_1
dengan detail yang dibutuhkan oleh fungsi invokasi. Berikut ini, Anda dapat menemukan tiga pendekatan alternatif untuk menyiapkan struktur komposit ini.
SELECT aws_commons.create_lambda_function_arn( 'my-function', '
aws-region
' ) AS aws_lambda_arn_1 \gset
SELECT aws_commons.create_lambda_function_arn( '111122223333:function:my-function', '
aws-region
' ) AS lambda_partial_arn_1 \gset
SELECT aws_commons.create_lambda_function_arn( 'arn:aws:lambda:
aws-region
:111122223333:function:my-function' ) AS lambda_arn_1 \gset
Salah satu dari nilai ini dapat digunakan dalam panggilan ke fungsi aws_lambda.invoke. Sebagai contoh, lihat Langkah 5: Invokasi fungsi Lambda dari klaster DB Aurora PostgreSQL Anda.
Langkah 5: Invokasi fungsi Lambda dari klaster DB Aurora PostgreSQL Anda
Fungsi aws_lambda.invoke
berperilaku sinkron atau asinkron, bergantung pada invocation_type
. Dua alternatif untuk parameter ini adalah RequestResponse
(default) dan Event
, sebagai berikut.
-
RequestResponse
– Jenis invokasi ini sinkron. Ini adalah perilaku default saat panggilan dilakukan tanpa menentukan jenis invokasi. Payload respons mencakup hasil dari fungsiaws_lambda.invoke
. Gunakan jenis invokasi ini jika alur kerja Anda perlu menerima hasil dari fungsi Lambda sebelum melanjutkan. -
Event
– Jenis invokasi ini asinkron. Respons tidak mencakup payload yang berisi hasil. Gunakan jenis invokasi ini jika alur kerja Anda tidak memerlukan hasil dari fungsi Lambda untuk melanjutkan pemrosesan.
Sebagai pengujian sederhana terhadap pengaturan Anda, Anda dapat terhubung ke instans DB menggunakan psql
dan menginvokasi contoh fungsi dari baris perintah. Misalkan Anda memiliki salah satu fungsi dasar yang disiapkan pada layanan Lambda, seperti fungsi Python sederhana yang diperlihatkan pada tangkapan layar berikut.

Untuk menginvokasi contoh fungsi
Hubungkan ke instans DB primer menggunakan
psql
atau pgAdmin.psql -h
cluster.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Invokasi fungsi menggunakan ARN-nya.
SELECT * from aws_lambda.invoke(aws_commons.create_lambda_function_arn('arn:aws:lambda:
aws-region
:444455556666:function:simple', 'us-west-1'), '{"body": "Hello from Postgres!"}'::json );Respons-nya terlihat sebagai berikut.
status_code | payload | executed_version | log_result -------------+-------------------------------------------------------+------------------+------------ 200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST | (1 row)
Jika upaya invokasi tidak berhasil, lihat Pesan kesalahan fungsi Lambda .
Langkah 6: Berikan pengguna lain izin untuk menginvokasi fungsi Lambda
Dalam langkah ini, hanya Anda sebagai rds_superuser
yang dapat menginvokasi fungsi Lambda. Untuk mengizinkan pengguna lain menginvokasi fungsi apa pun yang Anda buat, Anda harus memberi mereka izin.
Untuk memberi pengguna lain izin untuk menginvokasi fungsi Lambda
Hubungkan ke instans DB primer menggunakan
psql
atau pgAdmin.psql -h
cluster.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Jalankan perintah SQL berikut:
postgres=>
GRANT USAGE ON SCHEMA aws_lambda TOdb_username
; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA aws_lambda TOdb_username
;