Nachrichteninhalte mit AWS Lambda aktualisieren - Amazon WorkMail

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Nachrichteninhalte mit AWS Lambda aktualisieren

Nachdem Sie eine synchrone AWS Lambda Funktion zur Verwaltung von E-Mail-Datenströmen konfiguriert haben, können Sie die PutRawMessageContent Aktion im Amazon WorkMail Message Flow verwenden, API um den Inhalt von E-Mail-Nachrichten während der Übertragung zu aktualisieren. Weitere Informationen zu den ersten Schritten mit Lambda-Funktionen für Amazon finden Sie WorkMail unterKonfiguration synchroner Run-Lambda-Regeln. Weitere Informationen zu den finden Sie API unter PutRawMessageContent.

Anmerkung

Das PutRawMessageContent API erfordert boto3 1.17.8, oder Sie können Ihrer Lambda-Funktion eine Ebene hinzufügen. Um die richtige Boto3-Version herunterzuladen, besuchen Sie die Boto-Seite unter. GitHub Weitere Informationen zum Hinzufügen von Ebenen finden Sie unter Eine Funktion für die Verwendung von Ebenen konfigurieren.

Hier ist ein Beispiel für eine Ebene:"LayerArn":"arn:aws:lambda:${AWS::Region}:489970191081:layer:WorkMailLambdaLayer:2". Ersetzen Sie in diesem Beispiel ${AWS::Region} durch eine entsprechende AWS-Region, z. B. us-east-1.

Tipp

Wenn Sie zunächst die Amazon WorkMail Hello World Lambda-Funktion aus dem AWS Serverless Application Repository für Ihr Konto bereitstellen, erstellt das System in Ihrem Konto eine Lambda-Funktion mit den erforderlichen Ressourcen und Berechtigungen. Anschließend können Sie der Lambda-Funktion Geschäftslogik hinzufügen, die auf Ihren Anwendungsfällen basiert.

Denken Sie dabei an Folgendes:

  • Verwenden Sie den GetRawMessageContentAPI, um den ursprünglichen Nachrichteninhalt abzurufen. Weitere Informationen finden Sie unter Nachrichteninhalt wird abgerufen mit AWS Lambda.

  • Sobald Sie die ursprüngliche Nachricht haben, ändern Sie den MIME Inhalt. Wenn Sie fertig sind, laden Sie die Nachricht in einen Amazon Simple Storage Service (Amazon S3) -Bucket in Ihrem Konto hoch. Stellen Sie sicher, dass der S3-Bucket dasselbe verwendet AWS-Konto wie Ihr WorkMail Amazon-Betrieb und dass er dieselbe AWS Region wie Ihre API Anrufe verwendet.

  • Damit Amazon WorkMail Anfragen bearbeiten kann, muss Ihr S3-Bucket über die richtige Richtlinie verfügen, um auf das S3-Objekt zugreifen zu können. Weitere Informationen finden Sie unter Example S3 policy.

  • Verwenden Sie die PutRawMessageContentAPI, um den aktualisierten Nachrichteninhalt zurück an Amazon zu senden WorkMail.

Anmerkung

PutRawMessageContentAPIDadurch wird sichergestellt, dass der MIME Inhalt der aktualisierten Nachricht den RFC Standards sowie den im RawMessageContentDatentyp genannten Kriterien entspricht. E-Mails, die an Ihre WorkMail Amazon-Organisation eingehen, erfüllen diese Standards nicht immer, sodass sie PutRawMessageContent API möglicherweise abgelehnt werden. In solchen Fällen finden Sie in der zurückgesendeten Fehlermeldung weitere Informationen zur Behebung von Problemen.

Beispiel für eine S3-Richtlinie
{ "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/*" } } } ] }

Das folgende Beispiel zeigt, wie eine Lambda-Funktion die Python-Laufzeit verwendet, um den Betreff einer E-Mail-Nachricht während der Übertragung zu aktualisieren.

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)

Weitere Beispiele für Methoden zur Analyse des Inhalts von Nachrichten während der Übertragung finden Sie im amazon-workmail-lambda-templatesRepository unter. GitHub