我想知道是否可以通过 CLI 将我的整个应用程序的 zip 文件上传到 Elastic Beanstalk?目前我正在使用 git aws.push,但问题是我的应用程序具有我需要在部署后安装的供应商依赖项。如果我可以直接从 CLI 上传一个 zip,我可以让我的 jenkins 构建服务器安装所有供应商,压缩整个应用程序然后上传到 EBS。
1 回答
您已将此标记为“Elastic Beanstalk”,因此我假设您正在尝试将您的应用程序推送到 S3,而不是 EBS。应用程序版本存储在 S3 存储桶中,然后 Beanstalk 部署脚本将 .zip 从存储桶下载到 EBS 卷,将其提取到 中/tmp
,然后将代码复制到/var/www/html
. 您实际上从未将任何内容直接上传到 EBS 卷(嗯,我的意思是,您不应该)。
如果您的依赖项是 PHP 库,只需将它们包含在您的应用程序源包中。但是,如果您的依赖项包括安装在其他位置的文件/var/www/html
(如 Apache 模块或其他二进制文件),那么不,您不能(轻松)在部署期间使用 Elastic Beanstalk 和 PHP 执行此操作。您必须通过 SSH 进入,安装您的依赖项,“刻录”实例的自定义 AMI,然后在您的 Beanstalk 环境配置中指定该自定义 AMI。
这有点难看,因为您现在有责任维护此自定义 AMI,而使用 Amazon 提供的库存图像意味着您可以依靠它们定期发布带有安全修复程序的新版本等。请记住,尽管AWS 产品开发团队以惊人的速度行动。就在几周前,Beanstalk 团队引入了类似 Puppet 的配置脚本来进行配置。这可能正是您所需要的,但不幸的是它只支持 Java 和 Python 环境。不过,我希望他们很快就会发布 PHP 支持,所以请密切关注。