ec2-consistent-snapshot不能validation提供的访问凭证

我试图在专用的mysql服务器上使用Eric Hammond的ec2-consistent-snapshot实用程序。

我创build了一个IAM用户并附加了一个超级用户权限策略(使用AWS控制台)。

在32位Ubuntu 10.10 ec2实例和XFS卷上,我已经按照以下说明安装了ec2-consistent-snapshot: http : //alestic.com/mt/mt-search.cgi? blog_id=1&tag=ec2-consistent-snapshot& limit= 20 。

我启动的命令如下:

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 

并且debugging输出是:

 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 

(当然,卷ID实际上不是111111111)。

我试着修改代码,确保它使用了正确的密钥,结果certificate是正确的。

我也有一个指向/root/.awssecret的环境variables

 echo $AWS_CREDENTIAL_FILE /root/.awssecret 

其他的东西,我已经试过,并产生了相同的结果: – 通过凭据文件的path作为参数。 – 产生新的凭据,并使用这些。 – 指定该地区为美国东1,而不是让它违约。

这是什么我的凭证文件看起来像:

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

这是非常多的,谢谢你的帮助。

ec2-consistent-snapshot的debugging输出通常为:

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

由于您显示的输出包括AWSAccessKeyId=并且快速浏览一下代码(第470-471行) – 只需在每行中读取,不需要进一步parsing:

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

该解决scheme可能会在您的凭证文件中留下“AWSAccessKeyId =”和“AWSSecretKey =”前缀。 因此,您的凭证文件应该类似于:

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

根据该脚本的文档,该文件应该在分离的行上按照该顺序包含Amazon AWS访问密钥和秘密访问密钥。 另外,脚本读取$ AWS_CREDENTIALS环境variables。

您还可以尝试使用--aws-access-key-id--aws-secret-access-key参数将身份validation参数直接传递给脚本。