top of page

AWS Lambda의 모든 것: 초보자를 위한 완벽한 가이드 2/2

AWS Lambda의 모든 것: 초보자를 위한 완벽한 가이드 2/2 - Console에서 람다 함수 생성, 트리거 설정 및 요금 계산

AWS Lambda의 모든 것: 초보자를 위한 완벽한 가이드

Written by Hyojung Yoon



안녕하세요! 오늘은 지난 시간에 이어 AWS Lambda에 대해서 더 자세히 알아볼 건데요, 특히 이번 파트는 AWS Console을 활용하여 직접 람다 함수를 생성하고, 람다 트리거를 설정하는 실습을 할 것입니다.


또한 AWS Lambda의 비용 정책을 이해하고 실제 비용을 계산하는 방법도 알아볼 것입니다.


그럼 지금부터 시작하겠습니다!!

 
 

AWS Lambda 시작하기

1. Console에서 람다 함수 생성

AWS Console에서 람다 함수 생성

AWS 콘솔을 사용해 첫 번째 함수를 생성할 수 있습니다. AWS 콘솔에서 Lambda를 선택합니다.


[ 함수 생성 ] 버튼을 눌러 람다 함수를 만듭니다.

Lambda > 함수 > 함수 생성 > 새로 작성 > 함수 이름 추가 후 런타임 선택

상단에 3 가지 옵션 중 하나를 선택하게 됩니다.

  • 새로 작성: 처음부터 함수를 구현한다

  • 블루프린트 사용: AWS에서 제공하는 기능을 템플릿처럼 사용할 수 있는 기능이며, 샘플 코드 형식으로 커스터마이징하여 사용이 가능하다

  • 컨테이너 이미지: docker 컨테이너 용

옵션 선택 후 새 함수의 이름을 추가하고 원하는 런타임¹을 선택하면 됩니다.


¹런타임(runtime)이란? 람다를 어느 프로그래밍 언어로 작성할 지에 대한 옵션으로 Node.js, python, Go 등 다양한 런타임 언어를 제공합니다.

권한 - 람다에 어떤 권한을 부여할 지에 대한 옵션

권한은 람다에 어떤 권한을 부여할 지에 대한 옵션입니다.


하단의 [ 기본 실행 역할 변경 ] 을 클릭해 기본 Lambda 권한을 가진 새 역할 생성을 선택해 새로운 역할을 만듭니다.


2. 람다 함수 코드 작성

생성된 함수를 확인하세요. 여기서는 hjLambda라는 이름으로 생성되었습니다.


스크롤을 내려 하단의 함수 코드 화면으로 이동합니다. 아래에서 코드를 선택하거나 자신만의 템플릿을 만들 수 있습니다.

람다 함수 코드 작성

람다 함수 구성

  • myHandler = Lambda 함수의 이름

    • 함수가 호출되면 Lambda는 핸들러 메서드를 실행하는데, 이때 전달되는 3개의 인수(parameter)에는 event, context, callback이 있습니다.

    • event: 호출자로부터의 정보가 포함된 event 객체로, Lambda를 트리거 한 이벤트에 대한 모든 정보를 포함합니다.

    • context: Lambda 함수 간접 호출과 실행 환경, 런타임에 대한 정보를 포함합니다.

    • callback: 비동기 응답을 전송하기 위해 필요하며, Lambda 함수 내부에서 모든 작업을 수행한 후에는 그에 대한 결과(또는 오류)와 함께 callback 함수를 호출하고 이를 AWS가 HTTP 요청에 대한 응답으로 처리합니다.


3. 람다 함수 실행하기

람다 함수를 실행하기 전에 테스트를 먼저 실행하도록 하겠습니다.


테스트 드롭 다운 메뉴에서 [ 테스트 이벤트 구성 ]을 선택하면, 테스트 이벤트 구성을 위한 코드 편집기가 나타납니다.

테스트 이벤트 구성

새 이벤트 생성을 선택한 후 MyEvent 와 같은 이벤트 이름을 입력합니다.


이벤트 공유 설정은 기본 설정인 비공개를 유지합니다.


템플릿 목록에서 hello-world를 선택한 후 [ 저장 ] 을 클릭합니다.

