适用于 Java 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

管理 IAM 访问密钥

重要

这是一个预览版,不建议用于生产环境。

创建访问密钥

要创建 IAM 访问密钥,请使用 CreateAccessKeyRequest 对象调用 IAMClientcreateAccessKey 方法。

注意

由于 IAM 是一项全局服务,因此,您必须将区域设置为 AWS_GLOBAL 才能使 IAMClient 调用生效。

导入

import software.amazon.awssdk.services.iam.model.CreateAccessKeyRequest; import software.amazon.awssdk.services.iam.model.CreateAccessKeyResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IAMClient;

代码

Region region = Region.AWS_GLOBAL; IAMClient iam = IAMClient.builder().region(region).build(); CreateAccessKeyRequest request = CreateAccessKeyRequest.builder() .userName(user).build(); CreateAccessKeyResponse response = iam.createAccessKey(request);

请参阅 GitHub 上的完整示例

列出访问密钥

要列出指定用户的访问密钥,请创建一个 ListAccessKeysRequest 对象,其中包含要列出密钥的用户名,并将该对象传递给 IAMClientlistAccessKeys 方法。

注意

如果您未向 listAccessKeys 提供用户名,则它将尝试列出与签署该请求的 AWS 账户相关联的访问密钥。

导入

import software.amazon.awssdk.services.iam.model.AccessKeyMetadata; import software.amazon.awssdk.services.iam.model.ListAccessKeysRequest; import software.amazon.awssdk.services.iam.model.ListAccessKeysResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IAMClient;

代码

Region region = Region.AWS_GLOBAL; IAMClient iam = IAMClient.builder().region(region).build(); boolean done = false; String new_marker = null; while (!done) { ListAccessKeysResponse response; if(new_marker == null) { ListAccessKeysRequest request = ListAccessKeysRequest.builder() .userName(username).build(); response = iam.listAccessKeys(request); } else { ListAccessKeysRequest request = ListAccessKeysRequest.builder() .userName(username) .marker(new_marker).build(); response = iam.listAccessKeys(request); } for (AccessKeyMetadata metadata : response.accessKeyMetadata()) { System.out.format("Retrieved access key %s", metadata.accessKeyId()); } if (!response.isTruncated()) { done = true; } else { new_marker = response.marker(); } }

listAccessKeys 的结果分页显示 (默认情况下,每个调用最多返回 100 个记录)。您可以调用返回的 ListAccessKeysResponse 对象中的 isTruncated 以查看该查询返回的结果是否少于可用结果。如果是,则调用 ListAccessKeysResponse 中的 marker 并在创建新请求时使用它。在下次调用 listAccessKeys 时使用该新请求。

请参阅 GitHub 上的完整示例

检索上次使用访问密钥的时间

要获取上次使用访问密钥的时间,请使用访问密钥的 ID(可通过 GetAccessKeyLastUsedRequest 对象传入)调用 IAMClientgetAccessKeyLastUsed 方法。

随后,您可以使用返回的 GetAccessKeyLastUsedResponse 对象来检索密钥的上次使用时间。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IAMClient; import software.amazon.awssdk.services.iam.model.GetAccessKeyLastUsedRequest; import software.amazon.awssdk.services.iam.model.GetAccessKeyLastUsedResponse;

代码

Region region = Region.AWS_GLOBAL; IAMClient iam = IAMClient.builder().region(region).build(); GetAccessKeyLastUsedRequest request = GetAccessKeyLastUsedRequest.builder() .accessKeyId(access_id).build(); GetAccessKeyLastUsedResponse response = iam.getAccessKeyLastUsed(request); System.out.println("Access key was last used at: " + response.accessKeyLastUsed().lastUsedDate());

请参阅 GitHub 上的完整示例

激活或停用访问密钥

您可以激活或停用访问密钥,方法是创建 UpdateAccessKeyRequest 对象,提供访问密钥 ID、用户名(可选)和所需状态,然后将请求对象传递给 IAMClientupdateAccessKey 方法。

导入

import software.amazon.awssdk.services.iam.model.StatusType; import software.amazon.awssdk.services.iam.model.UpdateAccessKeyRequest; import software.amazon.awssdk.services.iam.model.UpdateAccessKeyResponse; import software.amazon.awssdk.regions.Region;

代码

String username = args[0]; String access_id = args[1]; String status = args[2]; StatusType statusType; if (status.toLowerCase().equalsIgnoreCase("active")) { statusType = StatusType.ACTIVE; } else if (status.toLowerCase().equalsIgnoreCase("inactive")) { statusType = StatusType.INACTIVE; } else { statusType = StatusType.UNKNOWN_TO_SDK_VERSION; } Region region = Region.AWS_GLOBAL; IAMClient iam = IAMClient.builder().region(region).build(); UpdateAccessKeyRequest request = UpdateAccessKeyRequest.builder() .accessKeyId(access_id) .userName(username) .status(statusType) .build(); UpdateAccessKeyResponse response = iam.updateAccessKey(request);

请参阅 GitHub 上的完整示例

删除访问密钥

要永久删除访问密钥,请调用 IAMClientdeleteKey 方法,并为它提供 DeleteAccessKeyRequest,其中包含访问密钥的 ID 和用户名。

注意

密钥在删除后无法再检索或使用。要临时停用密钥,使其可以稍后再次激活,请改为使用 updateAccessKey 方法。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IAMClient; import software.amazon.awssdk.services.iam.model.DeleteAccessKeyRequest; import software.amazon.awssdk.services.iam.model.DeleteAccessKeyResponse;

代码

Region region = Region.AWS_GLOBAL; IAMClient iam = IAMClient.builder().region(region).build(); DeleteAccessKeyRequest request = DeleteAccessKeyRequest.builder() .accessKeyId(access_key) .userName(username).build(); DeleteAccessKeyResponse response = iam.deleteAccessKey(request);

请参阅 GitHub 上的完整示例

更多信息