删除 AWS S3 上的日志文件 (Rails 7)

huangapple go评论62阅读模式
英文:

Remove log files on aws s3 (rails7)

问题

在Rails 7中,用于删除AWS S3上的日志文件,有两种主要选项:S3自动化和定时任务(cron job)。

我编写了一些Rake任务来演示:

task :delete_stale_logs do
  s3 = Aws::S3::Resource.new(
    region: ENV['AWS_REGION'],
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
  )

  bucket = s3.bucket(ENV['AWS_BUCKET'])

  bucket.objects.each do |object|
    if object.key.include?('.log') && object.last_modified < Time.now - 30.days
      object.delete
      puts "Deleted #{object.key}"
    end
  end
end

你可以选择使用这个Rake任务作为cron job来定期清理S3中的过期日志文件,或者你也可以考虑使用AWS S3自动化工具来管理日志文件的生命周期。这两种方法都可以用来删除S3上的日志文件,具体取决于你的需求和偏好。

英文:

Which option is better to remove log files on aws s3 for rails7? s3 automation vs cron job

I wrote some rake tasks.

task :delete_stale_logs do
    s3 = Aws::S3::Resource.new(
      region: ENV[&#39;AWS_REGION&#39;],
      access_key_id: ENV[&#39;AWS_ACCESS_KEY_ID&#39;],
      secret_access_key: ENV[&#39;AWS_SECRET_ACCESS_KEY&#39;]
    )

    bucket = s3.bucket(ENV[&#39;AWS_BUCKET&#39;])

    bucket.objects.each do |object|
      if object.key.include?(&#39;.log&#39;) &amp;&amp; object.last_modified &lt; Time.now - 30.days
        object.delete
        puts &quot;Deleted #{object.key}&quot;
      end
    end
  end
end

答案1

得分: 1

Cron工作在您对日志数量有一些条件逻辑的情况下更好,否则使用S3自动化。如果选择Cron工作,您需要处理监控以检查作业是否失败。查看这里获取更多信息。

英文:

Cron job is better in case you have some conditional logics for the number of logs, otherwise s3 automation. If you go for cron jobs, you have to handle monitoring to check if jobs fail or not. Check here for more info.

huangapple
  • 本文由 发表于 2023年6月1日 23:43:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/76383630.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定