본문 바로가기

Stack/AWS

AWS DEA-C01 각색 문제 Day 08 — Redshift IdP 페더레이션, VPC Lambda → S3 Gateway Endpoint, DynamoDB TTL, IoT 데이터 레이크 파이프라인, Redshift ROW_NUMBER

반응형

AWS DEA-C01 문제로 공부하기 — Day 08

Redshift IdP 페더레이션, VPC Lambda → S3 Gateway Endpoint, DynamoDB TTL, IoT 데이터 레이크 파이프라인, Redshift ROW_NUMBER 윈도우 함수 — 5문제 핵심 정리.

Q36Redshift · IdP 페더레이션 · 인증⭐ 자주 출제

Amazon Redshift 네이티브 IdP 페더레이션은 Okta·Azure AD 같은 서드파티 자격증명 공급자(IdP)를 통해 Redshift에 인증할 수 있도록 지원합니다. 첫 번째 단계는 Redshift에 IdP를 등록하는 것입니다.

📋 Question

Amazon Redshift 레이크하우스 아키텍처에서 사용자들이 사내 SSO(Single Sign-On) 시스템을 통해 Redshift 쿼리 편집기에서 인증할 수 있도록 해야 합니다. 데이터 엔지니어가 가장 먼저 해야 할 단계는 무엇일까요?

  • ARedshift 개별 클러스터의 구성 설정 화면에서 SSO 시스템을 자격증명 공급자로 등록합니다.
    ❌ IdP는 개별 클러스터가 아닌 Amazon Redshift 서비스 전체 레벨에서 등록해야 함. 클러스터 설정 화면에 IdP 등록 기능이 없음.
  • BAmazon Redshift 내에서 SSO 시스템을 자격증명 공급자(IdP)로 등록합니다.
    Redshift 네이티브 IdP 페더레이션 — Amazon Redshift 서비스 레벨에서 IdP를 등록하면 Redshift가 해당 IdP를 인증 소스로 신뢰. 등록 후에는 클러스터별로 해당 IdP 인증을 사용하도록 구성 가능. 첫 번째 단계: Redshift에 IdP 등록.
  • CSSO 시스템을 AWS Secrets Manager에 자격증명 공급자로 등록하고, Secrets Manager를 통해 자격증명을 관리하도록 Redshift를 구성합니다.
    AWS Secrets Manager — 자격증명(ID/PW) 저장·교체 서비스. 인증(Authentication) 또는 IdP 페더레이션 기능이 없음. Secrets Manager로는 SSO 인증 구현 불가.
  • DSSO 시스템을 AWS Certificate Manager(ACM)에 등록하고 ACM으로 사용자 자격증명을 관리하도록 Redshift를 구성합니다.
    AWS ACM(Certificate Manager) — SSL/TLS 인증서 관리 서비스. ID 페더레이션 기능이 없음. 인증서와 사용자 인증(IdP)은 완전히 다른 개념.
🎯
정답
B — Redshift에 서드파티 IdP를 자격증명 공급자로 등록
🔑 핵심 개념 — Redshift IdP 페더레이션 설정 순서
단계작업
1단계Amazon Redshift에 IdP 등록 (서비스 레벨)
2단계Redshift 클러스터에서 IdP 인증 사용 설정
3단계IdP에서 Redshift 애플리케이션 구성
4단계사용자·그룹 매핑 설정
💡 이것만 기억하자
Redshift IdP 페더레이션 첫 번째 단계
Amazon Redshift에 IdP 등록 (클러스터가 아닌 서비스 레벨)

Secrets Manager = 자격증명 저장 (IdP 페더레이션 아님)
ACM = SSL/TLS 인증서 (사용자 인증 아님)

Q37VPC · Gateway Endpoint · Lambda · 비용 효율⭐ 자주 출제

S3 VPC Gateway Endpoint는 VPC 내에서 인터넷 게이트웨이나 NAT 없이 S3에 안전하게 연결하는 무료 기능입니다. VPC 내 Lambda 함수가 S3에 업로드할 때 타임아웃이 발생하면 Gateway Endpoint와 라우팅 테이블을 확인해야 합니다.

📋 Question

