[Feature] AWS Lambda (Serverless Function) 관리 기능 구현#188
Merged
KwonSunJae merged 12 commits intodevelopfrom Dec 31, 2025
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📋 개요
이슈 #182에 따라 AWS Lambda (Serverless Function) 관리 기능을 Hexagonal Architecture 패턴에 따라 구현했습니다. 멀티 클라우드 환경을 고려하여 CSP 중립적인 인터페이스와 AWS 전용 어댑터를 분리하여 구현했습니다.
🎯 주요 기능
1. Function CRUD 작업
2. Function 실행
3. Function Discovery
📦 구현 내용
Phase 1: Port & Model 정의
Port Interfaces
FunctionManagementPort: 함수 생명주기 관리 (create, update, delete)FunctionDiscoveryPort: 함수 조회 및 탐색 (list, get, getStatus, getCode)FunctionInvocationPort: 함수 실행 (invoke, invokeAsync)Command Models
FunctionCreateCommand: 함수 생성 명령FunctionUpdateCommand: 함수 수정 명령FunctionDeleteCommand: 함수 삭제 명령FunctionQuery: 함수 조회 쿼리FunctionInvokeCommand: 함수 실행 명령GetFunctionCommand: 단일 함수 조회 명령Phase 2: Service Layer 구현
FunctionUseCaseService
FunctionPortRouter
Phase 3: DTO & Controller 구현
DTOs
FunctionCreateRequest: 함수 생성 요청FunctionUpdateRequest: 함수 수정 요청FunctionDeleteRequest: 함수 삭제 요청FunctionQueryRequest: 함수 조회 요청FunctionInvokeRequest: 함수 실행 요청FunctionResponse: 함수 응답FunctionController
@PreAuthorize를 통한 권한 검증@AuditRequired를 통한 감사 로깅Phase 4: AWS Adapter 구현
AwsFunctionManagementAdapter
FunctionManagementPort구현AwsFunctionDiscoveryAdapter
FunctionDiscoveryPort구현AwsFunctionInvocationAdapter
FunctionInvocationPort구현AwsFunctionMapper
AwsFunctionConfig
🔧 기술적 세부사항
CSP 중립성 설계
providerSpecificConfigMap으로 전달JIT (Just-In-Time) Session Management
CloudSessionCredential을 어댑터에 전달하여 동적 인증보상 트랜잭션
에러 처리
CloudErrorTranslator를 통한 AWS SDK 예외 변환BusinessException을 통한 비즈니스 예외 처리타입 변환 처리
Runtimeenum → String 변환Architectureenum List → String List 변환lastModifiedString (ISO-8601) → LocalDateTime 변환코드 배포 방식
s3://bucket/key또는bucket/key형식📦 의존성 추가
pom.xml
✅ 테스트 고려사항
🔍 알려진 제한사항
getFunctionCode메서드가 완전히 구현되지 않음 (빈 배열 반환)📝 참고사항
@AuditRequired어노테이션으로 처리@PreAuthorize로 처리