Menyesuaikan alur kerja dengan Amazon Cognito Events - Amazon Cognito

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

Menyesuaikan alur kerja dengan Amazon Cognito Events

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.

Acara Amazon Cognito memungkinkan Anda menjalankan AWS Lambda fungsi sebagai respons terhadap 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 menelepon UpdateRecords dengan kredensi AWS akun (kredensi pengembang), 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. Pada layar Select blueprint, 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 Sinkronisasi Amazon Cognito di luar konsol, Anda harus menambahkan izin berbasis sumber daya Lambda untuk mengizinkan 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 menjalankan fungsi atas nama kumpulan identitas dalam aws:SourceArn kondisi dan akun dalam kondisi tersebut. aws: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 peran yang memberikan izin kode Anda untuk mengakses AWS Lambda. Untuk mengubah peran, lihat IAM konsol. 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 berikut. JSON

{ "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 acara Pemicu Sinkronisasi, perhatikan hal berikut:

  • Saat Amazon Cognito memanggil fungsi Lambda Anda selama UpdateRecords, fungsi tersebut harus merespons dalam 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.

  • Merekam bahwa pembaruan pengguna aplikasi memiliki op bidang yang ditetapkan sebagaireplace. Catatan yang dihapus memiliki op bidang yang ditetapkan sebagairemove.

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

  • Semua bidang kecuali datasetRecords adalah read-only. Jangan ubah mereka. Jika Anda mengubah bidang ini, Anda tidak dapat memperbarui catatan.

  • Untuk memodifikasi nilai catatan, perbarui nilai dan atur op kereplace.

  • Untuk menghapus catatan, atur op keremove, atau atur nilainya ke null.

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

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

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); };