AWS SDK - 编写一个 lambda 来获取当前账户的所有角色
AWS SDK - Writing a lambda to get all roles for the current account
正在使用为 Javascript 提供的 AWS SDK 文档编写 lambda 以获取当前账户中的所有 IAM 角色:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/IAM.html
但是,我的 lambda 保持 return 空值,而我期望它 return 响应主体中的现有角色列表:
const AWS = require("aws-sdk");
exports.handler = async (event) => {
var iam = new AWS.IAM();
var roles = [];
iam.listRoles(function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else roles.push(data); // successful response
const response = {
statusCode: 200,
body: JSON.stringify(roles)
};
return response;
});
};
我显然在这里遗漏了一些东西。任何见解将不胜感激。
您正在为 JavaScript 使用旧版本的 AWS SDK。您引用的文档不是最新的。
尝试使用此 适用于 JavaScript 开发指南 V3 的 AWS SDK 中所述的最新版本:
https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/iam-examples-managing-users.html
问题是混淆了异步和回调,你可以使用 promise 来处理 listRoles。
const AWS = require('aws-sdk');
exports.handler = async event => {
try {
const iam = new AWS.IAM();
const roles = await iam.listRoles().promise();
return {
statusCode: 200,
body: JSON.stringify(roles)
};
} catch (err) {
console.log(err, err.stack);
return {
statusCode: 200, // might change to error code here
body: []
};
}
};
正在使用为 Javascript 提供的 AWS SDK 文档编写 lambda 以获取当前账户中的所有 IAM 角色:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/IAM.html
但是,我的 lambda 保持 return 空值,而我期望它 return 响应主体中的现有角色列表:
const AWS = require("aws-sdk");
exports.handler = async (event) => {
var iam = new AWS.IAM();
var roles = [];
iam.listRoles(function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else roles.push(data); // successful response
const response = {
statusCode: 200,
body: JSON.stringify(roles)
};
return response;
});
};
我显然在这里遗漏了一些东西。任何见解将不胜感激。
您正在为 JavaScript 使用旧版本的 AWS SDK。您引用的文档不是最新的。
尝试使用此 适用于 JavaScript 开发指南 V3 的 AWS SDK 中所述的最新版本:
https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/iam-examples-managing-users.html
问题是混淆了异步和回调,你可以使用 promise 来处理 listRoles。
const AWS = require('aws-sdk');
exports.handler = async event => {
try {
const iam = new AWS.IAM();
const roles = await iam.listRoles().promise();
return {
statusCode: 200,
body: JSON.stringify(roles)
};
} catch (err) {
console.log(err, err.stack);
return {
statusCode: 200, // might change to error code here
body: []
};
}
};