问题标签 [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.
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 文件中的路径。
有人可以帮忙吗?这是正确的吗?我必须在脚本文件中使用硬编码的绝对路径?
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,但我仍然得到同样的错误。
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 管道?
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 文件:
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”的各种帖子,但仍然没有任何效果。
有什么明显的尝试吗?
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 不应该涵盖该部分吗?
谢谢。
amazon-web-services - 从 s3 到 windows 服务器的 AWS 代码部署 EC2/本地 yml 文件错误
我从 2 天以来一直在苦苦挣扎,但我找不到正确的答案,而且在谷歌中也没有我可以解决错误的参考。
- 我做了什么我在aws code deploy中创建了部署,与awscodeeployrole具有附加角色,
- 从应用程序创建 zip
- 创建 Appspec.yml 文件如下
我上传了包含 appspec 文件的 zip 文件,并进行部署时出现以下错误
部署失败,因为在应用程序规范文件中输入了无效的版本值 (0.0)。确保您的 AppSpec 文件将“0.0”指定为版本,然后重试。
在谷歌上我发现了这个 stackoverflow 问题 AWS CodeDeploy ymal 文件错误
我也尝试更改编码,但没有运气。我不知道我错过了什么
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:在“初始化”中
amazon-web-services - 亚马逊EC2 | CodeDeploy [React] - 部署成功但未填充构建文件夹
TL;DRnpm run build
当我尝试通过创建 SSH 显式运行该命令时,该命令将永远在 Amazon EC2 [Ubuntu] 实例上运行。同时,当我尝试使用 CodeDeploy 创建部署时,部署需要 1 小时的时间并成功,但构建文件夹没有被填充,因此我无法在 EC2 实例的公共 URL 上查看我的网站。此外,每次我尝试显式运行命令后,实例可达性检查都会失败,然后我必须再次启动然后停止 ec2 实例!纬!
大家好,我正在尝试将我的 MERN Stack 应用程序部署到 AWS,但我现在卡住了!
现在的进展:
- 添加了两个 Nginx 配置。[下图] Nginx 正在运行,没有问题!
- 在根目录的 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
有问题!
为了支持我的问题,我非常乐意分享任何进一步的细节/截图。请过来问问。
提前致谢!