Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memohon AWS Lambda
AWS Lambda adalah layanan komputasi berbasis peristiwa yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Ini tersedia untuk digunakan dengan banyak AWS 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 di Aurora Postgre SQL 11.9 dan lebih tinggi (termasuk Aurora Serverless v2).
Menyiapkan Aurora Postgre SQL RDS untuk Postgre SQL bekerja dengan fungsi Lambda adalah proses multi-langkah yang melibatkan AWS Lambda,, Anda IAMVPC, dan cluster Aurora Postgre SQL DB Anda instans Postgre DB. 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 cluster Aurora Postgre SQL DB Anda untuk instance Postgre DB RDS keluar ke AWS Lambda
- Langkah 2: Konfigurasikan IAM untuk cluster Aurora Postgre SQL DB Anda instans Postgre DB dan SQL AWS Lambda
- Langkah 6: Berikan pengguna lain izin untuk menginvokasi fungsi Lambda
- Pesan kesalahan fungsi Lambda
- AWS Lambdafungsi dan referensi parameter
Langkah 1: Konfigurasikan cluster Aurora Postgre SQL DB Anda untuk instance Postgre DB RDS 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 Cluster Aurora Postgre SQL DB Anda lalu lintas jaringan ke layanan Lambda. VPC Cara Anda mengonfigurasi ini bergantung pada apakah instans DB primer klaster DB Aurora Anda bersifat publik atau pribadi.
Cluster SQL DB Aurora Postgre Publik DB instans DB utama cluster 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).
Cluster Aurora Postgre SQL DB pribadi — 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 cluster DB Aurora Postgre Anda untuk instans Postgre SQL DB ke fungsi Anda. SQL
Anda sekarang VPC dapat berinteraksi dengan AWS Lambda VPCdi tingkat jaringan. Selanjutnya, Anda mengonfigurasi izin menggunakanIAM.
Langkah 2: Konfigurasikan IAM untuk cluster Aurora Postgre SQL DB Anda instans Postgre DB dan SQL AWS Lambda
Memanggil fungsi Lambda dari . Pendekatan ini memberikan hak istimewa klaster 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 cluster Anda dengan Lambda
Gunakan kebijakan create-
AWS CLI perintah untuk membuat IAM kebijakan yang memungkinkan cluster Aurora Postgre SQL DB Anda untuk instance Postgre SQL DB RDS yang ditentukan. (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 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
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/add-role-to-db-cluster.html
AWS CLI perintah. 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
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 Aurora SQL Postgre DB Anda untuk kemampuan instans Postgre DB.) SQL
Untuk menggunakan AWS Lambda Ekstensi ini menyediakan cluster Aurora Postgre SQL DB Anda untuk instans Postgre DB Lambda dari Postgre. SQL
Connect ke cluster Aurora Postgre SQL DB Anda 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 menyediakan fungsi pembantuaws_lambda
dan banyak ekstensi Aurora lainnya untuk Postgre. SQL Jika belum ada di SQLDBcluster Aurora Postgre Anda RDS untuk SQLDB instance Postgre 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 klaster Aurora Postgre SQL DB Anda. Anda sekarang dapat membuat struktur kemudahan untuk menginvokasi fungsi Lambda.
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 cluster dan Lambda mewajibkanARN, jadi kami sarankan Anda menggunakan fungsi AndaARN.
-
AWS Wilayah - (Opsional) AWS
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 .
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 utama Anda menggunakan
psql
ataupgAdmin.psql -h
cluster.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 utama Anda menggunakan
psql
ataupgAdmin.psql -h
cluster.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
;