How do I promisify the AWS JavaScript SDK? How do I promisify the AWS JavaScript SDK? node.js node.js

How do I promisify the AWS JavaScript SDK?


I believe calls can now be appended with .promise() to promisify the given method.

You can see it start being introduced in 2.6.12 https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md#2612

You can see an example of it's use in AWS' blog https://aws.amazon.com/blogs/compute/node-js-8-10-runtime-now-available-in-aws-lambda/

let AWS = require('aws-sdk');let lambda = new AWS.Lambda();exports.handler = async (event) => {    return await lambda.getAccountSettings().promise() ;};


You can use a promise library that does promisification, e.g. Bluebird.

Here is an example of how to promisify DynamoDB.

var Promise = require("bluebird");var AWS = require('aws-sdk');var dynamoDbConfig = {  accessKeyId: process.env.AWS_ACCESS_KEY_ID,  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,  region: process.env.AWS_REGION};var dynamoDb = new AWS.DynamoDB(dynamoDbConfig);Promise.promisifyAll(Object.getPrototypeOf(dynamoDb));

Not you can add Async to any method to get the promisified version.