usar o perfil que assume o papel em aws-sdk (AWS JavaScript SDK)
usando AWS SDK para JavaScript quero usar o perfil padrão que assume o papel A. Funciona perfeitamente com o nativo AWS Cli, mas usando o nó.js com aws-sdk não assumem o papel, mas apenas usa credenciais para a conta AWS onde a chave de acesso pertence. Encontrei esta documentação, mas não trata de assumir o papel.http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html
Alguma dica? Este é o meu ... ficheiro de configuração:[default]
role_arn = arn:aws:iam::123456789:role/Developer
source_profile = default
output = json
region = us-east-1
2 answers
O CLI e o SDK funcionam de forma diferente, na medida em que você deve assumir explicitamente o papel ao usar o SDK. O SDK não assume automaticamente o papel da configuração como o CLI.
Depois do Papel ser assumido, o AWS.a configuração deve ser atualizada com as novas credenciais.
Isto funciona comigo.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
});
}
});
Encontrei a maneira correcta de o fazer! Topa-me isto.: https://github.com/aws/aws-sdk-js/pull/1391
Só tinha de adicionar {[[0]} à variável ambiente juntamente com AWS_PROFILE="assume-role-profile"
Por isso, não requer qualquer actualização de código: sweat_smile: