如何通过 CLI 将 zip 文件上传和部署到 AWS elastic beanstalk?
Posted
技术标签:
【中文标题】如何通过 CLI 将 zip 文件上传和部署到 AWS elastic beanstalk?【英文标题】:How to upload and deploy zip file to AWS elastic beanstalk via CLI? 【发布时间】:2020-05-25 02:29:52 【问题描述】:我不想使用控制台。没有手动过程。我需要一个命令行版本,可以在我的持续部署脚本中编写代码。
作为构建过程的一部分,我可以输出一个 ZIP 文件(无论是在我的本地机器上还是在 CI 过程中,例如:通过 bitbucket 管道或 AWS codedeploy VM 实例)。
我想要一个类似的命令:
aws eb deploy my-app ./server.zip
也就是说,首先上传我选择的 zip 文件,然后部署它(不必是一个命令)。
官方eb deploy
好像不支持这个,我也没有找到其他方法来做这个。
任何想法将不胜感激:)
【问题讨论】:
很好奇为什么你不想通过 EB cli 作为eb deploy
的一部分来管理整个生命周期:) .. 你能详细说明你的要求吗? (据我所知,应用版本只能通过控制台手动上传)
我有一个自定义工件生成过程,将多个子模块中的多个 JAR 捆绑到一个 eb deploy 不支持的 JAR 中
好的,将依赖的 jars 作为代码存储库的一部分在这里不起作用?这是在您运行eb deploy
之前进入 CI/CD 脚本的内容。您可能需要检查 .ebignore
文件以确保 CLI 不会忽略其他 jar。在部署过程的后期,您可以使用 Beanstalk 提供的生命周期挂钩,如 commands:
和 container_commands:
(取决于基于 docker/non-docker 的环境)在应用程序启动之前执行自定义魔术
【参考方案1】:
我也在寻找这个答案。我找到了一些 AWS 文档,可让您使用 Elastic Beanstalk CLI 配置上传 zip。
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html#eb-cli3-artifact
部署工件而不是项目文件夹
您可以通过将以下行添加到项目文件夹中的
.elasticbeanstalk/config.yml
来告诉 EB CLI 部署您在单独构建过程中生成的 ZIP 文件或 WAR 文件。deploy: artifact: path/to/buildartifact.zip
如果您在 Git 存储库中配置 EB CLI,但没有 > 将工件提交到源,请使用
--staged
选项部署最新版本。~/eb$ eb deploy --staged
我测试过,它确实对我有用!
【讨论】:
【参考方案2】:我认为eb
CLI 不支持上传 ZIP 和更新环境,但您可以使用 AWS CLI 命令的组合。
-
将 ZIP 上传到 S3
创建应用程序版本
更新环境
例子,
aws s3 cp deploy.zip s3://mybucket/deploy.zip
aws elasticbeanstalk create-application-version --application-name my-app --version-label 12345 --source-bundle S3Bucket="mybucket",S3Key="deploy.zip"
aws elasticbeanstalk update-environment --application-name my-app --environment-name MyApp-env --version-label 12345
【讨论】:
这对我有用。以前用 EB-CLI 来定义存档文件。 很好,但是没有公共 s3 存储桶怎么办?带有源 IP 的公共存储桶是个问题。 @bjm88 S3 存储桶不需要公开。只需确保设置了正确的访问/权限即可。例如,执行cp
命令的 IAM 用户/角色必须拥有mybucket
资源的s3:PutObject
权限。以上是关于如何通过 CLI 将 zip 文件上传和部署到 AWS elastic beanstalk?的主要内容,如果未能解决你的问题,请参考以下文章
IBM MFP 如何使用 mfpdev-cli 上传(部署).adapter?