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
Author: Anders Lundsgard, 2017-08-31

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
    });
  }
});
 8
Author: Brant, 2018-01-30 20:37:16

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:

 2
Author: Kanak Singhal, 2018-09-06 07:05:17