AWS SDK允许以编程方式创建新的CMK。
但是,我想检查是否已经创建了给定的CMK,如果已经创建,只需使用它而不是重新创建它。
据我所知,描述和别名都不是唯一标识符,与S3不同,它们没有唯一的名称,所以我不确定代码中可以使用哪些其他属性来检查如果给定的CMK存在。
关于我如何做到这一点的任何想法?我缺少哪些CMK属性?
答案 0 :(得分:1)
从您的问题来看,我不清楚您是否愿意:
1)判断是否已经创建了一个(任何)CMK;或
2)判断是否已创建(特定)CMK;
3)保证客户不能创建多个密钥;
对于1),您可以结合使用ListKeys和DescribeKey API。
就像你指出的那样,没有什么可以指定在期间创建一个键以便稍后在使用之前检查存在。所以2)有点棘手。在创建CMK之后,你可以做的是使用CreateAlias API。 KMS保证别名和CMK之间的一对一映射,因此您可以执行此操作,然后调用DescribeKey API。 DescribeKey接受别名作为参数,因此它应该为您提供所需的内容。只检查它是否存在,如果存在,重复使用,如果不存在,则创建它。
如果您正在尝试完成3,我的建议是您使用AWS控制台创建CMK并为您在调用SDK API时假设的IAM角色或用户分配策略< strong>不能够创建CMK。