amazon-web-services - AWS CodeDeploy jar
问题描述
我想使用 AWS CodeDeploy 部署一个 jar 文件,然后java -jar
在 EC2 上运行我的命令。但我注意到 AWS CodeDeploy 仅从S3 中提取zip
,和 tar.gz 。tar
我想我将使用本地 jenkins 中的 CLI 将 .zip 文件(包含 jar)推送到 S3,然后运行另一个 CLI 命令来启动 AWS CodeDeploy,这将从 S3 中提取 .zip。
但是,我确实对 AWS CodeDeploy 的详细信息有疑问:
我可以使用 appspec.yml 发出两个命令吗?
1) 一旦它在 EC2 上,从 S3 解压缩 .zip
2)java -jar
在特定位置发布?
谢谢
解决方案
1)您不需要发出解压缩命令,appspec.yml 中的 files 部分用于指定您希望复制到 ec2(目标)上的文件系统的存档(源)中的文件,并将由代码完成部署代理 RE https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-files.html
2)创建一个运行脚本以在钩子 ApplicaitonStart RE https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html下发出 java -jar 命令
基于 os linux 的示例 appspec.yml:
version: 0.0
os: linux
files:
- source: ./
destination: /home/ubuntu/myapp
hooks:
ApplicationStart:
- location: runapp.sh
runas: ubuntu
运行应用程序.sh:
#!/usr/bin/env bash
echo 'Starting my app'
cd '/home/ubuntu/myapp'
java -jar myapp.jar
在此示例中,您将在部署包中包含 runapp.sh
推荐阅读
- json - 用于在地图上使用 Json 响应的 Future Builder
- python - 无法将站点部署到heroku,显示错误
- sql-server - 实体框架核心中的触发器批量
- ios - 本地通知正文的最大字符数 - React Native iOS
- laravel - 我尝试插入具有多个类别的选择标签数据
- amazon-web-services - 我在 cloudWatch 中的日志大小是多少?
- asp.net-web-api - WebApi 中的 Microsoft Graph Api
- c# - 将 MemoryStream 转换为数组 C#
- bash - 检查文件的十六进制转储是否具有模 4 长度
- ios - UITests:无法在 iOS 14.5 上禁用精确位置