【问题标题】:Create AWS Lambda function to get Users from IAM创建 AWS Lambda 函数以从 IAM 获取用户
【发布时间】:2020-03-21 12:07:19
【问题描述】:

我想从 AWS IAM 获取用户详细信息,因此我创建了一个 lambda 函数,但响应代码 502 出现错误。我的代码如下。

var AWS = require('aws-sdk');
var iam = new AWS.IAM();
AWS.config.loadFromPath('./config.json');

let getUsers = async (event, callback) => {
    var params = {
        UserName: "5dc6f49d50498e2907f8ee69"
    };

    iam.getUser(params, (err, data) => {
        if (err) {
            callback(err)
        } else {
            console.log(data)
            callback(data)
        }
    })
};

【问题讨论】:

  • 从你的函数中删除单词async
  • 不工作@dev_junwen
  • Lambda 函数接收到回调(event, context, callback),尝试从您的代码中删除单词async 并将您的(event, callback) 更新为(event, context, callback)
  • 还是不行。您可以更改代码并用新代码回复吗? @dev_junwen
  • @dev_junwen 当然可以将 Lambda 函数与async 一起使用。 contextcallback 对象都完全可选

标签: node.js aws-lambda amazon-iam


【解决方案1】:

由于您的函数已经是 async,您不需要使用旧的、过时的 callback 方法。

AWS 开发工具包方法提供了一个 .promise() 方法,您可以将其附加到每个 AWS 异步调用,并且使用 async,您可以在 Promise 上简单地 await

    var AWS = require('aws-sdk');
    var iam = new AWS.IAM();
    AWS.config.loadFromPath('./config.json');

    let getUsers = async event => {
        var params = {
            UserName: "5dc6f49d50498e2907f8ee69"
        };

        const user = await iam.getUser(params).promise()
        console.log(user)
    };

希望您有一个调用此代码的处理程序,否则这将无法正常工作。 如果要将getUsers 导出为处理函数,请确保先通过module.exports 导出它。即:module.exports.getUsers = async event...。仔细检查您的 Lambda 处理程序是否在函数本身上正确配置,其中 index.getUsers 代表 index 是文件名 (index.js) 和 getUsers 您导出的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 2021-10-15
    • 2019-07-10
    • 2018-01-13
    • 1970-01-01
    • 2020-10-16
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多