如何在运行 AWS Linux 2 的 AWS Elastic Beanstalk 上配置 Linux 交换空间?

Posted

技术标签:

【中文标题】如何在运行 AWS Linux 2 的 AWS Elastic Beanstalk 上配置 Linux 交换空间?【英文标题】:How do I configure Linux swap space on AWS Elastic Beanstalk running AWS Linux 2? 【发布时间】:2020-10-18 22:38:20 【问题描述】:

Can I configure Linux swap space on AWS Elastic Beanstalk? 的答案(自 2016 年起)展示了如何使用 .ebextensions 配置文件为 AWS Elastic Beanstalk 环境配置 Linux 交换空间。

但是,AWS 文档 Customizing software on Linux servers 为较新的 Amazon Linux 2 平台提供了以下说明:

在 Amazon Linux 2 平台上,我们强烈建议您使用 Buildfile,而不是在 .ebextensions 配置文件中提供文件和命令。 Procfile 和平台挂钩尽可能在实例供应期间在您的环境实例上配置和运行自定义代码。

如何使用这种更现代的配置方法来配置交换空间?

【问题讨论】:

【参考方案1】:

BuildfileProcfile 不适合这种情况。它们服务于不同的目的 - 运行短期和长期运行的命令。

我会为此使用platform hooks。具体来说,prebuild

此处的文件在 Elastic Beanstalk 平台引擎下载并提取应用程序源包之后以及在它设置和配置应用程序和 Web 服务器之前运行

理由是最好在应用程序开始配置之前立即创建交换。如果交换创建操作失败,您会很快收到通知,而不是在您设置应用程序之后。

从 SO 链接,您可以将 01_add-swap-space.sh 放入 .platform/hooks/prebuild/ 文件夹。在将应用程序打包成 zip 之前,请确保 01_add-swap-space.sh 是可执行的 (chmod +x)。

【讨论】:

所以基本上是一样的,但是脚本在不同的地方,我不需要.ebextensions/swap.config,因为脚本会根据它在文件系统中的位置在正确的时间执行.太棒了。 @AaronBrager 是的。 Amazon Linux 2 hooks 引入了很多新东西,比如这些 hooks。

以上是关于如何在运行 AWS Linux 2 的 AWS Elastic Beanstalk 上配置 Linux 交换空间?的主要内容,如果未能解决你的问题,请参考以下文章

运行 AWS Deep Learning Base AMI (Amazon Linux 2) 时,如何在 Elastic Beanstalk 中设置 WSGI?

如何在 AWS EB Amazon Linux 2 平台上为 cron.d 添加环境属性引用

在 64 位 Amazon Linux 2/3.2.2 和 Dockerrun.aws.json v3 上运行 Docker 的 Elastic Beanstalk

在 aws linux 2 实例上使用弹性 beanstalk 运行 django-q

我不明白如何让领域服务器在 AWS AMI 上运行

如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js 应用程序?