Memperbarui konten pesan dengan AWS Lambda - Amazon WorkMail

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

Memperbarui konten pesan dengan AWS Lambda

Setelah mengonfigurasi AWS Lambda fungsi sinkron untuk mengelola alur email, Anda dapat menggunakan PutRawMessageContent tindakan di alur WorkMail Pesan Amazon API untuk memperbarui konten pesan email dalam perjalanan. Untuk informasi selengkapnya tentang memulai fungsi Lambda untuk Amazon WorkMail, lihat. Mengkonfigurasi aturan Jalankan Lambda yang sinkron Untuk informasi lebih lanjut tentangAPI, lihat PutRawMessageContent.

catatan

PutRawMessageContent APIMemerlukan boto3 1.17.8, atau Anda dapat menambahkan lapisan ke fungsi Lambda Anda. Untuk mengunduh versi boto3 yang benar, lihat halaman boto di. GitHub Untuk informasi lebih lanjut tentang menambahkan lapisan, lihat Konfigurasikan fungsi untuk menggunakan lapisan.

Berikut ini adalah contoh lapisan: "LayerArn":"arn:aws:lambda:${AWS::Region}:489970191081:layer:WorkMailLambdaLayer:2". Dalam contoh ini, gantikan ${AWS::Region} dengan wilayah aws yang sesuai, seperti us-east-1.

Tip

Jika Anda memulai dengan menerapkan fungsi Amazon WorkMail Hello World Lambda dari AWS Repositori Aplikasi Tanpa Server ke akun Anda, sistem akan membuat fungsi Lambda di akun Anda dengan sumber daya dan izin yang diperlukan. Anda kemudian dapat menambahkan logika bisnis ke fungsi lambda berdasarkan kasus penggunaan Anda.

Saat Anda pergi, ingat hal berikut:

  • Gunakan GetRawMessageContentAPIuntuk mengambil konten pesan asli. Untuk informasi selengkapnya, lihat Mengambil konten pesan dengan AWS Lambda.

  • Setelah Anda memiliki pesan asli, ubah MIME konten. Setelah selesai, unggah pesan ke bucket Amazon Simple Storage Service (Amazon S3) di akun Anda. Pastikan bucket S3 menggunakan hal yang Akun AWS sama dengan WorkMail operasi Amazon Anda, dan menggunakan AWS Wilayah yang sama dengan API panggilan Anda.

  • WorkMail Agar Amazon dapat memproses permintaan, bucket S3 Anda harus memiliki kebijakan yang benar untuk mengakses objek S3. Untuk informasi selengkapnya, lihat Example S3 policy.

  • Gunakan PutRawMessageContentAPIuntuk mengirim konten pesan yang diperbarui kembali ke Amazon WorkMail.

catatan

PutRawMessageContentAPIMemastikan bahwa MIME isi pesan yang diperbarui memenuhi RFC standar, serta kriteria yang disebutkan dalam tipe RawMessageContentdata. Email yang masuk ke WorkMail organisasi Amazon Anda tidak selalu memenuhi standar tersebut, sehingga PutRawMessageContent API dapat menolaknya. Dalam kasus tersebut, Anda dapat berkonsultasi tentang pesan kesalahan yang dikembalikan untuk mendapatkan informasi selengkapnya tentang cara memperbaiki masalah.

contoh Contoh kebijakan S3
{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "workmail.REGION.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::My-Test-S3-Bucket/*", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS_ACCOUNT_ID" }, "Bool": { "aws:SecureTransport": "true" }, "ArnLike": { "aws:SourceArn": "arn:aws:workmailmessageflow:REGION:AWS_ACCOUNT_ID:message/WORKMAIL_ORGANIZATION_ID/*" } } } ] }

Contoh berikut menunjukkan bagaimana fungsi Lambda menggunakan waktu aktif Python untuk memperbarui subjek pesan email di transit.

import boto3 import os import uuid import email def email_handler(event, context): workmail = boto3.client('workmailmessageflow', region_name=os.environ["AWS_REGION"]) s3 = boto3.client('s3', region_name=os.environ["AWS_REGION"]) msg_id = event['messageId'] raw_msg = workmail.get_raw_message_content(messageId=msg_id) parsed_msg = email.message_from_bytes(raw_msg['messageContent'].read()) # Updating subject. For more examples, see https://github.com/aws-samples/amazon-workmail-lambda-templates. parsed_msg.replace_header('Subject', "New Subject Updated From Lambda") # Store updated email in S3 key = str(uuid.uuid4()); s3.put_object(Body=parsed_msg.as_bytes(), Bucket="amzn-s3-demo-bucket", Key=key) # Update the email in WorkMail s3_reference = { 'bucket': "amzn-s3-demo-bucket", 'key': key } content = { 's3Reference': s3_reference } workmail.put_raw_message_content(messageId=msg_id, content=content)

Untuk lebih banyak contoh cara menganalisis konten pesan dalam transit, lihat amazon-workmail-lambda-templatesrepositori di. GitHub