You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS JS SDK检查IAM access key是否处于活跃状态

通过AWS JS SDK检查IAM Access Key活跃状态的实现方法

你可以直接调用IAM服务的官方接口获取Access Key状态,返回结果和AWS Management Console展示的状态完全一致。

前置准备

  • 安装对应SDK依赖:官方推荐使用模块化的v3版本,安装@aws-sdk/client-iam包;如果使用维护期的旧v2版本,安装aws-sdk包即可
  • 确保运行SDK的身份(本地配置的AWS凭证、EC2实例角色、Lambda执行角色等)拥有iam:ListAccessKeys的IAM操作权限
  • IAM是全局服务,初始化客户端时区域固定填us-east-1即可,不需要填其他区域

实现代码

AWS SDK for JavaScript v3(推荐版本)

// 引入IAM客户端及对应命令
import { IAMClient, ListAccessKeysCommand } from "@aws-sdk/client-iam";

// 初始化客户端,SDK会自动从环境变量、本地凭证文件、实例角色等位置加载身份凭证
const iamClient = new IAMClient({ region: "us-east-1" });

/**
 * 获取指定IAM用户下所有Access Key的状态
 * @param {string} userName 目标IAM用户名
 * @returns {Promise<Array<{accessKeyId: string, status: 'Active'|'Inactive', createDate: Date}>>}
 */
async function getAllAccessKeyStatus(userName) {
  const command = new ListAccessKeysCommand({ UserName: userName });
  const resp = await iamClient.send(command);
  // Status字段直接对应密钥状态:Active为活跃,Inactive为已禁用
  return resp.AccessKeyMetadata.map(keyItem => ({
    accessKeyId: keyItem.AccessKeyId,
    status: keyItem.Status,
    createDate: keyItem.CreateDate
  }));
}

// 调用示例:查询指定用户下的密钥状态
getAllAccessKeyStatus("你的目标IAM用户名")
  .then(keyList => {
    keyList.forEach(key => {
      console.log(`密钥ID:${key.accessKeyId},状态:${key.status === 'Active' ? '*活跃*' : '*已禁用*'},创建时间:${key.createDate}`);
    });
  })
  .catch(err => {
    console.error("查询失败:", err.message);
  });

如果需要查询单个指定Access Key的状态,在拿到返回的密钥列表后,直接过滤匹配目标Access Key ID的条目即可。

AWS SDK for JavaScript v2(旧版本)

const AWS = require('aws-sdk');
const iamClient = new AWS.IAM({ region: 'us-east-1' });

async function getAllAccessKeyStatus(userName) {
  const resp = await iamClient.listAccessKeys({ UserName: userName }).promise();
  return resp.AccessKeyMetadata.map(keyItem => ({
    accessKeyId: keyItem.AccessKeyId,
    status: keyItem.Status,
    createDate: keyItem.CreateDate
  }));
}

// 调用逻辑和v3版本完全一致

注意事项

  • 默认单次接口调用最多返回100条密钥记录,如果返回结果中IsTruncated字段为true,需要传入上一次请求返回的Marker参数翻页,才能拉取到该用户下的所有密钥
  • 该接口仅能返回密钥的启用/禁用状态,如果需要查询密钥最后一次的实际使用时间,需要额外调用getAccessKeyLastUsed接口获取
  • 禁止在代码中硬编码IAM凭证,优先使用IAM角色、环境变量、本地AWS凭证文件的方式加载身份信息,避免凭证泄露

内容的提问来源于stack exchange,提问作者Dovid Gefen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:48:52