Je suis en train de créer un module qui exporte quelques fonctions et variables mais avant qu'il puisse le faire, il doit d'abord changer de rôles d'utilisateur. Voici le code que j'ai essayé. Je voudrais que la fonction asynchrone anonyme se produise en premier et que tout ce qui suit attende que celle-ci se termine, sinon les autres requêtes n'auront pas les autorisations pour se terminer.
Comme c'est actuellement, je reçois une erreur d'accès refusé car listQueues
est appelé avant que assumeRole
ne se termine.
const AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-1'});
var sts = new AWS.STS();
var sqs;
(async () => {
let role_promise = await sts.assumeRole({
RoleArn: 'arn:aws:iam::xxxx:role/UserRole',
RoleSessionName: 'NodeDeveloperRoleSession'
}).promise().then(data => {
console.log('Rôle assumé avec succès :)');
AWS.config.update({
accessKeyId: data.Credentials.AccessKeyId,
secretAccessKey: data.Credentials.SecretAccessKey,
sessionToken: data.Credentials.SessionToken
});
sqs = new AWS.SQS({apiVersion: '2012-11-05'});
}).catch(err => {
console.log('Impossible d'assumer le rôle :(');
console.log(err, err.stack);
})
})();
async function list_queues() {
let result = await sqs.listQueues({}).promise();
return result.QueueUrls;
}
const result = list_queues();
exports.queues;
Toute aide est appréciée !