Peristiwa Amazon Cognito - Amazon Cognito

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

Peristiwa Amazon Cognito

Jika Anda baru mengenal Amazon Cognito Sync, gunakan AWS AppSync. Seperti Amazon Cognito Sync, AWS AppSync adalah layanan untuk menyinkronkan data aplikasi di seluruh perangkat.

Hal ini memungkinkan data pengguna seperti preferensi aplikasi atau game state agar dapat disinkronkan. Hal ini juga memperluas kemampuan ini dengan memungkinkan beberapa pengguna untuk menyinkronkan dan berkolaborasi secara langsung pada data bersama.

Peristiwa Amazon Cognito memungkinkan Anda untuk mengeksekusi fungsi AWS Lambda dalam menanggapi peristiwa penting di Amazon Cognito. Amazon Cognito memunculkan peristiwa Sync Trigger ketika set data disinkronkan. Anda dapat menggunakan peristiwa Sync Trigger untuk mengambil tindakan ketika pengguna memperbarui data. Fungsi ini dapat mengevaluasi dan secara opsional memanipulasi data sebelum disimpan di cloud dan disinkronkan ke perangkat lain pengguna. Hal ini berguna untuk memvalidasi data yang berasal dari perangkat sebelum disinkronkan ke perangkat pengguna lain, atau untuk memperbarui nilai lain dalam set data berdasarkan data yang masuk seperti mengeluarkan penghargaan saat pemain mencapai tingkat yang baru.

Langkah-langkah di bawah ini akan memandu Anda melalui penyiapan fungsi Lambda yang mengeksekusi setiap kali Amazon Cognito Dataset disinkronkan.

catatan

Bila menggunakan peristiwa Amazon Cognito, Anda hanya dapat menggunakan kredensial yang diperoleh dari Amazon Cognito Identity. Jika Anda memiliki fungsi Lambda terkait, tetapi Anda memanggil UpdateRecords dengan kredensial akun AWS (kredensial developer), fungsi Lambda Anda tidak akan dipanggil.

Membuat fungsi di AWS Lambda

Untuk mengintegrasikan Lambda dengan Amazon Cognito, Anda harus terlebih dahulu membuat fungsi di Lambda. Untuk melakukannya:

