[2021.06.09] 인턴 +100 AWS Lambda 정의 및 사용법(API Gateway)
https://ap-northeast-2.console.aws.amazon.com/lambda/home?region=ap-northeast-2#/functions
* Lambda
-> AWS 에서 제공하는 FaaS 서비스
-> AWS Lambda는 아마존 웹 서비스(Amazon Web Services)에서 제공하는 서비리스 컴퓨팅 서비스
-> 서버리스 컴퓨팅은 애플리케이션을 실행하기 위한 별도의 서버 셋업 없이 곧바로 코드를 실행해주는 서비스를 의미
-> 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행
* 프로비저닝이란?
-> 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것
-> 서버 자원 프로비저닝, OS 프로비저닝, 소프트웨어 프로비저닝, 스토리지 프로비저닝, 계정 프로비저닝 등이 있고 수동으로 처리하는 '수동 프로비저닝'과 자동화 툴을 이용해 처리하는 '자동 프로비저닝'이 있습니다.
* 서버리스
-> 내가 요청받고 처리하는 서버가 없는 것을 뜻함
* 서버리스 아키텍쳐 (serverless architecture)
-> 기존에 서버를 가지고 하던 서비스를 서버가 없이 동작하게 만드는 구조. (클라우드를 통해 서버가 없는 것처럼 사용)
* API 게이트웨이(API Gateway)
-> API 게이트웨이를 통해 HTTP 요청을 람다 함수를 사용해 처리
* Lambda 의 주요 장점
-> 인프라에 대한 걱정 없이 코드 실행 가능(NoOps 실현)
* Lambda 사용 사례
실시간 파일 처리
-> Lambda를 사용하여 실시간으로 이미지를 썸네일하고, 동영상을 트랜스코딩하고, 파일을 인덱싱하고, 로그를 처리하고, 콘텐츠를 검증하고, 데이터를 수집 및 필터링
실시간 스트림 처리
-> AWS Lambda 및 Amazon Kinesis를 사용하여 애플리케이션 활동 추적, 트랜잭션 주문 처리, 클릭 스트림 분석, 데이터 정리, 지표 생성, 로그 필터링, 인덱싱, 소셜 미디어 분석, IoT 디바이스 데이터 텔레메트리 및 측정을 위한 실시간 스트리밍 데이터 처리 가능
추출, 변환, 로드
-> AWS Lambda를 사용하여 DynamoDB 테이블의 모든 데이터 변경에 대한 데이터 검증, 필터링, 정렬 또는 기타 변환 작업을 수행하고 변환된 데이터를 다른 데이터 스토어로 로드
IoT 백엔드
-> AWS Lambda 및 Amazon Kinesis를 사용하여 사물 인터넷(IoT) 디바이스 데이터 텔레메트리 및 분석을 위한 백엔드를 구축
모바일 백엔드
-> AWS Lambda 및 Amazon API Gateway를 사용하여 API 요청을 인증 및 처리하도록 백엔드를 구축
웹 애플리케이션
-> AWS Lambda를 다른 AWS 서비스와 결합하면, 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 애플리케이션을 구축
-----------------------------------------------------------------------------------------------------------------------------------
<lambda 생성 방법>
-> 함수 생성 버튼 클릭
-> 새로작성 클릭
-> 함수이름과 런타임(사용할 언어 선택)
-> 그런 후에, 함수 생성 클릭
<lambda가 생성된 모습>
* 트리거
-> 람다 함수를 언제 실행할 지에 대한 내용을 의미
* lambda_handler
-> 어떠한 이벤트(Event)를 처리하는 함수,
* 이벤트(Event)
-> 클라이언트의 활동을 의미
* 이벤트(Event) 언제 발생되나?
-> 트리거를 통해 발생함
-> 이벤트가 발생하면 lambda_handler 함수의 ‘Event’ 매개변수로 값이 들어옴
-> lambda를 만들면, sample code가 주어짐
-> 자, file을 눌러 Save를 클릭하여 저장
---------------------------------------------------------------------------------------------------------------------------
<트리거(Trigger)를 통한 클라이언트의 요청(Request) 데이터를 AWS 웹 서버로 전송방법>
-> API Gateway(웹 서버 처럼 동작하는 기능)
<트리거에 API Gateway(API 게이트웨이) 설정 방법>
-> 트리거 추가
-> API 게이트웨이
-> API : API 생성
-> 보안: 열기
<HTTP API 와 REST API 차이를 그림으로 나타냄>
* HTTP API
-> HTTP를 사용해서 서로 정해둔 스펙으로 데이터를 주고 받으며 통신하는 것으로 이해(상당히 넓은 의미로 사용)
-> 단순하며, 저렴함
* REST API
-> HTTP API에 여러가지 제약 조건이 추가(4가지)
-> 복잡하며, 비쌈
REST API는 다음 4가지 제약조건을 만족해야함
- 자원의 식별
- 메시지를 통한 리소스 조작
- 자기서술적 메서지
- 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어
-> API 게이트웨이가 만들어졌다. 클릭해보자.
-> 세부 정보 클릭
* API 엔드포인트?
-> 웹 서버 경로
<API 엔드포인트>
https://rjcal5qy6e.execute-api.ap-northeast-2.amazonaws.com/default/myFunc0609
-> 위의 링크를 클릭하면 아래와 같은 사진처럼 출력
-------------------------------------------------------------------------------------------------------------
import urllib.request
from bs4 import BeautifulSoup
url = "https://www.google.com"
soup = BeautifulSoup(urllib.request.urlopen(url).read(), "html.parser")
a_tags = soup.find_all("a")
result_list = []
for i in a_tags:
result_list.append(i.get_text())
print(result_list)
-> 위의 소스코드를 사용하려면, 람다에 라이브러리를 넣어줘야 한다. (아래 링크 참고)
https://injekim97.tistory.com/283?category=954321
댓글