cloud bee

sqs + cloudwatch로 안전하게 인스턴스 관리하기 본문

AWS/data

sqs + cloudwatch로 안전하게 인스턴스 관리하기

who you 2023. 1. 9. 15:46

이번에 구현해 볼 다이어그램은 다음과 같이 구성되어 있다.

구현할 다이어그램이다.

 

amazon web service console에서 사용한 서비스 목록

  •  Amazon Virtual Private Cloud
  •  Amazon Elastic Compute Cloud
  •  AWS Identity and Access Management
  •  Amazon Simple Queue Service
  •  Amazon CloudWatch

 

다이어 그램 동작과정

1.  Amazon Ec2 instance를 Root 계정으로 접속한다.

2.  Root 계정으로 접속 시 자동으로 root_log 파일이 생성된다. ( root_log 안에는 로그인 날짜가 기록되어 있다. )

3.  Root 계정으로 접속 시 SQS에 메시지를 자동으로 전송한다.

4.  root_log 파일이 생기면 cloudwatch에 로그 데이터를 자동으로 푸시한다.

 

블로그 실습 조건

✅ amazon console account

✅ region: ap-northeast-2 ( 서울 리전 )

✅ your email address

 

Amazon Web Service Steps

Step1. Create a default VPC

Step2. Create a security group

Step3. Create a Role in Identity and Access Management

Step4. Creating an SQS

Step5. Create and set up an ec2 instance

Step6. CloudWatch Logging Results Viewed + SQS

 

Step1. Create a default VPC

VPC console Link!: https://console.aws.amazon.com/vpc 

 

https://console.aws.amazon.com/vpc/home

 

console.aws.amazon.com

 

기본 VPC를 생성해 주도록 한다.

라우팅 테이블에 모든 서브넷을 연결해 준다.

기본 VPC를 생성한다.
서브넷을 모두 연결한다.

 

Step2. Create a security group

security group를 생성해 주도록 한다.

security group name: demo-SG

Inbound role: port 22 ( My IP )

보안그룹 정보는 다음과 같다.

 

Step3. Create a Role in Identity and Access Management

Identity and Access Mangement에서 역할을 생성하기 위해 아래 콘솔에 접속해 준다.

IAM console Link!: https://console.aws.amazon.com/iam 

 

https://us-east-1.console.aws.amazon.com/iam/

 

us-east-1.console.aws.amazon.com

 

역할 > 역할 만들기를 선택해 준다.

신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택해 준다. 사용사례는 EC2로 선택한다.

EC2 역할을 생성한다.
역할 이름을 지정한다.

 

CloudWatchAgentAdminPolicy, AmazonSQSFullAccess 권한을 선택해 주도록 한다.

역할이름을 watch_sqs로 지정한다.

 

Step4. Creating an SQS

아래 amazon SQS 콘솔창을 열어 amazon SQS를 생성해 주도록 한다.

amazon SQS console link!: https://console.aws.amazon.com/sqs

 

https://us-east-1.console.aws.amazon.com/s3/home

 

us-east-1.console.aws.amazon.com

대기열> 대기열 생성을 통해 대기열을 생성하도록 한다.

대기열의 유형은 표준으로 선택해 준다.

대기열의 이름은 demo-sqs로 지정해 준다.

이후 모든 항목은 default 값으로 지정하고 생성한다.

대기열을 하나 생성한다.

 

 

Step5. Create and set up an ec2 instance

아래 ec2 콘솔창을 열어 ec2 instance 생성단계를 진행해 준다.

ec2 console Link!: https://console.aws.amazon.com/ec2 

 

https://console.aws.amazon.com/ec2/v2/home

 

console.aws.amazon.com

인스턴스 > 인스턴스 시작 단계를 진행하여 ec2 instance를 생성한다.

이름은 demo-instance로 지정하고, AMI를 Amazon Linux로 설정해 준다.

이후 t2.micro를 선택하고 키페어를 선택해 준다. ( 사전에 미리 생성함 )

그리고 watch_sqs를 지정해 준다.

이름 및 태그 지정한다.
인스턴스 유형을 선택한다.

 

사용자 데이터는 다음과 같은 내용을 입력해 주도록 한다.

#!/bin/bash
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
echo 'password' | passwd --stdin ec2-user
echo 'password' | passwd --stdin root
yum install amazon-cloudwatch-agent -y
cat << EOF > /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
    "agent": {
      "metrics_collection_interval": 10,
      "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log",
      "run_as_user": "root"
    },
    "logs": {
      "logs_collected": {
        "files": {
          "collect_list": [
            {
              "file_path": "/root/root_log",
              "log_group_name": "/aws/root/access",
              "log_stream_name": "root_{instance_id}",
              "timezone": "Local"
            }
          ]
        }
      }
    }
  }
EOF
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
systemctl restart sshd

 

demo-instance에 접속한 후 bashrc에 다음을 추가해 준다.

 

vim .bashrc

bashrc 내용 편집

c=$(date +%d/%b/%Y:%H:%M:%S)
echo '127.0.0.1 -- ['$c' +0000] "GET / HTTP/1.1" 200 3630 "-" "curl/7.79.1"' >> root_log
aws sqs send-message --region ap-northeast-2 --endpoint-url https://sqs.ap-northeast-2.amazonaws.com/<Your account id>/demo-sqs --queue-url  https://sqs.ap-northeast-2.amazonaws.com/<Your account id>/demo-sqs --message-body "root user is access :`date`"

bashrc 적용하기

 

Step6. CloudWatch Logging Results Viewed + SQS

cloudwatch에서 로그 그룹과 로그 스트림을 확인해 본다.

cloudwatch console Link!: https://console.aws.amazon.com/cloudwatch 

 

https://console.aws.amazon.com/cloudwatch/

 

console.aws.amazon.com

로그그룹 확인하기
로그 스트림 확인
로그 출력 확인

 

이제 sqs를 확인해 보도록 한다.

sqs console Link!: https://console.aws.amazon.com/sqs 

 

https://console.aws.amazon.com/sqs/v2/home

 

console.aws.amazon.com

대기열 > demo-sqs > 메시지 전송 및 수신 > 메시지 풀링을 하여 결과를 확인한다.

SQS 콘솔 화면
메시지 풀링 전
메시지 풀링 결과

 

'AWS > data' 카테고리의 다른 글

S3와 EMR을 활용하여 데이터 변환작업 구성  (0) 2023.01.10
AWS cloudwatch-agent로 로깅하기  (0) 2023.01.08
csv data athena 쿼리  (0) 2023.01.07
kinesis data analyfice flink 실습  (0) 2022.10.24
Comments