我们开发了一个NodeJS应用程序,我们希望在Amazon Cloud中启动它们。
我们在其他Atlassian应用程序中集成了“Bamboo”。 Bamboo将构建文件传输到Amazon的S3 Bucket。
问题是:如何从S3移动并启动应用程序到EC2实例?
您可以在附件中找到我的appspec.yml,在我的构建目录中可以找到以下文件:
- 客户 | index.html等文件
- 服务器 |像server.js和socketio.js这样的文件
- appspec.yml
- 自述
有人有个主意吗?我希望它包含您需要的所有重要信息。
谢谢你:D
的附件
version: 1.0
os: linux
files:
- source: /
destination: /

答案 0 :(得分:0)
我刚刚意识到你的appspec.yml
似乎缺乏部署Node.js应用程序(以及大多数其他应用程序)的关键部分,即hooks
部分。如AWS CodeDeploy Application Specification Files中所述, AppSpec文件用于将每个部署作为一系列部署生命周期事件进行管理:
- 在部署步骤期间,AWS CodeDeploy代理将在AppSpec文件的钩子部分中查找当前事件的名称。 [...]如果 该事件可在钩子部分找到,AWS CodeDeploy Agent将 检索要为当前步骤执行的脚本列表。 [...]
例如,请参阅提供的AppSpec file Example(纯粹为了说明,您需要制作适合您应用的自定义版本):
os: linux
files:
- source: Config/config.txt
destination: webapps/Config
- source: source
destination: /webapps/myApp
hooks:
BeforeInstall:
- location: Scripts/UnzipResourceBundle.sh
- location: Scripts/UnzipDataBundle.sh
AfterInstall:
- location: Scripts/RunResourceTests.sh
timeout: 180
ApplicationStart:
- location: Scripts/RunFunctionalTests.sh
timeout: 3600
ValidateService:
- location: Scripts/MonitorService.sh
timeout: 3600
runas: codedeployuser
如果没有这样的ApplicationStart
命令,AWS CodeDeploy就没有任何关于如何处理您的应用程序的说明(请记住,CodeDeploy与技术无关,因此需要建议如何启动应用服务器)。 / p>
<{3}} 中的部署概述部分说明了典型AWS CodeDeploy部署的流程:
关于您的问题的关键方面是第4步:
- 最后,每个参与实例上的AWS CodeDeploy代理从指定的Amazon S3存储桶或GitHub中提取修订版本 存储库并开始将内容部署到该实例, 按照AppSpec文件中提供的说明进行操作。 [强调我的]
醇>
也就是说,一旦你开始部署,一切都应该自动运行 - 因此,似乎配置不太正确,最常见的问题是部署组实际上不包含任何运行实例。您是否已验证可以通过AWS管理控制台从CodeDeploy部署到EC2实例?
答案 1 :(得分:0)
如果您登录AWS CodeDeploy控制台的“部署”列表,您会看到什么?
https://console.aws.amazon.com/codedeploy/home?region=us-east-1#/deployments
(相应地更改区域)
此外,代码将在/opt/codedeploy-agent/deployment-root/<agent-id?>/<deployment-id>/deployment-archive
/opt/codedeploy-agent/deployment-root/<agent-id?>/<deployment-id>/logs/scripts.logs
确保代理具有从S3存储桶下载版本的连接和权限。这意味着在实例中使用互联网连接和/或使用代理(设置http_proxy以便code_deploy使用它),并在实例中设置具有读取S3存储桶权限的IAM配置文件。
检查codedeploy代理的日志以查看它是否成功连接:/var/log/aws/codedeploy-agent/codedeploy-agent.log
答案 2 :(得分:0)
您需要在代码部署中创建部署,然后使用代码depoy中的下拉箭头和S3存储桶URL部署新修订。但它需要是zip / tar.gz / tar