스크롤

EC2 인스턴스에서 원격으로 명령 실행

AWS Systems Manager 사용

이 실습 자습서에서는 Amazon EC2 인스턴스에서 AWS Systems Manager를 사용하여 원격으로 명령을 실행하는 방법에 대해 알아봅니다. Systems Manager는 운영 통찰력을 확보하고, 안전하게 대규모로 AWS 리소스에 대한 조치를 취할 수 있는 관리 도구입니다. Systems Manager의 자동화 기능 중 하나인 실행 명령을 사용하면 배스천 호스트, SSH 또는 원격 PowerShell을 사용할 필요가 없어지므로 관리 태스크를 간소화할 수 있습니다.

예시 시나리오에서 시스템 관리자는 EC2 인스턴스에서 패키지를 업데이트해야 합니다. 일반적으로 간단한 이 관리 태스크를 복잡하게 만들기 위해, 보안 팀은 시스템 관리자가 SSH를 통해 프로덕션 서버에 직접 액세스하거나 배스천 호스트를 사용하는 것을 허용하지 않습니다. 다행히도 Systems Manager를 사용하면 EC2 인스턴스에서 패키지 업데이트 같은 명령을 원격으로 실행할 수 있습니다.

이 까다로운 시나리오를 해결하려면 인스턴스의 에이전트가 Systems Manager와 통신하도록 지원하는 Identity and Access Management(IAM) 역할을 생성한 다음, AWS-UpdateSSMAgent 문서를 실행하여 모범 사례에 따라 Systems Manager 에이전트를 업그레이드합니다. 그리고 마지막으로, Systems Manager를 사용하여 인스턴스에서 명령을 실행합니다.

AWS Systems Manager는 항상 프리 티어 제품입니다. 이 자습서에서 생성하는 EC2 인스턴스는 프리 티어에 해당합니다.

AWS Management Console을 엽니다. 이 단계별 안내서는 계속 열어 놓을 수 있습니다. 이 화면이 로드되면 먼저 사용자 이름 및 암호를 입력하여 시작합니다.  

이 자습서를 사용하려면 AWS 계정이 필요합니다.

AWS Systems Manager는 항상 프리 티어 제품입니다.

AWS 프리 티어 세부 정보 보기 »


1단계. Identity and Access Management(IAM) 역할 생성

이 단계에서는 Systems Manager 권한을 제공하여 인스턴스에서 작업을 수행하는 데 사용되는 IAM 역할을 생성합니다.


a.  https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

remotely-run-commands-ec2-instance-systems-manager-1a

(확대하려면 클릭)


b.  왼쪽 탐색 창에서 [Roles]를 선택한 후 [Create role]을 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-1b

(확대하려면 클릭)


c.  Select type of trusted entity 페이지의 AWS Service 아래에서 EC2를 선택한 다음 Next: Permissions를 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-1c

(확대하려면 클릭)


d.  Attached permissions policy 페이지의 검색 창에 AmazonEC2RoleforSSM을 입력한 다음, 정책 목록에서 AmazonEC2RoleforSSM을 선택하고 Next: Review를 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-1d

(확대하려면 클릭)


e.  Review 페이지의 Role name 상자에 EnablesEC2ToAccessSystemsManagerRole을 입력합니다. Role description 상자에 Enables an EC2 instance to access Systems Manager를 입력합니다. [Create role]을 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-1e

(확대하려면 클릭)


2단계. EC2 인스턴스 생성

이 단계에서는 EnablesEC2ToAccessSystemsManagerRole 역할을 사용하여 EC2 인스턴스를 생성해보겠습니다. 이렇게 하면 Systems Manager로 EC2 인스턴스를 관리할 수 있습니다.


a.  Amazon EC2 콘솔을 엽니다. EC2 콘솔에서 원하는 리전을 선택합니다. Systems Manager는 모든 AWS 리전에서 지원됩니다. 이제 [Launch Instance]를 선택합니다. 

