Получить UserId из списка пользователей для лямбда-функции (AWS) - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь написать лямбда-функцию в AWS, которая запускается один раз для каждого существующего пользователя.Нужно подсчитать, сколько экземпляров работает у пользователя (у меня уже есть что-то, что помечает каждый экземпляр с помощью UserId его создателя).Поэтому я пытался написать фильтр, который получает все запущенные экземпляры пользователя, а затем подсчитывает их.Проблема в том, что мне как-то не удается получить UserId от пользователя после того, как я получил список всех пользователей.В настоящее время это выглядит так:

users = client.list_users()

for user in users:
    #here is where I dont know how to get the UserId i´ve tried things like:
    #userId=user.UserId or userId=user['UserId'] and other things but I just cant get it to work

    instancefilters = [{
        {
            'Name': 'instance-state-name',
            'Values': ['running']
            },
        {
            'Name': 'PrincipalId',
            'Values': [userId]
            }
        }
    ]
    instances = ec2.instances.filter(Filters=instancefilters)

    RunningInstances = [instance.id for instance in instances]

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

Редактировать: Я использую Boto3за это.Boto3's client.list_users () возвращает dict со списком пользователей с указанием их данных, например:

{
'Users': [
    {
        'Path': 'string',
        'UserName': 'string',
        'UserId': 'string',
        'Arn': 'string',
        'CreateDate': datetime(2015, 1, 1),
        'PasswordLastUsed': datetime(2015, 1, 1),
        'PermissionsBoundary': {
            'PermissionsBoundaryType': 'PermissionsBoundaryPolicy',
            'PermissionsBoundaryArn': 'string'
        },
        'Tags': [
            {
                'Key': 'string',
                'Value': 'string'
            },
        ]
    },
],
'IsTruncated': True|False,
'Marker': 'string'

}

1 Ответ

0 голосов
/ 16 февраля 2019

Я думаю, что здесь есть несколько ошибок, хотя я не уверен, какой key вы даете, когда отмечаете экземпляры, я приму тег Owner.

users = client.list_users()

for user in users.get('Users', [{}]):
    instancefilters = [
        {
            'Name': 'instance-state-name',
            'Values': ['running']
            },
        {
            'Name': 'tag:Owner',
            'Values': [user.get('UserId')]
            }
    ]

    instances = ec2.instances.filter(Filters=instancefilters)

    RunningInstances = [instance.id for instance in instances]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...