Memanggil fungsi Lambda dengan fungsi Aurora My native SQL - Amazon Aurora

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

Memanggil fungsi Lambda dengan fungsi Aurora My native SQL

catatan

Anda dapat memanggil fungsi asli lambda_sync dan lambda_async ketika Anda menggunakan Aurora My SQL versi 2, atau Aurora My SQL versi 3.01 dan lebih tinggi. Untuk informasi lebih lanjut tentang Aurora SQL versi Saya, lihat. Pembaruan mesin database untuk Amazon Aurora My SQL

Anda dapat memanggil AWS Lambda fungsi dari cluster Aurora My SQL DB dengan memanggil fungsi lambda_sync asli dan. lambda_async Pendekatan ini dapat berguna ketika Anda ingin mengintegrasikan database Anda yang berjalan di Aurora My SQL dengan yang lain AWS layanan. Misalnya, Anda mungkin ingin mengirim pemberitahuan menggunakan Amazon Simple Notification Service (AmazonSNS) setiap kali baris dimasukkan ke dalam tabel tertentu dalam database Anda.

Menggunakan fungsi native untuk menginvokasi fungsi Lambda

Fungsi lambda_sync dan lambda_async adalah fungsi native default yang menginvokasi fungsi Lambda secara sinkron atau asinkron. Ketika Anda harus mengetahui hasil dari fungsi Lambda sebelum beralih ke tindakan lain, gunakan fungsi sinkron lambda_sync. Ketika Anda tidak harus mengetahui hasil dari fungsi Lambda sebelum beralih ke tindakan lain, gunakan fungsi asinkron lambda_async.

Memberikan peran dalam Aurora My versi 3 SQL

Di Aurora My SQL versi 3, pengguna yang menjalankan fungsi asli harus diberikan peran tersebut. AWS_LAMBDA_ACCESS Untuk memberikan peran ini kepada pengguna, hubungkan ke instans DB sebagai pengguna administratif, dan jalankan pernyataan berikut.

GRANT AWS_LAMBDA_ACCESS TO user@domain-or-ip-address

Anda dapat mencabut peran ini dengan menjalankan pernyataan berikut.

REVOKE AWS_LAMBDA_ACCESS FROM user@domain-or-ip-address
Tip

Saat Anda menggunakan teknik peran di Aurora My SQL versi 3, Anda juga dapat mengaktifkan peran dengan menggunakan pernyataan SET ROLE role_name atauSET ROLE ALL. Jika Anda tidak terbiasa dengan sistem peran My SQL 8.0, Anda dapat mempelajari lebih lanjut diModel hak akses berbasis peran. Untuk detail selengkapnya, lihat Menggunakan peran di Manual SQL Referensi Saya.

Hal ini hanya berlaku untuk sesi aktif saat ini. Ketika Anda terhubung kembali, Anda harus menjalankan SET ROLE pernyataan lagi untuk memberikan hak istimewa. Untuk informasi lebih lanjut, lihat SETROLEpernyataan di Manual SQL Referensi Saya.

Anda dapat menggunakan parameter klaster DB activate_all_roles_on_login untuk mengaktifkan semua peran secara otomatis saat pengguna terhubung ke instans DB. Ketika parameter ini disetel, Anda biasanya tidak perlu memanggil SET ROLE pernyataan secara eksplisit untuk mengaktifkan peran. Untuk informasi selengkapnya, lihat activate_all_roles_on_login di Manual Referensi Saya. SQL

Namun, Anda harus memanggil secara SET ROLE ALL eksplisit di awal prosedur tersimpan untuk mengaktifkan peran, ketika prosedur yang disimpan dipanggil oleh pengguna yang berbeda.

Jika Anda mendapatkan kesalahan seperti berikut ketika Anda mencoba menginvokasi fungsi Lambda, kemudian jalankan pernyataan SET ROLE.

SQL Error [1227] [42000]: Access denied; you need (at least one of) the Invoke Lambda privilege(s) for this operation

Memberikan hak istimewa di Aurora My versi 2 SQL

Di Aurora My SQL versi 2, pengguna yang menjalankan fungsi asli harus diberikan hak istimewa. INVOKE LAMBDA Untuk memberikan hak akses ini kepada pengguna, hubungkan ke instans DB sebagai pengguna administratif, lalu jalankan pernyataan berikut.

