Skip to content

인프라

Pulumi 프로젝트

항목
프로젝트명truloop-functions-infra
런타임Node.js (TypeScript)
백엔드Pulumi Cloud (butbeautiful 조직)
스택dev, prod
AWS 리전ap-northeast-2

리소스 구성

Stack Reference

truloop-functions는 두 개의 외부 Pulumi 스택을 참조합니다.

소스 스택Output용도
truloop-core-infra/{env}schedulerExecutionRoleNameEventBridge Scheduler 실행 역할에 Lambda 호출 권한 추가
truloop-core-infra/{env}schedulerDlqArnScheduler DLQ에 메시지 전송 권한 추가
truloop-assistant-infra/{env}triggerEventsQueueUrlLambda 환경변수로 주입 (SQS 큐 URL)
truloop-assistant-infra/{env}triggerEventsQueueArnLambda IAM 정책에 SQS SendMessage 권한 설정

주의

배포 순서 의존성: truloop-core-infra (TLP-333) → truloop-assistant-infra (TLP-336) → truloop-functions-infra (TLP-334) 순으로 배포해야 합니다. Stack Reference가 존재하지 않으면 배포에 실패합니다.

Exports

truloop-functions가 내보내는 outputs:

Output타입설명
triggerDispatcherFnArnstringLambda 함수 ARN
triggerDispatcherFnNamestringLambda 함수 이름

truloop-core가 ESC를 통해 이 값들을 ECS 환경변수로 주입하여 EventBridge Scheduler 생성 시 사용합니다.

IAM 구성

Lambda 실행 역할

truloop-trigger-dispatcher-{env} 역할에 부여된 권한:

정책권한대상
AWSLambdaBasicExecutionRole (Managed)CloudWatch Logs 쓰기CloudWatch Logs
Inline: trigger-dispatcher-sqssqs:SendMessagetruloop-assistant의 trigger-events 큐

Scheduler 실행 역할 확장

truloop-core-infra가 생성한 Scheduler 실행 역할에 추가하는 인라인 정책:

권한대상
lambda:InvokeFunctiontrigger-dispatcher Lambda ARN
sqs:SendMessageScheduler DLQ ARN

Lambda 설정

항목
런타임python3.13
아키텍처arm64 (Graviton2)
핸들러handler.handler
타임아웃300초 (5분)
메모리256MB
비동기 재시도최대 2회
패키징FileArchive (trigger-dispatcher/ 디렉토리 직접 업로드)

환경변수

변수명소스설명
SQS_ASSISTANT_QUEUE_URLtruloop-assistant-infra StackRefSQS trigger-events 큐 URL
TRULOOP_CORE_INTERNAL_API_URLESC 환경 (truloop-functions/{env})Core Internal API URL (ALB)
TRULOOP_CORE_INTERNAL_API_KEYESC 환경 (truloop-functions/{env})Core Internal API 인증 키

CI/CD 파이프라인

CI (ci.yml)

단계도구대상
정적 분석Biomeinfra/ (TypeScript)
타입 체크tsc --noEmitinfra/ (TypeScript)

정보

Lambda 코드(Python)는 표준 라이브러리만 사용하므로 별도 빌드/테스트 단계가 없습니다.

CD (cd.yml)

트리거환경동작
main push (CI 성공 후)Development자동 배포
PR (infra/**, trigger-dispatcher/**)-Pulumi Preview (dev + prod)
workflow_dispatchDevelopment / Production 선택수동 배포

Production 배포 제약: main 브랜치에서만 Production 배포가 허용됩니다.

동시 실행 제어

동일 환경에 대한 동시 배포를 방지합니다.

트리거Concurrency Group
PRcd-preview-{PR번호} (이전 실행 자동 취소)
배포cd-{environment}

태깅 규칙

모든 AWS 리소스에 적용되는 태그:

태그
Environmentdev / prod
ManagedByPulumi
Projecttruloop-functions
Stackdev / prod

변경 이력

날짜내용
2026-03-11Lambda ARM64 (Graviton2) 아키텍처 전환 반영
2026-03-11최초 작성 — truloop-functions 인프라 문서