Необходимо вернуть результат цикла for как лямбда-результат - PullRequest
0 голосов
/ 30 сентября 2018

Я новичок в AWS lambda;Я должен вернуть результат моего цикла for как результат лямбда-функции,

Ниже приведен код, который даст пользователям, которые не использовали там пароль AWS в течение последних 60 дней;он был протестирован в ноутбуке jupyter и работает нормально

import json
import boto3
import datetime
from dateutil.tz import tzutc

    resource = boto3.resource('iam')
    today = datetime.datetime.now()
    for user in resource.users.all():
        if user.password_last_used is not None:
            delta = (today - user.password_last_used.replace(tzinfo=None)).days
            if delta > 60:
                print("username: ", [user.user_name][0]," - ",delta , "days")

Как я могу вернуть результат, как показано ниже: вывод из ноутбука jupyter

Username: abc- 96 Days 
Username: def- 64 Days 
Username: ghi- 184 Days
Username: mno- 158 Days 
Username: xyz- 95 Days

Лямбда-код, который я пытался добавитьвыводить в массив и возвращать массив, но возвращая Null: -

import json
import boto3
import datetime
from dateutil.tz import tzutc

def lambda_handler(event, context):

    resource = boto3.resource('iam')
    client = boto3.client('iam')
    today = datetime.datetime.now()
    userName = []
    for user in resource.users.all():
        if user.password_last_used is not None:
            delta = (today - user.password_last_used.replace(tzinfo=None)).days
            if delta > 30:
                userName.append("username: ", [user.user_name][0]," - ",delta , "days")

    return userName

Ответы [ 2 ]

0 голосов
/ 07 октября 2018
import json
import boto3
import datetime
from dateutil.tz import tzutc

def lambda_handler(event, context):

    resource = boto3.resource('iam')
    client = boto3.client('iam')
    sns = boto3.client('sns')
    today = datetime.datetime.now()
    physicalString ='Below users not logged into AWS console for 90 days\n'
    final_report = ''
    final_result = ''
    number =int(1)
    for user in resource.users.all():
        if user.password_last_used is not None:
            delta = (today - user.password_last_used.replace(tzinfo=None)).days
        if delta >= 0:
            final_result= str(number) + " username: "+ [user.user_name][0]+" - "+str(delta) + "days\n"
            final_report = final_report+final_result
            number=number+1
    response = sns.publish(
        TopicArn='arn:aws:sns:XXXXXXXXXXXX:AWS_KMSKEY',
        Message= physicalString + final_report,
        Subject='IAM USER'
    )

приведенный выше код работает, мы можем получить список пользователей, как показано ниже: -

1 username: abc- 102days
2 username: efg- 190days
3 username: zyz- 164days
0 голосов
/ 04 октября 2018

Проблема в том, как вы добавляете результаты.Append не принимает значения, разделенные запятыми, как print.Используйте следующую строку, чтобы заставить его работать.

userName.append(f"username: {[user.user_name][0]}- {delta} days")

или следующее, если вы используете python 2

userName.append("username: {}- {} days".format([user.user_name][0],delta))

Также убедитесь, что политика разрешает как IAM: GetUser, так и IAM:ListUsers

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