Membangun fungsi Lambda Penyedia Ketersediaan Kustom - Amazon WorkMail

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

Membangun fungsi Lambda Penyedia Ketersediaan Kustom

Penyedia Ketersediaan Kustom (CAPs) dikonfigurasi dengan protokol permintaan dan respons berbasis JSON yang ditulis dalam skema JSON yang terdefinisi dengan baik. Fungsi Lambda akan mengurai permintaan dan memberikan respons yang valid.

Elemen permintaan dan respons

Elemen permintaan

Berikut ini adalah contoh permintaan yang digunakan untuk mengonfigurasi CAP untuk WorkMail pengguna Amazon:

{ "requester": { "email": "user1@internal.example.com", "userName": "user1", "organization": "m-0123456789abcdef0123456789abcdef", "userId": "S-1-5-18", "origin": "127.0.0.1" }, "mailboxes": [ "user2@external.example.com", "unknown@internal.example.com" ], "window": { "startDate": "2021-05-04T00:00:00.000Z", "endDate": "2021-05-06T00:00:00.000Z" } }

Permintaan terdiri dari tiga bagian: pemohon, kotak surat, dan jendela. Ini dijelaskan dalam berikutPeminta,Kotak surat, dan Jendela bagian dari panduan ini.

Peminta

Bagian pemohon memberikan informasi tentang pengguna yang membuat permintaan asli ke Amazon WorkMail. CAPs gunakan informasi ini untuk mengubah perilaku penyedia. Misalnya, data ini dapat digunakan untuk meniru pengguna yang sama di penyedia ketersediaan backend atau detail tertentu dapat dihilangkan dari respons.

Bidang Deskripsi Wajib

Email

Alamat email utama pemohon.

Ya

Username

Nama pengguna pemohon.

Ya

Organization

ID organisasi pemohon.

Ya

UserID

ID pemohon.

Ya

Origin

Alamat jarak jauh dari permintaan.

Tidak

Bearer

Terpesan untuk digunakan di masa mendatang.

Tidak

Kotak surat

Bagian kotak pesan berisi daftar alamat email pengguna yang dipisahkan koma yang meminta informasi ketersediaannya.

Jendela

Bagian jendela berisi jendela waktu yang diminta informasi ketersediaan. Keduanya startDate dan endDate ditentukan dalam UTC dan diformat sesuai dengan RFC 3339. Acara tidak diharapkan terpotong. Dengan kata lain, jika suatu peristiwa dimulai sebelum yang ditentukanStartDate, awal asli akan digunakan.

Elemen jawaban

Amazon WorkMail akan menunggu selama 25 detik untuk mendapatkan respons dari fungsi CAP Lambda. Setelah 25 detik, Amazon WorkMail akan menganggap fungsi tersebut gagal dan menghasilkan kegagalan untuk kotak pesan terkait dalam respons EWS GetUserAvailability. Ini tidak akan menyebabkan seluruh GetUserAvailability operasi gagal.

Berikut ini adalah contoh respons dari konfigurasi yang ditentukan di awal bagian ini:

