개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← YouTube Shorts 자동화

IAM 정비 — 배포 권한과 Phase 재정렬

2026년 7월 18일
IAMTerraformCI/CDroadmap

scheduler-worker, dlq-notifier를 Serverless Framework로 배포하는 동안 IAM 권한 부족 에러를 순서대로 만났다.

배포 권한 — 하나씩 터진 것들 정리

cloudformation:ValidateTemplate부터 막혔다. 이 액션은 스택 ARN 단위로 리소스를 제한할 수 없어서 별도 statement로 Resource = "*"를 줘야 했다.

# ValidateTemplate은 스택 ARN 리소스 범위를 지원하지 않아 * 필요
{
  Effect   = "Allow"
  Action   = ["cloudformation:ValidateTemplate"]
  Resource = "*"
}

그다음은 S3 배포 버킷 태깅.

"s3:PutBucketTagging",
"s3:GetBucketTagging",
"s3:PutBucketVersioning",
"s3:GetBucketVersioning",

CloudWatch Logs 그룹 생성 시 태깅.

"logs:TagResource",
"logs:TagLogGroup",

Lambda EventSourceMapping(SQS 트리거) 정책에 태깅 권한.

"lambda:TagResource",
"lambda:UntagResource",

마지막으로 scheduler-worker의 EventBridge 규칙 생성 권한과 ECR 이미지 조회 권한.

# ── EventBridge (scheduler-worker rate(1 minute) 규칙) ────────────────
{
  Effect = "Allow"
  Action = [
    "events:PutRule", "events:DescribeRule", "events:DeleteRule",
    "events:PutTargets", "events:RemoveTargets", "events:TagResource",
  ]
  Resource = "*"
}

배포 → 에러 → 권한 추가 → 재배포, 이걸 다섯 번 반복했다. Serverless Framework가 내부적으로 어떤 IAM 액션을 쓰는지 문서에 다 나와 있지 않아서, 결국 CloudTrail 에러 메시지를 하나씩 읽으면서 채웠다.

Phase 재정렬 — Remotion을 접다

원래 로드맵엔 Phase 6로 "FFmpeg → Remotion 전환"이 잡혀 있었다. Remotion으로 자막 하이라이트 애니메이션을 더 예쁘게 만들 계획이었는데, Lambda Container Image(Linux amd64) headless 환경에서 실제로 렌더링이 되는지부터가 불확실했다.

우선순위를 다시 보니 지금 급한 건 렌더 품질이 아니라 멀티채널 확장이었다. Remotion Phase를 통째로 로드맵에서 뺐다.

- **Phase 6** — Remotion 전환
-  - [ ] P6-1. render-worker Remotion 전환
-  - [ ] P6-2. 고성과 스크립트 패턴 → Gemini 프롬프트 반영
- **Phase 7** — 멀티채널 + 스케일링
+ **Phase 6** — 멀티채널 + 스케일링
+  - [ ] P6-1. 채널별 EventBridge 스케줄 자동 생성/삭제
+  - [ ] P6-2. Analytics 다채널 수집

Phase 7(구 Phase 8)의 프로덕션 준비 항목들도 번호가 하나씩 당겨졌다. Phase 0(핵심 리스크 검증)도 이미 오래전에 흡수 완료된 상태라 문서에서 통째로 정리했다. 문서 하나 고치는 데 커밋 5개가 들었다 — roadmap, ADR, architecture, product, ops 전부 Phase 번호를 참조하고 있어서였다.

← 이전 글스케줄러 전환 — EventBridge와 CloudWatch 모니터링
다음 글 →소유권 구조 — 채널별 멀티유저 지원