본문 바로가기

프로그래밍/aws

aws 람다와 API게이트웨이

람다란?

aws Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 코드 모니터링 및 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다.

 

사용법

Lambda 함수에 코드를 구성합니다. Lambda는 필요 시에만 함수를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능합니다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않습니다.

 

Lambda API를 사용하여 Lambda 함수를 호출하거나, Lambda가 다른 AWS 서비스의 이벤트에 응답하여 함수를 실행할 수 있습니다.

 

 

 

람다 요금

 

 

- 요금 상세 보기

https://aws.amazon.com/ko/lambda/pricing/

 

- 요금 계산기

https://calculator.aws/#/createCalculator/Lambda

 

 

 

AWS Lambda 프리 티어에는 월별 1백만 건의 무료 요청과 월별 400,000GB-초의 컴퓨팅 시간이 포함되어 있으며 x86 및 Graviton2 프로세서로 구동되는 기능에 모두 사용할 수 있습니다.

 

 

 

Q. 프리티어가 포함된 AWS 계정으로 서울 지역에서 람다 함수에 1G 메모리를 할당하고 한 달에 3백만 회를 실행하였을때 매번 1000ms(1초) 동안 실행되었다면 요금은? 

 

 

  • 3,000,000개 요청 x 1,000ms x 0.001ms에서 초로의 변환 계수 = 3,000,000.00 총 계산(초)
  • 1GB x 3,000,000.00초 = 3,000,000.00 총 컴퓨팅(GB-초)
  • 3,000,000.00GB-s - 400000 프리 티어 GB-s = 2,600,000.00GB-s
  • 최대(2600000.00GB-초, 0) = 2,600,000.00 총 청구 가능 GB-초
  • 2,600,000.00GB-s x 0.0000166667 USD = 43.33 USD(월별 컴퓨팅 요금)
  • 3,000,000 요청 - 1000000 프리 티어 요청 = 2,000,000 월별 청구 가능 요청
  • 최대(2000000 월 청구 가능 요청, 0 ) = 2,000,000.00 총 월 청구 가능 요청
  • 2,000,000.00 총 월별 청구 가능 요청 x 0.0000002 USD = 0.40 USD(월별 요청 요금)
  • 43.33 USD + 0.40 USD = 43.73 USD
  • Lambda 비용 - 프리 티어 포함(월간): 43.73 USD == \ 54,194

 

 

* 할당된 메모리 양은 10GB를 초과할 수 없습니다.

 

 

 

Android용 AWS Mobile SDK로 Lambda 함수 호출

모바일 및 웹 애플리케이션을 위한 모든 기능을 갖춘 웹 API를 생성하려면 Amazon API Gateway를 사용하십시오. API Gateway를 사용하면 모든 기능에 대한 사용자 지정 권한 부여자, 제한 요청 및 캐시 결과를 추가할 수 있습니다. 자세한 내용 은 Amazon API Gateway와 함께 AWS Lambda 사용 단원을 참조하십시오 .

 

 

- 공식문서 AWS Mobile SDK 사용법

https://docs.aws.amazon.com/lambda/latest/dg/with-on-demand-custom-android.html

 

 

디버깅

모니터링 > CloudWatch Logs에 Lambda 함수에서 생성된 로그가 표시되는지 확인합니다.

 

 

 

API Gateway란?

API Gateway는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있는 "정문" 역할을 합니다.

 

생활코딩 - Amazon API Gateway 참고 이미지

 

위 이미지에서 볼 수 있듯 해당 도메인이 변경되더라도 API Gateway를 통해 /a /b /c로 받았기 때문에 로직을 따로 변경하지 않아도 된다는 장점이 있습니다. 

 

- aws api gateway 상세 보기

https://aws.amazon.com/ko/api-gateway/

 

API Gateway 요금

 

수신한 API 호출과 전송한 데이터 양에 대해서만 요금을 지불하면 됩니다.

REST API의 경우 API Gateway 프리 티어에는 12개월 동안 매달 API 호출 100만 개가 포함됩니다.

 

- 요금 상세 보기

https://aws.amazon.com/ko/api-gateway/pricing/

 

 

WEB 사용법

api 생성

api 유형 선택

 

api 이름 기재 > 검토 및 생성

 

