DuiNaru's Blog

DuiNaru

IT에 대한 이런저런 경험을 담아봅니다

2분 소요

Cloud9를 수동으로 만든 EC2로 사용하다보니, 자동으로 만들 때 사용할 수 있는 EC2의 자동 시작-종료 기능을 사용할 수 없어서, 만들어 보기로 했습니다.

다만, Cloud9이 시작할 때 EC2를 시작 시킬 수 없어서 Console에 Sign in 할 때, 시작 되도록 만들었습니다.

AWS System Manager

EC2를 실행시키기 위해 SSM을 사용할 생각입니다.

그러기 위해서는 SSM가 EC2를 관리 할 수 있도록 설정을 해야 합니다.

IAM의 Role 생성 : AmazonSSMManagedInstanceCore

EC2를 SSM에서 사용하기 위해서 IAM role을 설정해야 합니다.

AmazonSSMManagedInstanceCore의 policy를 선택해서 하나 만들어 줍니다.

AmazonSSMManagedInstanceCore

해당 IAM을 자동 시작시키려는 EC2에 붙여 주면 됩니다.

Attaching an IAM Role to an Instance

위의 링크처럼 붙여주면 됩니다.

IAM의 Role 생성 : AmazonSSMAutomationRole

이번에는 SSM을 실행 할 때 필요한 IAM role을 만들어야 합니다.

AmazonSSMAutomationRole의 policy를 선택해서 만들어 주면 됩니다.

AmazonSSMAutomationRole

다음은 로그인 이벤트가 발생하면 SSM으로 EC2가 시작되도록 설정합니다.

CloudTrail 설정

로그인 이벤트를 이용하기 위해서는 CloudTrail를 설정할 필요가 있습니다.

CloudTrail의 왼쪽 메뉴에서 Trails - Create Trail 를 순서대로 눌러줍시다.

create trail

만들고 설정을 보면 Logging 이 ON 이 되어 있는 것을 확인 할 수 있습니다.

Logging ON

설정이 끝났습니다.

CloudWatch의 Rules설정

로그인 이벤트를 CloudWatch 에서 감지해서 처리하도록 해봅시다.

CloudWatch의 왼쪽 메뉴에서 Rules - Creates rule 를 순서대로 눌러줍시다.

Event Source

create rule

Service Name 은 AWS Console Sign-in 을 선택합니다.

어떤 유저라도 로그인 할 때 처리할 생각이면, Any user을 선택하고,

특정 유저만 로그인 할 때 처리할 생각이면, Specific users(s) by ARN 을 선택해서 해당 유저의 arn 을 넣어줍시다.

Targets

target setting

로그인 이벤트의 기록과 EC2가 시작되도록 설정합시다.

CloudWatch log Group에는 Log Group를 적당히 입력하고,

SSM Automation은 Document를 AWS-StartEC2Instance를 선택, InstanceId에 시작시키고 싶은 인스턴스의 ID를 넣어줍니다.

그 아래는 Use existing role 을 선택하고 IAM의 Role 생성 : AmazonSSMAutomationRole에서 만든 Role를 지정해줍시다.

create rule step2

name을 지정하고 Enabled가 체크된 상태에서 만들면 됩니다.

확인해보기

제대로 EC2가 실행되는지 확인해 봅시다.

그러려면 다시 로그인을 해야 겠네요.

1~2분정도의 시간이 지나니, Targets에서 만든 CloudWatch의 Log Group에 로그인 이벤트가 기록되고, EC2가 기동하고 있었습니다.

후기

CloudTrail를 설정하지 않아, 로그인 이벤트가 연결 안 된다거나

SSM Automation의 role를 제대로 설정하지 않아 rule이 실행 되지 않다거나 등등

이것저것 시행착오를 겪어서 성공하게 되었네요.

Cloud9에서 만들 때 사용가능한 EC2의 자동 시작과 비슷하게 쓸 수 있겠네요.

다음엔 일정 시간 동안 접속이 없으면 종료되도록 해 볼 생각입니다.

comments powered by Disqus

최신 글

카테고리