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

최종 업데이트 날짜: 2019년 2월 26일

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

간략한 설명

시작하기 전에, Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 CodeDeploy 에이전트가 설치되어 있는지 확인하십시오.

다음 단계는 Amazon Linux 1 또는 Amazon Linux 2 Amazon 머신 이미지(AMI)를 사용하는 인스턴스에 적용됩니다.

해결 방법

사용자를 변경하고 에이전트를 실행할 사용자의 권한 설정

1.    SSH를 사용하여 인스턴스에 연결합니다.

2.    다음 명령을 실행하여 CodeDeploy 호스트 에이전트를 중지합니다.

sudo service codedeploy-agent stop

3.    sed 스트림 편집기 명령을 실행하여 CodeDeploy 에이전트 구성 파일을 수정합니다.

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

중요: Amazon Linux 2 AMI의 경우 다음 추가 명령을 실행합니다.

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

참고: 이전 명령에서 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.    탐색 창에서 [Launch Configurations]를 선택합니다.

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

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

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

6.    [IAM role]에서 Amazon EC2 인스턴스에 Amazon Simple Storage Service(Amazon S3) 리소스 액세스 권한을 부여하도록 사전 구성된 IAM 역할을 선택합니다.

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

8.    에이전트 구성 파일의 [User data] 섹션에서 명령을 입력하여 CodeDeploy 에이전트를 설치하고 특정 사용자를 사용하도록 파일을 업데이트합니다. 다음 예제를 참조하십시오.

#!/bin/bash
yum -y update
yum install -y ruby aws-cli -y
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
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
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.    필요에 따라 시작 마법사의 나머지 단계를 완료한 후 [Create launch configuration]을 선택합니다.

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

11.    다음을 수행합니다.
[Group name]에 Auto Scaling 그룹의 이름을 입력합니다.
[Subnet]에 인스턴스가 인터넷에 액세스할 수 있는 서브넷을 입력합니다.

12.    [Next: Configure scaling policies]를 선택한 다음 요구 사항에 따라 정책을 선택합니다.

13    시작 마법사의 나머지 단계를 완료한 후 [Create Auto Scaling Group]을 선택합니다.

CodeDeploy 에이전트가 사용자 변경 프로세스를 자동화하도록 생성한 인스턴스에서 실행 중인지 확인

인스턴스가 실행 중인지 확인한 후 다음 단계를 수행합니다.

1.    SSH를 사용하여 인스턴스에 연결합니다.

2.    다음 명령을 실행합니다.

sudo service codedeploy-agent status

3.    다음 명령을 실행하여 올바른 사용자 이름이 사용되는지 확인합니다.

ps aux | grep codedeploy-agent

CodeDeploy 에이전트가 실행 중인 경우 다음과 유사한 출력이 표시됩니다.

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

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?