Menyesuaikan segmen dengan AWS Lambda - Amazon Pinpoint

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

Menyesuaikan segmen dengan AWS Lambda

Ini adalah dokumentasi prarilis untuk fitur dalam rilis beta publik. Dokumentasi ini dapat mengalami perubahan.

Anda dapat menggunakan AWS Lambda untuk menyesuaikan bagaimana kampanye Amazon Pinpoint melibatkan audiens target Anda. DenganAWS Lambda, Anda dapat mengubah segmen kampanye saat Amazon Pinpoint mengirim pesan kampanye.

AWS Lambda adalah layanan komputasi yang dapat Anda gunakan untuk menjalankan kode tanpa perlu menyediakan atau mengelola server. Anda mengemas kode Anda dan mengunggahnya ke Lambda sebagai fungsi Lambda. Lambda menjalankan fungsi saat fungsi dipanggil, yang mungkin dilakukan secara manual oleh Anda atau secara otomatis sebagai respons terhadap peristiwa. Untuk informasi selengkapnya, lihat Panduan Developer AWS Lambda.

Untuk menetapkan fungsi Lambda ke kampanye, Anda menentukan CampaignHook setelan kampanye dengan menggunakan sumber daya Kampanye di Amazon Pinpoint API. Pengaturan ini termasuk nama fungsi Lambda. Mereka juga menyertakan CampaignHook mode, yang menentukan apakah Amazon Pinpoint menerima nilai kembali dari fungsi tersebut.

Fungsi Lambda yang Anda tetapkan ke kampanye disebut sebagai ekstensi Amazon Pinpoint.

Dengan CampaignHook pengaturan yang ditentukan, Amazon Pinpoint secara otomatis memanggil fungsi Lambda saat menjalankan kampanye, sebelum mengirimkan pesan kampanye. Saat Amazon Pinpoint memanggil fungsi, Amazon Pinpoint menyediakan data peristiwa tentang pengiriman pesan. Data ini mencakup segmen kampanye, yang merupakan daftar titik akhir yang dikirimkan oleh Amazon Pinpoint.

Jika CampaignHook mode diatur keFILTER, Amazon Pinpoint memungkinkan fungsi untuk memodifikasi dan mengembalikan segmen sebelum mengirim pesan. Misalnya, fungsi mungkin memperbarui definisi titik akhir dengan atribut yang berisi data dari sumber yang berada di luar Amazon Pinpoint. Atau, fungsi tersebut mungkin memfilter segmen dengan menghapus titik akhir tertentu, berdasarkan kondisi dalam kode fungsi Anda. Setelah Amazon Pinpoint menerima segmen yang dimodifikasi dari fungsi Anda, Amazon Pinpoint akan mengirimkan pesan ke setiap titik akhir segmen menggunakan saluran pengiriman kampanye.

Dengan memproses segmen AndaAWS Lambda, Anda memiliki kontrol lebih besar atas siapa Anda mengirim pesan dan apa isi pesan tersebut. Anda dapat menyesuaikan kampanye Anda secara real time, pada saat pesan kampanye dikirim. Memfilter segmen memungkinkan Anda untuk melibatkan subset segmen yang didefinisikan secara lebih sempit. Menambahkan atau memperbarui atribut endpoint juga memungkinkan Anda membuat data baru tersedia untuk variabel pesan.

catatan

Anda juga dapat menggunakan CampaignHook pengaturan untuk menetapkan fungsi Lambda yang menangani pengiriman pesan. Jenis fungsi ini berguna untuk mengirimkan pesan melalui saluran khusus yang tidak didukung Amazon Pinpoint, seperti platform media sosial. Untuk informasi selengkapnya, lihat Membuat saluran khusus di Amazon Pinpoint.

Saat menjalankan hook Lambda menggunakan Amazon Pinpoint, fungsi Lambda juga harus berada di wilayah yang sama dengan proyek Amazon Pinpoint.

