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

使用AWS JS SDK编写Lambda获取账号所有IAM角色返回null如何解决

问题根因
  • 异步逻辑不匹配:你使用回调方式调用iam.listRoles接口,但async类型的Lambda handler不会等待回调函数执行完成,函数在接口返回结果前就已经结束执行,因此返回的结果始终是空值。
  • IAM权限缺失:如果Lambda函数绑定的执行角色没有配置iam:ListRoles操作权限,接口调用会抛出权限错误,也会导致无法拿到正确结果。
修复方案

将回调调用改为AWS SDK支持的Promise调用形式,配合await等待接口返回结果后再组装响应,示例代码如下:

const AWS = require("aws-sdk");

exports.handler = async (event) => {
    const iam = new AWS.IAM();
    try {
        // 等待listRoles接口返回结果
        const data = await iam.listRoles().promise();
        const response = {
          statusCode: 200,
          body: JSON.stringify(data.Roles)
        };
        return response;
    } catch (err) {
        console.log(err, err.stack);
        return {
          statusCode: 500,
          body: JSON.stringify({error: err.message})
        };
    }
};
额外配置检查

请确认Lambda执行角色的权限策略中已经添加了如下权限声明:

{
    "Effect": "Allow",
    "Action": "iam:ListRoles",
    "Resource": "*"
}

内容的提问来源于stack exchange,提问作者Abhishek Tirkey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 01:45:02