1

AWS 开发工具包允许以编程方式创建新的 CMK。

但是,我想检查是否已经创建了给定的 CMK,如果是,请使用它而不是重新创建它。

据我所知,描述和别名都不是唯一标识符,并且与 S3 不同,它们没有唯一名称,所以我不确定代码中的其他属性可以用来检查给定的CMK 存在。

关于我如何做到这一点的任何想法?我缺少 CMK 属性吗?

4

1 回答 1

1

根据您的问题,我不清楚您是否要:

1) 告知是否已经创建了一个(任何)CMK;或
2) 告知是否已经创建了(特定的)CMK;
3) 保证客户端不能创建多个密钥;

对于 1),您可以结合使用ListKeysDescribeKey API。

但是,就像您指出的那样,在创建密钥期间您可以指定任何独特的东西,以便以后在使用之前检查是否存在。所以2)有点棘手。在创建 CMK之后,您可以立即使用CreateAlias API。KMS 保证别名和 CMK 之间的一对一映射,因此您可以执行此操作,然后调用DescribeKey API。DescribeKey 接受别名作为参数,因此应该可以满足您的需求。只需检查它是否存在,如果存在,则重用它,如果不存在,则创建它。

如果您尝试完成 3,我的建议是让您使用 AWS 控制台创建 CMK,并将策略分配给您在调用 SDK API 时假定的 IAM 角色或用户以无法创建 CMK。

于 2017-03-17T00:23:45.307 回答