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.
Daftar Isi
- Menggunakan fungsi native untuk menginvokasi fungsi Lambda
- Memberikan peran dalam Aurora My versi 3 SQL
- Memberikan hak istimewa di Aurora My versi 2 SQL
- Sintaksis untuk fungsi lambda_sync
- Parameter untuk fungsi lambda_sync
- Contoh untuk fungsi lambda_sync
- Sintaksis untuk fungsi lambda_async
- Parameter untuk fungsi lambda_async
- Contoh untuk fungsi lambda_async
- Menginvokasi fungsi Lambda di dalam pemicu
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
ataurole_name
SET 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
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
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
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.