AWS- 4

박형준·2024년 4월 12일

실습하기 전에 VPC와 EC2 확인


*Lambda

  • 서버리스로서 서버를 수동으로 관리하기 보다는 자동으로 관리
  • 코드 몇줄만 이용해서 AWS업로드 하면 자동으로 서버가 생성되고 동작.
  • 로그 발생시 로그 기록을 DB로 남길 수 있음.

*서버리스의 장점

  • 오토스케일링 : 자동으로 크기가 늘렸다 줄였다 가능
  • 패칭 : 서버리스로 구성된 서비스가 자동으로 업데이트를 해주는 기능.
  • 빠른배포 : 개발자는 개발에만 집중할 수 있음.

*람다의 비용

  • 기본 호출개수(월100000건)을 넘어서면 비용 발생
  • 2022년 기준 0.02달러

*람다 함수 생성

*람다 함수 사용법

  • 함수 생성 / 블루 프린트 / 블루프린트 이름 파이썬 선택 , 이름 지정 하고 생성
  • 테스트 클릭 / 배포클릭 후 메시지 확인 및 CloudWatch Log파일에서도 확인
  • 람다 함수 생성
  • 이름 입력 하고 블루프린트와, 파이선 선택 (AWS Lambda 블루프린트: 특정한 작업을 수행하기 위해 미리 구성된 템플릿 또는 패턴을 제공하는 것)
  • 트리거에 S3나 RDS를 추가하여 자동으로 관리 가능
  • 생성된 람다 함수 확인
  • 생성된 람다 함수 코드 소스 정보 확인
  • test 클릭 (deploy: 배포), key 정보 변경
  • 변경한 후 테스트를 해서 배포하기 전 결과 확인(test 설정후 test 클릭)

*새로운 함수 생성 을 해서 코드 작성을 하고(아래) 온도를 버킷에 넣으면 트리거를
통한 코드가 실행이 되고, 메시지가 출력되도록 하는것.


코드는 메모장에 작성

메모장에 작성 후 저장

  • 조건문을 이용해서 새로운 함수를 작성(temperature 값을 이용해서 결과 출력)

*위 코드를 실행 할 람다함수 생성 및 S3 버킷 생성

  • 함수 생성 / 새로작성 / 이름 입력 , 런타임[파이썬] / 기본실행 역할[ 정책탬플릿~]
    • 역할 이름[aws_temp_lambda_role], 정책 탬플릿[Amazon S3 객체 읽기 전용 권한 ] / 함수생성
    • 코드 위에서 작성한거 붙여넣기 하고 Deploy 클릭
  • 람다 함수 생성
  • 이름 지정, 새로 작성(코드를 입력하기 때문에), 파이썬 선택
  • 고급 설정은 외부로 연결할 때
  • 역할 이름 지정
  • 생성된 람다 함수 확인 후에 작성한 코드 복사

*트리거 추가를 위해서 S3 생성

  • S3서비스 검색 / 버킷 만들기 / 고유 이름만 입력 하고 나머지는 기본으로 놔두고 버킷 만들기 클릭

*람다와 연동시키기

  • 생성된 버킷 이름 클릭 / 속성 탭 / 이벤트 알림 부분에서 알림 생성 / 이름 입력 하고
    • 이벤트 유형[전송] 체크 , lambda함수는 연결할 함수 선택 / 저장 클릭 후
    • 이벤트 알림을 보면 연결된 부분 확인 /
    • 람다 창에서 확인 해 보면 트리거에 S3가 연결된것 확인
  • 작성한 코드와 연동할 버킷 생성
  • 람다와 연동
  • 이벤트 알림 생성
  • 접두사, 접미사: 알림 제한( 필요한 객체만 )
  • 이벤트 유형 선택
  • 연동할 람다 함수 선택
  • 람다 함수와 S3 연동된 것 확인
  • S3 버킷에 temp1 번 파일 업로드 하고 람다에서 모니터링탭 / CloudWatch 로그룹에서 업로드 된
    • 파일 확인 Be careful! It's getting really hot!! 메시지 확인
  • 다시 S3버킷에서 temp1을 삭제 하고 temp2번 업로드 후 람다에서 확인
    • So far so good 메시지 확인
  • 생성된 버킷에 temp1.json 업로드
  • 메세지 확인(내용: be careful)
  • temp1 삭제후 temp2 업로드
  • 메세지 확인(내용: good)

*함수를 하나더 생성 하고 테스트

  • 함수생성 / 이름 입력 [hello_lambda_webTest], 런타임[파이썬] / 생성
    • 작성하고 배포 클릭

*API GateWay를 만들어서 연결 .

  • 함수 대시보드에서 트리거 추가 클릭 /
    • 추가 클릭 후 대시보드에서 API Gateway 추가된것 확인
  • web 관련 람다 함수 생성
  • 람다 함수 생성된 것 확인
  • 코드 내용 수정 후에 deploy
  • API gateway 생성 후 연결
  • 트리거 추가를 통해 api gateway 추가( API 세부 설정 )
  • API 이름 지정
  • 람다 함수와 API gateway가 연동된 것 확인

*마지막 테스트는 엔드포인트 주소를 로컬PC에서 접속

  • API gateway의 end point를 통해 접속

CloudFront 개념