VPC를 지원하는 Lambda 함수가 레거시 SFTP 서버에서 파일을 가져와 S3 버킷에 업로드하는 역할을 합니다. SFTP 연결은 정상이지만 S3 업로드 시 타임아웃 오류가 반복됩니다. 가장 비용 효율적으로 이 문제를 해결하는 방법은 무엇일까요?

  • AVPC 퍼블릭 서브넷에 NAT 게이트웨이를 생성하고 네트워크 트래픽을 NAT 게이트웨이로 라우팅합니다.
    NAT 게이트웨이 — 프라이빗 서브넷에서 인터넷으로 나가는 통로. 시간당 요금 + 처리 데이터 GB당 요금이 발생. S3 접근에 NAT를 사용하면 불필요한 비용 발생. Gateway Endpoint를 쓰면 무료.
  • BAmazon S3용 VPC Gateway Endpoint를 생성하고, 네트워크 트래픽이 Gateway Endpoint를 경유하도록 라우팅 테이블을 업데이트합니다.
    S3 VPC Gateway Endpoint — S3로 향하는 트래픽을 AWS 내부 네트워크로 라우팅하는 무료 엔드포인트. 인터넷 게이트웨이나 NAT 없이도 S3 접근 가능. 추가 비용 없음. 라우팅 테이블에 엔드포인트 경로만 추가하면 타임아웃 해결.
  • CAmazon S3용 VPC Interface Endpoint를 생성하고 네트워크 트래픽을 Interface Endpoint로 라우팅합니다.
    VPC Interface Endpoint — ENI(네트워크 인터페이스) 기반으로 시간당 요금이 발생. 기술적으로 동작하지만 S3는 무료인 Gateway Endpoint가 있어 Interface Endpoint를 쓸 이유가 없음.
  • DVPC 인터넷 게이트웨이를 사용하여 인터넷으로 연결하고 네트워크 트래픽을 인터넷 게이트웨이로 라우팅합니다.
    인터넷 게이트웨이 — 퍼블릭 IP가 있는 리소스에서만 작동. VPC 지원 Lambda는 탄력적 네트워크 인터페이스(프라이빗 IP)를 사용하므로 인터넷 게이트웨이를 직접 사용할 수 없음.
🎯
정답
B — S3 VPC Gateway Endpoint + 라우팅 테이블 업데이트 (무료)
🔑 핵심 개념 — VPC에서 S3 접근 방법 비교
방법비용보안VPC Lambda 적합?
S3 Gateway Endpoint무료AWS 내부 네트워크✓ 최적
S3 Interface Endpoint시간당 요금AWS 내부 네트워크비용 과다
NAT 게이트웨이시간당 + GB당 요금인터넷 경유비용 과다
인터넷 게이트웨이무료인터넷 경유프라이빗 IP 불가
💡 이것만 기억하자
"VPC 내 Lambda → S3 타임아웃 + 비용 효율"
S3 VPC Gateway Endpoint (무료!)

S3 / DynamoDB = Gateway Endpoint (무료)
그 외 서비스 = Interface Endpoint (유료)
NAT = 불필요한 비용 발생

Q38DynamoDB TTL · 자동 만료 · 운영 최소화⭐ 자주 출제

DynamoDB TTL(Time to Live)은 항목별로 만료 시각을 타임스탬프로 지정하면 해당 시각이 지난 후 DynamoDB가 자동으로 삭제하는 기능입니다. Lambda나 Glue 없이 내장 기능만으로 데이터 수명주기를 관리할 수 있습니다.

📋 Question