생성 완료 후 해당 api 클릭

 

경로 > Create 클릭

 

경로 및 메서드 선택 > 생성

 

 

생성된 라우트 선택 > 통합 연결 클릭

 

통합 생성 및 연결 클릭

 

해당 경로로 들어오는 사용자의 요청을 람다와 통합하는 과정

통합 대상에서 Lambda함수 클릭 > 통합 세부 정보에서 원하는 람다 함수 클릭 > 생성 

 

잘 됐는 지 확인

API > 해당 API 클릭

URL 호출 클릭

 

성공

 

 

- Gateway Developer Guide

https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html

 

Working with AWS Lambda proxy integrations for HTTP APIs - Amazon API Gateway

Working with AWS Lambda proxy integrations for HTTP APIs A Lambda proxy integration enables you to integrate an API route with a Lambda function. When a client calls your API, API Gateway sends the request to the Lambda function and returns the function's

docs.aws.amazon.com

 

 

APP 사용법

 

위 방식과 다른 점은 경로 설정 부분입니다.

 

 

 

기존 경로에 /echo/1 을 추가로 입력 시 잘 출력되는 것을 볼 수 있습니다.

 

 

추가적으로 새로고침 할 때 모니터링 로그에 찍힌 이벤트 값이나 aws lambda통합 가이드를 바탕으로 코드를 변경하여 자유롭게 event에서 값을 꺼내 볼 수 있습니다.

 

 

 

 

- 해당 로그값

 

{
   "version":"2.0",
   "routeKey":"ANY /echo/{id}",
   "rawPath":"/echo/1",
   "rawQueryString":"",
   "headers":{
      "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
      "accept-encoding":"gzip, deflate, br",
      "accept-language":"ko,ko-KR;q=0.9,en-US;q=0.8,en;q=0.7",
      "cache-control":"max-age=0",
      "content-length":"0",
      "host":"cm5sm9sb39.execute-api.ap-northeast-2.amazonaws.com",
      "sec-ch-ua":"\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"",
      "sec-ch-ua-mobile":"?0",
      "sec-ch-ua-platform":"\"Windows\"",
      "sec-fetch-dest":"document",
      "sec-fetch-mode":"navigate",
      "sec-fetch-site":"none",
      "sec-fetch-user":"?1",
      "upgrade-insecure-requests":"1",
      "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
      "x-amzn-trace-id":"Root=1-622f71b2-5b8c79bf69c3e3eb7d6e0249",
      "x-forwarded-for":"115.140.218.169",
      "x-forwarded-port":"443",
      "x-forwarded-proto":"https"
   },
   "requestContext":{
      "accountId":"807849629735",
      "apiId":"cm5sm9sb39",
      "domainName":"cm5sm9sb39.execute-api.ap-northeast-2.amazonaws.com",
      "domainPrefix":"cm5sm9sb39",
      "http":{
         "method":"GET",
         "path":"/echo/1",
         "protocol":"HTTP/1.1",
         "sourceIp":"115.140.218.169",
         "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
      },
      "requestId":"O-6z6gf4oE0EMjg=",
      "routeKey":"ANY /echo/{id}",
      "stage":"$default",
      "time":"14/Mar/2022:16:47:46 +0000",
      "timeEpoch":1647276466469
   },
   "pathParameters":{
      "id":"1"
   },
   "isBase64Encoded":false
}

 

 

 

[ 참고 자료 ]

============================================================================

 

- aws 설명서

https://docs.aws.amazon.com/index.html?nc2=h_ql_doc_do 

 

https://docs.aws.amazon.com/index.html?nc2=h_ql_doc_do

 

docs.aws.amazon.com

 

 

- 강의

0.1초 동안 컴퓨터를 빌려보자 - AWS Lambda - YouTube

Amazon API Gateway - YouTube

https://www.youtube.com/watch?v=tHwatH9GgnM 

 

 

- 추천 사이트 

json형식으로 바꿔주는 site

https://jsonformatter.curiousconcept.com/

 

JSON Formatter & Validator

Format and validate JSON data so that it can easily be read by human beings.

jsonformatter.curiousconcept.com

 

 

 

 

'프로그래밍 > aws' 카테고리의 다른 글

인터페이스 설계  (0) 2022.03.18