본문 바로가기

AWS Lambda ƛ

(20)
AWS Resource 자동 태그 설정하기 # AWS 리소스 자동 태그 설정하기 클라우드 플랫폼은 서비스 = 돈 이기때문에 서비스를 생성하고 관리하는 요소가 매우 중요하다. 예를들어 m5.xlarge 인스턴스 3개를 테스트 한답시고 누군가가 생성을 해놓았다. 여러 사용자들은 해당 인스턴스가 어떤 용도로 생성이 된것인지 알수 없기 때문에 리소스 관리자를 제외하고는 관심이 없을 것이다. 그렇게 해당 리소스를 생성한 사람은 2달여간 지방으로 출장을 간다고 생각해보자. 해당 인스턴스는 2달간 아무도 사용하지 않고 적지않은 비용을 고스란히 지불해야하는 일이 발생한다. 적어도 해당 인스턴스에 누가 만들었고 어떤 용도로 생성 했는지 정도의 정보만 입력 되어 있다면 리소스 관리자는 해당 정보를 보고 리소스를 보다 유연하고 경제적으로 관리 할 수 있을 것이다. ..
Lambda Handler란? # Lambda Handler란? 간단 정리 Lambda 함수 호출시 Lambda는 핸들러 메서드를 실행한다. 그리고 당연한 이야기지만 하나의 람다에는 하나의 핸들러만 존재한다. (main 메소드?, 진입점 이라고 이해라면 되려나?...) 아래의 # 예제 코드 1에서 보면 3개의 파라미터(인수가 존재한다.) event: 첫 번째 인수는 호출자로부터의 정보가 포함된 event 객체. 이 정보는 함수를 호출할 때 호출자가 JSON 형식 문자열로 전달하고, 런타임은 이 정보를 객체로 변환한다. context: 두 번째 인수는 컨텍스트 객체이며, 호출, 함수 및 실행 환경에 대한 정보가 포함되어 있다. callback: 세 번째 인수는 callback이다. 비동기 응답을 전송하기 위해 필요하며, 위 코드와 같이..
SpringBoot 프로젝트를 AWS Lambda로 실행하기 (2) # 생성한 SpringBoot 프로젝트를 AWS Lambda에서 실행하기 2023.05.26 - [AWS Lambda ƛ/Lambda & SpringBoot] - SpringBoot 프로젝트를 AWS Lambda로 실행하기 (1) - 첫번째 과정은 위의 링크를 참고한다. 1. SpringBoot 코드를 zip으로 빌드하기 - 코드가 존재하는 폴더로 이동한다. 이동 후 아래의 명령어를 실행하여 코드를 zip 파일로 생성한다. 생성 경로 : ./build/distributions/{file_name}.zip 실행 코드 : gradlew buildZip or ./gradlew buildZip - gradlew buildZip 명령을 실행하면 ./build/distributions 디렉토리에 zip 파일이 생성..
SpringBoot 프로젝트를 AWS Lambda로 실행하기 (1) # SprinbBoot 프로젝트를 AWS Lambda로 실행하기 1. 스프링 이니셜라이저를 통한 프로젝트 생성 https://start.spring.io/ AWS Lambda 같은 경우는 SpringBoot 2.x.x 버전과 java 11 까지 지원한다. 아래와 같은 옵션을 선택 후 진행한다. GENERATE 버튼을 클릭하면 위의 설정한 옵션을 기반으로 .zip 파일로 프로젝트를 다운로드 할 수 있다. 압축을 해제 후 인텔리J나 VS코드로 폴더를 오픈한다. 2. build.gradle 설정 가장 처음 해야할일은 build.gradle 파일에 라이브러리를 추가해 줘야한다. - 아래의 코드는 현재 설정된 build.gradle 내용이다. (참고만 하기) plugins { id 'java' id 'org.sp..
Lambda Layers 를 활용해 공통 라이브러리 관리하기 # 기존 방식처럼 lambda 라이브러리를 zip 파일로 생성하여 AWS Lambda에 업로드 하게 되면 함수를 매번 생성할 때마다 업로드를 라이브러리를 업로드 해야하는 불편함이 있다. AWS Lambda의 새롭게 추가된 기능을 보면 Layers 계층이라는 기능이 있다. 해당 Layers를 신규로 추가하여 공통된 라이브러리를 올릴수 있다. 1. 레이어 생성 계층을 클릭하여 하나의 레이어를 생성한다. 2. 계층 생성 옵션에서 아래와 같이 구성내용을 입력하여 구성을 진행한다. 여기서 주의할 점은 파이썬 라이브러리 파일의 이름이 이전에는 bs4.zip으로 저장 되었지만, AWS Lambda에서 라이브러리를 인식 하는 위치 조건에는 최상위 폴더가 Library가 되어야 하고, 해당 폴더안에 python이라는 폴..
AWS Lambda를 활용하여 크롤링 봇 만들기 파이참에서 bs4 라이브러리의 BeautifulSoup 을 통해 구글의 메인 페이지의 a 태그값들을 모두 가져온다. 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') request_list = [] for i in a_tags: request_list.append((i.get_text())) print(request_list) 그렇다면 파이참에서 실행하는것과 같이 AWS 람다에서도 실행이 가능할까? AWS 람다에서 실행하기 위해서는..
AWS Lambda에 API Gateway를 연결하여 간단한 웹 서버 만들기 Lambda란 무엇인가? # AWS Lambda를 사용하면 별도의 프로그램을 설치할 필요 없이 바로 사용이 가능하다는 장점이 있다. 손쉽게 서버를 구축하여 데이터를 입력으로 받고 처리하고 전달하는 기능을 수행한다. 별도의 서버나 인프라 환경을 항상 구비해두고 실행 시킬 필요 없이 필요할 때에만 실행 시켜 연산을 수행하고, 수행이 필요 없을때에는 리소스 자원을 내려놓는 역할을 하는게 AWS Lambda의 역할이다. 한마디로 AWS 람다는 함수라고 생각하는게 편하다. 여기서 함수를 작성해서 자동으로 동작하도록 한다 라는 의미로 생각하면 쉽다. 그리고 작성한 함수를 언제 동작시킬지에 대한 조건도 정할 수 있다. 특정 이벤트가 발생했을때 우리가 작성한 AWS Lambda 함수가 동작하도록 설정할 수 있고, 코드..
S3 버킷의 폴더를 삭제 후 새폴더를 생성 및 파일을 업로드 하는 방법 # 작업 구성도 # 람다 코드 #--------------------------------------------------------------------------------- # 특정 S3 버킷의 폴더를 삭제 후 특정 폴더를 생성과 동시에 파일을 업로드 하는 방법 # 해당 버킷의 Prefix에 1개의 파일만 존재하도록 유지하기 위함 # → 아테나나 퀵사이트에서 1개의 파일을 읽어야만 하는 경우가 생기는 경우 # → → S3 버킷에 1개의 파일만 존재해야 하는 경우...!! #--------------------------------------------------------------------------------- import time import boto3 # query = 'SELECT * F..