신규 회원 대상 30일 프로모션 기간 동안의 거래를 DynamoDB에 저장하고 Lambda로 처리합니다. 프로모션 기간이 지난 거래 데이터는 스토리지 비용 절감과 분석 정확도 유지를 위해 자동으로 삭제되어야 합니다. 운영 오버헤드를 최소화하는 방법은 무엇일까요?

  • A매일 DynamoDB 데이터를 S3로 전송하는 Lambda 함수를 구현하고 S3 수명주기 정책으로 30일 후 삭제합니다.
    ❌ DynamoDB → S3 전송 로직을 직접 코딩해야 하고, 원본 DynamoDB 데이터는 삭제되지 않음. 데이터 이동 코딩 + 두 스토리지 관리라는 불필요한 오버헤드 발생.
  • B매일 DynamoDB 테이블을 전체 스캔하여 30일이 지난 항목을 찾아 삭제하는 Lambda 함수를 구현합니다.
    ❌ Lambda 함수 개발 + 매일 전체 스캔(RCU 비용 증가) + 유지보수. DynamoDB 기본 TTL 기능으로 훨씬 간단하게 해결 가능한데 불필요하게 복잡한 방법.
  • CDynamoDB 항목에 TTL(Time to Live) 속성을 설정하여 거래 생성일로부터 30일 후에 자동으로 만료·삭제되도록 합니다.
    DynamoDB TTL(Time to Live) — 각 항목에 Unix 타임스탬프로 만료 시각을 설정하면 DynamoDB가 자동으로 삭제. 마치 식품 유통기한처럼 날짜를 찍어두면 지나면 자동 폐기. 추가 코드·서비스 없이 내장 기능만으로 구현. 삭제 비용도 없음.
  • DGlue ETL 작업으로 30일 후 데이터를 별도 아카이브 DynamoDB 테이블로 이동합니다.
    ❌ Glue ETL 구성 + DynamoDB 간 데이터 이동 로직 + 아카이브 테이블 관리까지 추가. 데이터를 삭제하는 것이 아니라 이동하는 것이므로 스토리지 비용 절감 효과도 없음. 과도한 복잡도.
🎯
정답
C — DynamoDB TTL로 30일 후 자동 만료·삭제
🔑 핵심 개념 — DynamoDB 데이터 자동 삭제 방법 비교
방법코딩 필요추가 비용운영 부담
DynamoDB TTL없음없음최소
Lambda 스캔·삭제필요Lambda + RCU 비용중간
S3 수명주기 + 이동필요이동 + S3 비용높음
Glue ETL 이동필요Glue DPU 비용높음
💡 이것만 기억하자
"DynamoDB 항목 일정 기간 후 자동 삭제" → TTL(Time to Live)

Unix 타임스탬프로 만료 시각 설정 → DynamoDB가 자동 삭제
추가 코드·서비스·비용 없음 = 내장 기능

Q39IoT · Glue ETL · S3 데이터 레이크 · QuickSight⭐ 자주 출제

IoT 데이터 파이프라인의 표준 패턴은 S3(데이터 레이크) + Glue(완전관리형 ETL) + QuickSight(시각화)입니다. Athena는 쿼리 도구이지 시각화 도구가 아님을 반드시 구분해야 합니다.

📋 Question

공장에서 매시간 IoT 센서 데이터를 수신합니다. 센서는 장비 출력과 오류 정보를 다양한 형식으로 전송합니다. 이 데이터를 데이터 레이크로 통합하고, 완전관리형 ETL로 일관된 형식으로 변환한 뒤 시각화 대시보드로 분석하려 합니다. 이 요건을 모두 충족하는 솔루션은 무엇일까요?

  • A데이터를 Amazon Redshift에 저장하고, AWS Glue로 형식을 통일하고, Amazon Athena로 시각화합니다.
    ❌ Redshift는 데이터 웨어하우스로 데이터 레이크가 아님. Amazon Athena는 쿼리 서비스이지 시각화 도구가 아님. 시각화는 QuickSight가 담당.
  • B데이터를 Amazon S3에 저장하고, AWS Glue로 형식을 통일하고, Amazon Athena로 시각화합니다.
    ❌ S3 + Glue는 맞지만 Athena는 시각화 도구가 아님. Athena는 SQL 쿼리 서비스. 시각화를 위해서는 QuickSight가 필요.
  • C데이터를 Amazon Redshift에 저장하고, Amazon EMR 클러스터를 프로비저닝하여 형식을 통일하고, Amazon QuickSight로 시각화합니다.
    ❌ Redshift는 데이터 레이크가 아닌 웨어하우스. Amazon EMR — EC2 기반 클러스터로 완전관리형 ETL이 아님. 클러스터 프로비저닝·관리 부담 존재. QuickSight는 맞음.
  • D데이터를 Amazon S3에 저장하고, AWS Glue로 형식을 통일하고, Amazon QuickSight로 시각화합니다.
    Amazon S3 — 데이터 레이크 표준 스토리지. AWS Glue — 완전 서버리스 관리형 ETL, 다양한 형식을 일관된 형식으로 변환. Amazon QuickSight — BI 시각화 서비스. 세 요건(데이터 레이크 + 완전관리형 ETL + 시각화) 모두 정확히 충족.