Untuk mengubah segmen kampanye denganAWS Lambda, pertama-tama buat fungsi yang memproses data peristiwa yang dikirim oleh Amazon Pinpoint dan mengembalikan segmen yang dimodifikasi. Kemudian, otorisasi Amazon Pinpoint untuk menjalankan fungsi dengan menetapkan kebijakan fungsi Lambda. Terakhir, tetapkan fungsi ke satu atau beberapa kampanye dengan menentukan pengaturan. CampaignHook

Data peristiwa

Saat Amazon Pinpoint memanggil fungsi Lambda Anda, fungsi ini menyediakan payload berikut sebagai data peristiwa:

{ "MessageConfiguration": {Message configuration} "ApplicationId": ApplicationId, "CampaignId": CampaignId, "TreatmentId": TreatmentId, "ActivityId": ActivityId, "ScheduledTime": Scheduled Time, "Endpoints": { EndpointId: {Endpoint definition} . . . } }

AWS Lambdameneruskan data acara ke kode fungsi Anda. Data acara menyediakan atribut berikut:

  • MessageConfiguration— Memiliki struktur yang sama dengan DirectMessageConfiguration objek sumber daya Pesan di Amazon Pinpoint API.

  • ApplicationId— ID proyek Amazon Pinpoint yang menjadi milik kampanye tersebut.

  • CampaignId— ID kampanye Amazon Pinpoint tempat fungsi dipanggil.

  • TreatmentId— ID variasi kampanye yang digunakan untuk pengujian A/B.

  • ActivityId— ID dari aktivitas yang sedang dilakukan oleh kampanye.

  • ScheduledTimeTanggal dan waktu, dalam format ISO 8601, saat pesan kampanye akan dikirimkan.

  • Endpoints— Peta yang mengaitkan ID titik akhir dengan definisi titik akhir. Setiap payload data peristiwa berisi hingga 50 titik akhir. Jika segmen kampanye berisi lebih dari 50 titik akhir, Amazon Pinpoint akan memanggil fungsi berulang kali, dengan hingga 50 titik akhir sekaligus, hingga semua titik akhir diproses.

Membuat fungsi Lambda

Untuk mempelajari cara membuat fungsi Lambda, lihat Memulai di Panduan AWS Lambda Pengembang. Saat Anda membuat fungsi, ingatlah bahwa pengiriman pesan gagal dalam kondisi berikut:

  • Fungsi Lambda membutuhkan waktu lebih dari 15 detik untuk mengembalikan segmen yang dimodifikasi.

  • Amazon Pinpoint tidak dapat memecahkan kode nilai pengembalian fungsi.

  • Fungsi ini membutuhkan lebih dari 3 upaya dari Amazon Pinpoint untuk berhasil memanggilnya.

Amazon Pinpoint hanya menerima definisi titik akhir dalam nilai pengembalian fungsi. Fungsi tidak dapat memodifikasi elemen lain dalam data peristiwa.

Contoh fungsi Lambda

Fungsi Lambda Anda memproses data peristiwa yang dikirim oleh Amazon Pinpoint, dan mengembalikan titik akhir yang dimodifikasi, seperti yang ditunjukkan oleh contoh handler berikut, yang ditulis dalam Node.js:

'use strict'; exports.handler = (event, context, callback) => { for (var key in event.Endpoints) { if (event.Endpoints.hasOwnProperty(key)) { var endpoint = event.Endpoints[key]; var attr = endpoint.Attributes; if (!attr) { attr = {}; endpoint.Attributes = attr; } attr["CreditScore"] = [ Math.floor(Math.random() * 200) + 650]; } } console.log("Received event:", JSON.stringify(event, null, 2)); callback(null, event.Endpoints); };

Lambda meneruskan data peristiwa ke handler sebagai parameter. event

Dalam contoh ini, handler iterasi melalui setiap titik akhir dalam event.Endpoints objek, dan menambahkan atribut baru,CreditScore, ke titik akhir. Nilai CreditScore atribut hanyalah angka acak.

console.log()Pernyataan mencatat peristiwa di CloudWatch Log.

