我试图在专用的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参数直接传递给脚本。