Search code examples
node.jsaws-sdkamazon-kms

How to use Async and Await with AWS SDK Javascript


I am working with the AWS SDK using the KMS libary. I would like to use async and await instead of callbacks.

import AWS, { KMS } from "aws-sdk";

this.kms = new AWS.KMS();

const key = await this.kms.generateDataKey();

However this does not work, when wrapped in an async function.

How can i use async and await here?


Solution

  • If you are using aws-sdk with version > 2.x, you can tranform a aws.Request to a promise with chain .promise() function. For your case:

      try {
        let key = await kms.generateDataKey().promise();
      } catch (e) {
        console.log(e);
      }
    

    the key is a KMS.Types.GenerateDataKeyResponse - the second param of callback(in callback style).

    The e is a AWSError - The first param of callback func

    note: await expression only allowed within an async function