우당탕탕

AWS Lambda 비용 없이 사용하는 방법, 직접 세팅하며 겪은 삽질과 해결법 본문

Tech/AWS

AWS Lambda 비용 없이 사용하는 방법, 직접 세팅하며 겪은 삽질과 해결법

모찌모찝 2026. 5. 30. 13:48

사실 이걸 구현하다가 예상외로 비용 때문에 고민을 많이 했어요. AWS Lambda는 서버리스라 편한데, 트래픽이 많아지면 비용 폭탄 맞는 경우가 있거든요. 그래서 비용 없이, 무료 티어와 적절한 설정을 통해 Lambda를 사용하는 방법을 직접 시도해봤습니다.

이 글에서는 AWS Lambda 무료 사용 한도 내에서 실전 세팅하는 방법, 막혔던 부분, 그리고 구체적인 명령어와 설정 값을 차근차근 다뤄볼게요. Lambda 처음 쓰는 분도, 비용 제어를 고민하는 분도 읽기 좋을 겁니다.

AWS Lambda 무료 티어와 제한 조건 쉽게 이해하기

많이들 헷갈려하시는 게 '무료로 사용할 수 있는 Lambda 사용량과 제한이 정확히 뭔지'인데요, AWS 공식 문서 기준으로 Lambda는 매월100만 건 호출과 400,000 GB-초까지 무료입니다.

  • 실행 시간(초) x 메모리(GB) 단위로 계산되며, 호출 수가 100만 번 이하라면 대부분 무료
  • 메모리를 너무 많이 할당하면 GB-초가 빠르게 소모돼 비용 발생 가능

결국 메모리 최적화 + 호출 수 관리가 비용 절약 핵심이에요.

실전 세팅 환경과 사용한 도구 소개

먼저 제가 실험한 환경부터 정리할게요. AWS CLI v2 최신버전SAM CLI를 썼고, Lambda는 Node.js 18.x 런타임으로 구동했습니다. 메모리는 기본 128MB부터 시작했어요.

Lambda 함수 생성과 최소 메모리 설정 이렇게 해봤어요

사실 여기서 처음에 제가 헷갈렸던 게 메모리 할당 단위였어요. AWS Lambda는 128MB부터 1MB 단위로 10GB까지 지정 가능한데, 너무 크게 잡으면 GB-초가 금방 차더라고요.

# AWS CLI로 128MB 메모리 지정 Lambda 생성
aws lambda create-function \
  --function-name MyFreeLambda \
  --runtime nodejs18.x \
  --role arn:aws:iam::123456789012:role/lambda-execution-role \
  --handler index.handler \
  --zip-file fileb://function.zip \
  --memory-size 128 \
  --timeout 10

memory-size 파라미터에 128만 넘겨서 최소 메모리 할당했고, timeout은 10초로 여유 있게 잡았어요. 중요한 건 이 환경에서 실행 시간과 메모리 곱하기가 무료 한도를 최대한 활용하는 포인트입니다.

실행 시간 단축을 위한 코드 최적화, 제가 쓴 방법

여기서 많이 막혔던 게 Node.js 비동기 처리 최적화였는데요, 단순히 요청을 기다리는 시간이 길면 비용이 증가합니다. 그래서 Promise.all로 병렬 처리하는 방식을 썼어요.

exports.handler = async (event) => {
  const tasks = [
    asyncTask1(),
    asyncTask2(),
    asyncTask3()
  ];
  const results = await Promise.all(tasks);
  return { statusCode: 200, body: JSON.stringify(results) };
};

async function asyncTask1() { /* 네트워크 호출 등 */ }
// asyncTask2, asyncTask3도 비슷함

이렇게 하면 각 작업을 직렬로 기다리지 않고 동시에 실행해 총 실행 시간을 크게 줄일 수 있어요. 덕분에 GB-초 소모를 줄여 비용 절감에 도움됐습니다.

막혔던 부분과 해결법: 권한 문제와 로그 과금 조심하세요

처음 Lambda 실행 시 AccessDeniedException 에러가 났어요. IAM 역할에 CloudWatch 로그 권한이 빠져서 그랬는데요, 이 부분 해결하려면 정책 추가가 필수입니다.

{
  "Effect": "Allow",
  "Action": [
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:PutLogEvents"
  ],
  "Resource": "arn:aws:logs:*:*:*"
}

그리고 로그가 과금으로 이어질 수 있으니, CloudWatch 로그 보존 기간을 짧게 설정하거나 불필요한 로그는 남기지 않도록 했습니다.

비용 없이도 알림과 트리거 세팅, 제가 한 방법

Lambda 트리거 설정도 비용 걱정됐는데, API Gateway 프리 티어나 S3 이벤트, EventBridge를 활용하면 비용 없이 잘 쓸 수 있더라고요. 예를 들어 다음은 S3에 이미지 업로드 시 Lambda 자동 실행하는 설정 명령어입니다.

# S3 이벤트를 Lambda 트리거로 등록
aws lambda create-event-source-mapping \
  --function-name MyFreeLambda \
  --event-source-arn arn:aws:s3:::my-free-bucket \
  --starting-position LATEST

이렇게 사용하면 Lambda 호출 수를 직접 통제하기도 쉽고, 비용 발생 제어에 매우 유리해요.

자주 물어보는 것들

Q. Lambda 무료 사용량 초과하면 바로 과금되나요?

A. 그렇습니다. AWS는 무료 티어 초과 시 자동으로 요금 청구하니, 예산 알람 설정해서 모니터링하세요.

Q. 메모리를 늘려서 실행 속도를 높이면 비용 절감 되나요?

A. 어느 정도는 맞지만 무조건 그렇진 않아요. 메모리 높이면 CPU도 같이 올라서 실행 시간이 줄지만, 메모리 곱하기 실행 시간으로 비용 계산되니 적절한 균형이 중요합니다.

Q. Lambda 로그 비용도 아낄 수 있나요?

A. 네, 로그 레벨 조절하고, CloudWatch 로그 보존 기간을 1일~3일 정도로 짧게 설정하면 로그 스토리지 비용을 줄일 수 있습니다.

이렇게 직접 세팅하고 삽질하며 정리해보니 AWS Lambda는 무료 티어 안에서도 충분히 성능과 비용을 잘 조절해 쓸 수 있겠더라고요. 특히 메모리와 실행 시간 최적화, 권한 설정, 트리거 활용을 신경 쓰면 비용 발생 걱정 없이 쓸 수 있으니 참고하세요.

Comments