在非根上下文中运行linux AWS CodeDeploy代理时出现问题
我正在使用AWS CodeDeploy将代码部署到我们的AWS Amazon Linux实例。我遵循这篇知识库文章,让代理在ec2用户上下文中执行,而不是在根用户上下文中执行 在进行更改之前,yml文件中的脚本按预期执行(但我们需要在非根上下文中执行该脚本),并且设置appspec.yml文件的runas:部分似乎没有按预期在ec2用户上下文中执行该脚本 appspec.yml:在非根上下文中运行linux AWS CodeDeploy代理时出现问题,linux,amazon-ec2,aws-code-deploy,Linux,Amazon Ec2,Aws Code Deploy,我正在使用AWS CodeDeploy将代码部署到我们的AWS Amazon Linux实例。我遵循这篇知识库文章,让代理在ec2用户上下文中执行,而不是在根用户上下文中执行 在进行更改之前,yml文件中的脚本按预期执行(但我们需要在非根上下文中执行该脚本),并且设置appspec.yml文件的runas:部分似乎没有按预期在ec2用户上下文中执行该脚本 appspec.yml: version: 0.0 os: linux files: - source: / destinatio
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用户上下文中实际运行。您可能正在以非root用户的身份运行AWS CodeDeploy代理。只有root用户才能在
AfterInstall
hook中拥有runas
用户,因为没有密码验证,任何其他用户帐户都不能运行替代用户“su”命令
查看AWS的appspec用户指南中“runas”的详细信息:
runas可选。运行脚本时要模拟的用户。通过
默认情况下,这是在实例上运行的AWS CodeDeploy代理。自动气象站
CodeDeploy不存储密码,因此无法访问用户
如果运行方式用户需要密码,则模拟。这一要素适用
仅适用于Amazon Linux和Ubuntu服务器实例
如果您已经以
ec2用户的身份运行CodeDeploy代理
,那么您不需要在AfterInstall
钩子中提供runas
元素。如果您使用SDK触发CodeDeploy,这里有一个参数:ignoreApplicationStopFailures:true
请看:就是这样!我没有想到在更换代理后删除runas。一旦我在appspec中删除了runas语句,它就按预期工作了。非常感谢你,