Team B: Lambda 도구 구현

분석 대상

Lambda 함수
코드 크기
핵심 기능

lambda-dns

526줄

DNS 해석 (Route53 → EC2/ENI)

lambda-connectivity

828줄

VPC Reachability Analyzer

lambda-cloudwatch

741줄

CloudWatch 알람/메트릭/로그

dns-resolve Lambda

핵심 로직: Route53 Private Hosted Zone 조회

def resolve_dns_from_route53(hostname, region="us-east-1"):
    """
    DNS 해석 흐름:
    1. Route53 Private Hosted Zone 목록 조회
    2. 호스트명과 일치하는 Zone 찾기
    3. DNS 레코드 조회 (A, CNAME)
    4. CNAME이면 재귀적으로 체인 추적
    5. 최종 IP 주소 반환
    """
    route53 = boto3.client('route53')
    hosted_zones = route53.list_hosted_zones_by_name()

    for zone in hosted_zones['HostedZones']:
        if zone['Config']['PrivateZone']:
            records = route53.list_resource_record_sets(
                HostedZoneId=zone['Id'],
                StartRecordName=hostname,
                StartRecordType='A'
            )
            # CNAME 체인 추적
            # A 레코드의 IP 주소 반환

IP → AWS 리소스 매핑

connectivity Lambda

VPC Reachability Analyzer

보안 그룹 수정 (최소 권한)

cloudwatch-monitoring Lambda

7가지 operation 라우팅

VPC Flow Logs 쿼리 (호스트명 → ENI 변환)

공통 패턴: lambda_handler → extract_tool_name → 핸들러

토론 질문

  1. CNAME 체인이 순환 참조될 때 어떻게 되나요?

  2. VPC Reachability Analyzer의 분석 결과가 나올 때까지 Lambda 함수가 기다리는 방법은?

  3. apply_connectivity_fix가 "최소 권한"을 보장하는 방법은?

마지막 업데이트