Memilih Fungsi Lambda di Amazon Cognito
  1. Buka konsol Lambda.

  2. Klik Buat Fungsi Lambda.

  3. Di layar Pilih cetak biru, cari dan pilih "cognito-sync-trigger.”

  4. Pada layar Konfigurasi sumber acara, biarkan Jenis sumber peristiwa disetel ke "Cognito Sync Trigger" dan pilih kolam identitas Anda. Klik Berikutnya.

    catatan

    Saat mengonfigurasi pemicu Amazon Cognito Sync di luar konsol, Anda harus menambahkan izin berbasis sumber daya Lambda untuk memungkinkan Amazon Cognito menjalankan fungsi tersebut. Anda dapat menambahkan izin ini dari konsol Lambda (lihat Menggunakan kebijakan berbasis sumber daya untuk AWS Lambda) atau dengan menggunakan operasi Lambda. AddPermission

    Contoh Kebijakan Berbasis Sumber Daya Lambda

    Kebijakan AWS Lambda berbasis sumber daya berikut memberi Amazon Cognito kemampuan terbatas untuk menjalankan fungsi Lambda. Amazon Cognito hanya dapat memanggil fungsi atas nama kumpulan identitas dalam aws:SourceArn kondisi dan akun dalam kondisi tersebutaws:SourceAccount.

    { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "lambda-allow-cognito-my-function", "Effect": "Allow", "Principal": { "Service": "cognito-sync.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "<your Lambda function ARN>", "Condition": { "StringEquals": { "AWS:SourceAccount": "<your account number>" }, "ArnLike": { "AWS:SourceArn": "<your identity pool ARN>" } } } ] }
  5. Di layar fungsi Konfigurasi, masukkan nama dan deskripsi untuk fungsi Anda. Biarkan Waktu Aktif disetel ke "Node.js." Biarkan kode tidak berubah untuk contoh kita. Contoh default tidak membuat perubahan pada data yang disinkronkan. Ini hanya mencatat fakta bahwa peristiwa Amazon Cognito Sync Trigger terjadi. Biarkan nama Handler disetel ke "index.handler." Untuk Peran, pilih IAM role yang memberikan izin kode kepada Anda untuk mengakses AWS Lambda. Untuk mengubah peran, lihat konsol IAM. Biarkan pengaturan Lanjutan tidak berubah. Klik Berikutnya.

  6. Pada layar Ulasan, tinjau perincian dan klik Buat fungsi. Halaman berikutnya menampilkan fungsi Lambda baru Anda.

Setelah Anda memiliki fungsi yang sesuai yang ditulis dalam Lambda, Anda harus memilih fungsi itu sebagai handler untuk acara Amazon Cognito Sync Trigger. Langkah-langkah di bawah ini memandu Anda melalui proses ini.

Dari halaman beranda konsol:

  1. Klik nama kolam identitas berisi Amazon Cognito Events yang ingin Anda atur. Halaman Dasbor untuk kolam identitas Anda akan muncul.

  2. Di pojok kanan atas halaman Dasbor, klik Kelola Identitas Gabungan. Halaman Kelola Gabungan identitas muncul.

  3. Gulir ke bawah dan klik Cognito Events untuk memperluasnya.

  4. Di menu pilihan menurun Sync Trigger, pilih fungsi Lambda yang ingin Anda picu saat peristiwa Sinkronisasi terjadi.

  5. Klik Simpan perubahan.

Sekarang, fungsi Lambda Anda akan dieksekusi setiap kali set data disinkronkan. Bagian selanjutnya menjelaskan bagaimana Anda dapat membaca dan memodifikasi data dalam fungsi Anda karena sedang disinkronkan.

Menulis fungsi Lambda untuk pemicu sinkronisasi

Pemicu sinkronisasi mengikuti pola pemrograman yang digunakan antarmuka penyedia layanan. Amazon Cognito memberikan masukan ke fungsi Lambda Anda dalam format JSON berikut.

{ "version": 2, "eventType": "SyncTrigger", "region": "us-east-1", "identityPoolId": "identityPoolId", "identityId": "identityId", "datasetName": "datasetName", "datasetRecords": { "SampleKey1": { "oldValue": "oldValue1", "newValue": "newValue1", "op": "replace" }, "SampleKey2": { "oldValue": "oldValue2", "newValue": "newValue2", "op": "replace" },.. } }

Amazon Cognito mengharapkan nilai pengembalian fungsi memiliki format yang sama dengan input.

Saat Anda menulis fungsi untuk peristiwa Pemicu Sinkronisasi, amati hal berikut:

  • Saat Amazon Cognito memanggil fungsi Lambda Anda selama waktuUpdateRecords, fungsi harus merespons dalam waktu 5 detik. Jika tidak, layanan Amazon Cognito Sync menghasilkan pengecualian. LambdaSocketTimeoutException Anda tidak dapat meningkatkan nilai batas waktu ini.

  • Jika Anda mendapatkan LambdaThrottledException pengecualian, coba operasi sinkronisasi lagi untuk memperbarui catatan.

  • Amazon Cognito menyediakan semua catatan yang ada dalam kumpulan data sebagai input ke fungsi.

  • Rekaman bahwa pengguna aplikasi diperbarui memiliki op bidang yang ditetapkan sebagaireplace. Catatan dihapus memiliki op bidang ditetapkan sebagairemove.

  • Anda dapat memodifikasi rekaman apa pun, meskipun pengguna aplikasi tidak memperbarui rekaman.

  • Semua bidang kecuali DatasetRecords adalah read-only. Jangan mengubahnya. Jika Anda mengubah bidang ini, Anda tidak dapat memperbarui catatan.

  • Untuk memodifikasi nilai catatan, memperbarui nilai dan mengatur op kereplace.

  • Untuk menghapus catatan, baik mengatur op keremove, atau menetapkan nilai ke null.

  • Untuk menambahkan catatan, tambahkan catatan baru ke array DatasetRecords.

  • Amazon Cognito mengabaikan catatan yang dihilangkan dalam respons saat Amazon Cognitoupdates catatan.

Contoh fungsi Lambda

Contoh fungsi Lambda berikut menunjukkan cara mengakses, memodifikasi, dan menghapus data.

console.log('Loading function'); exports.handler = function(event, context) { console.log(JSON.stringify(event, null, 2)); //Check for the event type if (event.eventType === 'SyncTrigger') { //Modify value for a key if('SampleKey1' in event.datasetRecords){ event.datasetRecords.SampleKey1.newValue = 'ModifyValue1'; event.datasetRecords.SampleKey1.op = 'replace'; } //Remove a key if('SampleKey2' in event.datasetRecords){ event.datasetRecords.SampleKey2.op = 'remove'; } //Add a key if(!('SampleKey3' in event.datasetRecords)){ event.datasetRecords.SampleKey3={'newValue':'ModifyValue3', 'op' : 'replace'}; } } context.done(null, event); };