2017-08-31 4 views
1

Verwenden von AWS SDK für JavaScript Ich möchte das Standardprofil verwenden, das die a-Rolle übernimmt. Es funktioniert perfekt mit nativem AWS Cli, aber die Verwendung von node.js mit aws-sdk übernimmt nicht die Rolle, sondern verwendet nur Zugangsdaten für das AWS-Konto, zu dem der Zugangsschlüssel gehört. Ich habe diese Dokumentation gefunden, aber es geht nicht um die Rolle übernehmen: http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.htmlVerwenden eines Profils, das eine Rolle in aws-sdk übernimmt (AWS JavaScript SDK)

Jeder Tipp?

Dies ist meine Config-Datei:

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

Haben Sie jemals eine Antwort auf diese finden? –

+0

Nein, und ich sehe das gleiche Problem mit Python und Boto3 SDK. –

+1

Soweit mir bekannt ist, übernimmt der node.js-Client nicht automatisch Rollen. Wenn Sie diese Rollen übernehmen wollen, müssen Sie dies manuell tun. –

Antwort

1

Die CLI und SDK arbeitet anders, indem Sie explizit die Rolle übernehmen müssen, wenn das SDK. Das SDK übernimmt die Rolle nicht automatisch aus der Konfiguration, wie es die CLI tut.

Nachdem die Rolle angenommen wurde, muss die AWS.config mit den neuen Anmeldeinformationen aktualisiert werden.

Dies funktioniert für mich:

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 
    }); 
    } 
}); 
Verwandte Themen