【问题标题】:AWS - Copying EC2 logs to S3 through cronAWS - 通过 cron 将 EC2 日志复制到 S3
【发布时间】:2018-02-10 05:08:00
【问题描述】:

我需要定期将EC2 实例中存在的日志复制到S3 存储桶。所以我使用 Amazon 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.

有人可以指出如何使它工作。

【问题讨论】:

  • 也将日志记录添加到第二行
  • @DusanBajic - 更新
  • 您的 aws 凭据是否存储在 ~/.aws/credentials 文件中?
  • @DusanBajic - 关键和价值应该是什么?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    从安全和管理的角度考虑创建一个强制性的 ec2 角色。

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 1970-01-01
      • 2019-04-13
      • 2019-12-25
      • 1970-01-01
      • 2023-03-22
      • 2019-01-02
      • 2018-02-28
      • 1970-01-01
      相关资源
      最近更新 更多