【发布时间】:2019-07-10 10:28:33
【问题描述】:
我正在尝试在 AWS 中编写一个为每个现有用户运行一次的 Lambda 函数。 它需要计算用户运行了多少个实例(我已经有了用创建者的 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 的 client.list_users() 返回一个字典,其中包含用户列表及其数据字典,如下所示:
{
'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'
}
【问题讨论】:
-
你在说什么用户?你的应用程序? IAM 用户?
client.list_users()是什么?如果没有更多的上下文,很难回答你的问题。请阅读stackoverflow.com/help/mcve 以帮助重新表述您的问题。
标签: python list amazon-web-services amazon-ec2 aws-lambda