callback()Pernyataan tersebut mengembalikan titik akhir yang dimodifikasi ke Amazon Pinpoint. Biasanya, callback parameter opsional dalam fungsi Lambda Node.js, tetapi diperlukan dalam konteks ini karena fungsi harus mengembalikan titik akhir yang diperbarui ke Amazon Pinpoint.

Fungsi Anda harus mengembalikan titik akhir dalam format yang sama yang disediakan oleh data peristiwa, yaitu peta yang mengaitkan ID titik akhir dengan definisi titik akhir, seperti pada contoh berikut:

{ "eqmj8wpxszeqy/b3vch04sn41yw": { "ChannelType": "GCM", "Address": "4d5e6f1a2b3c4d5e6f7g8h9i0j1a2b3c", "EndpointStatus": "ACTIVE", "OptOut": "NONE", "Demographic": { "Make": "android" }, "EffectiveDate": "2017-11-02T21:26:48.598Z", "User": {} }, "idrexqqtn8sbwfex0ouscod0yto": { "ChannelType": "APNS", "Address": "1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f", "EndpointStatus": "ACTIVE", "OptOut": "NONE", "Demographic": { "Make": "apple" }, "EffectiveDate": "2017-11-02T21:26:48.598Z", "User": {} } }

Fungsi contoh memodifikasi dan mengembalikan event.Endpoints objek yang diterima dalam data peristiwa.

Secara opsional, Anda dapat menyertakan BodyOverride atribut TitleOverride dan dalam definisi titik akhir yang Anda kembalikan.

catatan

Saat Anda menggunakan solusi ini untuk mengirim pesan, Amazon Pinpoint menghormati BodyOverride atribut TitleOverride dan hanya untuk titik akhir yang nilai atributnya adalah salah satu dari yang berikut:ADM,,,,,,,,APNS, APNS_SANDBOX APNS_VOIPAPNS_VOIP_SANDBOX, BAIDU atau. ChannelType GCM SMS

Amazon Pinpoint tidak menghormati atribut ini untuk titik akhir di mana nilai atributnya berada. ChannelType EMAIL

Menetapkan kebijakan fungsi Lambda

Sebelum Anda dapat menggunakan fungsi Lambda untuk memproses titik akhir Anda, Anda harus mengotorisasi Amazon Pinpoint untuk menjalankan fungsi Lambda Anda. Untuk memberikan izin pemanggilan, tetapkan kebijakan fungsi Lambda ke fungsi tersebut. Kebijakan fungsi Lambda adalah kebijakan izin berbasis sumber daya yang menetapkan entitas mana yang dapat menggunakan fungsi Anda dan tindakan apa yang dapat dilakukan entitas tersebut.

Untuk informasi selengkapnya, lihat Menggunakan kebijakan berbasis sumber daya AWS Lambda di Panduan Pengembang. AWS Lambda

Contoh kebijakan fungsi

Kebijakan berikut memberikan izin kepada prinsipal layanan Amazon Pinpoint untuk menggunakan tindakan lambda:InvokeFunction tersebut untuk kampanye tertentu (campaign-id):

