AWS iam.deleteAccessKey не надежен в Node10 Lambda - PullRequest
0 голосов
/ 25 февраля 2020

Почему я не могу await iam.deleteAccessKey ?

Я даже пытался создать zip-файл с aws-sdk@2.625.0 и все еще получать те же результаты.

Проблема в том, что ключ удаляется только каждый раз, когда вызывается лямбда.

Я еще не сделал сокращенный пример кода (я помогаю другому разработчику решить эту проблему) , но вот базовая c концепция:

/********************************************************
This is not a working code sample.
I'm stuck in meetings and haven't been able to work on
this. These are just a few excerpts from the many things
I've tried.
********************************************************/

const AWS = require('aws-sdk')
//AWS.config.setPromisesDependency(null)
var iam = new AWS.IAM({ apiVersion: '2010-05-08' })

const params = { AccessKeyId: `${id}`, UserName: `${username}` }
await iam.deleteAccessKey(params).promise()
console.log('done')

Мне гораздо удобнее с Python, чем с Node, но даже некоторые из наших мастеров Node находятся в тупике. Я не думал, что должен был делать что-то особенное, чтобы получить доступ к обещаниям в [современном] NodeJS10, но я попробовал несколько вещей старой школы (из ссылок ниже) на всякий случай. (Пожалуйста, исправьте меня, если я ошибаюсь.)

Я постараюсь добавить хороший полный пример функции, но это только для начала разговора, так как я не могу найти вопросов по материя.

Вот серия ссылок, которые я нахожу совершенно запутанными: https://aws.amazon.com/blogs/developer/support-for-promises-in-the-sdk/ https://aws.amazon.com/blogs/compute/node-js-8-10-runtime-now-available-in-aws-lambda/ https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/using-promises.html

PS: Я ожидаю, что меня обожжут за этот пост. Я готов отредактировать его, чтобы перефокусировать, как только узнаю больше о природе этого странного поведения. Пожалуйста, будьте конструктивны.

1 Ответ

2 голосов
/ 25 февраля 2020

Если я прав, ваш пример кода не в функции. Обязательно оберните его вокруг функции async или используйте .then

Пример с async:

..startup code

async function myFunction() {
  await iam.deleteAccessKey(params).promise()
  console.log("done")
}

Пример с then:

..startup code

iam.deleteAccessKey(params).promise().then(() => console.log("done"))

Если вы хотите узнать больше, Используйте эту ссылку

...