AWS KMS 客户端不返回别名

AWS KMS client not returning an alias name

我一直在使用 KMS 客户端的 list_aliases() 方法,现在没有任何问题。但最近它已停止列出我想使用的别名之一。

import boto3

kms_client = boto3.client('kms')

# Getting all the aliases from my KMS
key_aliases = kms_client.list_aliases()

key_aliases = key_aliases['Aliases']

# DO SOMETHING...

上面的 key_aliases 列表包含除我要使用的键之外的所有键。但是,我可以从 AWS KMS UI 中看到该密钥已启用。不确定为什么 list_aliases() 方法没有返回它。

有人遇到过这个问题吗?

看起来响应被截断了。此 API 调用获取的默认别名数为 50。您可以将限制增加到 100,这应该可以解决您的问题。

key_aliases = kms_client.list_aliases(Limit=100)

您还应该检查响应中的截断字段是否设置为 True。在这种情况下,您可以再次调用 API 来获取剩余的结果:

if key_aliases['Truncated'] is True:
   key_aliases = kms_client.list_aliases(Marker=key_aliases['NextMarker'])
   ...

def get_keys_arn(kmsclient,key_name): #Marker = 'string'

alias_list = kmsclient.list_aliases(Limit=999)
if alias_list['Truncated'] is True:
    alias_list_trun = alias_list['Aliases']
    for alias in alias_list_trun:
        if alias["AliasName"] == "alias/" + key_name:
            return alias["TargetKeyId"]
    while alias_list['Truncated'] :
        alias_list = kmsclient.list_aliases(Limit=999,Marker=alias_list['NextMarker'])
        alias_list_trun = alias_list['Aliases']
        for alias in alias_list_trun:
            if alias["AliasName"] == "alias/" + key_name:
                return alias["TargetKeyId"]
else:
    alias_list= alias_list['Aliases']
    for alias in alias_list:
        if alias["AliasName"] == "alias/" + key_name:
            return alias["TargetKeyId"]