Por que o instantâneo consistente ec2 não pode encontrar minhas chaves cert / AWS?

6

Eu tenho dois sistemas, um rodando o Ubuntu 11.04 e outro rodando o 10.04 LTS. A mesma configuração em ambas as máquinas produz resultados diferentes. A máquina 10.04LTS não consegue encontrar meus arquivos de credenciais da AWS.

Em 11,04

export | grep EC2 

declare -x EC2_CERT="/home/jdw/.ec2/cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem" 
declare -x EC2_HOME="/opt/ec2-ami-tools-1.3-66634" 
declare -x EC2_PRIVATE_KEY="/home/jdw/.ec2/pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem"

ls -al /home/jdw/.ec2/ 
total 16 
drwxr-xr-x 2 jdw jdw 4096 2011-08-18 13:31 . 
drwxr-xr-x 58 jdw jdw 4096 2011-09-23 10:24 ..
-rw-r--r-- 1 jdw jdw 916 2011-08-18 13:30 cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem
-rw-r--r-- 1 jdw jdw 928 2011-08-18 13:30 pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem

/usr/bin/ec2-consistent-snapshot --description "Autosnapshot root" vol-283d5246 --region us-west-1 snap-0c679a62

Em 10,04 LTS

export | grep EC2 

declare -x EC2_CERT="/root/.ec2/cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem" 
declare -x EC2_HOME="/mnt/ec2-api-tools-1.4.4.2" 
declare -x EC2_PRIVATE_KEY="/root/.ec2/pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem"

ls -al /root/.ec2 
total 16 
drwxr-xr-x 2 root root 4096 2011-09-23 10:50 . 
drwx------ 8 root root 4096 2011-09-23 10:50 ..
-rw-r--r-- 1 root root 916 2011-09-23 10:11 cert-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem
-rw-r--r-- 1 root root 928 2011-09-23 10:47 pk-PJU5MW2PCN24SKPOIVFTWCMBUXWWZO7U.pem

/usr/bin/ec2-consistent-snapshot --description "Autosnapshot root" vol-283d5246 --region us-west-1 ec2-consistent-snapshot: ERROR: Can't find AWS access key or secret access key at /usr/bin/ec2-consistent-snapshot line 97.

Eu suponho que estou perdendo alguma dependência na caixa 10.04, mas não tive nenhuma sorte em encontrar o que poderia me fazer. A única dependência que tenho executado é o PERL_MM_USE_DEFAULT = 1 cpan Net :: Amazon :: EC2 que está presente em ambas as máquinas.

Mais informações.

Parece que, apesar de ter minhas variáveis de ambiente definidas corretamente, o ec2-consistent-snapshot está procurando pela minha chave em um arquivo chamado .awssecret

open("/root/.awssecret", O_RDONLY) = -1 ENOENT (No such file or directory) write(2, "ec2-consistent-snapshot: ERROR: "..., 124) = 124 exit_group(2) = ? ~

E parece que fornecer as credenciais da linha de comando trunca os nomes das credenciais:

execve("/usr/bin/ec2-consistent-snapshot", ["/usr/bin/ec2-consistent-snapshot", "--aws-access-key-id-file", "/root/.ec2/cert-PJU5MW2PCN44GRAV"..., "--aws-secret-access-key-file", "/root/.ec2/pk-PJU5MW2PCN44GRAVIV"..., "--description", "Autosnapshot SMC root ", "vol-283d5446", "--region", "us-west-1"], [/* 21 vars */]) = 0

Eu tentei usar nomes mais curtos e o nome .awssecret para os arquivos pem e isso remove a condição 'não é possível encontrar', mas resulta em um erro 'não é possível validar as credenciais'. Portanto, sinto que resolver o erro principal provavelmente resolverá o problema secundário.

Estou certo de que esta é uma biblioteca perdida ou algo do meu sistema 10.04.

    
por jdw 23.09.2011 / 21:37

3 respostas

5

Eu vejo o que é a confusão. É muito comum na AWS e nem percebi a primeira vez que li sua descrição. Você está passando os objetos de credenciais errados nas opções da linha de comando.

O programa de captura instantânea consistente em ec2 precisa do "ID da chave de acesso" e da "Chave de acesso secreta". Estes são valores completamente diferentes do "Certificado" e "Chave Privada", embora sejam usados para realizar o mesmo propósito.

Aqui está um artigo que escrevi, que tenta explicar muitas das diferentes credenciais e onde encontrá-las:

Understanding Access Credentials for AWS/EC2
http://alestic.com/2009/11/ec2-credentials

    
por 26.09.2011 / 18:32
2

Eu sou o autor / mantenedor do ec2-consistent-snapshot (graças aos outros colaboradores de patches) e será o primeiro a admitir que é muito difícil encontrar suas credenciais da AWS pesquisando em muitos lugares. Infelizmente, há pouca consistência em que as ferramentas da Amazon e outras ferramentas de terceiros lhe dizem para colocar suas credenciais. Meu objetivo era evitar adicionar esse problema, então imaginei que seria bom procurar em vários dos lugares mais comuns e usar as primeiras credenciais encontradas.

Isso funciona bem para a maioria dos cenários, mas pode causar problemas se você tiver várias credenciais diferentes da AWS armazenadas em seu sistema de arquivos, variáveis de ambiente e variáveis de ambiente que apontam para o sistema de arquivos.

O software faz algumas escolhas ruins sobre priorizar quais valores devem substituir outros valores. Por exemplo, parece que você está especificando --aws-access-key-id-file na linha de comando, mas isso será sobrescrito pelo $ AWS_ACCESS_KEY_ID se ele estiver configurado. Opções de linha de comando devem substituir ambiente ou configurações do sistema de arquivos, mas neste caso ele está ficando confuso porque é um valor específico especificado no ambiente versus um caminho de arquivo especificado na linha de comando e escolhe valores específicos sobre valores armazenados em um arquivo em algum lugar.

Ative a opção de linha de comando --debug e procure por resultados de depuração com as informações como:

ec2-consistent-snapshot: Using AWS access key: ...

Se este é o ID de chave de acesso correto, então você pode querer editar o programa e adicionar uma linha de depuração diretamente depois que gera a chave de acesso secreta. Se não for o id de chave de acesso correto, você desejará examinar os diferentes locais em que o software procura as credenciais da AWS (consulte a página do manual) e descobrir onde está obtendo essas informações.

Observação: na sua linha de depuração, não acredito que as credenciais estejam realmente sendo truncadas no software. Acredito que seja apenas o depurador dizendo que os valores reais passados foram mais longos do que o necessário para mostrar.

    
por 24.09.2011 / 00:44
0

Isso está resolvido. Obrigado a @eric por me acompanhar pelas credenciais.

Toda a questão das variáveis de ambiente vice-line de linha de comando foi um obstáculo para mim. Acontece que a caixa de trabalho 11.04 estava funcionando porque, em algum momento, eu havia colocado minhas credenciais da AWS em um arquivo .awssecret no meu diretório pessoal. O fato de que eu também tinha uma variedade de variáveis de ambiente era irrelevante.

Uma vez que eu configurei meu arquivo .awssecret para os mesmos valores na caixa 10.04, tudo ficou bem.

Acontece que, com um arquivo .awssecret formatado corretamente, não há necessidade das seguintes variáveis de ambiente:

EC2-CERT, EC2_PRIVATE_KEY, AWS_ACCESS_KEY_ID ou AWS_SECRET_ACCESS_KEY definidos.

    
por 26.09.2011 / 18:33

Tags