remotely-run-commands-ec2-instance-systems-manager-2a

(확대하려면 클릭)


b.  Amazon Linux AMI를 선택합니다. Systems Manager 에이전트가 기본적으로 포함되는 Amazon Linux 기반 AMI 날짜가 2017.09 이후인지 확인하십시오. Windows 또는 Linux 시스템에서 Systems Manger 에이전트를 설치할 수도 있습니다.

remotely-run-commands-ec2-instance-systems-manager-2b

(확대하려면 클릭)


c.  [Step 2: Choose an Instance Type] 페이지에서 t2.micro 인스턴스 유형을 선택한 다음 Next: Configure Instance Details를 클릭합니다.

remotely-run-commands-ec2-instance-systems-manager-2c

(확대하려면 클릭)


d.  [Step 3: Configure Instance Details] 페이지의 [IAM 역할] 드롭다운에서 이전에 생성한 EnablesEC2ToAccessSystemsManagerRole 역할을 선택합니다. 다른 모든 옵션은 기본값으로 그대로 둡니다. Review and Launch를 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-2d

(확대하려면 클릭)


e.  [Step 7: Review Instance Launch] 페이지에서 [Launch]를 선택하여 인스턴스를 시작합니다.

remotely-run-commands-ec2-instance-systems-manager-2e

(확대하려면 클릭)


f.  그 다음에는 [Select an existing keypair or create a new key pair] 대화 상자가 표시됩니다. Systems Manager를 사용하여 원격으로 명령을 실행하려면 키 페어가 필요하지 않습니다. [Choose an existing pair] 드롭다운에서 [Proceed without a key pair]를 선택하고 [I acknowledge that…] 확인란을 선택합니다.

그 다음 [Launch Instance]를 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-2f

(확대하려면 클릭)


3단계. Systems Manager 에이전트 업데이트

이제 EC2 인스턴스가 Systems Manager 에이전트를 실행하므로, 관리 태스크를 자동화하고 인스턴스를 관리할 수 있습니다. 이 단계에서는 사전에 패키징된 명령을 실행합니다. 이를 문서라고 하며, 에이전트를 업그레이드합니다. 새 인스턴스를 생성할 때는 System Manager 에이전트를 업데이트하는 것이 가장 좋습니다.


a.  맨 위의 메뉴에서 [Services]를 클릭합니다. 그런 다음 [Management Tools] 아래에서 [Systems Manager]를 선택하여 Systems Manager 콘솔을 엽니다.

remotely-run-commands-ec2-instance-systems-manager-3a

(확대하려면 클릭)


b.  왼쪽 탐색 모음의 [Shared Resources] 섹션에서 [Managed Instances]를 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-3b

(확대하려면 클릭)


c.  [Managed instances] 페이지의 [Actions] 드롭다운에서 [Run Command]를 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-3c

(확대하려면 클릭)


d.  [Run a command] 페이지에서 검색 창을 클릭하고 [Document name prefix]를 선택한 다음, [Equal]을 클릭한 후 AWS-UpdateSSMAgent를 입력합니다.

이제 AWS-UpdateSSMAgent의 왼쪽에 있는 라디오 버튼을 클릭합니다. 이 문서는 인스턴스에서 Systems Management 에이전트를 업그레이드합니다.

[Targets] 패널까지 아래로 스크롤하고 관리형 EC2 인스턴스 옆의 확인란을 클릭합니다.

마지막으로, 아래로 스크롤하고 [Run]을 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-3d

(확대하려면 클릭)


e.  그 다음에는 실행 명령을 기록하고 전반적인 상태가 성공적인 녹색으로 표시된 페이지가 나타납니다. 축하합니다. Systems Manager를 사용하여 첫 번째 원격 명령을 실행하는 작업을 완료했습니다.

remotely-run-commands-ec2-instance-systems-manager-3e

(확대하려면 클릭)


4단계. 원격 셸 스크립트 실행

