boto3 为 kms list_aliases() 命令设置标记

boto3 set marker for kms list_aliases() command

我使用的一些 AWS 账户有很多 KMS 密钥,这些密钥都绑定了别名。

我的问题是,如果 list_aliases() 命令 returns 的结果太多,结果将被截断,并且如果搜索的值超出截断点,脚本将失败。

我尝试通过此方法返回 200 个结果,但没有成功:

alias_list = (kms_client.list_aliases(Marker='200')
botocore.errorfactory.InvalidMarkerException: An error occurred (InvalidMarkerException) when calling the ListAliases operation: Could not deserialize marker '200'

如何为 list_aliases() 命令设置标记?

首先,根据文档 list_aliases returns 1 到 100 个结果。这是使用 Limit 而非 Marker 设置的。

示例:

alias_list = (kms_client.list_aliases(Limit=100)

其次,超过前 100 个的结果需要使用第一次调用 list_aliases() 返回的标记值。下面是一个简单的示例,说明如何获取标记并使用它来获取接下来的 1-100 个值。

免责声明,这段代码实际上并没有对检索到的别名做任何事情,我也没有测试过它。

def get_kms_alias(kms_client, limit=100, marker=""):

    if marker:
        alias_request = (kms_client.list_aliases(Limit=limit, Marker=marker))
    else:
        alias_request = (kms_client.list_aliases(Limit=limit))

    print(alias_request["Aliases"])
    alias_truncated = alias_request["Truncated"]

    if truncated in "True":
        marker = alias_request["NextMarker"]
        get_kms_alias(kms_client, limit, marker)

    return None