AWS Elastic Beanstalk:通过缓存避免在 EB 应用程序更新时重新下载应用程序的静态文件
AWS Elastic Beanstalk: Avoid redownload of app's static files on EB app update by caching
我们的项目包含应用程序在 Elastic Beanstalk 部署过程中从 Amazon S3 下载的数 Gb 数量的静态文件(使用 .ebextensions/*.config 文件),因此将新服务器实例部署到集群 and/or 应用程序版本更新需要很长时间,所以我们甚至需要认真增加部署超时。
这些文件位于应用程序目录内,并且随着 EB 在应用程序版本更新时重建主应用程序目录,部署过程会在每次应用程序更新时再次将所有静态文件从 S3 重新下载到新创建的目录,从而增加部署时间和产生不必要的流量支出。
想法是通过在应用程序目录之外保存静态文件的缓存副本来防止这种重新下载,并在部署时将其与 s3 同步(以防在 S3 上更改或删除任何静态文件):
aws s3 sync s3://bucket/staicfiles path/to/local/cached/staticfiles --delete
然后只是 move/copy 个文件从这个缓存的目录到新部署的目录。
- 是否有任何其他想法/最佳实践来防止在更新时重新下载静态文件?
- 是否有亚马逊 Linux 为用户缓存文件推荐的目录,这些目录不会受到系统或部署过程的影响?
您可以使用 EBExtensions 在部署期间执行任意命令。正如您所建议的,我要做的是在那里使用命令 运行 S3 同步到未附加到您的应用程序部署路径的文件夹。
您可以将这些命令放在应用程序根目录下的“.ebextensions”目录中 - EB 将在部署期间读取该目录,并执行其中找到的任何“*.config”文件。
至于其他方法 - 我不确定您的应用程序 structure/organization/etc,但这些资产(图像、js、css 等)是否可以从 S3 提供直接上桶?然后,您可以完全抵消服务器的负载。
称为弹性文件系统的新 AWS 服务解决了这个问题。它允许将单个虚拟磁盘驱动器安装到多个实例并可以访问文件。很有魅力。
您可以在此处找到有关弹性文件系统 (AWS EFS) 工作原理的更多信息:
我们的项目包含应用程序在 Elastic Beanstalk 部署过程中从 Amazon S3 下载的数 Gb 数量的静态文件(使用 .ebextensions/*.config 文件),因此将新服务器实例部署到集群 and/or 应用程序版本更新需要很长时间,所以我们甚至需要认真增加部署超时。
这些文件位于应用程序目录内,并且随着 EB 在应用程序版本更新时重建主应用程序目录,部署过程会在每次应用程序更新时再次将所有静态文件从 S3 重新下载到新创建的目录,从而增加部署时间和产生不必要的流量支出。
想法是通过在应用程序目录之外保存静态文件的缓存副本来防止这种重新下载,并在部署时将其与 s3 同步(以防在 S3 上更改或删除任何静态文件):
aws s3 sync s3://bucket/staicfiles path/to/local/cached/staticfiles --delete
然后只是 move/copy 个文件从这个缓存的目录到新部署的目录。
- 是否有任何其他想法/最佳实践来防止在更新时重新下载静态文件?
- 是否有亚马逊 Linux 为用户缓存文件推荐的目录,这些目录不会受到系统或部署过程的影响?
您可以使用 EBExtensions 在部署期间执行任意命令。正如您所建议的,我要做的是在那里使用命令 运行 S3 同步到未附加到您的应用程序部署路径的文件夹。
您可以将这些命令放在应用程序根目录下的“.ebextensions”目录中 - EB 将在部署期间读取该目录,并执行其中找到的任何“*.config”文件。
至于其他方法 - 我不确定您的应用程序 structure/organization/etc,但这些资产(图像、js、css 等)是否可以从 S3 提供直接上桶?然后,您可以完全抵消服务器的负载。
称为弹性文件系统的新 AWS 服务解决了这个问题。它允许将单个虚拟磁盘驱动器安装到多个实例并可以访问文件。很有魅力。
您可以在此处找到有关弹性文件系统 (AWS EFS) 工作原理的更多信息: