SK Networks Family AI bootcamp 강의노트

74일차 [ 🛠 오늘의 개발 기록: AWS와 Lambda, CodeBuild 실전 문제 해결기 (2025.05.08) ]

HyunJung_Jo 2025. 5. 8. 17:42

📌 1. Slack Bot이란?

오늘은 Slack Bot의 기본 개념부터 살펴봤다.
Slack Bot은 Slack 내부에서 자동으로 동작하는 프로그램으로, 주로 알림, 자동응답, 업무 자동화 등에 활용된다.

Slack Bot의 활용 예

  • 키워드에 따른 자동 응답
  • 캘린더 연동 알림
  • 특정 이벤트 발생 시 슬랙 채널 알림 전송

📌 2. AWS EC2 vs Lambda vs CloudFormation 차이점 정리

EC2

  • 가상 서버를 직접 띄워서 사용하는 방식
  • 운영 체제, 보안 설정 등 직접 관리 필요
  • 장기적으로 돌아가는 서비스에 적합

Lambda

  • 이벤트 기반의 함수 실행 서비스
  • 서버 관리 불필요 (서버리스)
  • 짧은 실행 시간, API 응답 등에 유리

CloudFormation

  • 인프라를 코드로 관리 (IaC)
  • EC2, Lambda 등 AWS 리소스를 템플릿으로 정의하고 배포 자동화

📌 요약:

EC2는 자가용, Lambda는 택시, CloudFormation은 자동차 조립 공장 설계도


📌 3. buildspec.yml 분석

CodeBuild의 빌드 과정을 정의하는 buildspec.yml 파일을 분석했다.

주요 단계 설명

  • install: Python 3.11 설치
  • build: SAM으로 코드 빌드
  • post_build: 빌드된 결과물을 S3에 업로드
  • artifacts: outputtemplate.yml 파일을 최종 산출물로 사용

📌 4. CodeBuild 에러 해결기: S3 권한 문제

An error occurred (AccessDenied) when calling the PutObject operation

 

🔎 원인: CodeBuild 역할에 S3 업로드 권한(s3:PutObject)이 없음

해결 방법

IAM 역할에 아래 정책을 추가:

{
  "Effect": "Allow",
  "Action": ["s3:PutObject", "s3:GetObject", "s3:ListBucket"],
  "Resource": ["arn:aws:s3:::course-jenny", "arn:aws:s3:::course-jenny/*"]
}

💡 /* 경로까지 포함해야 업로드가 제대로 작동한다.


📌 5. AWS 리전이 자꾸 바뀌는 이유

AWS 콘솔이나 CLI에서 리전이 바뀌는 이유는 다음과 같다:

  • 콘솔은 최근 사용한 리전을 자동 기억
  • CLI는 ~/.aws/config, 환경변수, --region 플래그 순으로 결정
  • CodeBuild/CloudFormation은 생성 시 리전 고정 → 리전 다르면 문제 발생

📌 6. Slack 알림 아키텍처 구조 분석

Lambda + SNS + CloudWatch를 이용한 Slack 알림 자동화 시스템을 분석했다.

흐름 요약

  1. CodePipeline 실행
  2. 실패 시 → Lambda가 CloudWatch에 에러 기록
  3. Alarm → SNS → Slack 전송용 Lambda 호출
  4. Slack 채널에 즉시 알림 도착

🔚 마무리

오늘은 AWS에서 자주 겪을 수 있는 권한 문제, 배포 자동화, 슬랙 연동 시스템 등 다양한 주제를 실습과 함께 정리해봤다.
단순히 서비스 사용법이 아니라 실전 문제 해결 능력을 키우는 데 의미 있는 하루였다.