Python Лямбда - проблемы печати со списком, требуется разрыв строки - PullRequest
0 голосов
/ 17 марта 2020

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

Lambda возвращает:

['Hannah', 1103, 'Nick', 126]

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

['Hannah', 1103
'Nick', 126]
import boto3, json, time, datetime, sys

client = boto3.client('iam')
sns = boto3.client('sns')
usernames = []
mylist = []

def lambda_handler(event, context):
    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)
                c = int(int(round(active_days)))

                mylist.append(a)
                mylist.append(c)
        except:
                f = str('')

    print(mylist)
    finallist = ''.join(str(mylist))

    sns_message = (finallist)
    response = sns.publish(
        TopicArn='arn:aws:sns:ARN',
        Message= sns_message,
        Subject='Access Keys which need rotating',
    )

1 Ответ

1 голос
/ 17 марта 2020

Похоже, вам нужна какая-то функция prettyprint, чтобы делать то, что вы хотите. Следующая функция делает именно то, что вы хотите:

result = ['Hannah', 1103, 'Nick', 126]

def prettyprint(l):
    s = '['
    n_items = len(l)
    for idx, item in enumerate(l):
        is_str = isinstance(item, str)
        s += f"'{item}'" if is_str else str(item)
        if idx != n_items-1:
            s += ', ' if is_str else '\n'
    s += ']'
    return s

print(prettyprint(result))

Печать:

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