{ "Sid": "sid", "Effect": "Allow", "Principal": { "Service": "pinpoint.us-east-1.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "{arn:aws:lambda:us-east-1:account-id:function:function-name}", "Condition": { "StringEquals": { "AWS:SourceAccount": "111122223333" }, "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id:apps/application-id/campaigns/campaign-id" } } }

Kebijakan fungsi Anda memerlukan Condition blok yang menyertakan AWS:SourceArn kunci. Kode ini menyatakan kampanye Amazon Pinpoint mana yang diizinkan untuk menjalankan fungsi tersebut. Dalam contoh ini, kebijakan hanya memberikan izin untuk satu kampanye. ConditionBlok juga harus menyertakan AWS:SourceAccount kunci, yang mengontrol AWS akun mana yang dapat menjalankan tindakan.

Untuk menulis kebijakan yang lebih umum, gunakan wildcard pencocokan multikarakter (*). Misalnya, Anda dapat menggunakan Condition blok berikut untuk mengizinkan kampanye apa pun dalam proyek Amazon Pinpoint tertentu (application-id) untuk menjalankan fungsi:

... "Condition": { "StringEquals": { "AWS:SourceAccount": "111122223333" }, "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id:apps/application-id/campaigns/*" } } ...

Jika Anda ingin fungsi Lambda menjadi fungsi default yang digunakan oleh semua kampanye untuk proyek, sebaiknya Anda mengonfigurasi Condition blok untuk kebijakan tersebut dengan cara sebelumnya. Untuk informasi tentang menyetel fungsi Lambda sebagai default untuk semua kampanye dalam proyek, lihat. Menetapkan fungsi Lambda ke kampanye

Memberikan izin pemanggilan Amazon Pinpoint

Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk menambahkan izin ke kebijakan fungsi Lambda yang ditetapkan ke fungsi Lambda Anda. Untuk mengizinkan Amazon Pinpoint memanggil fungsi untuk kampanye tertentu, add-permissiongunakan perintah Lambda, seperti yang ditunjukkan pada contoh berikut:

$ aws lambda add-permission \ > --function-name function-name \ > --statement-id sid \ > --action lambda:InvokeFunction \ > --principal pinpoint.us-east-1.amazonaws.com \ > --source-account 111122223333 > --source-arn arn:aws:mobiletargeting:us-east-1:account-id:apps/application-id/campaigns/campaign-id

Anda dapat mencari ID kampanye Anda dengan menggunakan perintah get-campaign di. AWS CLI Anda juga dapat mencari ID aplikasi Anda dengan menggunakan perintah get-apps.

Ketika Anda menjalankan add-permission perintah Lambda, Lambda mengembalikan output berikut:

{ "Statement": "{\"Sid\":\"sid\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"pinpoint.us-east-1.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:function-name\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:mobiletargeting:us-east-1:111122223333:apps/application-id/campaigns/campaign-id\"}} {\"StringEquals\": {\"AWS:SourceAccount\": \"111122223333\"}}} }

Nilai Statement adalah versi string JSON dari pernyataan yang ditambahkan ke kebijakan fungsi Lambda.

Menetapkan fungsi Lambda ke kampanye

Anda dapat menetapkan fungsi Lambda ke kampanye Amazon Pinpoint individual. Atau, Anda dapat mengatur fungsi Lambda sebagai default yang digunakan oleh semua kampanye untuk proyek, kecuali untuk kampanye yang Anda tetapkan fungsi satu per satu.

Untuk menetapkan fungsi Lambda ke kampanye individual, gunakan Amazon Pinpoint API untuk membuat atau memperbarui objek, dan menentukan Campaignatributnya. CampaignHook Untuk menetapkan fungsi Lambda sebagai default untuk semua kampanye dalam proyek, buat atau perbarui Settingssumber daya untuk proyek tersebut, dan tentukan objeknyaCampaignHook.

Dalam kedua kasus, atur CampaignHook atribut berikut:

  • LambdaFunctionName— Nama atau ARN dari fungsi Lambda yang dipanggil Amazon Pinpoint sebelum mengirim pesan untuk kampanye.

  • Mode – Atur ke FILTER. Dengan mode ini, Amazon Pinpoint memanggil fungsi dan menunggunya mengembalikan titik akhir yang dimodifikasi. Setelah menerimanya, Amazon Pinpoint mengirim pesan. Amazon Pinpoint menunggu hingga 15 detik sebelum gagal pengiriman pesan.

Dengan CampaignHook pengaturan yang ditentukan untuk kampanye, Amazon Pinpoint memanggil fungsi Lambda yang ditentukan sebelum mengirim pesan kampanye. Amazon Pinpoint menunggu untuk menerima titik akhir yang dimodifikasi dari fungsi tersebut. Jika Amazon Pinpoint menerima titik akhir yang diperbarui, maka akan dilanjutkan dengan pengiriman pesan, menggunakan data titik akhir yang diperbarui.