chamada da instância ec2 para 169.254.169.254 para credenciais de segurança retorna credenciais inválidas

2

Então, em teoria, se uma pessoa precisa de credenciais válidas para um servidor da Amazon, em vez de codificar em sua chave de acesso / senha, pode-se chamar 169.254.169.254 para credenciais para acessar certos recursos como:

   js = ''
   open('http://169.254.169.254/latest/meta-data/iam/security-credentials/<role>') { |f|
       f.each_line {|line| js += line}
   }
   credentials = JSON.load(js)

   ndnode[:s3_access_key_id] = credentials['AccessKeyId']
   ndnode[:s3_secret_access_key] = credentials['SecretAccessKey']

e, em seguida, usando o material de acesso aqui:

   conn = AWS::EC2::Base.new(:access_key_id => ndnode[:s3_access_key_id],
       :secret_access_key => ndnode[:s3_secret_access_key])
   # THIS ALWAYS FAILS
   result = conn.describe_instances(:instance_id => instance_id)

Eu não gosto da idéia de codificar minha chave de acesso e senha na fonte, e gostaria de uma solução alternativa.

1) Eu e meu chefe estamos certos de que essa é uma maneira de fazer essa solução alternativa? 2) Se sim para 1, qual é a maneira correta de fazer isso? Se não para 1, existe uma maneira de evitar a verificação de credenciais na fonte (aqui ou em um arquivo de configuração) e o que é isso? 3) Em resposta à resposta do @ Edwin, onde na API gem da AWS eu coloquei o token de segurança? Boto foi reportado para me deixar conectar com as credenciais que me deram, o que significa bifurcar um processo e configurar algumas variáveis de ambiente, para que Ruby possa usar a conexão Boto para pedir informações.

    
por Kevin Meyer 30.01.2013 / 04:12

1 resposta

1

Muitos dos SDKs da AWS têm suporte para funções do IAM nos perfis do EC2 incorporados. Com o .Net, você usa um construtor sem parâmetros para usá-los. Verifique se você está usando uma versão recente do SDK.

Aqui está a página da Amazon sobre como usar o SDK do Ruby com as funções do IAM .

    
por 31.01.2013 / 21:26