{ "mailboxes": [{ "mailbox": "user2@external.example.com", "events": [{ "startTime": "2021-05-03T23:00:00.000Z", "endTime": "2021-05-04T03:00:00.000Z", "busyType": "BUSY"|"FREE"|"TENTATIVE", "details": { // optional "subject": "Late meeting", "location": "Chime", "instanceType": "SINGLE_INSTANCE"|"RECURRING_INSTANCE"|"EXCEPTION", "isMeeting": true, "isReminderSet": true, "isPrivate": false } }], "workingHours": { "timezone": { "name": "W. Europe Standard Time" "bias": 60, "standardTime": { // optional (not needed for fixed offsets) "offset": 60, "time": "02:00:00", "month": "JAN"|"FEB"|"MAR"|"APR"|"JUN"|"JUL"|"AUG"|"SEP"|"OCT"|"NOV"|"DEC", "week": "FIRST"|"SECOND"|"THIRD"|"FOURTH"|"LAST", "dayOfWeek": "SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT" }, "daylightTime": { // optional (not needed for fixed offsets) "offset": 0, "time": "03:00:00", "month": "JAN"|"FEB"|"MAR"|"APR"|"JUN"|"JUL"|"AUG"|"SEP"|"OCT"|"NOV"|"DEC", "week": "FIRST"|"SECOND"|"THIRD"|"FOURTH"|"LAST", "dayOfWeek": "SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT" }, }, "workingPeriods":[{ "startMinutes": 480, "endMinutes": 1040, "days": ["SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT"] }] } },{ "mailbox": "unknown@internal.example.com", "error": "MailboxNotFound" }] }

Respons terdiri dari satu bagian kotak pesan yang terdiri dari daftar kotak pesan. Setiap kotak pesan yang ketersediaannya berhasil diperoleh terdiri dari tiga bagian: kotak surat, acara, dan jam kerja. Jika penyedia ketersediaan gagal mendapatkan informasi ketersediaan untuk kotak pesan, bagian ini terdiri dari dua bagian: kotak pesan dan kesalahan. Ini dijelaskan dalam bagian berikutKotak surat,, PeristiwaJam Kerja,Zona waktu,Periode Kerja, dan Kesalahan bagian dari panduan ini.

Kotak surat

Bagian kotak pesan adalah alamat email pengguna yang ditemukan di bagian kotak pesan permintaan.

Peristiwa

Bagian peristiwa adalah daftar peristiwa yang terjadi di jendela yang diminta. Setiap peristiwa didefinisikan dengan parameter berikut:

Bidang Deskripsi Wajib

startTime

Waktu mulai acara di UTC dan diformat sesuai dengan RFC 3339.

Ya

endTime

Waktu akhir acara di UTC dan diformat sesuai dengan RFC 3339.

Ya

busyType

Jenis acara yang sibuk. Dapat berupa Busy, Free, atau Tentative.

Ya

details

Detail acara.

Tidak

details.subject

Subjek acara.

Ya

details.location

Lokasi acara.

Ya

details.instanceType

Jenis instance dari acara tersebut. Dapat berupa Single_Instance, Recurring_Instance, atau Exception.

Ya

details.isMeeting

Sebuah Boolean untuk menunjukkan apakah acara memiliki peserta.

Ya

details.isReminderSet

Sebuah Boolean untuk menunjukkan jika acara memiliki set pengingat.

Ya

details.isPrivate

Sebuah Boolean untuk menunjukkan jika acara diatur ke pribadi.

Ya

Jam Kerja

Bagian WorkingHours berisi informasi tentang jam kerja pemilik kotak pesan. Ini berisi dua bagian: zona waktu dan WorkingPeriod.

Zona waktu

Subbagian zona waktu menjelaskan zona waktu pemilik kotak pesan. Penting untuk merender jam kerja pengguna dengan benar saat pemohon bekerja di zona waktu yang berbeda. Penyedia ketersediaan diharuskan untuk menjelaskan zona waktu secara eksplisit, daripada menggunakan nama. Menggunakan deskripsi zona waktu standar membantu menghindari ketidakcocokan zona waktu.

Bidang Deskripsi Wajib

name

Nama zona waktu.

Ya

bias

Offset default dari GMT dalam hitungan menit.

Ya

standardTime

Awal waktu standar untuk zona waktu yang ditentukan.

Tidak

daylightTime

Awal waktu penghematan siang hari untuk zona waktu yang ditentukan.

Tidak

Anda harus mendefinisikan keduanya standardTime dandaylightTime, atau menghilangkan keduanya. Bidang dalam standardTime dan daylightTime objek adalah:

Bidang Deskripsi Nilai yang Diizinkan

offset

Offset relatif terhadap offset default dalam hitungan menit.

TA

time

Waktu di mana transisi antara waktu standar dan waktu musim panas terjadi, ditentukan sebagaihh:mm:ss.

TA

month

Bulan di mana transisi antara waktu standar dan waktu musim panas terjadi.

JAN,FEB, MAR, APR, JUN, JUL, AUG, SEP, OCT, NOV, DEC

week

Minggu dalam bulan yang ditentukan bahwa transisi antara waktu standar dan waktu musim panas terjadi.

FIRST, SECOND, THIRD, FOURTH, LAST

dayOfWeek

Hari dalam minggu yang ditentukan bahwa transisi antara waktu standar dan waktu musim panas terjadi.

SUN, MON, TUE, WED, THU, FRI, SAT

Periode Kerja

Bagian WorkingPeriod berisi satu atau lebih objek periode kerja. Setiap periode menentukan awal dan akhir hari kerja selama satu hari atau lebih.

Bidang Deskripsi Nilai yang Diizinkan

startMinutes

Awal hari kerja dalam hitungan menit dari tengah malam.

TA

endMinutes

Akhir hari kerja dalam hitungan menit dari tengah malam.

TA

days

Hari-hari di mana periode ini berlaku.

SUN, MON, TUE, WED, THU, FRI, SAT

Kesalahan

Bidang kesalahan dapat berisi pesan kesalahan arbitrer. Tabel berikut mencantumkan pemetaan kode terkenal untuk kode kesalahan EWS. Semua pesan lainnya akan dipetakan keERROR_FREE_BUSY_GENERATION_FAILED.

Nilai Kode kesalahan EWS

MailboxNotFound

ERROR_MAIL_RECIPIENT_NOT_FOUND

ErrorAvailabilityConfigNotFound

ERROR_AVAILABILITY_CONFIG_NOT_FOUND

ErrorServerBusy

ERROR_SERVER_BUSY

ErrorTimeoutExpired

ERROR_TIMEOUT_EXPIRED

ErrorFreeBusyGenerationFailed

ERROR_FREE_BUSY_GENERATION_FAILED

ErrorResponseSchemaValidation

ERROR_RESPONSE_SCHEMA_VALIDATION

Memberi Akses

Jalankan perintah Lambda berikut dari AWS Command Line Interface ()AWS CLI. Perintah ini menambahkan kebijakan sumber daya ke fungsi Lambda yang mem-parsing CAP. Fungsi ini memungkinkan layanan WorkMail ketersediaan Amazon untuk menjalankan fungsi Lambda Anda.

aws lambda add-permission \ --region LAMBDA_REGION \ --function-name CAP_FUNCTION_NAME \ --statement-id AllowWorkMail \ --action "lambda:InvokeFunction" \ --principal availability.workmail.WM_REGION.amazonaws.com \ --source-account WM_ACCOUNT_ID \ --source-arn arn:aws:workmail:WM_REGION:WM_ACCOUNT_ID:organization/ORGANIZATION_ID

Dalam perintah, tambahkan parameter berikut di mana ditunjukkan:

  • LAMBDA_REGION— Nama wilayah tempat CAP Lambda dikerahkan. Misalnya, us-east-1.

  • CAP_FUNCTION_NAME— Nama fungsi CAP Lambda.

    catatan

    Ini bisa berupa nama, alias, atau ARN sebagian atau penuh dari fungsi CAP Lambda.

  • WM_REGION— Nama wilayah tempat WorkMail organisasi Amazon memanggil fungsi Lambda.

    catatan

    Hanya Wilayah berikut yang tersedia untuk digunakan dengan CAP:

    • AS Timur (Virginia Utara)

    • US West (Oregon)

    • Eropa (Irlandia)

  • WM_ACCOUNT_ID— ID akun Organisasi.

  • ORGANIZATION_ID— ID Organisasi yang memanggil CAP Lambda. Misalnya, ID Org: m-934ebb9eb57145d0a6cab566ca81a21f.

catatan

LAMBDA_REGIONdan WM_REGION akan berbeda hanya jika panggilan lintas wilayah diperlukan. Jika panggilan lintas wilayah tidak diperlukan, mereka akan sama.

Contoh Amazon WorkMail menggunakan fungsi CAP Lambda

Untuk contoh Amazon yang WorkMail menggunakan fungsi CAP Lambda untuk menanyakan titik akhir EWS, lihat AWS contoh aplikasi ini di aplikasi Tanpa Server untuk repositori Amazon. WorkMail GitHub