Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemicu Lambda pengirim SMS kustom
Saat Anda menetapkan pemicu pengirim SMS khusus ke kumpulan pengguna Anda, Amazon Cognito akan memanggil fungsi Lambda alih-alih perilaku defaultnya saat peristiwa pengguna mengharuskannya mengirim pesan SMS. Dengan pemicu pengirim khusus, AWS Lambda fungsi Anda dapat mengirim pemberitahuan SMS ke pengguna Anda melalui metode dan penyedia yang Anda pilih. Kode kustom fungsi Anda harus memproses dan mengirimkan semua pesan SMS dari kumpulan pengguna Anda.
Pemicu ini menyajikan skenario di mana Anda mungkin ingin memiliki kontrol yang lebih besar atas bagaimana kumpulan pengguna Anda mengirim pesan SMS. Fungsi Lambda Anda dapat menyesuaikan panggilan ke operasi Amazon SNS API, misalnya saat Anda ingin mengelola beberapa IDs originasi atau silang. Wilayah AWS Fungsi Anda juga dapat mengarahkan pesan ke media pengiriman lain atau layanan pihak ketiga.
Untuk mempelajari cara mengonfigurasi pemicu pengirim email kustom, lihatMengaktifkan pemicu Lambda pengirim kustom.
Sumber pemicu Lambda pengirim SMS kustom
Tabel berikut menunjukkan peristiwa memicu untuk sumber pemicu SMS kustom dalam kode Lambda Anda.
TriggerSource value |
Peristiwa |
---|---|
CustomSMSSender_SignUp |
Seorang pengguna mendaftar dan Amazon Cognito mengirimkan pesan selamat datang. |
CustomSMSSender_ForgotPassword |
Seorang pengguna meminta kode untuk mengatur ulang kata sandi mereka. |
CustomSMSSender_ResendCode |
Seorang pengguna meminta kode baru untuk mengonfirmasi pendaftaran mereka. |
CustomSMSSender_VerifyUserAttribute |
Pengguna membuat atribut alamat email atau nomor telepon baru dan Amazon Cognito mengirimkan kode untuk memverifikasi atribut. |
CustomSMSSender_UpdateUserAttribute |
Pengguna memperbarui alamat email atau atribut nomor telepon dan Amazon Cognito mengirimkan kode untuk memverifikasi atribut. |
CustomSMSSender_Authentication |
Pengguna yang dikonfigurasi dengan otentikasi multi-faktor SMS (MFA) masuk. |
CustomSMSSender_AdminCreateUser |
Anda membuat pengguna baru di kumpulan pengguna Anda dan Amazon Cognito mengirimi mereka kata sandi sementara. |
Parameter pemicu Lambda pengirim SMS kustom
Permintaan yang diteruskan Amazon Cognito ke fungsi Lambda ini adalah kombinasi dari parameter di bawah ini dan parameter umum yang ditambahkan Amazon Cognito ke semua permintaan.
Parameter permintaan pengirim SMS kustom
- jenis
-
Versi permintaan. Untuk acara pengirim SMS kustom, nilai string ini selalu
customSMSSenderRequestV1
. - code
-
Kode terenkripsi yang fungsi Anda dapat mendekripsi dan mengirim ke pengguna Anda.
- clientMetadata
-
Satu atau lebih pasangan nilai kunci yang dapat Anda berikan sebagai input khusus ke pemicu fungsi Lambda pengirim SMS kustom. Untuk meneruskan data ini ke fungsi Lambda Anda, Anda dapat menggunakan ClientMetadata parameter dalam tindakan AdminRespondToAuthChallengedan RespondToAuthChallengeAPI. Amazon Cognito tidak menyertakan data dari ClientMetadata parameter dalam AdminInitiateAuthdan operasi InitiateAuthAPI dalam permintaan yang diteruskan ke fungsi otentikasi pos.
- userAttributes
-
Satu atau lebih pasangan kunci-nilai yang mewakili atribut pengguna.
Parameter respons pengirim SMS kustom
Amazon Cognito tidak mengharapkan informasi pengembalian tambahan dalam tanggapan. Fungsi Anda dapat menggunakan operasi API untuk menanyakan dan memodifikasi sumber daya Anda, atau merekam metadata peristiwa ke sistem eksternal.
Contoh kode
Contoh Node.js berikut memproses peristiwa pesan SMS dalam fungsi Lambda pengirim SMS kustom Anda. Contoh ini mengasumsikan fungsi Anda memiliki dua variabel lingkungan yang ditentukan.
KEY_ID
-
ID kunci KMS yang ingin Anda gunakan untuk mengenkripsi dan mendekripsi kode pengguna Anda.
KEY_ARN
-
Nama Sumber Daya Amazon (ARN) dari kunci KMS yang ingin Anda gunakan untuk mengenkripsi dan mendekripsi kode pengguna Anda.
Untuk menerapkan fungsi ini
-
Instal NodeJS versi terbaru di ruang kerja pengembang Anda.
-
Buat proyek NodeJS baru di ruang kerja Anda.
-
Inisialisasi proyek Anda dengan
npm init -y
. -
Buat skrip untuk fungsi Lambda:.
touch index.mjs
-
Tempelkan isi contoh di bawah ini ke dalam
index.mjs
. -
Unduh ketergantungan proyek, AWS Encryption SDK:
npm install @aws-crypto/client-node
. -
Zip direktori proyek ke dalam file:
zip -r my_deployment_package.zip .
.
import { KmsKeyringNode, buildClient, CommitmentPolicy } from '@aws-crypto/client-node'; // Configure the encryption SDK client with the KMS key from the environment variables const { encrypt, decrypt } = buildClient( CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT ); const generatorKeyId = process.env.KEY_ID; const keyIds = [process.env.KEY_ARN]; const keyring = new KmsKeyringNode({ generatorKeyId, keyIds }); // Example function to simulate sending SMS. // This example logs message details to CloudWatch Logs from your Lambda function. // Update this function with custom logic that sends an SMS message to 'phoneNumber' with body 'message'. const sendSMS = async (phoneNumber, message) => { // Log the destination with the phone number masked. console.log(`Simulating SMS send to ${phoneNumber.replace(/[^+]/g, '*')}`); // Log the message with the code masked. console.log(`Message content: ${message.replace(/\b\d{6,8}\b/g, '********')}`); // Simulate API delay await new Promise(resolve => setTimeout(resolve, 100)); console.log('SMS sent successfully'); return true; }; export const handler = async (event) => { try { // Decrypt the secret code using encryption SDK let plainTextCode; if (event.request.code) { const { plaintext, messageHeader } = await decrypt(keyring, Buffer.from(event.request.code, 'base64')); plainTextCode = Buffer.from(plaintext).toString('utf-8'); } // Handle different trigger sources if (event.triggerSource == 'CustomSMSSender_SignUp') { const phoneNumber = event.request.userAttributes.phone_number; const message = `Welcome! Your verification code is: ${plainTextCode}`; await sendSMS(phoneNumber, message); } else if (event.triggerSource == 'CustomSMSSender_ResendCode') { // Handle resend code } else if (event.triggerSource == 'CustomSMSSender_ForgotPassword') { // Handle forgot password } else if (event.triggerSource == 'CustomSMSSender_UpdateUserAttribute') { // Handle update attribute } else if (event.triggerSource == 'CustomSMSSender_VerifyUserAttribute') { // Handle verify attribute } else if (event.triggerSource == 'CustomSMSSender_AdminCreateUser') { // Handle admin create user } return; } catch (error) { console.error('Error in custom SMS sender:', error); throw error; } };
Mengevaluasi kemampuan pesan SMS dengan fungsi pengirim SMS kustom
Fungsi Lambda pengirim SMS khusus menerima pesan SMS yang akan dikirim oleh kumpulan pengguna Anda, dan fungsi tersebut mengirimkan konten berdasarkan logika kustom Anda. Amazon Cognito mengirimkan Parameter pemicu Lambda pengirim SMS kustom ke fungsi Anda. Fungsi Anda dapat melakukan apa yang Anda inginkan dengan informasi ini. Misalnya, Anda dapat mengirim kode ke topik Amazon Simple Notification Service (Amazon SNS). Pelanggan topik Amazon SNS dapat berupa pesan SMS, titik akhir HTTPS, atau alamat email.
Untuk membuat lingkungan pengujian untuk perpesanan SMS Amazon Cognito dengan fungsi Lambda pengirim SMS khusus, amazon-cognito-user-poollihat development-and-testing-with - sms-redirected-to-email -
Saat Anda menerapkan solusi ini ke kumpulan pengguna, semua pesan yang biasanya dikirim Amazon Cognito melalui pesan SMS, fungsi Lambda malah mengirim ke alamat email pusat. Gunakan solusi ini untuk menyesuaikan dan melihat pratinjau pesan SMS, dan untuk menguji peristiwa kumpulan pengguna yang menyebabkan Amazon Cognito mengirim pesan SMS. Setelah Anda menyelesaikan pengujian, putar kembali CloudFormation tumpukan, atau hapus tugas fungsi pengirim SMS kustom dari kumpulan pengguna Anda.
penting
Jangan gunakan template di amazon-cognito-user-pool- development-and-testing-with - sms-redirected-to-email