ec2-consistente-instantâneo não pode validar as credenciais de acesso fornecidas

1

Estou tentando usar o utilitário de snapshot consistente ec2 de Eric Hammond em um servidor mysql dedicado.

Eu criei um usuário do IAM e conectei uma política de permissão do usuário avançado (usando o console da AWS).

Em uma instância de 32 bits do Ubuntu 10.10 ec2 e um volume XFS, instalei o ec2-instantâneo consistente seguindo estas instruções: link .

O comando que eu inicio é o seguinte:

ec2-consistent-snapshot \ 
    --freeze-filesystem /data03 \
    --description "Test description $(date +'%Y-%m-%d %H:%M:%S')"  \
    --mysql \
    --mysql-user <my user>  \
    --mysql-host 127.0.0.1 \
    --mysql-socket /var/run/mysqld/mysqld.sock \
    --debug \
    vol-11111111

E a saída de depuração é:

ec2-consistent-snapshot: Using AWS access key: AWSAccessKeyId=AKI[...]
ec2-consistent-snapshot: Thu Mar 22 10:28:53 2012: MySQL connect as <my user>
ec2-consistent-snapshot: Thu Mar 22 10:28:53 2012: MySQL flush
ec2-consistent-snapshot: Thu Mar 22 10:28:53 2012: MySQL flush & lock
ec2-consistent-snapshot: master_log_file="mysql-bin.000726", master_log_pos=106
ec2-consistent-snapshot: Thu Mar 22 10:28:53 2012: sync
ec2-consistent-snapshot: Thu Mar 22 10:28:53 2012: xfs_freeze -f /data03
ec2-consistent-snapshot: Thu Mar 22 10:28:54 2012: create EC2 object
ec2-consistent-snapshot: Thu Mar 22 10:28:54 2012: ec2-create-snapshot vol-11111111
ec2-consistent-snapshot: ERROR: AWS was not able to validate the provided access credentials
ec2-consistent-snapshot: Thu Mar 22 10:28:56 2012: xfs_freeze -u /data03
ec2-consistent-snapshot: Thu Mar 22 10:28:56 2012: MySQL unlock
ec2-consistent-snapshot: Thu Mar 22 10:28:56 2012: MySQL disconnect
ec2-consistent-snapshot: Thu Mar 22 10:28:56 2012: done

(Obviamente, o ID do volume não é 111111111).

Eu tentei modificar o código para ter certeza de que estava usando a chave secreta correta, que acabou sendo a correta.

Eu também tenho uma variável evironment que aponta para /root/.awssecret

echo $AWS_CREDENTIAL_FILE
/root/.awssecret

Outras coisas que eu tentei e consegui os mesmos resultados: - Passar o caminho do arquivo de credencial como um parâmetro. -Gerar novas credenciais e usá-las. -Especificar a região como us-east-1 em vez de deixá-la ir ao padrão.

Veja o que meu arquivo de credenciais parece:

AWSAccessKeyId=AKI[...]
AWSSecretKey=DPh[..]

Isso é muito bonito, obrigado por qualquer ajuda.

    
por IanBussieres 22.03.2012 / 15:57

1 resposta

2

A saída de depuração do instantâneo consistente ec2 normalmente lê:

'Using AWS access key: AKI[...]'

Como a saída mostrada inclui AWSAccessKeyId= e depois de uma rápida olhada no código (linhas 470-471) - que simplesmente lê em cada linha, sem mais análise:

($aws_access_key_id, $aws_secret_access_key) =
      File::Slurp::read_file($aws_credentials_file);

É provável que a solução deixe de fora os prefixos "AWSAccessKeyId=" e "AWSSecretKey=" no seu arquivo de credenciais. Seu arquivo de credenciais deve, portanto, se assemelhar a:

AKI[...]
DPh[...]

De acordo com a documentação do script, o arquivo deve conter a chave de acesso do Amazon AWS e a chave de acesso secreto nas linhas secretas e nessa ordem. Além disso, o script lê a variável de ambiente $ AWS_CREDENTIALS.

Você também pode tentar passar os parâmetros de autenticação diretamente para o script, usando os parâmetros --aws-access-key-id e --aws-secret-access-key .

    
por 22.03.2012 / 19:36