View a markdown version of this page

Atualização do conteúdo de mensagens com o AWS Lambda - Amazon WorkMail

Aviso de fim do suporte: em 31 de março de 2027, AWS encerrará o suporte para a Amazon WorkMail. Depois de 31 de março de 2027, você não poderá mais acessar o WorkMail console da Amazon ou os WorkMail recursos da Amazon. Para obter mais informações, consulte WorkMail Fim do suporte da Amazon.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Atualização do conteúdo de mensagens com o AWS Lambda

Depois de configurar uma AWS Lambda função síncrona para gerenciar fluxos de e-mail, você pode usar a PutRawMessageContent ação na API de fluxo de WorkMail mensagens da Amazon para atualizar o conteúdo das mensagens de e-mail em trânsito. Para obter mais informações sobre como começar a usar as funções Lambda para a Amazon WorkMail, consulte. Configurar regras síncronas de Executar o Lambda Para obter mais informações sobre a API, consulte PutRawMessageContent.

nota

A PutRawMessageContent API requer o boto3 1.17.8, ou você pode adicionar uma camada à sua função Lambda. Para baixar a versão correta do boto3, consulte a página de inicialização em. GitHub Para obter mais informações sobre como adicionar camadas, consulte Configurar uma função para usar camadas.

Confira a seguir um exemplo de camada: "LayerArn":"arn:aws:lambda:${AWS::Region}:489970191081:layer:WorkMailLambdaLayer:2". Neste exemplo, substitua ${AWS::Region} por uma região da AWS apropriada, como us-east-1.

dica

Se você começar implantando a função Amazon WorkMail Hello World Lambda do AWS Serverless Application Repository em sua conta, o sistema criará uma função Lambda em sua conta com os recursos e permissões necessários. Você pode, então, adicionar sua lógica de negócios à função do Lambda com base no seu caso de uso.

À medida que avança, lembre-se do seguinte:

  • Use a GetRawMessageContentAPI para recuperar o conteúdo original da mensagem. Para obter mais informações, consulte Recuperando o conteúdo da mensagem com AWS Lambda.

  • Depois de ter a mensagem original, altere o conteúdo MIME. Ao terminar, atualize a mensagem para um bucket do Amazon Simple Storage Service (Amazon S3) na sua conta. Certifique-se de que o bucket do S3 use o mesmo que suas Conta da AWS WorkMail operações da Amazon e que use a mesma região da AWS que suas chamadas de API.

  • Para WorkMail que a Amazon processe solicitações, seu bucket do S3 deve ter a política correta para acessar o objeto do S3. Para obter mais informações, consulte Example S3 policy.

  • Use a PutRawMessageContentAPI para enviar o conteúdo atualizado da mensagem de volta para a Amazon WorkMail.

nota

A PutRawMessageContent API garante que o conteúdo MIME da mensagem atualizada atenda aos padrões RFC, bem como aos critérios mencionados no tipo de RawMessageContentdados. Os e-mails enviados para sua WorkMail organização Amazon nem sempre atendem a esses padrões, então a PutRawMessageContent API pode rejeitá-los. Nesses casos, você pode consultar a mensagem de erro retornada para obter mais informações sobre como corrigir qualquer problema.

exemplo Exemplo de política do S3
JSON
{ "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/*" } } } ] }

O exemplo a seguir mostra como uma função do Lambda usa o runtime do Python para atualizar o assunto de uma mensagem de e-mail em trânsito.

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)

Para obter mais exemplos de maneiras de analisar o conteúdo de mensagens em trânsito, consulte o amazon-workmail-lambda-templatesrepositório em. GitHub