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.