[Feature] AWS Lambda (Serverless Function) 관리 기능 구현 #188
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로 처리