2017-08-31 7 views
1

Utilisation d'AWS SDK pour JavaScript Je souhaite utiliser le profil par défaut qui assume le rôle. Il fonctionne parfaitement avec les clusters AWS natifs, mais l'utilisation de node.js avec aws-sdk n'assume pas le rôle mais utilise uniquement les informations d'identification du compte AWS auquel appartient la clé d'accès. J'ai trouvé cette documentation mais elle ne traite pas du rôle assumateur: http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.htmlen utilisant le profil qui assume le rôle dans aws-sdk (AWS JavaScript SDK)

Un conseil?

Ceci est mon fichier de configuration:

[default] 
role_arn = arn:aws:iam::123456789:role/Developer 
source_profile = default 
output = json 
region = us-east-1 
+0

Avez-vous déjà trouver une réponse à cela? –

+0

Non, et je vois le même problème en utilisant Python et Boto3 SDK. –

+1

Pour autant que je sache, le client node.js n'assume pas automatiquement les rôles. Si vous voulez assumer ces rôles, vous devez le faire manuellement. –

Répondre

1

Le travail CLI et le SDK différemment, que vous devez assumer explicitement le rôle lors de l'utilisation du SDK. Le SDK n'assume pas automatiquement le rôle de la configuration comme le fait la CLI. Une fois le rôle supposé, AWS.config doit être mis à jour avec les nouvelles informations d'identification.

Une fois le rôle supposé, AWS.config doit être mis à jour avec les nouvelles informations d'identification.

Cela fonctionne pour moi:

var AWS = require('aws-sdk'); 
AWS.config.region = 'us-east-1'; 

var sts = new AWS.STS(); 
sts.assumeRole({ 
    RoleArn: 'arn:aws:iam::123456789:role/Developer', 
    RoleSessionName: 'awssdk' 
}, function(err, data) { 
    if (err) { // an error occurred 
    console.log('Cannot assume role'); 
    console.log(err, err.stack); 
    } else { // successful response 
    AWS.config.update({ 
     accessKeyId: data.Credentials.AccessKeyId, 
     secretAccessKey: data.Credentials.SecretAccessKey, 
     sessionToken: data.Credentials.SessionToken 
    }); 
    } 
});