이제 EC2 인스턴스에 Systems Manager 에이전트가 있으므로, EC2 인스턴스에서 패키지를 업그레이드할 수 있습니다. 이 단계에서는 Run Command를 통해 셸 스크립트를 실행해보겠습니다.


a.  Systems Management 콘솔의 왼쪽 탐색 창 아래에 있는 [Shared Resources]에서 [Managed instances]를 선택합니다. 그 다음 [Actions] 메뉴에서 [Run Command] 메뉴 항목을 선택합니다. 

remotely-run-commands-ec2-instance-systems-manager-4a

(확대하려면 클릭)


b.  [Run a command] 페이지에서 검색 창을 클릭하고 [Document name prefix]를 선택한 다음, [Equal]을 클릭한 후 AWS-RunShellScript를 입력합니다.

이제 AWS-RunShellScript의 왼쪽에 있는 라디오 버튼을 클릭합니다. 이 문서는 인스턴스에서 Systems Management 에이전트를 업그레이드합니다.

[Targets] 패널까지 아래로 스크롤하고 관리형 EC2 인스턴스 옆의 확인란을 클릭합니다.

remotely-run-commands-ec2-instance-systems-manager-4b

(확대하려면 클릭)


c.  [Command Parameters] 패널까지 아래로 스크롤하고 [Commands] 텍스트 상자에 다음 명령을 삽입합니다.

sudo yum update -y

마지막으로, 아래로 스크롤하고 [Run]을 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-4c

(확대하려면 클릭)


d.  스크립트가 관리형 EC2 인스턴스에서 실행되는 동안 [Overall status]는 [In Progress]가 됩니다. [Overall status]가 곧 [Success]로 바뀝니다. 이렇게 되면 [Targets and outputs] 패널까지 아래로 스크롤하고 인스턴스의 인스턴스 ID를 클릭합니다. 실제 인스턴스 ID는 화면과 다릅니다.

remotely-run-commands-ec2-instance-systems-manager-4d

(확대하려면 클릭)


e.  [Output on: i-XX] 페이지에서 [Step 1 - Output] 패널의 헤더를 클릭하여 인스턴스에서 업데이트 명령의 출력을 확인합니다.

remotely-run-commands-ec2-instance-systems-manager-4e

(확대하려면 클릭)


5단계. 리소스 종료

이 단계에서는 Systems Manager 및 EC2 관련 리소스를 종료합니다. 중요: 현재 사용되지 않는 리소스를 종료하면 비용이 절감되므로 권장됩니다. 리소스를 종료하지 않으면 요금이 부과될 수 있습니다.


a.  Amazon EC2 콘솔의 왼쪽 탐색 창에 있는 [Instances] 헤딩 아래에서 [Instances]를 선택합니다.

remotely-run-commands-ec2-instance-systems-manager-5a

(확대하려면 클릭)


b.  인스턴스의 확인란을 선택하고 [Actions], [Instance State], [Terminate]를 차례로 클릭합니다. 이렇게 하면 인스턴스가 완전히 종료됩니다.

remotely-run-commands-ec2-instance-systems-manager-5b

(확대하려면 클릭)


축하합니다!

축하합니다. AWS Systems Manager를 사용하여 관리형 인스턴스를 성공적으로 생성하고 원격으로 명령을 실행했습니다. 우선 IAM을 통해 올바른 권한을 설정했습니다. 그 다음 Systems Manager 에이전트를 사용하여 사전 설치된 Amazon Linux 인스턴스를 시작했습니다. 마지막으로, Run Command를 사용하여 에이전트를 업데이트하고 yum 업데이트를 원격으로 수행했습니다.

Systems Manager는 리소스 그룹의 운영 데이터를 확인하고, 운영 작업을 자동화하고, 리소스의 현재 상태를 파악 및 제어하고, 하이브리드 환경을 관리하고, 보안 및 규정 준수를 유지 관리해야 할 때 사용하기에 적합합니다.