如何使用aws-sns将lambda函数的结果发送到电子邮件



我有一个lambda函数,它生成了一个没有MFA活动的用户列表,在生成该列表后,我想使用SNS通过电子邮件发送输出,但按照目前的方式,它一次发送一个用户,如果我将发布留在函数之外,则只发送一个名称

import json
import boto3
def lambda_handler(event, context):
sns_resource = boto3.resource('sns')
TOPIC_ARN = 'sns_topic_arn'
sns_topic = sns_resource.Topic(TOPIC_ARN)

iam = boto3.resource('iam')
users = iam.users.all()

for user in users:
has_any = any(user.mfa_devices.all())
if not has_any:
print(user.name)

sns_topic.publish(Message=user.name)

因此,您基本上只需要收集循环之外的名称,并将其推送到SNS的消息中。使用联接是一种常见的模式。类似这样的东西:

import json
import boto3
def lambda_handler(event, context):
sns_resource = boto3.resource('sns')
TOPIC_ARN = 'sns_topic_arn'
sns_topic = sns_resource.Topic(TOPIC_ARN)

iam = boto3.resource('iam')
users = iam.users.all()

naughty_list = []
for user in users:
has_any = any(user.mfa_devices.all())
if not has_any:
naughty_list.append(user.name)

sns_topic.publish(Message="Naughty list users: n{}".format("n".join(naughty_list)))

相关内容

  • 没有找到相关文章

最新更新