🎯
정답
D — S3(데이터 레이크) + Glue(ETL) + QuickSight(시각화)
🔑 핵심 개념 — 분석·시각화 서비스 역할 구분
서비스역할시각화 가능?
Amazon QuickSightBI 시각화 대시보드✓ 전용
Amazon AthenaS3 위 SQL 쿼리✗ 쿼리만
AWS Glue완전관리형 ETL✗ ETL만
Amazon EMR관리형 클러스터 (비완전관리)
💡 이것만 기억하자
데이터 레이크 → Amazon S3
완전관리형 ETL → AWS Glue (서버리스)
시각화 → Amazon QuickSight

Athena = 쿼리 도구 (시각화 아님!) → 자주 나오는 함정

Q40Redshift SQL · ROW_NUMBER · 윈도우 함수⭐ 자주 출제

ROW_NUMBER()는 동일한 값이 있더라도 항상 연속적인 고유 번호를 부여하는 윈도우 함수입니다. 반면 RANK()는 동점 항목에 같은 순위를 부여하고 다음 순위를 건너뜁니다. "중복 없는 순위"가 요건이라면 ROW_NUMBER가 정답입니다.

📋 Question

제품 테이블(product_id, name, price, category)에서 가격 기준으로 제품을 정렬하되, 가격이 동일하더라도 각 제품에 고유한 순위 번호(1, 2, 3...)를 부여하고 싶습니다. 아래는 원하는 출력 예시입니다.

product_1, 제품A, 100, 카테고리1 → 1
product_2, 제품B, 90, 카테고리2 → 2
product_3, 제품C, 90, 카테고리3 → 3

이 결과를 만드는 SQL은 무엇일까요?

  • ACOUNT(DISTINCT product_id) AS product_rank를 사용하여 가격 기준으로 정렬합니다.
    COUNT(DISTINCT ...) — 집계 함수로 중복 제거 후 개수를 반환. 순위 번호를 만드는 함수가 아님. GROUP BY 없이 개별 행 순위 부여 불가.
  • BRANK() OVER (ORDER BY price) AS product_rank를 사용합니다.
    RANK() — 동일 가격(90)이면 같은 순위(2)를 부여하고 다음 순위(3)는 건너뜀(4로 이동). 예시 출력처럼 2, 3 연속 번호가 나오지 않음. 2, 2, 4가 됨.
  • CCOUNT(product_id) AS product_rank를 사용하여 가격 기준으로 정렬합니다.
    ❌ COUNT(product_id)는 집계 함수로 전체 행 수를 반환. 개별 행에 순서대로 번호를 부여하는 기능이 없음.
  • DROW_NUMBER() OVER (ORDER BY price DESC) AS product_rank를 사용합니다.
    ROW_NUMBER() — 동일 값이 있어도 항상 연속적인 고유 번호(1, 2, 3...)를 부여하는 윈도우 함수. 가격 90짜리 두 제품도 2번, 3번으로 다른 번호 부여. 예시 출력 결과와 정확히 일치. ORDER BY price DESC로 높은 가격이 1위.
🎯
정답
D — ROW_NUMBER() OVER (ORDER BY price DESC)
🔑 핵심 개념 — 윈도우 순위 함수 비교
함수동점 처리예시 (100, 90, 90)중복 없는 순위?
ROW_NUMBER()고유 번호 부여1, 2, 3
RANK()동점 같은 순위 + 건너뜀1, 2, 2, 4
DENSE_RANK()동점 같은 순위 + 연속1, 2, 2, 3
💡 이것만 기억하자
"중복 없는 연속 순위 번호" → ROW_NUMBER()

ROW_NUMBER = 항상 1, 2, 3, 4... (동점도 다른 번호)
RANK = 동점 시 같은 번호 + 건너뜀 (1, 2, 2, 4)
DENSE_RANK = 동점 시 같은 번호 + 연속 (1, 2, 2, 3)
AWS DEA-C01 Redshift IdP 페더레이션 S3 Gateway Endpoint DynamoDB TTL IoT 데이터 파이프라인 ROW_NUMBER 윈도우 함수 AWS 자격증
반응형