当新对象插入到 s3 中时进行扩展

当新对象插入到 s3 中时进行扩展

我想按以下方式设置自动缩放。

  • 我将网站数据以 zip 格式存储在 aws s3 存储桶中(未启用版本控制)
  • 当以自动缩放方式启动实例时,用户数据将具有从 S3 存储桶中获取 zip 文件并将其解压缩到适当位置的 shell 脚本。
  • 将来,当我拥有 zip 文件的第 2 版时,自动扩展应该会停止为旧网站提供服务的旧实例。而新实例应该会启动新网站(使用相同的用户数据 shell 脚本)。

如何实现这个?

答案1

我认为您需要设置 CodeDeploy 和 CodePipeline 来执行此操作。Codepipeline 可以监控源 s3,然后将更新发送到 codedeploy 以更新 EC2 实例。

http://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html

http://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html

答案2

我认为使用默认的自动缩放是不可能的。

自动扩展终止政策是:

  1. 终止实例数最多的可用区中的实例。
  2. 最早的启动配置
  3. 最接近计费时间
  4. 随机的

如果您有一个可用区,解决方案可能是更改启动配置。即使只是当前配置的副本也足够了。不过这不是立即的,如果定期扩大和缩小规模,最终就会实现。

如果您有多个可用区,新的启动配置最终将会起作用。

你可以手动保护实例免于终止。不过这是手动的,你必须在每次发布 zip 文件时更改它们。

Lambda 为您提供了强大的功能和灵活性。您可以让 CloudWatch Events 触发 Lambda 函数。该函数可以检查最新 zip 文件的日期和实例启动日期,并可以终止比 zip 文件更早的实例。这可能是最好的自动化方式。

只要您不频繁发布 zip 文件,手动终止可能是最简单的。

问题:

  • 您使用了多少个可用区?
  • 您多久发布一次 zip 文件?

相关内容