

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Aggiornamento del contenuto dei messaggi con AWS Lambda
<a name="update-with-lambda"></a>

Dopo aver configurato una AWS Lambda funzione sincrona per gestire i flussi di posta elettronica, puoi utilizzare l'`PutRawMessageContent`azione nell'API Amazon WorkMail Message Flow per aggiornare il contenuto dei messaggi e-mail in transito. Per ulteriori informazioni su come iniziare a usare le funzioni Lambda per Amazon WorkMail, consulta. [Configurazione delle regole Run **Lambda** sincrone](lambda.md#synchronous-rules) Per ulteriori informazioni sull'API, consulta [ PutRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_PutRawMessageContent.html).

**Nota**  
L' PutRawMessageContent API richiede boto3 1.17.8 oppure puoi aggiungere un layer alla tua funzione Lambda. [Per scaricare la versione boto3 corretta, consulta la pagina di avvio su. GitHub](https://github.com/boto/boto) Per ulteriori informazioni sull'aggiunta di livelli, consulta [Configurare una funzione per utilizzare i](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-using) livelli.   
Ecco un esempio di livello:`"LayerArn":"arn:aws:lambda:${AWS::Region}:489970191081:layer:WorkMailLambdaLayer:2"`. In questo esempio, sostituiscilo `${AWS::Region}` con una regione aws appropriata, come us-east-1.

**Suggerimento**  
Se inizi distribuendo la funzione Amazon WorkMail [Hello World Lambda da](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:489970191081:applications/workmail-hello-world-python) AWS Serverless Application Repository al tuo account, il sistema crea una funzione Lambda nel tuo account con le risorse e le autorizzazioni necessarie. Puoi quindi aggiungere la logica di business alla funzione lambda, in base ai tuoi casi d'uso.

Mentre procedi, ricorda quanto segue:
+ Utilizza l'[ GetRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_GetRawMessageContent.html)API per recuperare il contenuto originale del messaggio. Per ulteriori informazioni, consulta [Recupero del contenuto del messaggio con AWS Lambda](lambda-content.md).
+ Una volta che hai il messaggio originale, modifica il contenuto MIME. Al termine, carica il messaggio in un bucket Amazon Simple Storage Service (Amazon S3) nel tuo account. Assicurati che il bucket S3 utilizzi lo Account AWS stesso delle tue WorkMail operazioni Amazon e che utilizzi la stessa regione AWS delle tue chiamate API.
+ Affinché Amazon WorkMail elabori le richieste, il tuo bucket S3 deve avere la politica corretta per accedere all'oggetto S3. Per ulteriori informazioni, consulta [Example S3 policy](#s3example).
+ Utilizza l'[ PutRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_PutRawMessageContent.html)API per inviare il contenuto aggiornato del messaggio ad Amazon WorkMail.

**Nota**  
L'`PutRawMessageContent`API garantisce che il contenuto MIME del messaggio aggiornato soddisfi gli standard RFC, nonché i criteri indicati nel [RawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_RawMessageContent.html)tipo di dati. Le e-mail in arrivo verso la tua WorkMail organizzazione Amazon non sempre soddisfano questi standard, quindi l'`PutRawMessageContent`API potrebbe rifiutarle. In questi casi, puoi consultare il messaggio di errore restituito per ulteriori informazioni su come risolvere eventuali problemi.

**Example Esempio di politica 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/*"
                }
            }
        }
    ]
}
```

L'esempio seguente mostra come una funzione Lambda utilizzi il runtime Python per aggiornare l'oggetto di un messaggio di posta elettronica in transito.

```
    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)
```

Per altri esempi di modi per analizzare il contenuto dei messaggi in transito, consultate il repository su. [ amazon-workmail-lambda-templates](https://github.com/aws-samples/amazon-workmail-lambda-templates) GitHub