我正在撰寫一個腳本來從同一帳戶中的所有 iam 用戶中過濾一些用戶。它在一個 aws 帳戶上運行良好,但是當我在另一個擁有 400 多個用戶的 aws 帳戶上使用相同的腳本時,它只是在前 100 個用戶之后跳過了所有用戶。
我認為有些東西限制了這一點,所以我創建了下面的腳本來計算給定 aws 帳戶中的用戶數量。它在 100 處停止并跳過其余用戶。
#!/usr/bin/env python3
import boto3
def main():
Usercount = 0
iam = boto3.client('iam')
client = boto3.client('iam',aws_access_key_id=XXXXXXXXXXXXXX, aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXX)
try:
for user in client.list_users()['Users']:
Usercount =1
print(Usercount)
except:
print("Error getting user count")
如果 iam 用戶少于 100,則列印正確的數字,但如果用戶超過 100,則僅列印 100。是否通過 aws 控制臺設定了限制?有沒有辦法擺脫這個限制?
uj5u.com熱心網友回復:
您必須使用 while 回圈并驗證回應是否存在標記。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.list_users
標記(字串)——僅在對結果進行分頁時以及僅在您收到表明結果已被截斷的回應后才使用此引數。將其設定為您收到的回應中的 Marker 元素的值,以指示下一次呼叫應從何處開始。
uj5u.com熱心網友回復:
呼叫時list_users(),如果IsTruncated為 True,則應使用Marker等于呼叫中回傳的值進行后續呼叫。
或者,您可以簡單地使用一個分頁器來為您完成:
paginator = client.get_paginator('list_users')
response_iterator = paginator.paginate()
for user in response_iterator:
Usercount = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/371470.html
上一篇:日志流是隨機散列而不是記錄器名稱
