如何使用不属于根配置文件的用户配置文件运行 CodeDeploy 代理?

上次更新时间:2019 年 11 月 19 日

如何使用不属于根配置文件的用户配置文件运行 AWS CodeDeploy 代理?

解决方法

您可以通过设置用户权限,自动化用户更改过程,然后确认该过程,以便使用用户配置资料运行代理。

在开始之前,确认 CodeDeploy 代理安装在您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上。

注:以下步骤适用于使用 Amazon Linux 1 或 Amazon Linux 2 Amazon 系统映像 (AMI) 的实例。

更改用户并为代理运行所在的用户设置权限

1.    使用 SSH 连接到您的实例

2.    要停止 CodeDeploy 主机代理,请运行以下命令:

sudo service codedeploy-agent stop

3.    要修改 CodeDeploy 代理配置文件,请运行 sed stream editor 命令:

sudo sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent

重要提示:对于 Amazon Linux 2 AMI,运行这些附加命令:

sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
sudo systemctl daemon-reload

注:在前述命令中,将 ec2-user 替换为您希望 CodeDeploy 主机代理运行所在的用户名称。

4.    要向用户授予必要的目录权限,请运行以下命令:

sudo chown ec2-user:ec2-user -R /opt/codedeploy-agent/
sudo chown ec2-user:ec2-user -R /var/log/aws/

5.    要重启 CodeDeploy 代理并确认您已成功更新配置文件,请运行以下命令:

sudo service codedeploy-agent start
sudo service codedeploy-agent status

如果更新成功,您会收到以下类似输出:

The AWS CodeDeploy agent is running as PID ####

6.    要查看哪些进程正在运行,哪些用户正在运行这些过程,请运行以下命令:

ps aux | grep codedeploy-agent

自动化用户更改过程

要确认 CodeDeploy 代理已安装并在启动新实例时(例如,扩展事件期间)使用正确的用户运行,请完成以下步骤以自动化用户更改过程:

1.    打开 Amazon EC2 控制台

2.    在导航窗格上,选择启动配置

3.    选择创建启动配置

4.    选择 Amazon Linux AMI。

5.    选择下一步:配置详细信息

6.    对于 IAM 角色,选择授权您的 EC2 实例访问 Amazon Simple Storage Service (Amazon S3) 资源的预配置 AWS Identity and Access Management (IAM) 角色。

7.    选择高级详细信息

8.    在代理配置文件的用户数据部分中,输入安装 CodeDeploy 代理的命令。然后,更新文件以使用特定的用户。请参阅以下示例:

#!/bin/bash
REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//')
yum -y update
yum install ruby wget -y
cd /home/ec2-user
wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto
service codedeploy-agent stop
#adduser username <--- this is only required if you use a username that does not already exist
sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
#sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service  <--- Uncomment this line for Amazon Linux 2
systemctl daemon-reload
chown ec2-user:ec2-user -R /opt/codedeploy-agent/
chown ec2-user:ec2-user -R /var/log/aws/
service codedeploy-agent start

注:请将 ec2-user 替换为您希望 CodeDeploy 主机代理运行所在的用户名称。当使用此启动配置的新实例启动时,前述代码将自动执行。

9.    根据需要完成启动向导中的剩余步骤,然后选择创建启动配置

10.    选择使用此启动配置创建 Auto Scaling 组

11.    完成以下内容:
组名称中,输入您的 Auto Scaling 组的名称。
子网中,输入允许您的实例访问互联网的子网。

12.    选择下一步:配置扩展策略,然后根据您的需要选择一个策略。

13.    完成启动向导中剩余的步骤,然后选择创建 Auto Scaling 组

确认 CodeDeploy 代理在您创建的实例上运行,以自动化用户更改过程

确认您的实例正在运行,然后完成以下步骤:

1.    使用 SSH 连接到您的实例

2.    运行以下命令:

sudo service codedeploy-agent status

3.    要确认使用正确的用户名,请运行以下命令:

ps aux | grep codedeploy-agent

如果 CodeDeploy 代理正在运行,您会收到以下类似输出:

The AWS CodeDeploy agent is running as PID ####

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?