루트 프로파일 이외의 사용자 프로파일을 사용하여 CodeDeploy 에이전트를 실행하려면 어떻게 해야 하나요?

최종 업데이트 날짜:2022년 2월 7일

루트 프로파일 이외의 사용자 프로파일로 AWS CodeDeploy 에이전트를 실행하고 싶습니다. 어떻게 설정해야 하나요?

간략한 설명

루트 프로파일 이외의 사용자 프로파일로 CodeDeploy 에이전트를 실행하려면 다음을 수행합니다.

1.    (사전 요구 사항) Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 CodeDeploy 에이전트가 설치되어 있는지 확인합니다.

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가 더 이상 새로운 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.    탐색 창에서 [Launch Configurations]를 선택합니다.

3.    [Create launch configuration]을 선택합니다.

4.    Amazon Linux AMI를 선택합니다.

5.    [Next: Configure details]를 선택합니다.

6.    IAM 역할의 경우 사전 구성된 AWS Identity and Access Management(IAM) 역할을 선택합니다. 역할은 Amazon Simple Storage Service(Amazon S3) 리소스에 액세스할 수 있는 권한을 EC2 인스턴스에 부여해야 합니다.

7.    [Advanced Details]를 선택합니다.

8.    에이전트 구성 파일의 [User data] 섹션에 명령을 입력하여 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의 나머지 단계를 완료합니다. [Create launch configuration]을 선택합니다.

10.    [Create an Auto Scaling group using this launch configuration]을 선택합니다.

11.    [Group name]에 Auto Scaling 그룹의 이름을 입력합니다.

12.    [Subnet]에 인스턴스가 인터넷에 액세스할 수 있는 서브넷을 입력합니다.

13.    다음: 조정 정책을 구성합니다. 그런 다음 필요에 따라 정책을 선택합니다.

14.    Launch Wizard의 나머지 단계를 완료합니다. 그런 다음 [Create Auto Scaling Group] 을 선택합니다.

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 ####

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?