问题标签 [aws-code-deploy-appspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1702 浏览

amazon-web-services - CodeDeploy 挂钩代理安装文件夹中的运行脚本

所以,我正在设置我的第一个使用 CodeDeploy (EC2 + S3) 的应用程序,我很难弄清楚如何在安装后运行脚本。

因此,我在 AppSpec 文件中定义了一个 AfterInstall 挂钩,该挂钩引用了项目目录中的 bash 脚本文件。当脚本中的命令运行时,我收到错误消息,指出找不到文件。所以我ls在这一切之前放了一个命令并检查了日志。

我的脚本文件在 CodeDeploy 代理文件夹中运行。我在测试时不小心创建了许多文件,但我希望它们位于我的项目根文件夹中。

应用规范.yml

初始化文件

所以当ls执行时,它不会列出我的项目根目录中的文件。我也尝试了 ${PWD} 而不是 ./ 但它没有用。它将脚本文件复制到代理文件夹并运行它。

请参阅此https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html

这是写在上述文件的末尾

您在“钩子”部分中指定的脚本位置是相对于应用程序修订包的根目录的。在前面的示例中,名为 RunResourceTests.sh 的文件位于名为 Scripts 的目录中。Scripts 目录位于包的根级别。

但显然它仅指 appspec 文件中的路径。

有人可以帮忙吗?这是正确的吗?我必须在脚本文件中使用硬编码的绝对路径?

0 投票
1 回答
511 浏览

aws-lambda - AWS:帮助在 Codepipeline 中设置 CodeDeploy

看起来不可能让 Codedeploy 在带有 CodeBuild 的 CodePipeline 项目中工作。

首先,我设置了一个具有 3 个阶段的管道:Source、Build 和 Deploy,前 2 个阶段运行良好,但第 3 个阶段(CodeDeploy)抛出此错误: 在此处输入图像描述

CodeBuild 将输出项目推送到 .zip 文件中的 s3,CodeDeploy 不支持这种方式。

为此,我尝试在 CodeBuild 和 CodeDeploy 之间设置一个 Lambda 函数,如下所示:(Source -> CodeBuild -> Invoke Lambda -> CodeDeploy),Lambda 函数将 appspec.yml 文件上传到 s3 并调用 putJobSuccessResult,但我仍然得到同样的错误。

0 投票
2 回答
815 浏览

amazon-web-services - AWS CodePipline (CI/CD) 用于更新现有 AWS Lambda 的代码(不是使用 CloudFormation 或 SAM 创建的)

我需要构建一个 CI/CD 管道来更新使用控制台创建的现有 Lambda 函数的代码。创建一个新的不是一种选择!

我在部署阶段使用 CloudFormation 成功部署了代码,但是它只能更新使用 CloudFormation/SAM 创建的 Lambda 函数的代码。当我在 template.yaml 文件中指定 Lambda 的名称和现有 Lambda 时,它会尝试创建它并告诉我它已经存在!

我尝试的第二种方法是使用 CodeDeploy 进行部署,但出现此错误:-“BundleType must be either YAML or JSON”

该线程提供了解决此问题的方法,但我无法将其应用于我的案例: CodePipeline: CodeDeploy 报告“BundleType must be either YAML or JSON”

是否有任何其他方法可以制作仅更新 Lambda 函数代码的适当 CI/CD 管道?

0 投票
1 回答
999 浏览

aws-code-deploy - appspec.yml 无法运行脚本

我无法为我的 node.js 项目运行 appspec.yml 文件中提到的脚本。也为 runas 用户提供了执行权限。此外,将 runas 更改为 ec2-user 也无济于事,因为脚本仅以 root 用户运行。Codedeploy 能够在我的 ec2 服务器上的指定位置部署工件而不会出现任何错误。有人可以帮我解决这个问题。(之后想用 Beanstalk 试试,但这也需要 appspec.yml 文件才能工作!!)

appspec.yml 文件

UnzipResourceBundle 文件位置和权限(在 codedeploy 代理部署文件夹中):

解压缩ResourceBundle.sh 文件:

0 投票
2 回答
661 浏览

amazon-web-services - CodeDeploy 管道未找到 AppSpec.yml - 但显然可用

几个月前我已经运行过这个程序,所以我知道它可以工作,但是我创建了一个新的 EC2 实例来部署我的代码并陷入了第一个障碍。

我的部署详细信息运行如下:

  • 应用程序停止 - 成功
  • 下载捆绑包 - 成功
  • 安装前 - 失败

在查看失败的事件后,我得到:

CodeDeploy 代理未在版本相对路径“appspec.yml”的解压缩版本目录中找到 AppSpec 文件。修订版被解压到目录“C:\ProgramData/Amazon/CodeDeploy/57f7ec1b-0452-444e-840c-4deb4566e82d/d-WH9HTZAW0/deployment-archive”,AppSpec 文件是预期的,但在路径“C:\ ProgramData/Amazon/CodeDeploy/57f7ec1b-0452-444e-840c-4deb4566e82d/d-WH9HTZAW0/deployment-archive/appspec.yml”。有关更多信息,请参阅 AWS CodeDeploy Appspec 文档,网址为http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html

问题是,如果我跳到我的 EC2 并复制并粘贴完整路径,果然我看到了 YML 文件,以及我的 S3 存储桶中 ZIP 文件中的文件,因此它们已成功发送到 EC2并解压缩。

所以我确定这不是权限问题,连接已经很清楚了,S3 Bucket、CodeDeploy 和我的 EC2 都很开心。

我在 StackOverflow 上阅读了有关将 AppSpec.yml 文件更改为“appspec.yml”、“AppSpec.yaml”、“appspec.yaml”的各种帖子,但仍然没有任何效果。

有什么明显的尝试吗?

0 投票
1 回答
580 浏览

aws-code-deploy - AWS CodeBuild 和 CodeDeploy 上的 Lerna 未安装本地依赖项

所以我有一个名为 backend 的 Typescript 项目,在它的 package.json 中有这样的依赖:

助手(也是 Typescript)位于另一个文件夹中,其 package.json 如下所示:

因此,运行lerna bootstrap应该将两者链接起来,并将 @the-couple-game/helpers 安装在后端的 node_modules 中,它在本地执行。

但是,使用以下 buildspec.yml 使用 Codebuild 执行相同操作(使用 --no-ci,因为我不想要 npm ci)不会在后端的 node_modules 中添加 @the-couple-game/helpers。因此,如果我运行后端的转译 index.js,它会抱怨缺少模块。

现在,我不得不在部署到 CodeDeploy 之后手动执行 lerna 引导(使用从 appspec.yml 调用的脚本),以便它安装缺少的模块,但 Codebuild 不应该涵盖该部分吗?

谢谢。

0 投票
1 回答
455 浏览

amazon-web-services - AWS CodeDeploy - “在不期望的地方找到列表的开始”

我正在尝试使用 AWS CodePipeline 和 AWS CodeDeploy 在 ECS 上进行部署,我看到以下错误消息:

在此处输入图像描述

buildspec.yml 是

appspec.yaml 是

我对误导性错误消息感到困惑,谢谢!

0 投票
1 回答
267 浏览

amazon-web-services - 从 s3 到 windows 服务器的 AWS 代码部署 EC2/本地 yml 文件错误

我从 2 天以来一直在苦苦挣扎,但我找不到正确的答案,而且在谷歌中也没有我可以解决错误的参考。

  1. 我做了什么我在aws code deploy中创建了部署,与awscodeeployrole具有附加角色,
  2. 从应用程序创建 zip
  3. 创建 Appspec.yml 文件如下

我上传了包含 appspec 文件的 zip 文件,并进行部署时出现以下错误

部署失败,因为在应用程序规范文件中输入了无效的版本值 (0.0)。确保您的 AppSpec 文件将“0.0”指定为版本,然后重试。

在谷歌上我发现了这个 stackoverflow 问题 AWS CodeDeploy ymal 文件错误

我也尝试更改编码,但没有运气。我不知道我错过了什么

0 投票
1 回答
176 浏览

aws-code-deploy - AWS Code Deploy 问题服务:启动或运行期间出错:Net in Server 2016 AMI

错误: - 代码部署实例代理服务:启动或运行期间出错:Net::OpenTimeout - 执行已过期 - C:/Windows/TEMP/ocr424E.tmp/lib/ruby/2.3.0/net/http.rb:880:在“初始化”中

0 投票
1 回答
534 浏览

amazon-web-services - 亚马逊EC2 | CodeDeploy [React] - 部署成功但未填充构建文件夹

TL;DRnpm run build当我尝试通过创建 SSH 显式运行该命令时,该命令将永远在 Amazon EC2 [Ubuntu] 实例上运行。同时,当我尝试使用 CodeDeploy 创建部署时,部署需要 1 小时的时间并成功,但构建文件夹没有被填充,因此我无法在 EC2 实例的公共 URL 上查看我的网站。此外,每次我尝试显式运行命令后,实例可达性检查都会失败,然后我必须再次启动然后停止 ec2 实例!纬!


大家好,我正在尝试将我的 MERN Stack 应用程序部署到 AWS,但我现在卡住了!

现在的进展:

  1. 添加了两个 Nginx 配置。[下图] Nginx 正在运行,没有问题!
  2. 在根目录的 appspec.yml 中添加了 build-app.sh。[查看下面的代码]

应用规范.yml

使用上面的 appspec.yml 文件,使用 CodeDeploy 的部署成功,但没有填充/home/badlav-app/badlav-client/build. 所以我尝试自己调试,并在 SSH(ing :P) 进入 EC2 实例后开始自己一个一个地运行命令。但是当我到达时npm run build,实例就永远挂起。筋疲力尽后,我别无选择,我终止了任务。现在,当我在 AWS 控制台上查看我的实例时,它已经发疯了!实例可达性检查失败!恢复我的实例的唯一方法是停止它并重新启动它。

由于我是 CI/CD 新手,请不要评判我的appspec.yml. 如果你们中的任何人都可以提出更好的方法,那就太好了,谢谢!:)

总而言之,我希望能够使用 AWS CodeDeploy 创建部署,但由于这npm run build需要花费大量时间并且挂起我的服务器(实例到达检查失败!),我无法这样做。而且,我什至不确定是否npm run build有问题!

为了支持我的问题,我非常乐意分享任何进一步的细节/截图。请过来问问。

提前致谢!

/etc/nginx/nginx.conf 在此处输入图像描述/etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf