【问题标题】:Application Data Folder in AWS BeanstalkAWS Beanstalk 中的应用程序数据文件夹
【发布时间】:2020-02-23 06:38:41
【问题描述】:

我正在将现有的 PHP 应用程序转移到 Elastic Beanstalk 并有一个新手问题。我的应用程序有一个数据文件夹,该文件夹会随着时间的推移而增长和变化,目前该文件夹是应用程序根目录中的子文件夹。传统开发模式下我只是上传修改过的PHP文件,都是使用同一个数据文件夹进行的,在Elastic Beanstalk中怎么做呢?

我不想在每次部署新版本的应用程序时都下载和上传数据文件夹。在 AWS Beanstalk 中执行此操作的最佳实践是什么?

TIA

彼得

【问题讨论】:

  • 您应该考虑进行一些重构以避免在应用程序中构建数据。
  • 我真正想要的是作为驱动器安装在我的 Beanstalk 应用程序中的 S3 存储桶,这样我就可以编写、移动和删除文件,而无需使用 AWS SDK for PHP 重写一堆文件处理例程。

标签: amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

这是一个持续部署的问题。

Elastic BeanStalk 支持来自 AWS CodePipeline 的 CD:https://aws.amazon.com/getting-started/tutorials/continuous-deployment-pipeline/

要解决“随着时间的推移而增长和变化,并且当前该文件夹是应用程序根目录中的一个子文件夹”,您可以使用 CodeCommit 来使用 Git 对您的代码进行版本控制。如果您使用应用程序对数据文件夹进行版本控制,部署将包含它。

如果数据是您可以卸载到对象存储 (S3) 或数据库 (RDS/DynamoDB/等) 的东西,那么这样做会是更好的做法。

【讨论】:

    【解决方案2】:

    根据 AWS 文档 here,Elastic Beanstalk 应用程序在没有持久本地存储的 EC2 实例上运行,因此您的 EB 应用程序应该尽可能无状态,并且应该使用来自存储产品之一的持久存储由 AWS 提供。

    持久存储的常见策略是使用 Amazon EFS 或 Elastic File Service。如将 EFS 与 Elastic Beanstalk 一起使用的文档中所述here

    您的应用程序可以将已挂载的 Amazon EFS 卷视为本地存储,因此您无需更改应用程序代码即可扩展到多个实例。

    您的 EFS 驱动器本质上是一个已安装的网络驱动器。存储在 EFS 中的文件可以在任何已挂载文件系统的实例中访问,并且在实例终止和/或扩展事件之后仍然存在。

    您可以了解有关 EFS here 以及将 EFS 与 Elastic Beanstalk here 结合使用的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-01
      • 2019-10-09
      • 2015-04-06
      • 2012-03-18
      • 2013-07-14
      • 2013-11-14
      • 2018-07-25
      • 2016-03-30
      相关资源
      最近更新 更多