Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memohon AWS Lambdafungsi dari SQL
AWS Lambda adalah layanan komputasi berbasis peristiwa yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Ini tersedia untuk digunakan dengan banyak AWS layanan, termasuk RDS. SQL 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 AWS Lambda Panduan Pengembang.
catatan
Memohon AWS Lambda fungsi didukung dalam ini RDS untuk versi PostgreSQL:
Semua Postgre 16 versi SQL
Semua Postgre 15 versi SQL
Postgre SQL 14.1 dan versi minor yang lebih tinggi
-
Postgre SQL 13.2 dan versi minor yang lebih tinggi
-
Postgre SQL 12.6 dan versi minor yang lebih tinggi
Menyiapkan untuk bekerja dengan fungsi Lambda adalah proses multi-langkah yang melibatkan AWS Lambda,, Anda IAMVPC, dan . SQL Berikut ini, Anda dapat menemukan ringkasan langkah-langkah yang diperlukan.
Untuk informasi selengkapnya tentang fungsi Lambda, lihat Memulai Lambda dan AWS Yayasan Lambda di AWS Lambda Panduan Pengembang.
Topik
- Langkah 1: Konfigurasikan untuk koneksi SQL keluar ke AWS Lambda
- Langkah 2: Konfigurasikan IAM untuk dan SQL AWS Lambda
- Langkah 3: Instal aws_lambda ekstensi untuk SQL
- Langkah 4: Gunakan fungsi pembantu Lambda dengan ) SQL
- Langkah 5: Panggil fungsi Lambda dari cluster DB DB RDS SQL
- Langkah 6: Berikan pengguna lain izin untuk menginvokasi fungsi Lambda
- Contoh: Memanggil fungsi Lambda dari cluster DB DB RDS SQL
- Pesan kesalahan fungsi Lambda
- AWS Lambdafungsi dan referensi parameter
Langkah 1: Konfigurasikan untuk koneksi SQL keluar ke AWS Lambda
Fungsi Lambda selalu berjalan di dalam Amazon VPC yang dimiliki oleh AWS Lambda layanan. Lambda menerapkan akses jaringan dan aturan keamanan untuk ini VPC dan memelihara dan memantau secara otomatis. VPC Anda RDSuntuk instans Postgre SQL DB mengirimkan lalu lintas jaringan ke layanan Lambda. VPC Cara Anda mengonfigurasi ini bergantung pada apakah instans DB Anda bersifat publik atau pribadi.
Publik RDSuntuk instans Postgre SQL DB — Instans DB bersifat publik jika terletak di subnet publik di properti AndaVPC, dan jika properti “” instans tersebut. 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 dapat diakses publik adalah Ya. Untuk memverifikasi bahwa instans ada di subnet publik AndaVPC, 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 VPC keamanan Anda. Aturan keluar menentukan yang TCP dapat menggunakan port 443 untuk mengirim paket ke IPv4 alamat apa pun (0.0.0.0/0).
pribadi RDSuntuk instans Postgre SQL DB — Dalam hal ini, properti "PubliclyAccessible" instance ada
false
atau berada dalam subnet pribadi. Untuk memungkinkan instance bekerja dengan Lambda, Anda dapat menggunakan gateway Network Address Translation)NAT. Untuk informasi lebih lanjut, lihat NATgateway. Atau, Anda dapat mengonfigurasi VPC dengan VPC titik akhir untuk Lambda. Untuk informasi selengkapnya, lihat VPCtitik akhir di Panduan VPC Pengguna Amazon. Titik akhir merespons panggilan yang dilakukan oleh ke fungsi RDSLambda Anda. SQL VPCEndpoint menggunakan DNS resolusi pribadinya sendiri. RDSuntuk Postgre tidak SQL dapat menggunakan VPC titik akhir Lambda sampai Anda mengubah nilairds.custom_dns_resolution
dari nilai default 0 (tidak diaktifkan) menjadi 1. Untuk melakukannya:Buat grup parameter DB kustom.
Ubah nilai parameter
rds.custom_dns_resolution
dari default0
ke1
.Ubah instans DB Anda untuk menggunakan grup parameter DB kustom.
Boot ulang instans agar parameter yang diubah dapat diterapkan.
Anda sekarang VPC dapat berinteraksi dengan AWS Lambda VPCdi tingkat jaringan. Selanjutnya, Anda mengonfigurasi izin menggunakanIAM.
Langkah 2: Konfigurasikan IAM untuk dan SQL AWS Lambda
Memanggil fungsi Lambda dari RDScluster DB istimewa tertentu. Pendekatan ini memberikan hak istimewa instans DB untuk menginvokasi fungsi Lambda yang ditentukan atas nama Anda. Langkah-langkah berikut menunjukkan kepada Anda bagaimana melakukan ini menggunakan AWS CLI.
Untuk mengonfigurasi IAM izin untuk menggunakan RDSinstans Amazon Anda dengan Lambda
Gunakan kebijakan create-
AWS CLI perintah untuk membuat IAM kebijakan yang memungkinkan untuk menjalankan fungsi Lambda yang ditentukan. (ID pernyataan (Sid) adalah deskripsi opsional untuk pernyataan kebijakan Anda dan tidak berpengaruh pada penggunaan.) Kebijakan ini memberi instans DB 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 berbasis identitas IAM untuk LambdaGunakan create-role
AWS CLI perintah untuk membuat IAM peran 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" } ] }'Menerapkan 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
AWS CLI perintah. Langkah terakhir ini memungkinkan pengguna basis data instans DB menginvokasi fungsi Lambda.
aws rds add-role-to-db-instance \ --db-instance-identifier
my-instance-name
\ --feature-name Lambda \ --role-arn arn:aws:iam::444455556666:role/rds-lambda-role
\ --regionaws-region
Dengan konfigurasi VPC dan IAM konfigurasi selesai, Anda sekarang dapat menginstal aws_lambda
ekstensi. (Perhatikan bahwa Anda dapat menginstal ekstensi kapan saja, tetapi sampai Anda menyiapkan VPC dukungan dan IAM hak istimewa yang benar, aws_lambda
ekstensi tidak menambahkan apa pun ke RDScluster .) SQL
Langkah 3: Instal aws_lambda
ekstensi untuk SQL
Untuk menggunakan AWS Lambda Ekstensi ini menyediakan dengan kemampuan RDS untuk memanggil SQL fungsi Lambda dari Postgre. SQL
Untuk menginstal aws_lambda
ekstensi di SQL
Gunakan SQL psql
baris perintah Postgre atau pgAdmin alat untuk terhubung ke cluster DB. RDS SQL
Connect ke Anda RDSuntuk instans Postgre SQL DB sebagai pengguna dengan hak istimewa.
rds_superuser
Penggunapostgres
default ditampilkan dalam contoh.psql -h
instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
-
Instal ekstensi
aws_lambda
. Ekstensiaws_commons
juga diperlukan. Ini menyediakan fungsi pembantuaws_lambda
dan banyak ekstensi Aurora lainnya untuk Postgre. SQL Jika belum ada di , itu diinstal dengan seperti yang ditunjukkan berikut.aws_lambda
CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE;
NOTICE: installing required extension "aws_commons" CREATE EXTENSION
aws_lambda
Ekstensi dipasang di instans DB utama Anda sekarang dapat membuat struktur kemudahan untuk menginvokasi fungsi Lambda.
Langkah 4: Gunakan fungsi pembantu Lambda dengan ) SQL
Anda dapat menggunakan fungsi pembantu di aws_commons
ekstensi untuk menyiapkan entitas yang dapat Anda panggil dengan lebih mudah dari Postgre. SQL Untuk melakukannya, Anda harus memiliki informasi berikut tentang fungsi Lambda:
-
Nama fungsi — Nama, Amazon Resource Name (ARN), versi, atau alias dari fungsi Lambda. IAMKebijakan yang dibuat di Langkah 2: Konfigurasikan IAM untuk instance dan Lambda mewajibkanARN, jadi kami sarankan Anda menggunakan fungsi AndaARN.
-
AWS Wilayah - (Opsional) AWS Wilayah di mana fungsi Lambda berada jika tidak berada di Wilayah yang sama dengan cluster DB . RDS SQL
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: Panggil fungsi Lambda dari cluster DB DB RDS SQL.
Langkah 5: Panggil fungsi Lambda dari cluster DB DB RDS SQL
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
Connect ke instans DB Anda menggunakan
psql
ataupgAdmin.psql -h
instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Memanggil fungsi menggunakan nyaARN.
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
Connect ke instans DB Anda menggunakan
psql
ataupgAdmin.psql -h
instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Jalankan SQL perintah berikut:
postgres=>
GRANT USAGE ON SCHEMA aws_lambda TOdb_username
; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA aws_lambda TOdb_username
;