

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
<a name="update-with-lambda"></a>

Setelah mengonfigurasi AWS Lambda fungsi sinkron untuk mengelola alur email, Anda dapat menggunakan `PutRawMessageContent` tindakan di Amazon WorkMail Message flow 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](lambda.md#synchronous-rules) Untuk informasi selengkapnya tentang API, lihat [ PutRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_PutRawMessageContent.html).

**catatan**  
 PutRawMessageContent API membutuhkan boto3 1.17.8, atau Anda dapat menambahkan lapisan ke fungsi Lambda Anda. Untuk mengunduh versi boto3 yang benar, lihat halaman [boto](https://github.com/boto/boto) di. GitHub Untuk informasi lebih lanjut tentang menambahkan lapisan, lihat [Konfigurasikan fungsi untuk menggunakan lapisan](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-using).   
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](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:489970191081:applications/workmail-hello-world-python) dari AWS Serverless Application Repository 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 [ GetRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_GetRawMessageContent.html)API untuk mengambil konten pesan asli. Untuk informasi lebih lanjut, lihat [Mengambil konten pesan dengan AWS Lambda](lambda-content.md).
+ Setelah Anda memiliki pesan asli, ubah konten MIME. 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 bucket tersebut menggunakan Wilayah AWS yang sama dengan panggilan API 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](#s3example).
+ Gunakan [ PutRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_PutRawMessageContent.html)API untuk mengirim konten pesan yang diperbarui kembali ke Amazon WorkMail.

**catatan**  
`PutRawMessageContent`API memastikan bahwa konten MIME dari pesan yang diperbarui memenuhi standar RFC, serta kriteria yang disebutkan dalam tipe [RawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_RawMessageContent.html)data. 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.

**Example Contoh kebijakan S3**    
****  

```
{
    "Version":"2012-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": "111122223333"
                },
                "Bool": {
                    "aws:SecureTransport": "true"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:workmailmessageflow:us-east-1:111122223333: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-templates](https://github.com/aws-samples/amazon-workmail-lambda-templates)repositori di. GitHub