AWS - 通过cron将EC2日志复制到S3

时间:2017-09-01 07:15:12

标签: amazon-web-services amazon-s3 amazon-ec2 cron aws-cli

我需要定期将EC2实例中存在的日志复制到S3存储桶。所以我使用亚马逊cli和crontab来安排它。 在crontab -e中,我添加了以下行

* * * * * aws --version >> /tmp/out.txt 2&>1
* * * * * aws s3 cp log_file_path  s3://bucket >> /tmp/out.txt 2&>1

第一个声明,我只是用来检查aws cli是否正常工作,因为我是新手,每分钟都会将aws版本重定向到一个文件。

第一个命令工作正常但第二个命令没有。如果我独立运行aws s3 cp命令,那么它运行正常,即将日志文件复制到s3存储桶。但如上所述,它不能与cron一起使用,

通过日志知道我得到以下错误:

Upload failed....An error occurred (AccessDenied) when calling the PutObject operation : Access Denied.

有人可以指出如何使其发挥作用。

2 个答案:

答案 0 :(得分:2)

我猜您在您的EC2用户帐户中将AWS凭据设置为环境变量。 cron作业无法访问这些环境变量,这就是您需要将它们移动到~/.aws/credentials的原因。

然而更好的选择是通过IAM角色assign the permissions to the EC2 instance directly

答案 1 :(得分:0)

第一步是创建具有正确权限的EC2角色,以便s3操作可行。 因此不需要aws cli配置。

然后创建将执行上载或任何aws相关操作的脚本,最后添加cron命令。

从安全和管理角度考虑将ec2角色创建为必需角色。