실습하기 전에 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 삭제 ⇒ 비활성화 후 삭제