我有一个lambda函数,用于发送邮件,并在成功发送邮件时返回
MessageID
作为输出,如果失败则返回错误消息。现在我想创建一个架构,在这个返回的电子邮件状态将保存在SNS主题中。将会有另一个Lambda函数作为订阅者,它将被触发SNS主题的电子邮件状态。例如:如果发布者Lambda返回MessageID,那么订阅者Lambda将返回"yes",对于错误消息将返回"no"。是否可以实现?如果不行,我能做到什么最接近?
我到目前为止所做的事情
- 创建了一个SNS主题
- 为该主题创建了一个订阅者Lambda函数。在Lambda中添加以下SNS主题的触发器。
- 在我现有的Lambda中添加了SNS客户端,我希望将其用作发布者。如果发送邮件成功,则此Lambda返回MessageID。
- 向指定的SNS主题发布了一条简单的消息。
import json
def lambda_handler(event, context):
# TODO implement
return {
# 'statusCode': 200,
# 'body': json.dumps('Hello from Lambda!')
message = json.loads(event['Records'][0]['Sns']['Message'])
print("JSON: " + json.dumps(message))
return message
}
发布消息到SNS主题的代码:
sns_client = boto3.client('sns', aws_access_key_id=AWS_ACCESS_KEY, aws_secret_access_key=AWS_SECRET_KEY, region_name=AWS_REGION)
sns_response = sns_client.publish(
TopicArn='my-ARN',
Message='Hello World',
)