amazon-web-services - 解密 AWS CodeDeploy 的配置和 appspec 路径
问题描述
我有一个 appspec.yml 文件位于从 CodeCommit 部署的修订(工件)的根目录中:
version: 0.0
os: linux
files:
- source: /
destination: /home/ec2-user/app/aws
file_exists_behavior: OVERWRITE
hooks:
ApplicationStart:
- location: /home/ec2-user/app/aws/update_wheel.sh
timeout: 300
runas: root
我更改了codedeployagent.yml
我的 ec2 实例(为了处理这个问题;:root_dir:
手动更改不是一个理想的解决方案,即使它可以工作):
/etc/codedeploy-agent/conf/codedeployagent.yml
---
:log_aws_wire: false
:log_dir: '/var/log/aws/codedeploy-agent/'
:pid_dir: '/opt/codedeploy-agent/state/.pid/'
:program_name: codedeploy-agent
:root_dir: '/home/ec2-user/'
:verbose: false
:wait_between_runs: 1
:proxy_uri:
:max_revisions: 2
但我仍然收到这样的错误:
/home/ec2-user/app/aws/update_wheel.sh
Script does not exist at specified location: /home/ec2-user/xxxxxx-cb84-4ef6-966b-xxxxxxxxx/d-xxxxx/deployment-archive/home/ec2-user/app/aws/update_wheel.sh
我真的不明白为什么我要复制files
到 adestination
然后不希望使用这些文件,或者为什么我不应该期望那些(shell 脚本)文件使用它们的原始路径。destination
我应该复制什么source
files
,为什么我不能hooks
期待:root_dir
我在 codeagent 配置中设置的?
解决方案
location
始终与您的捆绑有关:
. 修订版本的脚本文件包中的位置。您在 hooks 部分中指定的脚本位置相对于应用程序修订包的根目录。
由于您将其更改为root_dir: '/home/ec2-user/'
所有部署都将存储在该文件夹中。这需要使用特定于 CodeDeploy 的值Deployment ID
。Execution ID
因此,您仍然应该只使用包的相对路径。您可以尝试:
location: run_in_home_folder.sh
run_in_home_folder.sh
在哪里
#!/bin/bash
cd /home/ec2-user/app/aws && sh ./update_wheel.sh
推荐阅读
- python - 如何将屏幕平均分成4个部分?
- css - CSS class last-of-type child 到另一种颜色
- python - 如何在我的不和谐脚本中添加真假?
- jquery - 带有 Foundation 6 css 框架的 Codeigniter 3 样式表切换器
- php - 使用 PHP PDO 更新项目数量的 SQL 查询
- twilio - 我的 Twilio 功能是否适合根据星期几和一天中的时间路由呼叫?
- wordpress - “普通”永久链接选项未重定向到 Wordpress 中的 Pretty Links 插件
- powerbi - DAX 拆分字符串并复制到新列
- node.js - Bcryptjs比较方法总是返回false?
- python - 在 matplotlib 轴上格式化日期时间以获得小时和分钟的问题