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

3 分钟阅读
0

我想要使用不属于根配置文件的用户配置文件运行 AWS CodeDeploy 代理程序。

简短描述

若使用不属于根配置文件的用户配置文件来运行 CodeDeploy 代理,请执行以下操作:

1.    (先决条件)确认 CodeDeploy 代理安装在您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上。

2.    在 CodeDeploy 代理配置文件中更改用户,并向用户授予所需的权限。

3.    创建 Amazon EC2 启动配置模板和 Auto Scaling 组以自动执行用户更改流程。

4.    通过验证 CodeDeploy 代理是否已在您的 Amazon EC2 实例上安装和运行正确的用户来测试设置。

**请注意:**这些步骤适用于使用 Amazon Linux 1 或 Amazon Linux 2 Amazon Machine Image (AMI) 的实例。但是,Amazon Linux 1 AMI 处于维护支持状态。在这种状态下,AMI 仅接收一组精简升级包的关键和重要安全更新。AMI 也无法再保证 AMI 支持新的 EC2 平台功能或新的 AWS 功能。

解决方法

**请注意:**如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

(先决条件)确认 CodeDeploy 代理安装在您的 Amazon EC2 实例上

按照 CodeDeploy 用户指南中验证 CodeDeploy 代理是否正在运行中的说明进行操作。

有关如何安装 CodeDeploy 代理的说明,请参阅安装 CodeDeploy 代理

在 CodeDeploy 代理配置文件中更改用户,并授予用户所需的权限

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

2.    通过运行以下命令停止安装在实例上的 CodeDeploy 主机代理:

sudo service codedeploy-agent stop

3.    通过运行以下 sed 流编辑器命令,在 CodeDeploy 代理配置文件中更改用户:

**重要提示:**请将 ec2-user 替换为您想要 CodeDeploy 主机代理在其上运行的用户名称。

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

4.    通过运行以下两个命令,授予新用户对所需目录的权限:

**重要提示:**请将 ec2-user 替换为您想要 CodeDeploy 主机代理在其上运行的用户名称。

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

创建 Amazon EC2 启动配置模板和 Auto Scaling 组以自动执行用户更改流程

要确认启动新实例时是否已安装并使用正确的用户运行 CodeDeploy 代理,请执行以下操作:

1.    打开 Amazon EC2 控制台

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

3.    选择创建启动配置

4.    选择 Amazon Linux AMI。

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

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

7.    选择高级详细信息

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

代理配置文件示例

**重要提示:**请将 ec2-user 替换为您想要 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

9.    根据需要完成 AWS Launch Wizard 中的其余步骤。之后,选择创建启动配置

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

11.    在组名称中,输入您的 Auto Scaling 组的名称。

12.    在子网中,输入允许您的实例访问互联网的子网。

13.    选择下一步:配置扩缩策略。然后,根据您的需求选择策略。

14.    完成 Launch Wizard 中的其余步骤。然后,选择创建 Auto Scaling 组

通过验证 CodeDeploy 代理是否已在新的 Amazon EC2 实例上安装和运行正确的用户来测试设置

确认您的 Amazon EC2 实例是否正在运行。然后执行以下操作:

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

2.    通过运行以下命令验证 CodeDeploy 代理是否正在 Amazon EC2 实例上运行:

sudo service codedeploy-agent status

3.    运行以下命令,验证 CodeDeploy 代理是否以正确的用户名运行:

ps aux | grep codedeploy-agent

成功的命令输出示例

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

AWS 官方
AWS 官方已更新 2 年前