dan*_*dan 9 backup cron amazon-ec2 amazon-web-services
我正在尝试在Amazon AWS上为我的EBS实施自动备份系统.
当我运行此命令时ec2-user
:
/opt/aws/bin/ec2-create-snapshot --region us-east-1 -K /home/ec2-user/pk.pem -C /home/ec2-user/cert.pem -d "vol-******** snapshot" vol-********
Run Code Online (Sandbox Code Playgroud)
一切正常.
但是,如果我将此行添加到/etc/crontab
并重新启动crond
服务:
15 12 * * * ec2-user /opt/aws/bin/ec2-create-snapshot --region us-east-1 -K /home/ec2-user/pk.pem -C /home/ec2-user/cert.pem -d "vol-******** snapshot" vol-********
Run Code Online (Sandbox Code Playgroud)
这不起作用.
我检查了var/log/cron
这一行,因此命令执行:
Dec 13 12:15:01 ip-10-204-111-94 CROND[4201]: (ec2-user) CMD (/opt/aws/bin/ec2-create-snapshot --region us-east-1 -K /home/ec2-user/pk.pem -C /home/ec2-user/cert.pem -d "vol-******** snapshot" vol-******** )
Run Code Online (Sandbox Code Playgroud)
你能帮我解决一下这个问题吗?
我想是一些环境问题 - 可能缺少一些变量.如果是这样的话,我不知道该怎么做.
谢谢.
您应该考虑利用AWS的新IAM角色功能.基本上,您要做的是在IAM控制面板中创建一个新角色,然后为其分配创建快照的权限.您需要附加到角色的策略如下所示:
{
"Statement": [
{
"Sid": "Stmt1355446824880",
"Action": [
"ec2:CreateSnapshot",
"ec2:DescribeSnapshots",
"ec2:DescribeVolumes"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后,在创建实例时,在启动配置中定义IAM角色(它位于"高级设置"下).结果是您的实例现在自动拥有创建快照的权限,您不必担心在实例的任何位置存储访问密钥或其他凭据.它将通过cron无问题地工作.
对于初学者来说,crontab没有$ PATH,你还必须导出EC2_HOME和JAVA_HOME.我建议您创建一个脚本,在顶部有两个导出,然后调用创建快照.这么简单
export EC2_HOME=your_ec2_home
export JAVA_HOME=your_java_home
/opt/aws/bin/ec2-create-snapshot --region us-east-1 -K /home/ec2-user/pk.pem -C /home/ec2-user/cert.pem -d "vol-******** snapshot" vol-********
Run Code Online (Sandbox Code Playgroud)
根据经验,将备份过程放在脚本中通常是一种很好的做法.您可以在以下链接中找到示例脚本:https: //forums.aws.amazon.com/message.jspa?messageID = 350163.有许多可用的脚本可自定义并且大多数ec2功能都是自动化的.
归档时间: |
|
查看次数: |
4108 次 |
最近记录: |