GRANT INVOKE LAMBDA ON *.* TO user@domain-or-ip-address

Anda dapat mencabut hak akses ini dengan menjalankan pernyataan berikut.

REVOKE INVOKE LAMBDA ON *.* FROM user@domain-or-ip-address

Sintaksis untuk fungsi lambda_sync

Anda menginvokasi fungsi lambda_sync secara sinkron dengan jenis invokasi RequestResponse. Fungsi mengembalikan hasil pemanggilan Lambda dalam payload. JSON Fungsi tersebut memiliki sintaksis berikut.

lambda_sync ( lambda_function_ARN, JSON_payload )

Parameter untuk fungsi lambda_sync

Fungsi lambda_sync memiliki parameter berikut.

lambda_fungsi_ ARN

Nama Sumber Daya Amazon (ARN) dari fungsi Lambda untuk dipanggil.

JSON_muatan

Payload untuk fungsi Lambda yang dipanggil, dalam format. JSON

catatan

Aurora SQL Versi saya 3 mendukung fungsi JSON parsing dari My 8.0. SQL Namun, Aurora My SQL version 2 tidak menyertakan fungsi-fungsi tersebut. JSONparsing tidak diperlukan ketika fungsi Lambda mengembalikan nilai atom, seperti angka atau string.

Contoh untuk fungsi lambda_sync

Kueri berikut berdasarkan lambda_sync memanggil fungsi Lambda secara sinkron BasicTestLambda menggunakan fungsi tersebut. ARN Payload untuk fungsi tersebut adalah {"operation": "ping"}.

SELECT lambda_sync( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');

Sintaksis untuk fungsi lambda_async

Anda menginvokasi fungsi lambda_async secara asinkron dengan jenis invokasi Event. Fungsi mengembalikan hasil pemanggilan Lambda dalam payload. JSON Fungsi tersebut memiliki sintaksis berikut.

lambda_async ( lambda_function_ARN, JSON_payload )

Parameter untuk fungsi lambda_async

Fungsi lambda_async memiliki parameter berikut.

lambda_fungsi_ ARN

Nama Sumber Daya Amazon (ARN) dari fungsi Lambda untuk dipanggil.

JSON_muatan

Payload untuk fungsi Lambda yang dipanggil, dalam format. JSON

catatan

Aurora SQL Versi saya 3 mendukung fungsi JSON parsing dari My 8.0. SQL Namun, Aurora My SQL version 2 tidak menyertakan fungsi-fungsi tersebut. JSONparsing tidak diperlukan ketika fungsi Lambda mengembalikan nilai atom, seperti angka atau string.

Contoh untuk fungsi lambda_async

Kueri berikut berdasarkan lambda_async memanggil fungsi Lambda secara asinkron BasicTestLambda menggunakan fungsi tersebut. ARN Payload untuk fungsi tersebut adalah {"operation": "ping"}.

SELECT lambda_async( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');

Menginvokasi fungsi Lambda di dalam pemicu

Anda dapat menggunakan pemicu untuk memanggil Lambda pada pernyataan pengubahan data. Contoh berikut menggunakan fungsi native lambda_async dan menyimpan hasilnya dalam variabel.

mysql>SET @result=0; mysql>DELIMITER // mysql>CREATE TRIGGER myFirstTrigger AFTER INSERT ON Test_trigger FOR EACH ROW BEGIN SELECT lambda_async( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}') INTO @result; END; // mysql>DELIMITER ;
catatan

Pemicu tidak dijalankan sekali per SQL pernyataan, tetapi sekali per baris dimodifikasi, satu baris pada satu waktu. Saat pemicu berjalan, prosesnya sinkron. Pernyataan modifikasi data hanya menampilkan hasil saat pemicu selesai.

Hati-hati saat memanggil AWS Lambda berfungsi dari pemicu pada tabel yang mengalami lalu lintas tulis tinggi. INSERT,UPDATE, dan DELETE pemicu diaktifkan per baris. Beban kerja yang berat di atas meja denganINSERT,UPDATE, atau DELETE pemicu menghasilkan sejumlah besar panggilan ke Anda AWS Lambda fungsi.