Как отправить массовый вывод сразу, используя AWS SNS в скрипте Python - PullRequest
0 голосов
/ 25 марта 2019

Я скопировал код из Google, который должен получить возраст ключей доступа от AWS, который работает с lambda, и отправить список пользователей, которые превысили ключи доступа более чем на 90 дней, и сценарий отправит нам письмо через SNS.,Но в сценарии, когда он печатает и отправляет выходные данные, он не отправляет весь список пользователей сразу в одном письме, а отправляет почту каждому пользователю, чей возраст ключа доступа превышен.Примечание: я очень и очень плохо разбираюсь в написании сценариев на Python, я базовый ученик.

Мое требование: когда лямбда-функция запускается, сценарий должен отправить список пользователей через SNS, чьи ключи доступа превышены более чем на 90 дней, в одном письме вместо каждого пользователя.

Этодля устаревания ключа доступа aws, и я попытался реализовать его в, и это работало, но мне нужен правильный вывод

импорт boto3, json, время, дата и время, sys

client = boto3.client ('iam') sns = boto3.client (' sns ')

usernames = []

def lambda_handler (событие, контекст):

users = client.list_users()
for key in users['Users']:
    a = str(key['UserName'])
    usernames.append(a)

for username in usernames:

   try:
        res = client.list_access_keys(UserName=username)
        accesskeydate = res['AccessKeyMetadata'][0]['CreateDate']
        accesskeydate = accesskeydate.strftime("%Y-%m-%d %H:%M:%S")
        currentdate = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())

        accesskeyd = time.mktime(datetime.datetime.strptime(accesskeydate, "%Y-%m-%d %H:%M:%S").timetuple())
        currentd = time.mktime(datetime.datetime.strptime(currentdate, "%Y-%m-%d %H:%M:%S").timetuple())

        active_days = (currentd - accesskeyd) / 60 / 60 / 24  ### We get the data in seconds. converting it to days

        if 90 < active_days:
            a = str(username) + ' has access keys that are ' + str(int(active_days)) + ' days old! '
            print(a)
            a.append(e)


   except:
          e = str(username) + (' does not have an accesskey assigned ')
          f = str('')

   finallist = ''.join(str(a))
   finallist = finallist.replace('"', '').replace("'", '').replace(",", '')
   sns_message = (finallist)
   topic_arn = '      '  # replace with your ARN

   response = sns.publish(TopicArn=topic_arn, Message=sns_message)

Я ожидаю вывод водно письмо вместо того, чтобы отправлять каждого пользователя в нескольких письмах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...