适用于 Java 的 AWS 开发工具包版本 2
开发人员指南
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); System.out.println("Created access key: " + response.accessKey());

请参阅 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,以查看该查询返回的结果是否少于可用结果。如果是,则调用 marker 中的 ListAccessKeysResponse 并在创建新请求时使用它。在下次调用 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; import software.amazon.awssdk.services.iam.IamClient;

代码

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 上的完整示例

更多信息