Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menginvokasi fungsi Lambda dengan fungsi native Aurora MySQL
catatan
Anda dapat memanggil fungsi native lambda_sync dan lambda_async saat Anda menggunakan Aurora MySQL versi 2, atau Aurora MySQL versi 3.01 dan lebih tinggi. Untuk informasi selengkapnya tentang versi Aurora MySQL, lihat Pembaruan mesin database untuk Amazon Aurora My SQL.
Anda dapat memanggil AWS Lambda fungsi dari cluster DB MySQL Aurora dengan memanggil fungsi asli dan. lambda_sync lambda_async Pendekatan ini dapat berguna ketika Anda ingin mengintegrasikan database Anda berjalan di Aurora MySQL dengan layanan lain. AWS Misalnya, Anda mungkin ingin mengirim pemberitahuan menggunakan Amazon Simple Notification Service (Amazon SNS) setiap kali sebuah baris dimasukkan ke dalam tabel tertentu di basis data 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 MySQL versi 3
Di Aurora MySQL versi 3, pengguna yang menginvokasi fungsi native harus diberi peran AWS_LAMBDA_ACCESS. Untuk memberikan peran ini kepada pengguna, hubungkan ke instans DB sebagai pengguna administratif, dan jalankan pernyataan berikut.
GRANT AWS_LAMBDA_ACCESS TOuser@domain-or-ip-address
Anda dapat mencabut peran ini dengan menjalankan pernyataan berikut.
REVOKE AWS_LAMBDA_ACCESS FROMuser@domain-or-ip-address
Tip
Saat Anda menggunakan teknik peran di Aurora MySQL versi 3, Anda juga dapat mengaktifkan peran dengan menggunakan pernyataan SET ROLE atau role_nameSET ROLE
ALL. Jika Anda tidak memahami sistem peran MySQL 8.0, Anda dapat mempelajari selengkapnya dalam Model 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 selengkapnya, lihat SET ROLE statement
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
Pastikan Anda memberikan peran kepada pengguna yang benar, seperti yang ditunjukkan pada entri mysql.users tabel. Mungkin ada beberapa pengguna dengan nama yang sama, tetapi pada host yang berbeda. Bergantung pada aplikasi atau host mana yang menjalankan lambda_sync fungsi, MySQL memilih pengguna dengan kecocokan terbaik sesuai dengan entri kolom. host
Memberikan hak akses di Aurora MySQL versi 2
Di Aurora MySQL versi 2, pengguna yang menginvokasi fungsi native harus diberi hak akses INVOKE LAMBDA. Untuk memberikan hak akses ini kepada pengguna, hubungkan ke instans DB sebagai pengguna administratif, lalu jalankan pernyataan berikut.
GRANT INVOKE LAMBDA ON *.* TOuser@domain-or-ip-address
Anda dapat mencabut hak akses ini dengan menjalankan pernyataan berikut.
REVOKE INVOKE LAMBDA ON *.* FROMuser@domain-or-ip-address
Sintaksis untuk fungsi lambda_sync
Anda menginvokasi fungsi lambda_sync secara sinkron dengan jenis invokasi RequestResponse. Fungsi ini menampilkan hasil invokasi 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_function_ARN
-
Amazon Resource Name (ARN) dari fungsi Lambda yang akan diinvokasi.
- JSON_payload
-
Payload untuk fungsi Lambda yang diinvokasi, dalam format JSON.
catatan
Aurora MySQL versi 3 mendukung fungsi penguraian JSON dari MySQL 8.0. Namun, Aurora MySQL versi 2 tidak menyertakan fungsi-fungsi tersebut. Penguraian JSON tidak diperlukan saat fungsi Lambda menghasilkan nilai atomis, seperti angka atau string.
Contoh untuk fungsi lambda_sync
Kueri berikut berdasarkan lambda_sync menginvokasi fungsi Lambda BasicTestLambda secara sinkron menggunakan fungsi 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 ini menampilkan hasil invokasi 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_function_ARN
-
Amazon Resource Name (ARN) dari fungsi Lambda yang akan diinvokasi.
- JSON_payload
-
Payload untuk fungsi Lambda yang diinvokasi, dalam format JSON.
catatan
Aurora MySQL versi 3 mendukung fungsi penguraian JSON dari MySQL 8.0. Namun, Aurora MySQL versi 2 tidak menyertakan fungsi-fungsi tersebut. Penguraian JSON tidak diperlukan saat fungsi Lambda menghasilkan nilai atomis, seperti angka atau string.
Contoh untuk fungsi lambda_async
Kueri yang didasarkan pada lambda_async berikut akan menginvokasi fungsi Lambda BasicTestLambda secara asinkron menggunakan fungsi 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 pernyataan SQL, tetapi sekali per baris yang diubah, satu baris dalam satu waktu. Saat pemicu berjalan, prosesnya sinkron. Pernyataan modifikasi data hanya menampilkan hasil saat pemicu selesai.
Hati-hati saat menjalankan AWS Lambda fungsi dari pemicu pada tabel yang mengalami lalu lintas tulis tinggi. INSERT,UPDATE, dan DELETE pemicu diaktifkan per baris. Beban kerja berat tulis di atas meja denganINSERT,UPDATE, atau DELETE pemicu menghasilkan sejumlah besar panggilan ke fungsi Anda. AWS Lambda