[AWS] EBS, EFS ,S3, lambda, CloudWatch 실습

김윤섭·2024년 7월 17일
1
post-thumbnail

EBS실습

AWS 인스턴스 생성 및 접속
인바운드 규칙에 NFS를 만들고 지정된 IP에서만 접속 가능하게 바꾼다.
초기상태

볼륨수정을 통해 10기가로 증가시켜준다

이제 여기서 파티션을 조정해야한다.

# 파티션 테이블을 수정하여 파티션 크기를 확장
sudo growpart /dev/xvda 1
# 확장된 파티션 내에서 파일 시스템을 확장
sudo xfs_growfs /dev/xvda

lsblk
df -h

10G로 증가한 것을 확인할 수 있다.

EFS 실습

efs 만들기

보안 규칙 설정 nfs 2049번 포트를 허용해줘야 한다.

연결버튼을 누르고 탑재 헬퍼-ip를 통해 탑재-nfs 클라이언트 사용 복사

위 경로에서 복사해둔 내용을 기억해둔다.

마운트를 실습하기 위해 인스턴스를 하나 더 만들고 다른 인스턴스에서 접속해서 터미널 창을 2개 띄워둔다.

컨트롤+시프트+i를 눌러서 동시 키 입력을 받고 아까 복사해둔 내용을 mnt 경로에서 붙혀넣기한다.
efs 경로로 이동

위쪽 인스턴스에서만 텍스트 파일을 만들어본다.

트러블슈팅 이후 마운트가 완료된 모습. 보안 규칙에서 아웃바운드를 삭제하는 실수를 했었다..

위 인스턴스에서 test.txt 파일을 만들었지만 밑에 터미널에도 텍스트 파일이 보인다. 이런식으로 다른 인스턴스에서 efs를 통해 파일 공유가 가능하다.

S3 실습

버킷을 새로만든다.
퍼블릭 차단 풀어놔야 외부 ip 접속 가능

{
  "Version": "2012-10-17",
  "Id": "Policy1721176885497",
  "Statement": [
    {
      "Sid": "Stmt1721176884141",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<버킷이름>/*"
    }
  ]
}

본인의 로컬이미지 파일 넣기

이미지 url의 객체 url을 복사해서 들어가본다

해당 url 로 들어간 모습.

권한이 없다면 들어갈 수 없다.

lambda 실습

import json
import boto3

def lambda_handler(event, context):
    print("Received event: " + json.dumps(event, indent=2))

    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    
    s3 = boto3.client('s3')
    response = s3.get_object(Bucket=bucket, Key=key)
    data = response['Body'].read().decode('utf-8')
    
    print("Data from S3 object:", data)
    
    return {
        'statusCode': 200,
        'body': json.dumps('Processing complete!')
    }

람다함수 생성

deploy 해야 수정한 코드가 반영된다.


트리거 추가

객체 생성이나 삭제하면

로그를 볼수 있다

권한-편집

2개 하고

만들었던 람다 롤이 반영되었따. 아까했언던 버킷 관련 트리거는 삭제

이제 다음 코드로 수정해서 다시 deploy 누르면 된다.

import json

def lambda_handler(event, context):
    # 이벤트 데이터를 로그로 출력
    print("CloudWatch Alarm Event: ", json.dumps(event))
    
    # 알람 메시지 추출
    alarm_message = event['detail']
    print("Alarm Message: ", json.dumps(alarm_message))

    return {
        'statusCode': 200,
        'body': json.dumps('Alarm processed successfully')
    }

CloudWatch 실습

규칙을 생성한다.

람다함수에 실습중인 함수를 지정한다.


실습용 인스턴스에 cpu부하가 가해졌을때 경보가 울리기 위한 과정이다.



stress 라는 라이브러리를 설치해서 강제로 cpu에 부하를 걸어준다.

초기상태

스트레스 유발

그래프상에 변화가 보인다.

그러면 cloudwatch에 경보상태라는 알림이 보인다.

그래프의 변화

그러면 그에 따른 로그가 생기고 세부내역을 볼수있다.

CloudTrail

AWS 계정 활동 추적하는 도구, 추후 실습 예정

트러블슈팅

EFS 실습을 할 때 보안규칙에서 아웃바운드 규칙이 아예 삭제되어있어서 1시간을 넘게 소비했다...
인바운드 포트는 ssh와 nfs 계속 체크했었는데 생각도 못한 부분에서 문제가 있었다. 다행히 그 이후에는 순조롭게 해결되었다.

0개의 댓글