1



我们开发了一个 NodeJS 应用程序,我们希望在亚马逊云中启动它们。我们在其他 Atlassian 应用程序中集成了“Bamboo”。Bamboo 将构建文件从 Amazon 传输到 S3 存储桶。问题是:如何将应用程序从 S3 移动并启动到 EC2 实例?

您可以在附件中找到我的 appspec.yml,并且在我的构建目录中有以下文件:
- 客户端 | index.html 等文件
- 服务器 | server.js 和 socketio.js 之类的文件
- appspec.yml
- 自述



文件 有人知道吗?我希望它包含您需要的所有重要信息。

谢谢 :D


附件

version: 1.0
os: linux
files:
  - source: /
    destination: /

4

3 回答 3

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 存储桶下载版本的连接和权限。这意味着在实例中具有 Internet 连接和/或使用代理(设置 http_proxy 以便 code_deploy 使用它),并在实例中设置具有读取 S3 存储桶的权限的 IAM 配置文件。

检查 codedeploy 代理的日志以查看它是否连接成功:/var/log/aws/codedeploy-agent/codedeploy-agent.log

于 2015-08-31T20:35:57.403 回答
0

您需要在代码部署中创建部署,然后使用代码部署中的下拉箭头和您的 S3 存储桶 URL 部署新修订。但是它必须是 zip/tar.gz/tar

于 2015-12-17T19:14:07.803 回答
0

更新

我刚刚意识到,您appspec.yml似乎缺少部署 Node.js 应用程序(以及大多数其他应用程序)的关键部分,即该hooks部分。如AWS CodeDeploy 应用程序规范文件所述,AppSpec 文件用于将每个部署作为一系列部署生命周期事件进行管理

  • 在部署步骤期间,AWS CodeDeploy 代理将在 AppSpec 文件的挂钩部分中查找当前事件的名称。[...] 如果在 hooks 部分找到事件,AWS CodeDeploy 代理将检索要为当前步骤执行的脚本列表。[...]

例如,请参阅提供的AppSpec 文件示例(纯粹是为了说明,您需要制作一个适合您的应用的自定义文件):

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 与技术无关,因此需要告知如何启动应用程序服务器)。


初步答案

什么是AWS CodeDeploy 说明了典型 AWS CodeDeploy 部署的流程

在此处输入图像描述

关于您的问题的关键方面是第 4 步:

  1. 最后,每个参与实例上的 AWS CodeDeploy 代理从指定的 Amazon S3 存储桶或 GitHub 存储库中提取修订,并按照提供的 AppSpec 文件中的说明开始将内容部署到该实例。[强调我的]

也就是说,一旦您开始了AWS CodeDeploy部署,一切都应该自动运行 - 因此,某些配置似乎不太正确,最常见的问题是部署组实际上还没有包含任何正在运行的实例。您是否已验证您可以通过 AWS 管理控制台从 CodeDeploy 部署到您的 EC2 实例?

于 2015-08-26T00:25:19.633 回答