KMSライブラリを使用してAWS SDKを使用しています。コールバックの代わりにasyncとawaitを使用したいと思います。
import AWS, { KMS } from "aws-sdk";
this.kms = new AWS.KMS();
const key = await this.kms.generateDataKey();
ただし、非同期関数でラップされている場合、これは機能しません。
非同期を使用してここで待機するにはどうすればよいですか?
バージョン> 2.xでaws-sdkを使用している場合、aws.Request
をチェーン.promise()
関数を持つpromiseに変換できます。あなたの場合:
try {
let key = await kms.generateDataKey().promise();
} catch (e) {
console.log(e);
}
key
はKMS.Types.GenerateDataKeyResponse
です-コールバックの2番目のパラメーター(コールバックスタイル)。
e
はAWSError
です-コールバックfuncの最初のパラメーター
注:await
式は非同期関数内でのみ許可されます
await
にはPromise
が必要です。 generateDataKey()
は、Promise
ではなく、 AWS.Request
を返します。 AWS.Request
はEventEmitters
(多かれ少なかれ)ですが、使用できる promise
メソッドがあります。
import AWS, {
KMS
} from "aws-sdk";
(async function() {
const kms = new AWS.KMS();
const keyReq = kms.generateDataKey()
const key = await keyReq.promise();
// Or just:
// const key = await kms.generateDataKey().promise()
}());