[ Test ] 버튼을 클릭하고, 콘솔에서 성공적으로 실행되었는지 결과를 확인합니다.

실행 결과 탭에서 실행이 성공했는지 확인합니다.


함수 로그 섹션에 Lambda 함수 실행으로 생성된 로그와 로그 출력에 보고된 주요 정보가 표시됩니다.

테스트가 정상적으로 진행 되었다면 [ Deploy ] 버튼을 눌러 실행 가능한 상태로 변경해줍니다.


4. 람다 트리거 설정

1) 람다 트리거 + S3

AWS Lambda 함수를 사용하여 Amazon S3 버킷에서 다른 버킷으로 파일을 복사하는 로직을 구현해 보겠습니다.



1단계: 원본 및 대상 Amazon S3 버킷을 생성합니다.

Amazon S3 콘솔을 열고 버킷 생성을 선택합니다. 원본 버킷과 대상 버킷을 생성합니다.

여기서는 원본 버킷의 이름을 [ hjtestbucket ]으로 대상 버킷의 이름을 [ hjtestbucket02 ] 로 설정했습니다.



2단계: Lambda 함수 생성

Lambda 콘솔에서 함수 페이지를 열고, 함수를 생성합니다.

런타임 드롭다운 목록을 선택한 다음 Python 3.9를 선택한 뒤 위 사진과 같은 람다 함수를 생성합니다.


코드 탭을 선택하고 다음 JSON 코드를 붙여 넣습니다.


import boto3
import botocore
import json
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

s3 = boto3.resource('s3')

def lambda_handler(event, context):
    logger.info("New files uploaded to the source bucket.")

    key = event['Records'][0]['s3']['object']['key']

    source_bucket = event['Records'][0]['s3']['bucket']['name']
    destination_bucket = "destination_bucket"

    source = {'Bucket': source_bucket, 'Key': key}

    try:
        response = s3.meta.client.copy(source, destination_bucket, key)
        logger.info("File copied to the destination bucket successfully!")

    except botocore.exceptions.ClientError as error:
        logger.error("There was an error copying the file to the destination bucket")
        print('Error Message: {}'.format(error))

    except botocore.exceptions.ParamValidationError as error:
        logger.error("Missing required parameters while calling the API.")
        print('Error Message: {}'.format(error))

코드를 붙여 넣었으면 [ 배포 ]를 선택합니다.


3단계: Lambda 함수를 위한 Amazon S3 트리거 생성

Lambda 콘솔에서 함수 페이지를 열고, 함수 개요에서 [ 트리거 추가 ]를 선택합니다.

트리거 구성 드롭다운 목록을 선택한 다음 S3를 선택합니다.

버킷에 원본 버킷의 이름을 입력하고, 이벤트 유형에서는 All object create events를 선택합니다.


입력과 출력 모두에 동일한 S3 버킷을 사용하는 것이 권장되지 않음을 인정합니다에 동의함을 선택한 다음 추가를 선택합니다.


4단계: Lambda 함수의 실행 역할에 대한 AWS ID 및 액세스 관리(IAM) 권한 제공

다음 리소스 기반 정책과 마찬가지로 대상 S3 버킷에 파일을 복사하려면 Lambda 함수의 실행 역할에 대한 IAM 권한을 추가해야 합니다.


Lambda 콘솔에서 함수 페이지를 열고, 구성 - 실행 역할에서 역할 이름을 클릭합니다.

IAM 콘솔에서 [ 권한 추가 ]를 선택한 다음 [ 인라인 정책 생성 ]을 선택합니다.

[ JSON ] 옵션을 선택한 후, 아래 JSON 정책 문서를 붙여넣습니다.


