베하 ~~~~~
수 지 타 산 입니다!
오늘은 목요일 입니다
주말이 다가오고 있네요 ~~
람다 개념을 다루어 보았고
이번에는 실습을 해보아요!
팔로팔로팔로미 ~
Lambda - 실습
람다 함수 생성
EC2에서는 컴퓨터 한 대를 인스턴스, S3에서는 버킷이라고 서비스 단위를 부르듯이, Lambda에서는 함수라고 부른다.
[ 함수 생성 ] 버튼을 눌러 람다함수를 만들어보자.
런타임은 람다를 어느 프로그래밍언어로 작성할지에 대한 옵션이다.
노드, 파이썬 등 다양한 런타임 언어를 제공한다.
권한은 람다에 어떤 권한을 부여할지에 대한 옵션이다.
예를들어 람다함수 코드에 S3에 접근해서 파일을 가져오고 다시 저장하는 기능의 코드가 있다면, 람다에는 S3에 접근할수있는 권한을 가지고 있어야 한다.
이러한 서비스는 IAM에서 역할(Role)로 부여하는 식으로 사용할 수 있다.
람다 함수 코드 작성
람다 함수 메뉴로 들어오면 스크롤을 밑으로 내려, 함수코드로 가보면 샘플코드가 들어가있는걸 볼수 있다.
exports.handler라는 약속된 이름의 디폴트 함수가 있는데, 람다를 실행하면 이 exports.handler 메소드가 호출이 되어 코드가 실행되는 형식이다.
|
exports.handler = async (event) => { |
|
// TODO implement |
|
const response = { |
|
statusCode: 200, |
|
body: JSON.stringify('Hello from Lambda!'), |
|
}; |
|
return response; |
|
}; |
Lambda 함수 구성
다음은 Lambda 함수(Node.js 버전)의 문법 구성이다.
- 여기서 myHandler는 Lambda 함수의 이름이 된다
- event 객체는 이 Lambda를 트리거 한 이벤트에 대한 모든 정보를 포함한다.
예를들어 이벤트가 HTTP 요청인 경우, 해당 HTTP 요청에 대한 모든 정보가 들어 있다. - context 객체는 Lambda 함수가 실행되는 런타임에 대한 정보를 포함한다.
- Lambda 함수 내부에서 모든 작업을 수행한 후에는 그에 대한 결과(또는 오류)와 함께 callback 함수를 호출하고 이를 AWS가 HTTP 요청에 대한 응답으로 처리한다.
만일 현재 디폴트로 적용되어있는 람다함수 진입점 index.js 파일과 handler 라는 함수명을 바꾸고 싶다면, 런타임 설정에서 편집을 하면 된다.
람다 함수 실행하기
기본 코드를 다음과 같이 커스터마이징 해보자.
|
exports.handler = async (event) => { |
|
const { key1, key2, key3 } = event; // 이벤트에서 보내는 json 값을 구조분해로 파싱 |
|
console.log("hello lambda !!") |
|
return `${key1}, ${key2}, ${key3}` |
|
}; |
이제 함수를 실행하는데, 우선은 람다함수가 잘 동작하는지에 대한 확인 차원으로 테스트 실행을 해보자
TEST 버튼을 누르면, 테스트 이벤트 구성 창이 나오는데, 람다함수에 보내고 싶은 값을 전달할 값을 세팅 할 수 있다.
템플릿을 고르고 Test 버튼을 누르면, 설정한 이벤트 JSON 값이 export.handler 함수의 event 파라미터로 들어가게 된다.
로그가 보기 어려우면, 에디터 상단 메뉴의 테스트 탭에서 가독성 좋게 볼수도 있다.
그러면 테스트 실행이 아닌 실무에서는 람다를 어떻게 실행할까?
대표적으로 람다 트리거 기능을 이용해서 자동으로 람다 함수를 실행토록 시나리오를 지정해줄 수 있다.
위에서 언급했듯이, 예를들어 S3에 이미지 파일이 올라오면 이를 트리거로 설정하여 람다함수를 실행하게 하여 이미지 압축을 한다던지 행동을 지정해줄 수 있다.
이외에도 API Gateway 서비스와 연동해서, 브라우저 에서 url(rest api)을 요청하면 바로 람다함수가 실행하도록 처리도 가능하다.
여기까지 오늘은
AWS Lambda의 실습을 진행했어요.
다들 잘 따라오셨을까요~?
올해도 화이팅해보아요!
다음주도 함께 만나요
제에에에바아아아아아알 ~~
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] EKS (0) | 2023.01.20 |
---|---|
Github (1) | 2023.01.15 |
[AWS]GuardDuty (0) | 2023.01.04 |
세션 / 쿠키 (0) | 2022.12.29 |
Amazon CloudFront (1) (0) | 2022.12.26 |
댓글