◆ CloudFront는 AWS에서 제공하는 CDN 서비스( Content Delivery Network

  • 캐싱을 통해 사용자에게 좀 더 빠른 전송 속도를 제공함을 목적으로 합니다.
    • ( HTML, JavaScript 등.)
    • CloudFront는 전 세계 이곳저곳에 Edge Server(Location)을 두고 Client에 가장 가까운 Edge Server를 Latency(지연시간)를 최소화시켜 빠른 데이터를 제공.
  • Origin Server : 원본 데이터를 가지고 있는 서버. [보통 AWS에서의 Origin Server는 S3, Ec2 instance.]
  • Edge Server = Edge Location : AWS에서 실질적으로 제공하는 전 세계에 퍼져있는 서버.
    Edge Server에는 요청받은 데이터에 대해서 같은 요청에 대해서 빠르게 응답해주기 위해 Cache 기능 제공.
  • *지역적으로 먼 곳에 위치한 데이터를 가까운 거점(엣지 로케이션) 곳에 두고 불러와 사용하는것

◆ 데이터 전송이 발생하는 과정

  • 1: 클라이언트로부터 Edge Server로의 요청이 발생.
  • 2: Edge Server는 요청이 발생한 데이터에 대하여 캐싱 여부를 확인.
  • 3: 사용자의 근거리에 위치한 Edge Server 중 캐싱 데이터가 존재한다면 사용자의 요청에 맞는 데이터를 응답.
    • 사용자의 요청에 적합한 데이터가 캐싱 되어 있지 않은 경우 Origin Server로 요청이 포워딩.
  • 4: 요청받은 데이터에 대해 Origin Server에서 획득한 후 Edge Server에 캐싱 데이터를 생성하고, 클라이언트로 응답이 발생.

◆ CloudFront에서는 어떤 종류의 콘텐츠를 CDN으로 제공

  • Download Distribution :
    • HTTP 프로토콜을 이용해서 다운로드할 수 있는 일반적인 이미지 혹은 정적 파일을 제공받을 수 있음.
  • Streaming Distribution :
    • 스트리밍을 위해 사용할 수 있는 HTTP Progressive DownLoad 방식이나
    • RTSP(Real Time Streaming Protocol)을 지원하는 동영상 콘텐츠를 서비스받을 수 있음.

◆Edge Server의 Cache의 특징

  • 기본적으로 한번 발생한 요청에 대해서는 Edge Server에 캐싱된 상태로 저장.
  • Edge Server의 기본 TTL은 24시간이고 사용자의 설정에 따라 변경이 가능. (TTL은 데이터 보관시간)
    (TTL 수정 시 Edge Server에 반영되는 시간이 한 시간 가량 소요됩니다.)
  • 이러한 캐시의 설정 후 반영 시간 때문에 전체 데이터에 대한 TTL을 수정하는 게 아닌
    • 각 개별 데이터에 대해서 invalidation API(특정 파일을 캐시에서 삭제하는 기능)을 통해 삭제할 수 있음.
  • Invalidation API는 동시에 최대 3개의 요청을 발생시킬 수 있으며, 각 요청은 최대 1000개까지 가능.
  • Invalidation API는 Edge Node에 반영되기까지 5~10분 정도의 시간이 소요.

*CloudFront 생성 [ 영어로 된 파일 준비 ]

-S3버킷 생성/이름 입력,ACL 비활성화, 차단은 해제 , 나머지는 기본으로 놔두고 버킷 클릭

  • ⇒초기 생성시 ACL비활성화 해야 CloudFront 와 연결이 됨 활성화 된상태에서는 연결이 안됨
    • 이후 CloudFront 와의 연결이 끝나면 다시 활성화 시킬 예정임
  • cloud front에 연동할 버킷 생성
  • 이름 지정하고
  • 퍼블릭 엑세스 차단 해제
  • 버킷 생성 확인

-CloudFront 생성 : 생성 클릭 후 아래와 같이 설정

  • cloud front 생성 ( 거점, 글로벌 동작 )
  • 도메인 지정( 생성한 버킷 )
  • 원본 엑세스 제어 설정 선택 후에 정책 생성 후 지정
  • 뷰어 프로토콜 정책 지정 (redirect http to https)
  • 웹 방화벽 비활성화
  • 리전 북미 및 유럽만 사용(비용 저렴)

설정이 끝나면 정책 복사 클릭 후 링크 클릭 / 편집 / 붙여넣기 / 저장

  • 생선된 cloud front 확인
  • 노란색 탭의 정책 복사 후 링크 이동해서 버킷 정책 지정
  • 복사한 것 붙여 넣기
  • 지정된 버킷 정책 확인

*다시 CloudFront 창에서 활성화됨 확인 이름 클릭

  • *다시 S3로 이동후 생성된 버킷 / 권한에서 ACL 차단 활성화 /
  • *이미지 업로드 후 이미지 URL클릭 해보면 열리지 않음 ⇒ ACL 비활성화 해도 열리지 않음
    • CloudFront가 연결이 되면 CloudFront를 통해서만 접근 가능함.

*다시 CloudFront로 이동 후 앤드 주소 복사 , 아래는 버킷의 이미지 URL

*모든 실습이 끝나면 리소스 삭제

  • S3 삭제
  • CloudFront 삭제 ⇒ 비활성화 후 삭제

0개의 댓글