Saya telah mencoba menjalankan fungsi pesan khusus untuk mengirim email melalui SendGrid, itu berhasil tetapi saya tidak punya cara untuk menghentikan AWS mengirim melalui email mereka. Saya telah mencoba menyetel messageAction
ke SUPPRESS tetapi muncul masalah lain. Tidak ada dukungan untuk pendaftaran mandiri karena messageAction
hanya untuk fungsi adminCreateUser. Apakah saya melewatkan sesuatu atau saya tidak melakukannya dengan benar?
Konfigurasikan Cognito untuk mengirim email melalui pihak ketiga seperti SendGrid dengan cara yang benar
Jawaban (4)
Pemicu Lambda Pengirim Kustom caranya menggunakan penyedia layanan notifikasi pihak ke 3.
Dokumen Cognito saat ini kurang (langkah-langkahnya hilang, kode Lambda harus diperbaiki setelah menyalin dari contoh, tidak ada instruksi tentang cara menerapkan dengan CloudFormation, ...).
Ikhtisar langkah-langkah tingkat tinggi:
- Buat kunci KMS simetris.
- Buat fungsi Lambda. Berikan izin kepada Lambda untuk
kms:Decrypt
kuncinya. Berikan ARN kunci sebagai variabel lingkungan. - Buat Kolam Pengguna dan Klien Kolam Pengguna. Untuk kumpulan, konfigurasikan
LambdaConfig
yang menyediakan ARN Lambda dan KMS Key. - Di dalam kode, dekripsi kode notifikasi menggunakan kunci yang diteruskan dalam variabel env.
- Kirim kode notifikasi menggunakan API pihak ketiga (misalnya Twilio Sendgrid).
Perkakas (per Maret 2021):
- Konsol Cognito tidak mendukung pemicu baru
- AWS CLI mendukung pemicu baru
- Dokumen CloudFormation mengatakan pemicu tidak didukung, namun kenyataannya berfungsi
- Terraform belum mendukung pengaturan pemicu baru (ada solusinya)
Saya telah membuat blog tentang proses menyiapkan Pemicu Lambda Email Khusus dengan CloudFormation dan Terraform: Kirim email AWS Cognito dengan ESP pihak ketiga.
Tampaknya kini Cognito mulai mendukung hal tersebut.
Cognito menyediakan dua pemicu Lambda CustomEmailSender
dan CustomSMSSender
untuk mengaktifkan notifikasi email dan SMS pihak ketiga.1
1 Sumber dari dokumen AWS Cognito
Cognito saat ini tidak mendukung pengiriman email menggunakan layanan pihak ketiga. Anda tidak dapat menghentikan pengiriman email untuk berbagai skenario seperti pendaftaran pengguna atau lupa kata sandi dengan cara yang bersih.
Cognito baru-baru ini memulai dukungan untuk mengizinkan pengguna mengirim email melalui pihak ketiga. Anda harus melakukan ini melalui lambda jadi berikut langkah-langkahnya:
Buat lambda yang akan memanggil penyedia email Anda untuk mengirim email/meneruskan data
Berikan izin kinesis ke peran fungsi lambda yang Anda buat
Buat kunci KMS simetris
Tambahkan peran fungsi lambda ke daftar kunci pengguna
Tambahkan KEY_ID dan KEY_ALIAS di lambda lebih disukai sebagai variabel env
Berikan izin pada fungsi lambda untuk memanggil cognito menggunakan cli
izin tambahan aws lambda --nama fungsi YOURLAMBDAARN --statement-id CognitoLambdaInvokeAccess --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com
Siapkan cognito Anda Ini akan mengatur ulang pengaturan cognito jadi lihat apa yang diaktifkan terlebih dahulu
aws cognito-idp update-user-pool --user-pool-id yourpoolid --lambda-config PreSignUp=oranyofyourtriggers,CustomEmailSender={LambdaVersion=V1_0,LambdaArn=yourlambdaarn},KMSKeyID=keyarn Anda
perintah di atas akan mengatur ulang cognito sehingga semua pemicu jika ada yang digunakan sebelumnya harus diatur sekarang di MFA dan verifikasi, di atribut apa untuk memverifikasi pilih email (dan pengaturan sms dan berikan peran jika itu digunakan sebelumnya) dan simpan perubahan tersebut