【发布时间】:2026-02-02 09:35:01
【问题描述】:
我正在使用 AWS CodeDeploy 将代码部署到我们的 AWS Amazon Linux 实例。我按照这篇知识库文章https://aws.amazon.com/premiumsupport/knowledge-center/codedeploy-agent-non-root-profile/ 让代理在 ec2-user 上下文而不是 root 中执行
在进行更改之前,yml 文件中的脚本按预期执行(但我们需要脚本在非 root 上下文中执行)并设置 runas:appspec.yml 文件的一部分似乎没有执行脚本预期的 ec2-user 上下文
appspec.yml:
version: 0.0
os: linux
files:
- source: /
destination: /home/ec2-user/veddor/api
owner: ec2-user
hooks:
AfterInstall:
- location: deploy/script/deploy-veddor-api.sh
timeout: 300
runas: ec2-user
由于进行了更改,现在会显示此错误,而不是执行 appspec 文件中指定的脚本
LifecycleEvent - AfterInstall
Script - deploy/script/deploy-veddor-api.sh
[stderr]Password: su: Authentication failure
deploy-veddor-api.sh 的内容
cp /home/ec2-user/veddor/api/deploy/config/Config-roddev.php /home/ec2-user/veddor/api/app/config/Config.php
cd /home/ec2-user/veddor/api
chmod +x ./composer.phar
php ./composer.phar install
我正在寻求帮助以弄清楚我需要做什么才能让脚本 deploy-veddor-api.sh 在 ec2-user 上下文中实际运行。
【问题讨论】:
标签: linux amazon-ec2 aws-code-deploy