※ 참고

  • destination-s3-bucket을 S3 대상 버킷으로 교체하고 source-s3-bucket을 S3 원본 버킷으로 교체합니다.

  • 리소스 ARN 끝에 있는 /*를 해당 환경에 필요한 접두사 값으로 바꾸어 권한을 제한합니다.

  • 작업을 수행하는 데 필요한 권한에만 최소 권한을 부여하는 것이 가장 좋습니다. 자세한 내용은 최소 권한 부여를 참조하세요.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "putObject",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::destination-s3-bucket/*"
      ]
    },
    {
      "Sid": "getObject",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::source-s3-bucket/*"
      ]
    }
  ]
}

[ 정책 생성 ]을 선택하여 새 정책을 저장합니다.을 선택하여 새 정책을 저장합니다.


5단계: Lambda 함수가 제대로 실행되고 있는지 확인

이제 람다 트리거가 잘 작동되는지 확인하기 위해, 원본 S3 버킷에 파일을 업로드 합니다.

[ 업로드 ]를 클릭한 후, 업로드 상태를 확인합니다.

대상 S3 버킷에 들어가 해당 파일이 복사되었는지 확인합니다.

동일한 파일이 저장되어 있으면 함수가 제대로 작동하고 있다는 것을 알 수 있다.



AWS Lambda의 가격

1. 람다의 요금 정책

람다의 비용은 크게 세 가지 요소(요청 수, 실행 시간, 메모리 크기)에 의해 결정됩니다.


람다는 월 1백만 회의 무료 요청과 400,000GB-초의 무료 컴퓨팅 시간을 제공합니다. 이를 통해 작은 프로젝트나 테스트 단계에서는 별도의 비용 없이 Lambda를 사용할 수 있습니다.


구분

Free Tier 해당 건수

요청 건수

월별 무료 요청 1백만 건

컴퓨팅 시간

월별 무료 400,000GB-초

메모리 크기

첫 512MB(0.5G)는 추가 비용 없음



2. 람다 가격 계산하기

AWS 요금 계산기 사이트에서 쉽게 람다 가격을 계산할 수 있습니다.


한 달에 3,000,000회 실행, 매 1초간 실행, 512GM 메모리 (0.5 GB)일 경우 AWS Lambda 요금을 계산해보겠습니다.

스크롤을 내려 [ 계산 표시 ] 를 확인하면 요금 산정 방식을 알 수 있습니다.


람다 요금 계산 해석

위 계산에 대한 해석입니다.


총 사용량(GB-초) = 3,000,000 x 1 x 0.5 = 1,500,000 GB-초

여기에 무료 티어 400,000GB-초를 제외하면


총 사용량(GB-초) = 3,000,000 x 1 x 0.5 = 1,500,000 GB-초

AWS Lambda의 GB-초 비용은 $0.0000166667 per GB-초입니다.


실행 시간 비용 = 1,100,000 x 0,0000166667 = $18.33

여기에 무료 티어 1,000,000회를 제외하면


유료 사용량(요청 건수) = 3,000,000 - 1,000,000 = 2,000,000 회

요청 비용은 한 달에 2,000,000회 실행이기 때문에 $0.20 per 1M 입니다.


요청 비용 = 2,000,000/1,000,000 x 0.20 = $0.40  

임시 스토리지는각 Lambda 함수에 512MB(=0.5GB)의 스토리지를 추가 비용 없이 사용할 수 있습니다.


추가 스토리지 비용 = 0.5GB - 0.5GB = 0.00

따라서 무료 티어를 고려한 총 비용은 약 $18.73입니다.


총 비용 = $0.40(요청 비용) + $18.33(실행 시간 비용) = $18.73

이 계산은 기본 비용만을 고려한 것이므로, 추가적인 비용이 발생할 수 있습니다. 가격은 변동될 수 있으니, 최신 정보는 AWS 공식 웹사이트에서 확인하시는 것이 좋습니다.


마치며

이번 AWS Lambda 가이드를 통해 AWS 콘솔에서 Lambda 함수를 생성하고, 람다 트리거를 설정하는 실습을 마치셨습니다. 또한 람다의 비용 정책과 계산 방법까지 알아본 이번 시리즈를 통해 실제 비즈니스 시나리오에 적용하는데 필요한 기본적인 단계를 모두 경험했는데요, 이번 경험을 바탕으로 AWS Lambda를 활용한 다양한 클라우드 서비스를 설계에 도움이 되었으면 좋겠습니다.



관련 링크


조회수 2,953회댓글 0개

관련 게시물

전체 보기

AWS Lambda 란

Comentarios


bottom of page