即使没有新内容需要同步,AWS S3 同步命令也会停止并持续很长时间

即使没有新内容需要同步,AWS S3 同步命令也会停止并持续很长时间

我有一个每分钟执行一次的 cronjob,它使用 awscli s3 sync 命令将我的网站与 S3 存储桶同步。

看来该命令有时会无缘无故地运行很长时间:

20613 bitnami   20   0  191876  48668   9756 R 30.3  2.4   1:22.43 /usr/bin/python3 /home/bitnami/.local/bin/aws s3 sync --delete /opt/bitnami/apps/wordpress/htdocs s3://nutriti-code

在此示例中,文件已经同步,因为源上没有新内容可以传输到 S3 存储桶。

/var/log/syslog除了确认命令已成功执行之外,我看不到任何日志

我的文件也同步正确。

如果没有什么需要同步的话,为什么命令会运行长达 1 分 22 秒甚至更长时间?

我想知道为什么该命令需要这么多时间,因为没有要同步的内容,如果 S3 对象的大小与本地文件的大小不同,S3 对象的最后修改时间比本地文件的最后修改时间新,或者 S3 对象不存在于本地目录中,则会下载 S3 对象。本地文件的最后修改时间更改为 S3 对象的最后修改时间。

答案1

我建议你用户数据在实例启动时运行同步命令,以及强制更新操作系统的命令(例如 yum update -f,从内存中,尽管这可能不太正确)。与间歇同步相比,您可能更适合采用手动或半自动化方法。

设置用户数据后,一种简单的方法是将自动缩放组的所需大小增加到实际需要的两倍,等待 15 分钟,然后再次将所需大小调低。默认终止政策自动扩展的条件是实例按以下顺序终止

  1. 实例最多的可用区
  2. 关于定价的一些事情
  3. 最早的启动配置
  4. 下一计费小时

这可能会终止您的旧实例,但不一定。您最好使用自定义终止策略,并采用首先终止最旧实例的策略。有关此信息位于同一页面上。

相关内容