小编Cod*_*ion的帖子

使用async/await对AWS lambda进行未处理的承诺拒绝

最近,AWS宣布了其lambda函数(Node.js 8.10运行时可用)的nodejs8.10运行时的可用性.虽然这对于快乐的流程来说似乎很好,但是我遇到了一些不愉快的流程问题,即我得到了"UnhandledPromiseRejectionWarnings".

我正在使用以下代码.我的想法是,我提供了一个不存在的对象的密钥来测试该场景的不满意流程.我的目标是将错误记录并传播出lambda,因为我在这里没有理智的处理方式(我无法在这个lambda函数中检索新密钥).我也希望能够在调用者中使用错误(例如,另一个lambda函数或步骤函数).

'use strict';

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

exports.handler = async (event) => {
  let data;
  try {
    data = await getObject(event.key);
  } catch (err) {
    console.error('So this happened:', err);
    throw err;
  }

  return data;
}

const getObject = async (key) => {
  let params = {
    Bucket: process.env.BUCKET,
    Key: key
  };

  const s3 = new AWS.S3();

  let data;
  try {
    data = await s3.getObject(params).promise();
  } catch(err) {
    console.log('Error retrieving object');
    throw err;
  }

  console.log('Retrieved data');
  return …
Run Code Online (Sandbox Code Playgroud)

node.js async-await aws-lambda

9
推荐指数
1
解决办法
4661
查看次数

标签 统计

async-await ×1

aws-lambda ×1

node.js ×1