0

避免的应用程序对EB的应用程序更新的静态文件重新下载我们的项目中包含来自Amazon S3的应用程序下载弹性魔豆在部署过程中的静态文件的多千兆量(使用.ebextensions/*配置文件。) ,因此将新服务器实例部署到集群和/或应用程序版本更新需要很长时间,所以我们甚至需要认真增加部署超时。AWS弹性魔豆:通过缓存

这些文件位于应用程序目录内,并且随着EB重新构建应用程序版本更新的主要应用程序目录,部署过程再次将所有静态文件从S3再次下载到每个应用程序更新的新创建的目录,从而增加部署时间并生成不必要的交通费用。

理念是通过持有的静态文件缓存副本的应用程序目录之外,以防止这种重新下载,只是(如有的静态文件被更改或删除对S3的情况下)与S3同步其上部署有:

aws s3 sync s3://bucket/staicfiles path/to/local/cached/staticfiles --delete 

,然后只是移动/从这个缓存目录的新部署的目录拷贝文件。

  1. 是否有任何其他的想法/最佳做法来防止更新时重新下载静态文件?
  2. 有没有亚马逊的Linux推荐目录中是不会被系统影响或部署过程中用户缓存文件?

回答

0

您可以使用EBExtensions在部署期间执行任意命令。正如你所建议的那样,我要做的就是使用那里的命令将S3同步运行到未连接到应用程序部署路径的文件夹。

您可以在您的应用程序的根目录” .ebextensions目录发布这些命令 - EB将读取的是,在部署期间,和执行中发现的任何‘的* .config’文件。

至于其他的方法 - 我不知道你的应用程序结构/组织/等,但这些资产(图片,JS,CSS等),可以直接从S3桶送达?然后你可以完全抵消服务器的负载。

+0

感谢您的回答。 - 1.我们已经在使用.ebextensions/*。config文件 - 这就是我们如何从部署中的s3下载文件。 - 2.不,我们提供来自Amazon CloudFront的图像,js,css,这些静态文件(我们在应用程序目录中需要)是与应用程序相关的文件。 – Kainax

+0

酷 - 感谢您提供更多信息。大多数EB容器使用'/ var/app/ondeck /'构建应用程序,然后在将其翻转为'/ var/app/current'时将其翻转为活动版本。任何你想运行你的S3同步到其他文件夹(我建议类似/ opt或/ srv)应该没问题。 – ballpointcarrot