CloudPass LogoCloud Pass
AWSGoogle CloudMicrosoftCiscoCompTIADatabricks
Certifications
AWSGoogle CloudMicrosoftCiscoCompTIADatabricks
  1. Cloud Pass
  2. AWS
  3. AWS Certified DevOps Engineer - Professional (DOP-C02)
AWS Certified DevOps Engineer - Professional (DOP-C02)

AWS

AWS Certified DevOps Engineer - Professional (DOP-C02)

374+ 기출 문제 (AI 검증 답안 포함)

Free questions & answers실제 시험 기출 문제
AI-powered explanations상세 해설
Real exam-style questions실제 시험과 가장 유사
374+ 문제 보기

AI 기반

3중 AI 검증 답안 및 해설

모든 AWS Certified DevOps Engineer - Professional (DOP-C02) 답안은 3개의 최고 AI 모델로 교차 검증하여 최고의 정확도를 보장합니다. 선택지별 상세 해설과 심층 문제 분석을 제공합니다.

GPT Pro
Claude Opus
Gemini Pro
선택지별 상세 해설
심층 문제 분석
3개 모델 합의 정확도

시험 도메인

SDLC Automation출제율 22%
Configuration Management and IaC출제율 17%
Resilient Cloud Solutions출제율 15%
Monitoring and Logging출제율 15%
Incident and Event Response출제율 14%
Security and Compliance출제율 17%

실전 문제

1
문제 1

한 회사는 2개의 AWS Region에 걸쳐 Auto-Tune이 활성화된 Amazon OpenSearch Service domain 10개를 운영하고 있으며, 지난 24시간 동안의 모든 Auto-Tune 작업(예: 메모리 또는 shard rebalancing 조정)을 1분 해상도로 Amazon CloudWatch dashboard에서 시각화해야 합니다. 어떤 솔루션이 이 요구 사항을 충족합니까?

정답입니다. OpenSearch Auto-Tune은 EventBridge가 매칭할 수 있는 이벤트를 내보냅니다. Lambda는 각 이벤트를 파싱하고 dimension(Domain, ActionType, Region)을 포함한 CloudWatch custom metric(예: Count=1)을 게시할 수 있습니다. CloudWatch dashboards는 지난 24시간 동안 1분 해상도로 이러한 metric을 그래프로 표시할 수 있어, domain/Region 전반의 모든 Auto-Tune 작업을 명확하게 시각화할 수 있습니다.

오답입니다. CloudTrail management events는 control-plane API 호출(예: CreateDomain, UpdateDomain)을 기록하며, 서비스가 수행하는 내부 Auto-Tune 작업은 기록하지 않습니다. CloudTrail을 CloudWatch Logs로 전송하고 metric filter를 사용하는 것은 API 활동 감사에는 유용하지만, 모든 Auto-Tune 메모리/shard 조정 이벤트를 신뢰성 있게 캡처하지 못하므로 요구 사항을 충족하지 못합니다.

오답입니다. EventBridge는 작업을 트리거할 수 있지만, “CloudWatch alarm의 상태를 변경”하는 것은 alarm의 동작 방식이 아닙니다. alarm 상태는 metric 데이터가 임계값에 대해 평가된 결과로 결정됩니다. 어떤 워크플로를 억지로 구성하더라도, alarm은 상태(OK/ALARM/INSUFFICIENT_DATA)를 보여줄 뿐이며, 시각화를 위한 모든 Auto-Tune 작업의 1분 해상도 작업별 시계열을 제공하지 않습니다.

오답입니다. CloudTrail data events는 지원되는 리소스에서의 data-plane 작업(예: S3 object-level, Lambda invoke, DynamoDB item-level)을 위한 것이며 OpenSearch Auto-Tune 작업에는 적용되지 않습니다. 이 옵션은 운영 튜닝 이벤트에 CloudTrail을 잘못 적용하고 있습니다. 따라서 Auto-Tune 작업에 대한 완전한 1분 해상도 시각화를 제공할 수 없습니다.

문제 분석

핵심 개념: 이 문제는 이벤트 기반 모니터링과 준실시간 시각화를 테스트합니다. Amazon OpenSearch Service Auto-Tune은 이벤트(구성 변경 및 튜닝 작업)를 내보냅니다. CloudWatch dashboard에서 1분 해상도로 “모든 Auto-Tune 작업”을 시각화하려면, 이러한 개별 이벤트를 1분 단위의 CloudWatch metric으로 변환해야 합니다. 정답이 맞는 이유: EventBridge는 OpenSearch Auto-Tune 이벤트가 발생하는 즉시 캡처하는 기본 방식입니다. 이러한 이벤트를 Lambda function으로 라우팅하면, Auto-Tune 작업이 발생할 때마다 CloudWatch custom metric(PutMetricData)을 게시할 수 있습니다(선택적으로 DomainName, Region, ActionType 같은 dimension 포함). CloudWatch dashboard는 1분 period로 custom metric을 그래프로 표시하고 지난 24시간을 보여줄 수 있습니다. 이 접근 방식은 10개의 domain과 2개의 Region에 대해 Region별로 rule/Lambda를 배포(또는 event bus forwarding을 통해 중앙화)하고 multi-Region dashboard를 사용함으로써 동작합니다. 주요 AWS 기능: - 서비스 이벤트(Auto-Tune 알림)를 위한 Amazon EventBridge rules. - 경량 이벤트 변환/보강을 위한 AWS Lambda. - dimension 및 1분 period 시각화를 지원하는 CloudWatch custom metrics. - CloudWatch dashboards는(해당되는 경우) cross-account/cross-Region widget과 시간 범위 선택(지난 24시간)을 지원합니다. 흔한 오해: CloudTrail은 API 활동 감사(auditing)를 위한 것이며 Auto-Tune 작업 같은 운영 서비스 이벤트를 위한 것이 아닙니다. 로그에서 무언가를 캡처할 수 있더라도, metric filter는 로그 수집에서 파생되며 OpenSearch Auto-Tune 이벤트 시각화를 위한 의도된/가장 신뢰할 수 있는 메커니즘이 아닙니다. 또한 alarm은 임계값 상태를 나타내는 것이지, 작업별 시계열을 나타내는 것이 아닙니다. 시험 팁: 특정 해상도로 “이벤트/작업을 시각화”라는 문구가 보이면 다음을 떠올리십시오: 이벤트 소스(EventBridge) → 변환(Lambda) → metric(CloudWatch custom metric) → dashboard. CloudTrail은 주로 API 호출의 거버넌스/감사에 사용하고, CloudWatch alarms는 임계값 기반 알림에 사용하며, 모든 개별 운영 작업을 카운트/플로팅하는 용도로는 사용하지 않습니다.

2
문제 2

한 fintech startup이 Terraform modules와 unit tests를 AWS CodeCommit repository에 저장하고 있다. AWS CodePipeline pipeline은 코드가 release branch에 merge될 때마다 AWS CodeBuild project를 트리거하며, build는 12분 timeout 내에 unit tests를 실행해야 하고, 테스트가 통과한 경우에만 가장 최근 commit에 대해 release-${CODEBUILD_BUILD_NUMBER}라는 이름의 annotated Git tag를 생성한 뒤 해당 tag를 repository로 다시 push해야 한다. 이 요구 사항을 충족하기 위해 회사는 CodeBuild project를 어떻게 구성해야 하는가?

정답. annotated tag를 생성하는 것은 .git metadata와 구성된 remote가 필요한 Git operation이다. CodeBuild에서 native Git clone을 사용하면 build가 commit history를 보유하고 build된 정확한 commit에 tag를 달 수 있다. unit tests가 통과한 후 build는 git tag -a release-${CODEBUILD_BUILD_NUMBER} 및 git push를 CodeCommit으로 실행할 수 있으며, 이는 CodeBuild role에 GitPull/GitPush permissions가 있다는 가정하에 가능하다.

오답. Git으로 clone하는 것은 좋지만, AWS CLI로 “repository tag”를 생성하는 것은 Git annotated tags에 대한 올바른 모델이 아니다. CodeCommit은 git tag -a에 해당하는 annotated Git tag object를 생성하는 간단한 AWS CLI command를 제공하지 않는다. 요구 사항은 가장 최근 commit에 대한 annotated Git tag이므로, native Git commands로 충족하는 것이 가장 적절하다.

오답. AWS CLI로 source files를 복사(또는 CodeBuild의 기본 source download)하면 일반적으로 .git metadata가 포함되지 않으므로, 올바른 commit object를 참조하는 annotated tag를 신뢰성 있게 생성할 수 없다. 또한 AWS CLI는 CodeCommit에서 annotated Git tag objects를 직접 생성하지 않는다. Git clone이 없으면 잘못된 commit에 tag를 달거나 tag를 push하지 못할 위험이 있다.

오답. 이는 두 가지 문제를 결합한다: (1) clone 대신 source files를 복사하면 .git metadata가 없어 올바른 Git tagging이 불가능하고, (2) AWS CLI를 통한 “repository tag” 개념은 annotated Git tag object 요구 사항을 충족하지 못한다. ref를 조작할 수 있더라도, 요구된 message/signature를 가진 annotated tag를 생성하지는 못한다.

문제 분석

핵심 개념: 이 문제는 CodePipeline/CodeBuild를 사용한 SDLC automation과 CodeBuild가 CodeCommit에서 source를 checkout하는 방식을 테스트한다. 핵심은 .git metadata를 포함하는 full Git clone과 CodeBuild의 기본 source download 동작 간의 차이, 그리고 CodeCommit으로 Git operations(annotated tags + push)을 다시 수행하는 방법을 이해하는 것이다. 정답이 맞는 이유: “가장 최근 commit”에 annotated Git tag를 생성하고 이를 다시 push하려면, build environment에 Git repository metadata가 있어야 하고 적절한 remote가 구성되어 있어야 한다. CodeBuild는 repository를 Git으로 clone하도록(단순히 source ZIP을 다운로드하는 대신) 구성할 수 있다. 실제 clone을 사용하면 build는 unit tests를 실행하고, 성공한 경우에만 다음을 실행할 수 있다: git tag -a release-${CODEBUILD_BUILD_NUMBER} -m "..." 그리고 git push origin release-${CODEBUILD_BUILD_NUMBER}. 이는 annotated Git tag 요구 사항을 정확히 충족하며, tag가 build된 정확한 commit을 가리키도록 보장한다. 주요 AWS 기능 / 구성: - CodeBuild source credential/permissions: CodeBuild service role은 repo에 대해 CodeCommit Git operations(예: codecommit:GitPull 및 codecommit:GitPush)을 허용해야 한다. - Authentication: git push가 non-interactively 동작하도록 CodeBuild의 integrated CodeCommit credential helper(git-remote-codecommit) 또는 credential helper가 있는 HTTPS를 사용한다. - buildspec.yml phases: build phase에서 tests를 실행하고, post_build(또는 tests 이후)에서 tag를 생성/push한다. tag 단계가 tests 성공 시에만 실행되도록 보장한다(기본 동작: 이전 command가 실패하면 이후 command는 실행되지 않으며, 별도로 override하지 않는 한 그렇다). - Timeout: 제약을 충족하기 위해 CodeBuild project timeout을 12분(또는 그 이하)으로 설정한다. 흔한 오해: 많은 사람들이 AWS CLI로 CodeCommit에서 “Git tag를 생성”할 수 있다고 가정한다. CodeCommit API는 repository triggers, approvals, references 등을 지원하지만, Git tags는 일반적으로 Git commands로 생성되는 Git objects이다. 일부 Git hosting context에서는 API로 refs를 조작할 수 있지만, 시험 관점의 기대 답안은 다음과 같다: annotated tags를 생성하려면 Git repo checkout과 native Git이 필요하다. 시험 팁: 요구 사항에 Git constructs(annotated tags, branches, commit pointers)가 명시적으로 언급되면, build container에서 native Git operations를 우선 고려하라. 또한 CodeBuild의 기본 source 처리에는 .git이 포함되지 않을 수 있으므로, git tag/log/describe가 필요한 솔루션은 보통 Git clone을 활성화하고 build role이 repo로 push할 수 있도록 보장해야 함을 기억하라.

3
문제 3
(3개 선택)

한 해양 분석 회사가 2,000척의 화물선에 대한 텔레메트리 수집 서비스를 구축하고 있습니다. 각 선박의 엔진 제어 장치는 150밀리초마다 9개의 메트릭을 내보내며, 이로 인해 대용량 시계열 데이터가 생성됩니다. 회사는 이러한 이벤트를 Amazon Timestream에 영구 저장하고, 가장 최근 24시간을 스캔하는 예약된 일일 대시보드 쿼리를 서브초 지연 시간으로 실행해야 합니다. 가장 빠른 쿼리 성능을 제공할 작업 조합은 무엇입니까? (세 가지 선택)

정답. 배치 쓰기(WriteRecords당 100–200개 레코드)는 요청 오버헤드를 줄이고 처리량을 개선하며, 매우 높은 수집 워크로드에서 throttling 가능성을 낮춥니다. 배치 처리는 주로 수집 최적화이지만, 데이터가 memory store에 빠르고 일관되게 도착하도록 도와 최근 24시간에 대한 적시의 저지연 쿼리를 지원합니다. 이는 규모 확장을 위한 일반적인 Timestream 모범 사례입니다.

오답. 각 이벤트를 개별 WriteRecords 요청으로 전송하면 API 호출 수와 오버헤드가 급증하며, 극단적인 수집률에서 서비스 한도 또는 throttling에 걸릴 가능성이 더 큽니다. 이는 수집 지연을 유발할 수 있고, 최신 데이터에 의존하는 대시보드에 부정적인 영향을 줄 수 있습니다. 레코드별 쓰기는 Timestream의 대용량 텔레메트리 파이프라인에서 최적이 아닌 경우가 대부분입니다.

오답. 각 메트릭을 별도의 single-measure 레코드로 모델링하면 선박별 타임스탬프당 9개의 행이 생성되어 레코드 수가 부풀고, 쿼리 엔진이 스캔 및 집계해야 하는 데이터 양이 증가합니다. 24시간을 스캔하는 대시보드 쿼리에서는 일반적으로 지연 시간과 비용이 증가합니다. single-measure 모델링은 측정값이 서로 다른 차원을 가지거나 타임스탬프가 드문(sparse) 경우에는 유용할 수 있지만, 여기에는 해당하지 않습니다.

정답. multi-measure 레코드는 공유 타임스탬프와 차원을 가진 9개 메트릭을 하나의 레코드에 저장하여 행 수를 줄이고 쿼리 효율을 향상시킵니다(스캔 감소, 집계할 행 감소). 이는 여러 측정값이 함께 방출되는 고주파 텔레메트리에 특히 유리합니다. 성능 및 비용 최적화를 위한 핵심 Timestream 모델링 패턴입니다.

오답. memory 보존 기간을 magnetic 보존 기간보다 길게 구성하는 것은 일반적으로 권장되는 티어링의 반대이며 불필요하게 비용이 많이 들 수 있습니다. 또한 24시간 쿼리 윈도우가 전부 memory에 있도록 보장하는 것(옵션 F)만큼 핵심 요구 사항을 깔끔하게 해결하지 못합니다. memory 보존 기간을 늘리면 데이터를 hot 상태로 유지할 수는 있지만, 제안된 관계(memory > magnetic)는 전형적이거나 모범 사례인 구성은 아닙니다.

정답. 24시간 대시보드 쿼리를 커버할 만큼 memory store 보존 기간을 충분히 길게(예: 48시간) 유지하면, 쿼리가 더 느린 magnetic store가 아니라 저지연 memory store에서 읽도록 보장합니다. 훨씬 더 긴 magnetic 보존 기간(예: 180일)은 과거 데이터를 비용 효율적으로 보존합니다. 이 구성은 최근 데이터에 대한 가장 빠른 쿼리 성능을 직접적으로 목표로 합니다.

문제 분석

핵심 개념: 이 문제는 고수집(ingest) 시계열 워크로드에서 최근 구간 분석을 빠르게 수행하기 위한 Amazon Timestream 데이터 모델링과 스토리지 티어 구성에 대한 이해를 평가합니다. Timestream에는 memory store(최근 데이터에 대한 빠른 쿼리에 최적화)와 magnetic store(과거 데이터에 대한 비용 최적화)가 있습니다. 쿼리 지연 시간은 데이터가 memory에서 제공되는지 여부와 레코드가 얼마나 효율적으로 모델링 및 수집되는지에 크게 좌우됩니다. 정답이 맞는 이유: A(배치 쓰기)는 수집 효율을 높이고 요청당 오버헤드, throttling 위험, write amplification을 줄입니다. 2,000척의 선박이 150 ms마다 9개 메트릭을 내보내므로 원시 이벤트율이 매우 높습니다. 배치 처리(예: WriteRecords 호출당 100–200개 레코드)는 처리량을 유지하고 수집을 안정적으로 유지하기 위한 모범 사례이며, 이는 데이터가 memory store에 신속히 안착하도록 간접적으로 지원하여 쿼리 성능에도 도움이 됩니다. D(multi-measure 레코드)는 핵심 Timestream 최적화입니다. 9개 메트릭을 동일한 타임스탬프와 차원으로 하나의 multi-measure 레코드에 저장하면 single-measure 모델링 대비 행 수를 약 9배 줄일 수 있습니다. 행이 적고 지역성(locality)이 좋아지면 대시보드 쿼리의 스캔 및 집계가 더 빨라지는 경향이 있습니다. F는 memory 보존 기간을 쿼리 조회 범위(lookback)보다 길게(예: 48시간) 유지하여 24시간 대시보드 쿼리가 전부 memory store에서 제공되도록 보장합니다. memory store는 저지연 쿼리를 위해 설계되었으며, 24시간 범위의 일부라도 magnetic store로 넘어가면 일반적으로 쿼리 지연 시간이 증가합니다. 주요 AWS 기능: - Timestream memory vs magnetic store 보존 정책(hot vs cold 티어) - multi-measure 레코드를 통한 레코드 수 감소 및 쿼리 효율 향상 - 처리량 극대화 및 API 오버헤드 감소를 위한 배치 WriteRecords 흔한 오해: 옵션 E는 “memory가 더 많으면 더 좋다”처럼 들릴 수 있지만, 의도된 티어링을 반대로 설정합니다(memory는 magnetic보다 짧아야 함). memory를 magnetic보다 길게 유지하는 것은 비전형적이며 비용을 증가시키고, 쿼리 윈도우가 memory에 있도록 보장하는 것 이상의 성능 향상을 본질적으로 제공하지 않습니다(이는 F가 더 적절하게 달성). 옵션 C는 더 단순해 보일 수 있지만 행 수를 늘려 쿼리를 느리게 만드는 경우가 많습니다. 시험 팁: Timestream 성능 문제에서는 다음을 우선시하십시오: (1) 쿼리하는 시간 범위를 memory store에 유지, (2) 메트릭이 동일한 타임스탬프/차원을 공유할 때 multi-measure 모델링으로 행/레코드 수 감소, (3) 배치 쓰기로 수집을 유지하고 throttling 회피. 기억할 점: memory 보존 기간은 보통 더 짧고, magnetic 보존 기간은 과거 데이터를 위해 더 깁니다.

4
문제 4
(2개 선택)

한 물류 기업이 두 개의 AWS Regions에 걸쳐 68개의 멤버 계정을 보유한 멀티-OU AWS Organizations 구성을 운영하고 있으며, 별도의 결제를 사용하는 11개의 독립형 AWS 계정을 사용하는 핀테크 스타트업을 인수했습니다. 플랫폼 팀은 단일 management account 하에서 관리를 중앙화하는 동시에, 가져온 모든 계정 전반에서 비상용(break-glass) 전체 관리자 제어 권한을 유지해야 하며, 전체 환경 전반의 보안 탐지 결과를 중앙에서 집계 및 그룹화하고 신규 계정이 온보딩될 때 자동으로 포함되도록 해야 합니다. 최소한의 운영 오버헤드로 이러한 요구 사항을 충족하기 위해 플랫폼 팀이 수행해야 할 작업 조합은 무엇입니까? (두 개 선택)

오답. 계정을 조직에 초대하는 것은 맞지만 SCP에 대한 설명이 틀렸습니다. SCP는 management account(또는 누구에게도) 권한을 부여할 수 없습니다. SCP는 계정이 사용할 수 있는 최대 권한만 정의하며, IAM role을 생성하거나 cross-account access를 자체적으로 허용하지 않습니다. Break-glass access에는 각 멤버 계정에 Assume 가능한 IAM role(또는 동등)이 필요합니다.

정답. 스타트업 계정을 조직에 초대한 후, 각 멤버 계정에 management account를 신뢰하고 AdministratorAccess를 가진 OrganizationAccountAccessRole을 생성(또는 존재를 보장)하면 중앙화된 비상용(break-glass) 관리자 액세스를 제공할 수 있습니다. 이는 최소한의 지속 운영 오버헤드로 management account에서 멤버 계정을 관리하는 표준 Organizations 패턴입니다.

정답. AWS Security Hub는 AWS accounts 및 Regions 전반의 보안 탐지 결과를 집계, 정규화, 그룹화하도록 설계되었습니다. AWS Organizations 통합을 통해 delegated administrator를 지정하고, 조직 전체 구성을 활성화하며, 조직에 가입하는 신규 계정을 자동으로 등록할 수 있어 자동 포함을 통한 중앙 집계 요구 사항을 충족합니다.

오답. AWS Firewall Manager는 조직 전반에서 방화벽 관련 정책(AWS WAF, Shield Advanced, security groups, Network Firewall, DNS Firewall)의 관리를 중앙화합니다. 전체 환경 전반의 보안 탐지 결과를 중앙에서 집계 및 그룹화하는 용도로 설계된 서비스가 아닙니다. 탐지 결과 집계에는 Security Hub가 올바른 서비스입니다.

오답. Amazon Inspector는 취약점 관리 탐지 결과(예: EC2, ECR, Lambda)를 제공하며 delegated administration으로 여러 계정에서 운영할 수 있지만, 전체 환경에 대한 중앙화된 cross-service 탐지 결과 집계 및 그룹화 계층 역할을 하지는 않습니다. 요구 사항은 더 광범위하며 Security Hub의 조직 전체 탐지 결과 집계에 해당합니다.

문제 분석

핵심 개념: 이 문제는 AWS Organizations 계정 온보딩과 중앙화된 보안 운영을 평가합니다. 구체적으로: (1) management account가 멤버 계정에 대해 비상용(break-glass) 관리자 액세스를 어떻게 유지하는지, (2) 조직 통합 보안 서비스를 사용하여 모든 계정의 보안 탐지 결과를 중앙에서 집계하고 신규 계정을 자동으로 포함하는 방법을 묻습니다. 정답이 맞는 이유: 관리를 중앙화하려면 스타트업의 독립형 계정을 기존 AWS Organization으로 초대해야 합니다. 비상용 전체 관리자 제어를 위해서는 management account가 AdministratorAccess로 Assume할 수 있는 cross-account role이 각 멤버 계정에 필요합니다. 대표적인 메커니즘은 management account를 신뢰하는 OrganizationAccountAccessRole(또는 동등한 admin role)이며, 이는 옵션 B가 설명하는 내용으로, Organizations에서 계정 생성/초대 이후 중앙 액세스를 활성화하는 방식과 일치합니다. 신규 온보딩 계정의 자동 포함과 함께 전체 계정에 대한 보안 탐지 결과를 중앙에서 집계 및 그룹화하려면 AWS Security Hub가 올바른 서비스입니다. AWS Organizations와 통합하면 Security Hub는 delegated administrator, 멀티-account/멀티-Region 집계, 신규 organization accounts의 자동 등록을 지원하여 지속적인 운영 오버헤드를 최소화합니다(옵션 C). 주요 AWS 기능: - AWS Organizations: 계정 초대 및 통합 거버넌스. - Cross-account IAM role (OrganizationAccountAccessRole): management account를 신뢰하며, 비상용 액세스를 위해 AdministratorAccess를 부여. - AWS Security Hub + Organizations: delegated admin, 조직 전체 활성화, 자동 계정 등록, 계정/Regions 전반의 중앙 탐지 결과 집계. - 모범 사례: 일상 운영에서 management account를 사용하지 않도록 보안 도구에 delegated administrator를 사용. 흔한 오해: - SCP는 권한을 “부여”하지 않으며, 허용 가능한 권한의 가드레일(최대 허용치)만 설정합니다. 따라서 SCP만으로 management account에 대한 break-glass admin access를 만들 수 없습니다. - Firewall Manager는 중앙화된 방화벽 정책 관리(AWS WAF, Shield Advanced, security groups 등)를 위한 서비스이지, 일반적인 보안 탐지 결과 집계 서비스가 아닙니다. - Amazon Inspector는 취약점 탐지 결과를 생성하지만, 요구된 것처럼 광범위한 cross-service 탐지 결과 집계 계층은 아닙니다. 시험 팁: - 기억할 점: IAM policies는 권한을 부여하고, SCP는 권한을 제한합니다. - 자동 등록을 포함한 조직 전체 보안 탐지 결과 집계는 “Security Hub + Organizations + delegated admin”을 떠올리세요. - 멤버 계정에 대한 중앙 관리자 액세스는 “멤버 계정으로 Assume role” 패턴(OrganizationAccountAccessRole 또는 동등)을 찾으세요.

5
문제 5

한 비디오 분석 회사는 모든 기능이 활성화된 단일 AWS Organizations organization에서 28개의 AWS account를 관리하고, 기준 배포를 위해 AWS CloudFormation StackSets를 사용하며, AWS Config는 이미 일반적인 S3 설정을 모니터링하고 있습니다. 이제 보안 팀은 모든 account와 Region 전반에서 발생하는 모든 S3 PutObject가 AWS Key Management Service (AWS KMS) server-side encryption (SSE-KMS)을 사용하도록 보장하고, 운영 오버헤드를 최소화하면서 비준수 업로드 시도를 차단하는 예방적 제어를 요구합니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?

s3-bucket-server-side-encryption-enabled를 포함한 AWS Config conformance pack은 탐지 제어를 제공합니다. bucket 설정을 평가하고 규정 준수를 보고합니다. Amazon SNS 알림을 추가하더라도, Config는 실시간으로 비준수 PutObject 요청을 예방하거나 차단하지 못합니다. 또한 모든 account와 Region 전반의 모든 업로드 시도에 대해 요청 단위로 SSE-KMS 사용을 강제하기보다는 bucket 수준 구성을 중심으로 합니다.

이 SCP는 s3:CreateBucket을 대상으로 하는데, 이는 요구 사항에 대한 잘못된 API action입니다. 회사는 bucket 생성이 아니라 object 업로드(PutObject)에서 암호화를 강제해야 합니다. 또한 condition key s3:x-amz-server-side-encryption은 object 업로드 요청과 관련이 있으므로, 이를 CreateBucket에 적용해도 모든 업로드된 object에 대해 SSE-KMS를 안정적으로 강제하지 못합니다.

CloudTrail data event와 EventBridge 및 SNS는 사후 탐지 및 알림 패턴입니다. 암호화되지 않은 PutObject 호출을 식별하고 보안 팀에 알릴 수는 있지만, 업로드 시도를 차단하지는 못합니다. 요구 사항은 운영 오버헤드를 최소화하면서 비준수 업로드를 차단하는 예방적 제어를 명시적으로 요구하므로, 모니터링/알림보다는 SCP를 가리킵니다.

s3:x-amz-server-side-encryption이 aws:kms와 같지 않으면 s3:PutObject을 거부하는 SCP는 예방적이며 organization 전체 범위의 가드레일입니다. organization root에 연결하면 모든 account와 Region에 적용되며, IAM 권한과 무관하게 비준수 업로드를 차단합니다. 이는 모든 PutObject가 SSE-KMS를 사용하도록 보장하고, 최소한의 지속 운영으로 비준수 시도를 중지해야 한다는 요구 사항을 충족합니다.

문제 분석

핵심 개념: 이 문제는 AWS Organizations Service Control Policies (SCPs)를 사용하여 Amazon S3에 대한 예방적이고 organization 전체 범위의 보안 제어를 테스트합니다. SCP는 account/OU에 대해 사용 가능한 최대 권한을 설정하는 가드레일로, 비준수 API 호출이 성공하기 전에 차단할 수 있습니다. 정답이 맞는 이유: 요구 사항은 모든 account와 Region 전반에서 모든 S3 PutObject가 SSE-KMS를 사용하도록 보장하고, 운영 오버헤드를 최소화하면서 비준수 업로드를 차단하는 것입니다. organization root에 연결된 SCP는 요청에서 AWS KMS server-side encryption (x-amz-server-side-encryption = aws:kms)을 지정하지 않을 때 s3:PutObject을 명시적으로 거부할 수 있습니다. SCP의 명시적 Deny는 IAM 권한과 무관하게 적용되므로, 이는 에이전트, rule 또는 account별 도구를 배포하지 않고도 모든 member account(신규 account 포함)에서 비준수 PutObject 요청을 중지하는 예방적 제어를 제공합니다. 주요 AWS 기능: - AWS Organizations SCPs: 중앙 집중식, 확장 가능한 가드레일; 명시적 Deny는 Allow를 무시합니다. - S3 condition key: s3:x-amz-server-side-encryption을 사용하여 PutObject에서 aws:kms를 요구합니다. 이는 요청 시점에 암호화를 강제합니다(예방적). - organization root 연결: 최소한의 지속 운영으로 모든 account/OU 및 Region 전반에 적용 범위를 보장합니다. 일반적인 오해: - AWS Config( conformance pack 포함)는 주로 탐지/수정 중심이며 예방적이지 않습니다. 비준수를 보고하고 알림 또는 remediation을 트리거할 수는 있지만, PutObject 호출을 본질적으로 차단하지는 않습니다. - CloudTrail + EventBridge 또한 탐지 방식입니다. 사후에 경고할 수는 있지만 업로드를 예방할 수는 없습니다. - CreateBucket을 거부하는 것은 object 업로드를 해결하지 못합니다. 암호화 요구 사항은 PutObject(그리고 실제 구현에서는 multipart upload 관련 action일 수 있음)에서 강제되어야 합니다. 시험 팁: 문제에서 “예방적 제어”와 “비준수 시도 차단”을 여러 account에 걸쳐 낮은 오버헤드로 요구하면, Config/CloudTrail보다는 SCP(또는 경우에 따라 permission boundary)를 떠올리십시오. 또한 policy의 action이 요구 동작과 일치하는지 확인하십시오. object 암호화는 bucket 생성이 아니라 s3:PutObject에서 강제됩니다. 실제로는 관련 S3 action(예: multipart upload)과 bucket policy도 고려할 수 있지만, organization 전체 강제에는 SCP가 시험에서의 정석 답입니다.

이동 중에도 모든 문제를 풀고 싶으신가요?

Cloud Pass를 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.

6
문제 6

한 DevOps 엔지니어가 AWS Lambda 함수가 Amazon Kinesis Data Streams shard에서 배치된 레코드를 읽고 VPC를 통해 내부 ERP SOAP endpoint로 전달하는 데이터 포워딩 서비스를 구축하고 있습니다. 대략 12%의 수신 레코드는 검증에 실패하며 수동으로 처리되어야 합니다. Lambda event source mapping은 실패 시 destination으로 Amazon SQS dead-letter queue(DLQ)로 구성되어 있고, 함수는 재시도가 활성화된 배치 처리를 사용합니다. 부하 테스트 중 엔지니어는 DLQ에 데이터 문제가 없고 이미 ERP 서비스에서 수락된 레코드가 많이 포함되어 있음을 관찰했습니다. 이는 부분적으로 실패한 배치에서 성공한 항목들이 재시도되고, 결국 실패 항목들과 함께 DLQ로 전송되고 있음을 나타냅니다. 현재 처리량과 재시도 동작을 유지하면서 DLQ로 전송되는 오류 없는 레코드 수를 줄이기 위해 엔지니어가 구현해야 할 event source 구성 변경은 무엇입니까?

재시도 횟수를 늘려도 재시도되는 오류 없는 레코드 수는 줄지 않으며, 보통 증가합니다. Kinesis 배치 재시도에서는 어떤 레코드든 실패를 유발하면 전체 배치가 재시도되므로, 재시도가 많을수록 ERP endpoint로의 중복 전송이 늘고 반복 실패 후 정상 레코드가 DLQ로 떨어질 가능성도 커집니다. 또한 downstream 부하를 증가시키고 idempotency를 더 복잡하게 만들 수 있습니다.

함수 오류 시 배치를 bisect(분할)하도록 활성화하면 Lambda가 실패한 배치를 자동으로 더 작은 배치로 나누어 재시도하여 불량 레코드를 격리합니다. 이는 성공한 레코드의 재처리를 줄이고, 오염된 배치 때문에 유효한 레코드가 DLQ로 들어가는 것을 최소화합니다. 기존 재시도 모델을 보존하며, 일반적으로 실패 영향 범위를 줄이면서 처리량도 유지합니다.

parallelization factor를 늘리면 shard당 동시에 처리되는 배치 수가 증가하여 처리량이 개선되고 지연이 줄어듭니다. 그러나 단 하나의 실패 레코드가 전체 배치를 재시도하게 만드는 근본 동작은 바뀌지 않습니다. 따라서 재시도되거나 DLQ로 전송되는 정상 레코드 수를 줄이지 못하며, 실패 조건에서는 ERP endpoint로의 중복 전달을 오히려 늘릴 수 있습니다.

최대 레코드 수명을 줄이면 Lambda가 오래된 레코드에 대한 재시도를 더 빨리 중단하고 더 이르게 실패 시 destination으로 보냅니다. 이는 배치 내 실패 레코드를 격리하지 못하며, 대신 배치가 계속 실패하고 시간이 경과함에 따라(ages out) 유효한 레코드까지 DLQ로 폐기되는 수가 늘어 손실/노이즈가 증가할 수 있습니다. 복구 시간은 줄지만 더 큰 데이터 손실/노이즈를 대가로 합니다.

문제 분석

핵심 개념: 이 문제는 Amazon Kinesis Data Streams에 대한 AWS Lambda event source mapping, 특히 부분 실패와 실패 시 destination(DLQ)에서 배치 재시도 의미론이 어떻게 상호작용하는지를 테스트합니다. Kinesis에서 Lambda는 shard로부터 배치를 읽으며, 기본적으로 배치를 성공/실패에 대한 원자적 단위로 취급합니다. 정답이 맞는 이유: Kinesis 배치에서 어떤 레코드든 Lambda invocation이 실패하도록 만들면(예: 검증 실패로 예외 발생), 전체 배치가 재시도됩니다. 즉, ERP endpoint로 이미 성공적으로 전달된 레코드도 다시 처리될 수 있으며, 중복을 유발할 수 있고 재시도가 소진된 후에는 실제로 나쁜 레코드와 함께 DLQ로 전송될 수 있습니다. “bisect batch on function error”(split/bisect)를 활성화하면 오류 발생 시 Lambda가 배치를 자동으로 더 작은 배치로 분할(이진 탐색)하여 재시도하도록 재시도 동작이 변경됩니다. 이는 문제 레코드를 가장 작은 실패 배치로 격리하여, 재시도되거나 최종적으로 DLQ로 전송되는 정상 레코드 수를 크게 줄이면서도 동일한 전체 처리량 목표를 유지하고 기존 재시도 메커니즘을 보존합니다. 주요 AWS 기능: - Event source mapping 설정: Kinesis/DynamoDB Streams용 BisectBatchOnFunctionError. - Event source mapping의 실패 시 destination(SQS DLQ): 레코드가 만료되거나 재시도가 소진될 때 사용. - 배치 처리 동작: bisection이 없으면 단 하나의 불량 레코드가 전체 배치를 오염(poison)시킴. 이는 Well-Architected Reliability 원칙(영향 범위 제한 및 실패 격리)과 일치합니다. 흔한 오해: 일시적 문제를 “해결”하기 위해 재시도를 늘리는 것(A)은 중복 처리만 증가시키고 DLQ 노이즈를 악화시킬 수 있습니다. parallelization(C)을 늘리면 처리량은 개선되지만 배치의 원자성은 바뀌지 않으며, 오히려 중복을 증폭시킬 수 있습니다. 최대 레코드 수명(D)을 줄이면 더 많은 레코드가 더 빨리 DLQ로 밀려나, 실패 격리보다는 손실/노이즈가 증가할 수 있습니다. 시험 팁: Kinesis/DynamoDB Streams + Lambda에서는, bisection을 활성화하거나(또는 지원되는 경우 partial batch response를 구현하지 않는 한) 배치가 재시도의 단위라는 점을 기억하세요. 증상이 “한 레코드가 실패해서 정상 레코드가 DLQ로 간다”라면, 재시도나 동시성 튜닝보다 BisectBatchOnFunctionError(또는 partial batch response)를 먼저 떠올리세요.

7
문제 7

글로벌 결제 플랫폼은 us-east-1 및 eu-west-1의 가맹점을 대상으로 p95 지연 시간이 150 ms 미만이고 최소 99.99% 가용성을 충족해야 하는 webhook receiver에 대해 well-architected 설계가 필요합니다. 스택은 Amazon API Gateway, AWS Lambda, Amazon DynamoDB를 사용해야 하며, 두 Region 모두에서 쓰기가 가능하도록 보장하면서 Region 간 자동 장애 조치가 가능한 active-active 운영을 제공해야 합니다.

Route 53 health checks는 Regional API endpoints 간 failover를 제공할 수 있지만, 이 설계는 복제 메커니즘이 없는 별도의 Region 로컬 DynamoDB tables를 사용합니다. 이는 두 Region 모두에서 쓰기가 가능하고 Region 간 데이터 일관성을 유지하는 active-active 운영 요구 사항을 충족하지 못합니다. 또한 reconciliation을 위한 운영 복잡성을 만들고 부분 장애 동안 상태가 분기될 수 있습니다.

가장 적합한 선택입니다. Route 53 latency-based routing은 트래픽을 가장 가까운 정상 Regional API Gateway endpoint로 전송하여 150 ms p95 지연 시간 목표를 지원합니다. 각 Region은 낮은 지연과 격리를 위해 로컬 Lambda를 사용합니다. DynamoDB global tables는 자동 복제를 갖춘 multi-Region, multi-writer 기능을 제공하여 active-active writes와 Region 간 자동 장애 복구를 가능하게 합니다.

이는 커스텀 장애 조치 메커니즘을 가진 사실상 active-passive입니다. 5분마다 Lambda를 실행하여 health를 probe하고 Route 53을 업데이트하는 방식은 네이티브 Route 53 health checks보다 느리고 추가적인 실패 모드 및 전파 지연을 유발합니다. 또한 built-in health checks와 active-active 트래픽 처리를 원하는 99.99% 고가용성 및 자동 장애 조치 요구 사항과 충돌합니다.

us-east-1의 단일 API Gateway는 multi-Region이 아니며 단일 장애 지점 및 EU 가맹점에 대한 지연 시간 병목이 됩니다. API Gateway는 네이티브로 “가장 가까운 Region” 기능처럼 다른 Region의 Lambda로 요청을 투명하게 전달할 수 없으며, cross-Region invocation은 지연과 복잡성을 추가합니다. 단일 Region DynamoDB table 또한 multi-Region active-active writes 요구 사항을 충족하지 못합니다.

문제 분석

핵심 개념: 이 문제는 API Gateway + Lambda + DynamoDB를 사용하여 낮은 지연 시간과 높은 가용성을 위한 multi-Region active-active 아키텍처, 특히 Region 간 자동 장애 조치를 제공하면서 두 Region 모두에서 쓰기가 가능하도록 유지하는 방법을 테스트합니다. 핵심 서비스는 Amazon Route 53(글로벌 트래픽 관리), API Gateway Regional endpoints(multi-Region API 프런트 도어), DynamoDB global tables(multi-Region, multi-writer replication)입니다. 정답이 맞는 이유: 옵션 B는 Route 53 latency-based routing(LBR)과 health checks를 사용하여 각 가맹점을 가장 가까운 정상 Regional API endpoint로 전송합니다(RTT를 최소화하여 p95 < 150 ms를 지원). 한 Region이 비정상이 되면 Route 53 health checks가 해당 endpoint를 더 이상 반환하지 않아 자동 장애 조치가 제공됩니다. 각 Region은 Lambda를 로컬로 실행합니다(Region 간 invocation 지연 및 의존성 회피). DynamoDB global tables는 active-active, multi-Region writes를 제공합니다. 각 Region은 로컬로 쓰기를 수락하고 비동기적으로 다른 Region으로 복제하여, 두 Region 모두에서 쓰기가 가능해야 한다는 요구 사항을 충족합니다. 주요 AWS 기능: - Route 53 Latency-Based Routing + health checks: 가장 낮은 지연의 정상 endpoint로 사용자를 유도하며, active-active를 지원합니다. - API Gateway Regional endpoints: Region별로 배포되며, Route 53과 자연스럽게 결합됩니다. - Lambda in-region execution: 지연 시간을 줄이고 cross-Region blast radius를 회피합니다. - DynamoDB global tables (v2019.11.21): multi-writer 기능을 갖춘 multi-Region replication; 복제를 위해 DynamoDB Streams와 통합되며 Region 간 고가용성을 지원합니다. 흔한 오해: 흔한 함정은 “두 개의 Regional DynamoDB tables”가 active-active와 동일하다고 가정하는 것입니다. global tables(또는 커스텀 replication) 없이 운영하면 split-brain 데이터, 일관되지 않은 읽기, 그리고 Region 간 자동 연속성이 없는 위험이 있습니다. 또 다른 오해는 수동 또는 스케줄 기반 장애 조치 로직(옵션 C)을 사용하는 것으로, 이는 더 느리고 실패 가능성이 높으며 99.99% 가용성 목표와도 맞지 않습니다. 시험 팁: DynamoDB와 함께 “active-active across Regions” 및 “writes available in both Regions”를 보면, 시험에서는 거의 항상 DynamoDB global tables를 기대합니다. 이를 Route 53 LBR(지연 시간) 또는 failover routing(primary/secondary)과 결합합니다. 엄격한 지연 시간 목표가 있으면 cross-Region forwarding보다는 in-Region Lambda + Regional API endpoints를 선호합니다.

8
문제 8

데이터 플랫폼 팀이 팀들이 매일 밤 ETL proof of concept를 빠르게 실행하고 종료할 수 있도록 AWS CloudFormation template을 만들었습니다. 이 template은 AWS Glue job과 versioning이 활성화되어 있고 객체를 90일 동안 보관하는 lifecycle rule이 있는 Amazon S3 bucket을 프로비저닝합니다. 그런데 stack이 생성 후 24시간 이내에 삭제될 때 bucket에 여전히 객체와 delete marker가 남아 있어 CloudFormation에서 S3 bucket에 대해 DELETE_FAILED가 표시됩니다. 따라서 팀은 모든 리소스가 자동으로 제거되고 오류 없이 stack 삭제가 완료되도록 보장하는 가장 효율적인 방법이 필요합니다.

DeletionPolicy: Delete는 stack이 삭제될 때 해당 리소스를 어떻게 처리할지 CloudFormation에 지시할 뿐이며, bucket이 삭제되기 전에 비어 있어야 한다는 S3의 요구 사항을 무시하지는 못합니다. versioning이 활성화된 경우 delete marker와 이전 version도 여전히 내용물로 간주됩니다. 객체/버전이 남아 있으면 stack은 여전히 DELETE_FAILED로 실패하므로 근본 원인을 해결하지 못합니다.

Lambda-backed custom resource는 CloudFormation이 기본적으로 수행할 수 없는 작업(예: versioned bucket 비우기)을 수행하는 일반적인 CloudFormation 패턴입니다. Delete 시 function은 ListObjectVersions를 호출해 version과 delete marker를 가져온 다음, version ID를 포함해 DeleteObjects를 호출하여 모든 항목을 제거할 수 있습니다. 이렇게 하면 bucket이 비어 CloudFormation이 bucket을 삭제할 수 있고 stack 종료가 자동으로 완료됩니다.

bucket(버전 포함)을 수동으로 비우면 동작은 하지만, 효율적이지 않고 자동 제거 요구 사항을 충족하지 못합니다. 특히 매일 밤 proof-of-concept stack에 대해 운영 부담과 정리 불일치 위험을 초래합니다. 인증 시험 문제에서는 자동화된 IaC 기반 접근이 가능한 경우 수동 단계를 보통 감점 요소로 봅니다.

CodePipeline로 대체하는 것은 불필요하며 핵심 문제를 해결하지 못합니다. S3 bucket 삭제는 versioned content를 비우는 것이 필요합니다. 종료를 위해 pipeline stage를 두는 것은 단순한 stack lifecycle 관리에 대한 anti-pattern이며 복잡성, 비용, 유지보수를 증가시킵니다. CloudFormation은 이미 리소스 생성/삭제를 오케스트레이션하므로, 부족한 부분은 자동 bucket cleanup이며 이는 custom resource로 처리하는 것이 최선입니다.

문제 분석

핵심 개념: 이 문제는 Amazon S3 bucket, 특히 versioning이 활성화된 경우의 CloudFormation stack 삭제 동작을 테스트합니다. CloudFormation은 S3 bucket이 비어 있을 때만 삭제할 수 있습니다. versioning이 있는 경우 “비어 있음”은 현재 객체가 없고, noncurrent version도 없고, delete marker도 없는 상태를 의미합니다. 정답이 맞는 이유: Option B는 가장 효율적이며 완전 자동화된 접근 방식입니다. Lambda-backed custom resource가 stack 삭제 중에 정리 작업을 수행합니다. RequestType=Delete에서 function이 객체 version과 delete marker(및 남아 있는 현재 객체)를 나열하고 삭제합니다. bucket이 실제로 완전히 비워지면 CloudFormation이 bucket 리소스를 성공적으로 삭제하고 DELETE_FAILED 없이 stack 삭제를 완료할 수 있습니다. 이는 IaC best practice와도 일치합니다. 즉, stack은 자체 포함적이어야 하며 수동 단계 없이 완전히 되돌릴 수 있어야 합니다(깨끗하게 생성 및 삭제). 주요 AWS 기능: - CloudFormation custom resource(Lambda-backed)는 stack lifecycle event(Create/Update/Delete) 동안 명령형 작업을 수행할 수 있게 합니다. - S3 versioning은 delete marker와 여러 version을 도입하며, 삭제에는 version ID와 delete marker에 대한 DeleteObjects가 필요합니다. - CloudFormation 리소스 dependency 제어(DependsOn)를 사용하면 CloudFormation이 bucket 삭제를 시도하기 전에 custom cleanup이 실행되도록 보장할 수 있습니다. - IAM least privilege: Lambda role에는 s3:ListBucket, s3:ListBucketVersions, s3:DeleteObject / s3:DeleteObjectVersion(그리고 사용 중이라면 s3:DeleteObjectTagging도) 권한이 필요합니다. 흔한 오해: 흔한 함정은 CloudFormation의 DeletionPolicy: Delete가 비어 있지 않은 bucket을 “강제로 삭제”해 준다고 가정하는 것입니다. 그렇지 않습니다. S3는 여전히 bucket 안에 무엇인가 남아 있으면 삭제를 거부합니다. 또 다른 오해는 lifecycle rule이 여기서 도움이 된다는 것입니다. lifecycle expiration은 즉시 실행되지 않으며, 특히 version과 delete marker에 대해서는 24시간 이내에 동작하지 않습니다. 시험 팁: “S3 bucket 삭제 실패” + “versioning enabled”를 보면 즉시 떠올려야 할 것은: 객체 version과 delete marker를 삭제해야 한다는 점입니다. CloudFormation에서는 표준적인 시험 패턴으로 Lambda-backed custom resource(또는 명시적으로 언급된 경우 더 새로운 native 메커니즘)를 사용해 stack 삭제 중에 bucket을 비웁니다. 수동 정리보다 자동화되고 반복 가능한 IaC 기반 솔루션을 선호하세요.

9
문제 9
(2개 선택)

한 금융 분석 플랫폼은 상태 비저장 API를 각 Region당 두 개의 Availability Zone에 걸쳐 Application Load Balancer 뒤의 Auto Scaling group 내 Amazon EC2 인스턴스에서 실행하고, 트랜잭션 데이터를 Amazon Aurora PostgreSQL에 저장합니다. 비즈니스는 Region 전반에서 데이터와 애플리케이션 모두에 대해 항상 최대 RPO 2시간과 최대 RTO 10분을 요구합니다. 어떤 배포 전략 조합이 이러한 요구 사항을 충족합니까? (두 개 선택)

오답입니다. 여러 Region에 Single-AZ Aurora 클러스터를 두는 것만으로는 Region 간 지속적 복제가 제공되지 않으므로 RPO가 보장되지 않습니다. Single-AZ는 각 Region 내 가용성도 낮추고 AZ 수준 장애에 대한 복구 시간도 증가시킵니다. “Aurora 자동 복구”는 주로 Region 내 인스턴스/스토리지 장애를 다루며, 보장된 RPO/RTO 목표를 가진 cross-Region DR을 의미하지 않습니다.

정답입니다. Aurora PostgreSQL Global Database는 낮은 지연의 복제(일반적으로 초 단위)를 제공하는 cross-Region DR 전용 기능으로, 2시간 RPO를 쉽게 충족합니다. regional 장애 시 보조 Region을 기본으로 승격하면 쓰기 기능을 빠르게 복구할 수 있습니다. 애플리케이션이 승격된 클러스터 엔드포인트를 사용하도록 업데이트하는 것은 RTO 내에서 데이터베이스 failover를 완료하기 위한 표준 전환 단계입니다.

오답입니다. 독립적인 Aurora 클러스터를 NLB 뒤에 두고 서로 대체 가능한 엔드포인트처럼 Region 전반에 걸쳐 SQL 트래픽을 분산할 수는 없습니다. 이는 일관된 읽기/쓰기를 제공하지 못하고, 지원되는 multi-writer 아키텍처 없이 데이터 불일치를 초래합니다. Aurora는 이런 방식의 multi-Region active/active writer를 지원하지 않으며, NLB는 데이터베이스 복제나 일관성 메커니즘이 아닙니다.

정답입니다. 상태 비저장 API 스택을 두 Region에 배포하고 health check와 함께 Route 53 failover routing을 사용하면 자동 regional 트래픽 failover를 제공할 수 있습니다. 두 Region 모두에 ALB와 Auto Scaling group이 존재하므로 DNS가 failover되면 보조 Region이 즉시 트래픽을 처리할 수 있어, 적절히 구성하고 테스트할 경우 애플리케이션 계층의 10분 RTO를 지원합니다.

이 옵션은 예상되는 시험 정답은 아니지만, 설명은 더 정확해야 합니다. AWS Global Accelerator는 사용자를 다른 Region의 정상 ALB endpoint로 라우팅하여 application tier에 대해 빠른 cross-Region failover를 제공할 수 있으므로, 순수한 application availability 관점에서는 필요한 RTO를 지원할 수 있습니다. 그러나 이 문제는 일반적으로 disaster recovery와 연관되는 deployment strategy 조합을 묻고 있으며, Route 53 failover routing이 regional failover에 대해 시험에서 더 전형적으로 다루는 AWS DR 패턴입니다. 또한 두 ALB를 단일 endpoint group에 배치한다는 표현은 일반적인 multi-Region design pattern이 아니므로, application component에 대해서는 D가 더 명확하고 표준적인 선택입니다.

문제 분석

핵심 개념: 이 문제는 엄격한 RPO/RTO 목표를 충족하기 위해 애플리케이션 계층과 데이터베이스 계층 모두에 대한 multi-Region 재해 복구(DR) 설계를 평가합니다. 핵심 서비스는 낮은 RPO의 cross-Region 복제를 위한 Amazon Aurora PostgreSQL Global Database와 regional 애플리케이션 failover를 위한 Amazon Route 53 failover routing입니다. 정답이 맞는 이유: “Region 전반에서 항상” RPO 2시간과 RTO 10분을 충족하려면 (1) 두 번째 Region으로 지속적으로 복제되는 데이터와 (2) 두 번째 Region에 사전 프로비저닝되어 즉시 서비스 가능한 애플리케이션 스택 및 자동 트래픽 failover가 필요합니다. 옵션 B는 데이터 전략을 제공합니다. Aurora Global Database는 기본 Region에서 보조 Region으로 스토리지 수준 변경 사항을 복제하며, 일반적인 복제 지연은 초 단위로 측정되어 2시간 RPO 요구 사항보다 훨씬 우수합니다. regional 재해 시 보조 Region을 새 기본으로 승격(계획/비계획 failover)한 다음, 애플리케이션이 새 writer endpoint를 사용하도록 전환할 수 있습니다. 옵션 D는 애플리케이션 전략을 제공합니다. 두 Region에서 ALB 뒤에 API 스택을 실행하고 health check와 함께 Route 53 failover routing을 사용하면 DNS 기반 regional failover가 가능합니다. 두 Region 모두에 Auto Scaling을 통해 스택이 이미 배포되고 확장되어 있으므로 애플리케이션 RTO는 수 분 내로 가능해 10분 요구 사항과 부합합니다. 주요 AWS 기능: Aurora Global Database는 DR과 빠른 복구를 위해 설계된 cross-Region 복제를 제공합니다. 보조 클러스터 승격은 쓰기 기능을 복구하기 위한 표준 DR 조치입니다. Route 53 failover routing은 health check를 사용해 기본 ALB가 비정상일 때 트래픽을 보조 ALB로 전환합니다. 이는 Well-Architected Reliability 원칙(중복성, 자동 failover, 테스트된 복구 절차)과 일치합니다. 흔한 오해: 일부는 Region 내 Multi-AZ만으로 “Region 전반” 요구 사항을 충족한다고 가정하지만, 그렇지 않습니다. 또 다른 일부는 데이터베이스를 Region 간에 “load balance”하려고 하지만(옵션 C), Aurora 클러스터는 NLB 뒤에서 Region 간 active/active writer로 동작하도록 설계되지 않았습니다. 또한 Global Accelerator(옵션 E)는 failover와 성능을 개선할 수 있지만, 문제는 요구 사항을 충족하는 조합을 묻고 있으며, Aurora Global Database와 결합된 Route 53 failover만으로도 RTO/RPO를 충족합니다. 시험 팁: Aurora에서 엄격한 cross-Region RPO/RTO가 요구되면 “Aurora Global Database”와 regional 트래픽 관리/failover 메커니즘(Route 53 failover 또는 Global Accelerator)을 찾으십시오. 상태 비저장 앱의 경우 health 기반 라우팅을 사용하는 active/standby 또는 active/active regional 스택이 일반적인 패턴입니다. Region 내 HA만 다루거나 cross-Region SQL load balancing을 시도하는 답은 피하십시오.

10
문제 10

한 글로벌 미디어 회사는 두 개의 OU(루트 및 analytics)로 AWS Organizations를 사용합니다. 루트 OU에는 모든 리소스에 대한 모든 작업을 허용하는 단 하나의 Allow 문이 포함된 단일 SCP가 있습니다. 반면 analytics OU(계정 4개 포함, 그중 ext-ml 계정 ID 222222222222 포함)에는 s3:* 및 glue:만 허용하고, 모든 리소스에 대해 NotAction [s3:, glue:*]를 사용하는 Deny 문으로 그 외 모든 작업을 명시적으로 거부하는 SCP가 있습니다. ext-ml 계정에서 DevOps 엔지니어의 IAM 사용자에게 AdministratorAccess 정책이 연결되어 있으며, 엔지니어가 us-east-1에서 콘솔과 AWS CLI를 통해 Amazon RDS db.m6g.large 인스턴스(rds:CreateDBInstance)를 생성하려고 하면, 조직 service control policy에 의해 차단되었다는 AccessDeniedException과 함께 요청이 실패합니다. 어떤 변경을 하면 엔지니어가 ext-ml 계정에서 RDS 인스턴스를 성공적으로 생성할 수 있습니까?

오답입니다. AmazonRDSFullAccess는 IAM 정책입니다. IAM 권한은 SCP의 명시적 Deny를 재정의할 수 없습니다. 오류에 작업이 Organizations SCP에 의해 차단되었다고 명시되어 있으므로, SCP가 rds:CreateDBInstance를 더 이상 거부하지 않기 전까지 IAM 권한을 추가(관리자 포함)해도 도움이 되지 않습니다.

오답입니다. ext-ml 계정에 RDS를 허용하는 새 SCP를 연결해도 analytics OU SCP의 명시적 Deny를 재정의하지 못합니다. SCP는 가드레일로 결합되며, 적용되는 SCP 중 어느 하나에라도 명시적 Deny가 있으면 작업이 차단됩니다. OU SCP의 거부 조건을 제거/수정(또는 계정 이동)해야 합니다.

정답입니다. analytics OU SCP는 Deny with NotAction을 통해 s3:* 및 glue:*를 제외한 모든 작업을 명시적으로 거부합니다. RDS는 예외 처리되지 않았으므로 rds:CreateDBInstance가 거부됩니다. 이 OU SCP를 업데이트하여 NotAction 예외에 rds:* (또는 필요한 특정 RDS 작업)를 포함시키거나(또는 다른 방식으로 RDS를 허용) 명시적 거부를 제거하면, IAM AdministratorAccess가 성공할 수 있습니다.

오답입니다. 루트 OU SCP가 모든 작업을 허용하더라도 하위 OU SCP의 명시적 Deny를 취소하지 못합니다. SCP 평가는 적용되는 모든 SCP 제약에서 작업이 허용되어야 하며, 어떤 명시적 Deny라도 우선합니다. 따라서 루트에 allow-RDS SCP를 추가해도 명시적으로 거부하는 OU에서 RDS를 활성화할 수 없습니다.

문제 분석

핵심 개념 - 이 문제는 AWS Organizations Service Control Policies(SCP)가 IAM 권한과 무관하게 계정에서 사용할 수 있는 최대 권한을 설정하는 방식을 테스트합니다. SCP는 자체적으로 권한을 부여하지 않으며, 가드레일을 정의합니다. SCP의 명시적 Deny는 AdministratorAccess를 포함한 어떤 IAM 정책으로도 재정의할 수 없습니다. 정답이 맞는 이유 - ext-ml 계정은 analytics OU에 있으며, 이 OU에는 s3:* 및 glue:*만 허용하고 Deny with NotAction [s3:*, glue:*]를 사용해 그 외 모든 것을 명시적으로 거부하는 SCP가 있습니다. rds:CreateDBInstance는 NotAction 허용 목록에 포함되지 않으므로 Deny 문과 매칭되어 해당 OU의 모든 계정에 있는 모든 principal에 대해 명시적으로 거부됩니다. 따라서 엔지니어의 AdministratorAccess IAM 정책은 RDS 작업에 대해 의미가 없고, 요청은 Organizations 계층에서 차단됩니다. RDS 인스턴스 생성을 허용하려면 ext-ml 계정에 적용되는 유효 SCP를 변경하여 RDS 작업이 명시적으로 거부되지 않도록 해야 합니다. analytics OU SCP를 업데이트하여 NotAction 예외에 rds:*를 포함(또는 RDS에 대한 명시적 거부를 다른 방식으로 제거)하는 것이 직접적인 해결책입니다. 주요 AWS 기능 - SCP 평가는 “교집합 기반”입니다. 즉, 작업은 IAM에서 허용되어야 하고 SCP에 의해 차단되지 않아야 합니다. 명시적 Deny가 항상 우선합니다. OU 수준 SCP는 OU 내 모든 계정에 적용됩니다. 계정 수준 SCP는 추가 제약(더 많은 가드레일)일 뿐, 재정의가 아닙니다. 루트 OU SCP가 *를 허용하더라도 하위 OU의 명시적 Deny를 무효화하지 못합니다. 흔한 오해 - AmazonRDSFullAccess(또는 AdministratorAccess)를 연결하면 SCP 거부가 해결된다고 생각하는 실수가 흔합니다. 그렇지 않습니다. 또 다른 오해는 계정 또는 루트에 “allow RDS” SCP를 연결하면 OU의 Deny를 재정의할 수 있다는 것인데, 명시적 Deny가 계속 적용되므로 불가능합니다. 시험 팁 - “blocked by an organization service control policy”를 보면 즉시 SCP에서 명시적 Deny 또는 허용 목록(NotAction 패턴)을 확인하십시오. OU SCP가 Deny with NotAction을 사용한다면, 필요한 서비스 작업을 NotAction 목록에 추가(또는 SCP를 재설계)해야 하며, 또는 해당 작업이 허용되는 OU로 계정을 이동해야 합니다.

이동 중에도 모든 문제를 풀고 싶으신가요?

Cloud Pass를 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.

11
문제 11

한 온라인 게임 플랫폼이 Auto Scaling group에서 us-east-1 및 us-west-2에 걸쳐 12개의 Amazon EC2 instances를 운영하고 있습니다. AWS Health는 reboot가 필요한 scheduled instance retirement 및 underlying host maintenance notifications를 게시하며, 회사는 remediation이 매주 일요일 01:00~03:00 UTC의 기존 AWS Systems Manager maintenance window 내에서만 수행되어야 한다고 요구합니다. 그렇다면 DevOps engineer는 reboots가 maintenance window 안에서만 실행되도록 보장하면서 이러한 notifications를 자동으로 처리하기 위해 Amazon EventBridge rule을 어떻게 구성해야 합니까?

오답입니다. AWS Health를 event source로 사용하는 것은 올바른 출발점이지만, EventBridge에서 AWS-RestartEC2Instance를 직접 대상으로 지정하면 이벤트를 수신하는 즉시 automation이 실행됩니다. 즉, reboot가 승인된 Sunday 01:00–03:00 UTC maintenance window를 기다리지 않고 즉시 발생하게 됩니다. 따라서 source service는 적절하지만 이 선택지는 핵심 scheduling 요구 사항을 충족하지 못합니다.

오답입니다. Systems Manager maintenance window event는 scheduled instance retirement 또는 underlying host maintenance 알림을 감지하기 위한 올바른 트리거가 아닙니다. 영향을 받는 resource와 maintenance 요구 사항은 maintenance window 자체가 아니라 AWS Health에서 발생합니다. 또한 이 선택지는 영향을 받는 특정 EC2 instance를 어떻게 식별하고 restart automation에 전달할 것인지 설명하지 않습니다.

정답입니다. EventBridge는 EC2 instance에 영향을 주는 scheduled instance retirement 및 underlying host maintenance 또는 scheduled change event와 관련된 AWS Health 알림을 수신해야 합니다. 그런 다음 Lambda function이 기존 Sunday window에서 SSM Maintenance Window task를 등록하거나 업데이트하여 AWS-RestartEC2Instance Automation runbook이 승인된 시간 동안에만 실행되도록 할 수 있습니다. 이 설계는 두 가지 요구 사항을 모두 충족합니다. 즉, AWS Health 알림에 대한 자동 응답과 reboot action에 대한 maintenance window의 엄격한 적용입니다.

오답입니다. EC2 instance state-change notification은 예정된 retirement 또는 host maintenance action에 대한 authoritative signal이 아닙니다. 이러한 알림은 AWS Health에서 오며 disruptive event 전에 게시되므로 remediation을 계획할 수 있습니다. Lambda가 maintenance window task를 등록할 수는 있지만, 이 선택지는 잘못된 event source에서 시작하므로 필요한 사전 대응을 놓칠 수 있습니다.

문제 분석

핵심 개념: 이 문제는 Amazon EventBridge, AWS Health 이벤트, 그리고 AWS Systems Manager (SSM) Maintenance Windows/Automation을 사용한 event-driven remediation을 테스트합니다. 핵심 요구 사항은 scheduled instance retirement 및 underlying host maintenance에 대한 AWS Health 알림을 단순히 감지하는 것뿐만 아니라, reboot와 같은 disruptive action이 사전에 승인된 maintenance window 동안에만 수행되도록 강제하는 것입니다. 정답인 이유: AWS Health는 EC2에 대한 account-specific operational event를 게시하며, 여기에는 reboot가 필요할 수 있는 scheduled instance retirement 및 underlying host maintenance 또는 scheduled change event가 포함됩니다. EventBridge는 이러한 AWS Health 이벤트를 매칭하고 downstream automation을 트리거할 수 있습니다. 그러나 EventBridge에서 reboot runbook을 직접 호출하면 즉시 실행되므로, 기존 Sunday 01:00–03:00 UTC maintenance window 동안에만 작업해야 한다는 요구 사항을 위반하게 됩니다. 선택지 C는 EventBridge를 사용해 Health 이벤트를 감지한 다음, Lambda function을 호출하여 기존 window에 대해 SSM Maintenance Window task를 등록하므로 AWS-RestartEC2Instance runbook이 해당 window가 열릴 때만 실행되도록 합니다. 주요 AWS 기능: - account-specific EC2 operational notification을 위한 AWS Health와 EventBridge의 통합. - 실행을 승인된 시간 범위로 제한하는 SSM Maintenance Windows. - 표준화된 remediation을 수행하는 AWS-RestartEC2Instance와 같은 SSM Automation runbook. - Health event payload를 영향을 받는 instance에 대한 maintenance window task로 변환하는 orchestration glue 역할의 Lambda. - AWS Health 이벤트는 특정 Region의 영향을 받는 resource를 식별하고, SSM action은 instance가 존재하는 Region에서 실행되어야 하므로 Regional awareness가 중요함. 흔한 오해: A는 AWS Health에서 올바르게 시작하기 때문에 그럴듯해 보이지만, restart automation을 즉시 호출하므로 maintenance window 요구 사항을 무시합니다. B는 영향을 받는 EC2 instance를 식별하는 source of truth를 Systems Manager maintenance window event로 잘못 간주하지만, 실제 트리거는 AWS Health에서 와야 합니다. D는 EC2 state-change notification을 사용하지만, 이는 예정된 retirement 또는 host maintenance 이벤트에 대한 authoritative source가 아니며 너무 늦게 발생할 수 있습니다. 시험 팁: 문제에서 remediation이 maintenance window 동안에만 발생해야 한다고 하면, 이를 강제하는 메커니즘은 SSM Maintenance Windows입니다. EventBridge는 AWS Health 이벤트를 감지하는 데 일반적으로 사용되지만, 승인된 window로 실행을 지연시키기 위해 Lambda 또는 다른 orchestration layer가 필요한 경우가 많습니다. 또한 scheduled retirement 및 host maintenance의 경우, 올바른 event source는 EC2 state-change notification이 아니라 AWS Health입니다.

12
문제 12

연구 분석 플랫폼이 Amazon EC2 인스턴스에서 데이터 수집기를 Auto Scaling group(최소 4, 최대 20)으로 실행하며, 이 Auto Scaling group은 AWS CloudFormation에 의해 생성 및 유지 관리된다. 각 인스턴스는 /etc/collector/config.toml 경로에 있는 12 KB TOML 구성 파일로 시작해야 하며, 이 파일은 인프라 템플릿과 동일한 소스 리포지토리에서 버전 관리된다. 또한 CloudFormation stack이 이 구성 변경으로 업데이트될 때, 실행 중인 모든 인스턴스는 인스턴스를 교체하지 않고 3분 이내에 변경 사항을 반영해야 하며, 새로 시작되는 인스턴스는 항상 최신 구성을 가져야 한다. 최소 지연으로 이를 달성하는 솔루션은 무엇인가?

오답. AWS Config rule은 리소스 컴플라이언스를 평가하고 알림/수정 조치를 트리거할 수 있지만, 버전 관리된 파일을 EC2 인스턴스에 배포하도록 설계되지 않았다. 파일 내용을 InputParameters에 넣는 것은 인스턴스 부트스트래핑을 위한 실용적이거나 의도된 메커니즘이 아니다. Systems Manager Resource Data Sync는 구성을 적용하기 위해 “구성 업데이트를 폴링”하는 것이 아니라, 보고를 위해 인벤토리/컴플라이언스 데이터를 S3로 동기화한다.

cfn-init + cfn-hup이라는 아이디어는 부분적으로 맞지만, 배치가 잘못되었다. cfn-hup이 모니터링하는 것은 launch template이 아니라 CloudFormation 리소스 metadata 변경이다. 구성이 launch template 데이터에만 있으면, CloudFormation::Init metadata로 관리하고 cfn-init을 다시 실행하도록 하지 않는 한, 기존 인스턴스는 stack 변경으로 자동 업데이트되지 않는다.

오답. Launch Template에 구성을 포함하는 것은 새로 시작되는 인스턴스에만 영향을 주며, 인스턴스를 교체하지 않고 3분 이내에 이미 실행 중인 인스턴스를 업데이트하지 못한다. 또한 Systems Manager Resource Data Sync는 구성 배포 메커니즘이 아니며 인스턴스에 파일 변경을 적용하지 않는다. 이 옵션은 인플레이스 업데이트 요구 사항과 SSM 기능의 올바른 사용 모두를 충족하지 못한다.

정답. CloudFormation::Init metadata로 TOML 파일 내용과 대상 경로를 정의할 수 있다. UserData가 부팅 시 cfn-init을 실행하므로 새 인스턴스는 항상 최신 구성을 받는다. cfn-hup은 지속적으로 실행되며 CloudFormation metadata를 폴링한다. stack이 새로운 파일 내용으로 업데이트되면 cfn-hup이 cfn-init을 트리거하여 metadata를 다시 적용하고, 폴링 interval(예: 3분 이하) 내에 인스턴스를 교체하지 않고 모든 실행 중 인스턴스의 /etc/collector/config.toml을 업데이트한다.

문제 분석

핵심 개념: 이 문제는 Auto Scaling group에 대해 CloudFormation 기반으로 EC2 인스턴스 구성을 관리하는 방법을 테스트하며, 특히 CloudFormation stack metadata에서 파일을 렌더링하는 CloudFormation::Init(cfn-init)과, metadata 변경을 감지하여 이미 실행 중인 인스턴스에서 cfn-init을 다시 실행하는 cfn-hup을 사용하는지를 묻는다. 정답인 이유: 옵션 D는 인스턴스를 교체하지 않고 CloudFormation stack 업데이트와 EC2 인스턴스 구성을 동기화하는 정석적인 AWS 패턴이다. TOML 내용을 AWS::CloudFormation::Init metadata(일반적으로 template의 Launch Template, Launch Configuration 또는 EC2 instance 리소스에)로 넣는다. 부팅 시 UserData가 cfn-init을 실행하여 /etc/collector/config.toml을 작성한다. 인플레이스 업데이트를 위해 cfn-hup이 데몬으로 실행되며 CloudFormation metadata 변경을 폴링한다. stack이 새로운 TOML 내용으로 업데이트되면 cfn-hup이 cfn-init을 다시 트리거하여 기존 모든 인스턴스에서 파일을 다시 작성한다. cfn-hup의 interval(예: 1분)을 설정하면 “3분 이내” 요구 사항을 최소 지연으로 충족할 수 있다. 주요 AWS 기능: - AWS::CloudFormation::Init metadata의 “files” 섹션을 사용하여 올바른 소유자/권한으로 /etc/collector/config.toml을 생성/업데이트. - 새로 시작되는 인스턴스가 항상 최신 구성을 받도록, 시작 시 UserData에서 cfn-init 호출. - metadata 변경을 폴링하고 업데이트 시 cfn-init을 호출하는 cfn-hup 데몬(인스턴스 교체 불필요). - CloudFormation이 생성/유지 관리하는 Auto Scaling group과 자연스럽게 동작하여 IaC 및 재현성과 정렬. 흔한 오해: - Launch Template에 구성만 포함하면 실행 중인 인스턴스는 업데이트되지 않고, 향후 새로 시작되는 인스턴스에만 영향을 준다. - AWS Config rule은 구성 파일을 인스턴스에 배포/적용하기 위한 것이 아니라 컴플라이언스 평가를 위한 것이다. - Systems Manager Resource Data Sync는 인벤토리/컴플라이언스 데이터를 S3로 집계하기 위한 것이지, 인스턴스에 구성 변경을 푸시하는 용도가 아니다. 시험 팁: “CloudFormation 업데이트가 기존 EC2 인스턴스의 구성을 교체 없이 변경해야 한다”를 보면 “cfn-init + cfn-hup”을 떠올려라. “새 인스턴스는 항상 최신 구성”을 보면 UserData를 통해 부팅 시 cfn-init이 실행되도록 해야 한다. 또한 폴링 interval 설정이 엄격한 전파 시간 요구 사항을 충족하는 방법임을 기억하라. (참고: AWS CloudFormation helper scripts 문서의 cfn-init 및 cfn-hup; AWS Well-Architected Operational Excellence pillar의 일관되고 자동화된 구성 관리)

13
문제 13

DevOps 팀이 고객 대상 API에 대해 blue/green 릴리스를 준비하고 있습니다. 이 API는 단일 Application Load Balancer (ALB) 뒤에서 포트 443의 HTTPS를 사용하여 Amazon EC2에서 실행됩니다. 인스턴스는 두 개의 Auto Scaling group(api-blue-asg 및 api-green-asg)에서 실행되며, 각각 별도의 launch template을 사용합니다. 또한 각 그룹은 자체 ALB target group(tg-blue 및 tg-green)에 등록되며, /healthz에 대한 health check와 healthy threshold 3을 사용합니다. 두 환경은 기존 Amazon RDS MySQL database를 공유합니다. 300초 TTL을 가진 Route 53 alias record api.acme.dev가 ALB의 DNS name을 가리킵니다. 팀은 blue에서 green으로 트래픽 100%를 한 번에 전환해야 하며, 영향은 30초 미만이어야 하고 DNS propagation에 의존해서는 안 됩니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?

정답입니다. 먼저 api-green-asg에 배포하고 tg-green이 health check를 통과(healthy threshold 충족)할 때까지 기다려 용량이 warm하고 준비되었음을 보장합니다. 그런 다음 ALB listener default action을 수정하여 100%를 tg-green으로 forward합니다. 이는 ALB 계층에서 트래픽을 전환하므로(DNS propagation 없음) 수 초 내에 완료될 수 있으며, green이 이미 healthy라면 30초 미만 영향 요구 사항을 충족합니다.

오답입니다. rolling update 전에 ALB listener를 tg-green으로 전환하면, 트래픽이 launching 중이거나 health check에 실패하거나 이전/부분 버전을 실행 중인 인스턴스로 전달될 수 있습니다. ALB는 healthy target으로만 라우팅하므로 배포 중 용량 감소 또는 5xx/connection 문제가 발생할 수 있어, cutover 동안 영향 최소화 요구 사항을 위반합니다.

오답입니다. blue launch template을 업데이트하고 api-blue-asg를 rolling 방식으로 교체하는 것은 blue/green cutover가 아니라 rolling deployment입니다. 100% 트래픽을 즉시 전환하지 못하고 동일 target group 뒤에서 인스턴스를 점진적으로 교체합니다. 이는 위험(혼재된 버전이 트래픽 처리) 증가로 이어지며, 인스턴스 교체로 용량 저하나 오류가 발생하면 30초 미만 영향 요구 사항을 초과할 수 있습니다.

오답입니다. Route 53을 변경하여 “green endpoint”를 가리키게 하는 것은 AWS가 통제할 수 없는 DNS 캐싱 및 propagation 동작에 의존합니다. TTL이 300초여도 클라이언트와 resolver가 더 오래 캐시할 수 있으며, ALB로의 기존 TCP/TLS session은 즉시 이동하지 않습니다. 요구 사항에서 cutover에 DNS propagation 의존을 명시적으로 금지합니다.

문제 분석

핵심 개념: 이 문제는 Application Load Balancer (ALB)와 target group을 사용하여 DNS 기반 cutover를 피하면서 blue/green 배포 트래픽 전환을 테스트합니다. 핵심 아이디어는 ALB listener rule/action이 AWS 내부에서 트래픽을 즉시 전환할 수 있는 반면, DNS 변경은 클라이언트/recursive resolver의 캐싱과 TTL에 좌우된다는 점입니다. 정답이 맞는 이유: Option A는 어떤 트래픽도 보내기 전에 green 환경이 완전히 배포되고 tg-green에서 health check를 통과하도록 보장합니다(/healthz에서 healthy threshold 3). tg-green에 healthy target이 생기면 팀은 ALB listener의 default forward action을 업데이트하여 트래픽 100%를 tg-green으로 보냅니다. 이 cutover는 load balancer control plane에서 발생하며 Route 53 propagation에 의존하지 않습니다. 영향은 일반적으로 in-flight connection과 ALB가 listener 변경을 적용하는 데 걸리는 시간으로 제한되며, green이 이미 warm하고 healthy라면 “30초 미만” 요구 사항을 충족할 수 있습니다. 주요 AWS 기능: - ALB listener default action/rule: 특정 target group으로 forward할 수 있으며, 이를 변경하면 즉시 트래픽을 전환할 수 있습니다. - Target group health check: healthy 인스턴스만 트래픽을 받도록 보장하며, tg-green이 healthy가 될 때까지 기다리면 준비되지 않은 인스턴스로 사용자를 보내는 것을 방지합니다. - Auto Scaling group + 별도 launch template: 안전한 cutover를 위해 병렬 환경(blue 및 green)을 지원합니다. - Route 53 alias to ALB: 안정적인 entrypoint로는 적합하지만, 여기서는 cutover에 사용되지 않습니다. 흔한 오해: 자주 걸리는 함정은 DNS(Route 53)를 사용해 트래픽을 전환하는 것(Option D)입니다. TTL이 300초여도 많은 클라이언트와 resolver가 더 오래 캐시할 수 있으며, 기존 connection은 즉시 이동하지 않습니다. 또 다른 오해는 green이 healthy해지기 전에 트래픽을 전환하는 것(Option B)으로, 즉각적인 사용자 오류를 유발할 수 있습니다. 시험 팁: 요구 사항에 “DNS propagation에 의존하면 안 됨”과 “100%를 한 번에 전환”이 포함되면, ALB/NLB listener 또는 target group 전환(또는 점진 전환이 허용되는 경우 weighted target group)을 찾으십시오. 프로덕션 트래픽을 보내기 전에 항상 새 target group이 healthy인지 확인하십시오. ALB 뒤의 EC2에서 blue/green을 수행할 때 가장 깔끔한 cutover는 DNS 변경이 아니라 listener rule/action 업데이트입니다.

14
문제 14

6개 Region에 걸쳐 14개의 AWS account를 운영하는 글로벌 연구 컨소시엄은 8개의 내부 프로젝트 팀이 사전 승인된 blueprint를 통해서만 인프라를 프로비저닝해야 하며, 보안 부서는 어떤 리소스든 의도된 구성에서 벗어날 경우 자동화된 multi-account, multi-Region 탐지 및 알림을 요구하는 동시에 raw CloudFormation template의 직접 사용을 방지하려고 합니다. 이러한 요구 사항을 충족하기 위해 어떤 전략을 사용해야 합니까?

CloudFormation service role은 권한을 표준화할 수 있지만, 팀이 임의/raw CloudFormation template을 사용하는 것을 방지하지는 못합니다. 여전히 원하는 어떤 template이든 제출할 수 있습니다. 또한 CloudFormation drift detection은 항상 동작하는 중앙집중식 multi-account/multi-Region compliance 메커니즘이 아니며, stack 범위로 제한되고 일반적으로 필요 시(on demand) 실행됩니다. 또한 stack으로 관리되지 않는 리소스는 커버하지 못합니다.

AWS Config managed rule은(aggregator와 함께라면) account/Region 전반에서 비준수 구성을 탐지할 수 있지만, 이 옵션은 거버넌스 요구 사항을 충족하지 못합니다. 여전히 팀이 raw template에서 CloudFormation stack을 직접 배포하도록 허용합니다. Service role은 CloudFormation이 무엇을 할 수 있는지를 제어할 뿐, 사용자가 어떤 template을 제출할 수 있는지를 제한하지는 못합니다. 문제는 사전 승인된 blueprint를 통해서만 프로비저닝하고 raw template 사용을 방지할 것을 명시적으로 요구합니다.

AWS Service Catalog는 큐레이션된 사전 승인 product(blueprint)를 통해서만 프로비저닝하도록 강제하며, account/Region 전반에 공유될 수 있습니다. Launch constraint는 stack이 중앙에서 관리되는 IAM role을 사용하여 생성되도록 보장하여 일관된 guardrail과 least privilege를 제공합니다. Aggregator와 함께 AWS Config를 사용하면 구성 편차에 대한 중앙집중식, 자동화된 multi-account/multi-Region 탐지 및 알림을 제공하여 거버넌스와 compliance 모니터링 요구 사항을 모두 충족합니다.

Service Catalog는 승인된 product에 도움이 되고 template constraint는 parameter 값을 제한할 수 있지만, 14개 account와 6개 Region 전반에서의 중앙집중식, 지속적인 drift/compliance 탐지를 다루지 못합니다. CloudFormation drift detection event는 stack drift에만 제한되며(더 광범위한 configuration compliance가 아님), EventBridge notification에 의존하는 것은 drift detection이 실행되고 있다는 전제를 필요로 하며 AWS Config만큼 포괄적이고 집계된 compliance 뷰를 제공하지 못합니다.

문제 분석

핵심 개념: 이 문제는 인프라 프로비저닝 거버넌스(승인된 blueprint만 사용)와 여러 AWS account 및 Region 전반에서의 지속적인 compliance/drift 탐지를 테스트합니다. 핵심 서비스는 AWS Service Catalog(통제된 self-service 프로비저닝)와 configuration aggregator를 포함한 AWS Config(중앙집중식 multi-account/multi-Region compliance 가시성 및 알림)입니다. 정답이 맞는 이유: Option C는 (1) 팀이 사전 승인된 blueprint로만 프로비저닝하도록 강제하고, (2) raw CloudFormation template의 직접 사용을 방지하며, (3) 14개 account와 6개 Region 전반에서 구성 편차에 대한 자동화된 중앙 탐지 및 알림을 제공하는 유일한 전략입니다. AWS Service Catalog는 관리자가 Product(종종 CloudFormation 기반)를 큐레이션하여 account/OU에 공유할 수 있게 하므로, 프로젝트 팀은 Service Catalog interface/API를 통해 승인된 product만 배포할 수 있으며 임의의 CloudFormation template을 실행할 권한을 부여받지 않아도 됩니다. Launch constraint는 product stack이 중앙에서 관리되는 IAM role을 사용하여 생성되도록 강제하여, 일관된 권한, guardrail, 감사 가능성을 보장합니다. 주요 AWS 기능: - AWS Service Catalog Product/Portfolio: 승인된 “blueprint”를 게시하고 누가 이를 launch할 수 있는지 제어합니다. - Launch constraint: stack 생성 시 특정 IAM role을 assume하도록 강제(중앙집중식, least-privilege, 일관된 tagging/permission). - AWS Config recorder + managed/custom rule: 리소스 구성을 의도된 policy에 대해 평가합니다. - AWS Config Aggregator: 여러 account 및 Region의 configuration 및 compliance 데이터를 중앙 account로 집계하여 통합 모니터링 및 리포팅을 제공합니다. - Alerting: Config rule noncompliance는 중앙 account에서 notification을 트리거할 수 있습니다(일반적으로 EventBridge/SNS를 통해). 흔한 오해: CloudFormation drift detection(Option A/D)은 배포된 stack을 template과 비교할 뿐이며, 포괄적인 multi-account/multi-Region compliance 시스템이 아닙니다. 또한 drift detection은 실행을 시작해야 하며 stack-managed 리소스에만 제한됩니다. AWS Config(Option B)는 compliance에 매우 유용하지만, Service Catalog가 없으면 팀이 raw CloudFormation template을 사용하는 것을 방지하지 못합니다. 시험 팁: “사전 승인된 blueprint”와 “직접 template 사용 방지”가 보이면 AWS Service Catalog를 떠올리십시오. “multi-account, multi-Region 탐지/알림”이 보이면 AWS Config + Aggregator(종종 Organizations 통합 포함)를 떠올리십시오. 이를 결합하면 대규모 환경에서의 거버넌스된 프로비저닝과 지속적인 compliance를 동시에 달성할 수 있습니다.

15
문제 15
(2개 선택)

한 미디어 스트리밍 스타트업은 모든 기능이 활성화된 AWS Organizations에서 멀티 계정 환경을 운영하고 있습니다. 운영(소스) 계정은 us-west-2에서 AWS Backup을 사용하여 120개의 Amazon EBS 볼륨을 보호하며, 고객 관리형 KMS 키(alias/ops-backup)로 복구 지점을 암호화합니다. DR 요구 사항을 충족하기 위해 회사는 관리 계정에서 교차 계정 복사를 구성하고, 새로 생성한 DR 계정에 dr-vault라는 이름의 백업 볼트와 고객 관리형 KMS 키(alias/dr-backup)를 생성한 다음, 운영 계정의 백업 플랜을 업데이트하여 모든 복구 지점을 DR 계정의 dr-vault로 복사하도록 설정했습니다. 운영 계정에서 백업 작업이 실행되면 운영 계정에서는 복구 지점이 성공적으로 생성되지만, DR 계정의 dr-vault에는 어떤 복사본도 나타나지 않습니다. AWS Backup이 복구 지점을 DR 계정의 볼트로 복사할 수 있도록 하는 단계 조합은 무엇입니까? (두 개 선택)

정답입니다. 교차 계정 복사는 대상 백업 볼트(dr-vault)가 소스(운영) 계정이 복구 지점을 해당 볼트로 쓰기/복사할 수 있도록 신뢰/허용해야 합니다. 이는 DR 계정의 리소스 기반 백업 볼트 액세스 정책으로 구성합니다. 이 명시적 허용이 없으면 AWS Backup은 대상 볼트에 복사된 복구 지점을 생성할 수 없으므로 아무것도 나타나지 않습니다.

오답입니다. 교차 계정 복사를 위해 DR 계정이 소스 계정의 백업 볼트에서 읽을 필요는 없습니다. 복사는 백업 플랜에 따라 AWS Backup이 시작하여 대상 볼트에 씁니다. 볼트에 대한 핵심 권한 지점은 소스 볼트 정책에서 읽기를 부여하는 것이 아니라, 대상 볼트 정책에서 쓰기를 허용하는 것입니다.

오답입니다. 백업 볼트 정책은 다른 계정의 KMS 키에 대한 액세스를 부여하지 않습니다. KMS 권한 부여는 백업 볼트 액세스 정책이 아니라 KMS 키 정책(및 경우에 따라 grants)에 의해 제어됩니다. DR 계정에서 대상 CMK 정책을 업데이트하여 AWS Backup(및 소스 계정 컨텍스트)이 이를 사용할 수 있도록 해야 합니다.

오답입니다. DR 소유 CMK로 암호화된 DR 볼트로 교차 계정 복사를 수행하는 데 소스 계정 CMK(alias/ops-backup)를 DR 계정과 공유하는 것은 주요 요구 사항이 아닙니다. AWS Backup은 복구 지점을 복사하고 대상 볼트의 암호화 키를 사용하여 다시 암호화합니다. 누락되는 권한은 일반적으로 대상 볼트 정책과 대상 CMK 정책에 있습니다.

정답입니다. DR 볼트의 복사된 복구 지점은 DR 계정의 고객 관리형 KMS 키(alias/dr-backup)로 암호화되므로, 해당 키 정책은 AWS Backup(및 서비스를 통해 동작하는 소스 계정 컨텍스트)이 암호화 관련 작업에 키를 사용할 수 있도록 허용해야 합니다. 이러한 KMS 권한이 없으면 AWS Backup은 복사된 복구 지점을 암호화할 수 없고 복사 작업이 실패합니다.

문제 분석

핵심 개념: 이 문제는 AWS Organizations 환경에서 AWS Backup 교차 계정 복사의 전제 조건, 특히 관련된 두 가지 권한 계층인 (1) 대상 백업 볼트 액세스 정책과 (2) 복사된 복구 지점을 암호화하기 위한 AWS KMS 키 정책을 테스트합니다. Organizations에서 “all features”가 활성화되어 있더라도, AWS Backup은 여전히 대상 볼트에 대한 명시적인 리소스 기반 권한과 대상 CMK를 사용할 수 있는 KMS 권한을 필요로 합니다. 정답이 맞는 이유: 교차 계정 복사를 위해서는 소스 계정의 AWS Backup이 DR 계정의 대상 볼트에 쓰기 권한을 가져야 합니다. 이 권한은 대상 백업 볼트(dr-vault)의 리소스 기반 정책으로 부여됩니다. 이 정책이 없으면 복사 작업이 거부되어 DR 볼트에 복구 지점이 나타나지 않습니다. 또한 대상 볼트는 고객 관리형 KMS 키(alias/dr-backup)로 복구 지점을 암호화하므로, AWS Backup 서비스(소스 계정을 대신하여 동작)가 암호화 작업(예: 서비스에 필요한 GenerateDataKey, Encrypt, Decrypt 등)을 위해 해당 키를 사용할 수 있도록 대상 CMK 키 정책에서 허용되어야 합니다. 키 정책이 이를 허용하지 않으면 AWS Backup은 DR 계정에서 복사된 복구 지점을 암호화할 수 없고 복사가 실패합니다. 주요 AWS 기능: - AWS Backup 교차 계정 복사는 소스 계정이 복사/쓰기 작업을 수행할 수 있도록 허용하는 대상 볼트 액세스 정책이 필요합니다. - AWS KMS CMK는 주로 키 정책(단순히 IAM이 아님)에 의해 제어됩니다. 교차 계정 사용은 키 정책에서 명시적으로 허용되어야 합니다. - 멀티 계정 DR 설계에서는 일반적으로 대상 계정이 볼트와 CMK를 소유하고, 소스 계정에는 해당 볼트로 복사할 수 있는 제한된 권한만 부여합니다. 일반적인 오해: 자주 하는 실수는 AWS Organizations에서 “all features”를 활성화하면 교차 계정 백업 복사가 자동으로 승인된다고 가정하는 것입니다. 그렇지 않으며, 볼트 정책과 KMS 키 정책은 여전히 구성해야 합니다. 또 다른 오해는 소스 CMK를 DR 계정과 공유해야 한다고 생각하는 것입니다. 복사 시 AWS Backup은 대상 CMK를 사용해 다시 암호화하므로, 핵심 권한은 대상 CMK에 있습니다. 시험 팁: “cross-account copy” + “customer managed KMS key”를 보면 즉시 두 가지 필수 권한을 확인하십시오: 대상 볼트 정책(리소스 기반)과 대상 KMS 키 정책. 복사본이 나타나지 않는다면, 대부분 소스 볼트 정책이 아니라 이 두 권한 중 하나(또는 둘 다)의 누락 때문입니다.

이동 중에도 모든 문제를 풀고 싶으신가요?

Cloud Pass를 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.

16
문제 16

보안 감사 중, 컨테이너 이미지를 빌드하는 AWS CodeBuild 프로젝트가 pre_build 단계에서 us-east-1의 public object URL에 대해 인증되지 않은 HTTP GET을 수행하여 Amazon S3 bucket에서 Helm chart(5 MB)를 다운로드하고 있습니다. 보안 팀은 이 프로젝트의 모든 S3 액세스가 IAM 기반 인증을 사용해야 하고, S3 bucket은 public access를 차단해야 하며, 빌드 환경에 장기 자격 증명을 저장할 수 없고, 빌드는 커맨드라인 도구를 통해 계속 chart를 가져와야 한다고 요구합니다. 이 문제를 해결하기 위한 가장 안전한 방법은 무엇입니까?

오답입니다. CodeBuild는 S3 authorization를 강제하는 custom “AllowedBuckets” 설정이라는 security control을 제공하지 않습니다. AWS CLI로 전환하더라도 여전히 public access를 제거하고 bucket policy/IAM permissions가 올바르게 구성되었는지 확인해야 합니다. 이 옵션은 모호하며, public access를 차단하고 IAM 기반 authentication을 강제해야 한다는 요구 사항을 명시적으로 충족하지 않습니다.

오답입니다. S3는 native bucket 기능으로 “HTTPS basic authentication”을 지원하지 않습니다. 또한 cURL과 static token을 사용하는 것은 build environment에 장기 credentials를 저장해서는 안 된다는 요구 사항을 위반합니다. 이 접근 방식은 secret management 위험을 초래하며, service-to-service authentication에 대한 AWS 모범 사례와도 일치하지 않습니다.

정답입니다. 이 옵션은 S3 Block Public Access와 bucket policy를 사용하여 인증되지 않은 access path를 제거하므로, 더 이상 public URL에서 object를 익명으로 가져올 수 없습니다. 또한 특정 bucket 또는 prefix에 대해 필요한 s3:GetObject permission만 CodeBuild service role에 부여하므로, least-privilege IAM 설계를 따릅니다. CodeBuild는 build container에 temporary role credentials를 자동으로 제공하므로, AWS CLI는 장기 access key를 저장하지 않고도 S3에 인증할 수 있습니다. 또한 end-to-end로 IAM 기반 authentication을 강제하면서 command-line tool을 계속 사용해야 한다는 요구 사항도 충족합니다.

오답입니다. IAM access key와 secret access key를 environment variables에 포함하는 것은 명시적으로 금지됩니다(“장기 credentials 금지”). 또한 logs, misconfiguration 또는 손상된 build container를 통해 유출될 경우 blast radius를 증가시킵니다. 안전한 패턴은 static IAM user key가 아니라 temporary credentials와 함께 CodeBuild service role을 사용하는 것입니다.

문제 분석

핵심 개념: 이 문제는 S3 Block Public Access와 최소 권한(least-privilege) 권한 부여를 적용하면서, IAM role과 임시 자격 증명(STS)을 사용해 AWS CodeBuild에서 Amazon S3에 안전하게 액세스하는지를 테스트합니다. 또한 빌드 환경에 장기 비밀을 두지 않는 것과 AWS 네이티브 인증 메커니즘을 사용하는 것 등 안전한 SDLC 관행도 간접적으로 테스트합니다. 정답이 맞는 이유: Option C는 인증되지 않은 public access(감사 지적 사항)를 제거하고, CodeBuild가 service role을 통해 자동으로 제공받는 IAM 기반의 단기 자격 증명으로 이를 대체하므로 가장 안전한 개선 방법입니다. S3 Block Public Access를 활성화하고 bucket policy를 강화하면 bucket은 더 이상 객체를 공개적으로 제공하지 않습니다. 그 다음 CodeBuild service role에 특정 bucket/prefix에 대해서만 s3:GetObject를 부여하면 최소 권한을 보장합니다. 마지막으로 buildspec에서 AWS CLI를 사용하면 커맨드라인 도구로 chart를 계속 가져와야 한다는 요구 사항을 충족하며, CLI는 빌드 컨테이너에 주입된 role의 임시 자격 증명을 투명하게 사용합니다. 주요 AWS 기능 / 모범 사례: - public ACL 및 public bucket policy를 방지하기 위한 S3 Block Public Access(계정/버킷 수준). - 액세스를 명시적으로 제어하기 위한 bucket policy(예: CodeBuild role principal만 허용; VPC endpoint를 사용하는 경우 aws:PrincipalArn, aws:SourceVpce 같은 조건을 선택적으로 추가). - 정확한 객체 경로(arn:aws:s3:::bucket/prefix/*)로 범위를 제한한 권한을 가진 CodeBuild service role(IAM role). - STS가 발급한 임시 자격 증명을 사용하는 CodeBuild의 AWS SDK/CLI credential provider chain(정적 비밀 불필요). 흔한 오해: 일부는 IAM 권한을 업데이트하지 않거나 “private로 만들기”만 하면 충분하다고 가정하거나, access key를 환경 변수로 저장하는 것이 허용된다고 착각합니다. 또 다른 일부는 CodeBuild의 “custom settings”를 실제 권한 부여 제어로 혼동합니다. 보안 감사는 일반적으로 IAM 인증, 최소 권한, 그리고 public access 경로 제거를 입증 가능하게 요구합니다. 시험 팁: “no long-term credentials”, “must use IAM-based authentication”, “block public access” 같은 요구 사항이 보이면 패턴은 다음과 같습니다: 리소스를 잠그고(S3 BPA + bucket policy), 서비스가 assume하는 IAM role(CodeBuild service role)을 통해 액세스를 부여합니다. 정적 토큰이나 내장 키보다 role 기반 임시 자격 증명을 사용하는 AWS CLI/SDK를 선호합니다.

17
문제 17

미디어 스트리밍 스타트업이 재해 복구(DR) Kubernetes 클러스터가 실수로 프로덕션과 동일한 AWS Region에 배포되었음을 발견했습니다. 프로덕션 마이크로서비스는 Terraform으로 프로비저닝된 managed node groups를 사용하는 Amazon EKS에서 실행되며, 모든 container images는 Amazon ECR에서 새로운 DR Region으로 이미 복제되어 있습니다. 애플리케이션은 공유 상태를 위해 Amazon FSx for NetApp ONTAP NFS volume을 마운트하며, 애플리케이션 데이터는 EKS nodes에 저장되지 않습니다. DevOps 엔지니어는 infrastructure code가 Region 변수를 받도록 업데이트하고 DR control plane을 구축했습니다. DR Region의 file storage는 RPO 10분을 달성해야 합니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?

이는 즉흥적인 파이프라인(FSx NFS -> S3 -> CRR)으로 복잡성을 추가하며, NFS로 마운트된 애플리케이션에 대한 “file storage” DR 의도에 부합하지 않을 가능성이 큽니다. storage interface를 변경(NFS에서 object로)하고, 변경 사항 감지/복사, 삭제 처리, 권한, 일관성을 처리하기 위한 custom logic이 필요합니다. 10분 RPO를 안정적으로 충족하지 못할 수 있으며 FSx for ONTAP DR 패턴도 아닙니다.

AWS Backup은 FSx for ONTAP backups 및 cross-Region copy를 지원하지만, 10분 backup frequency는 일반적으로 비현실적이며 이 워크로드에 대해 표준 plan frequency로 지원되지 않을 수 있고, backup/restore는 near-real-time replication과 동일하지 않습니다. 설령 자주 스케줄링하더라도 backup jobs와 copy jobs가 지연과 운영 불확실성을 유발하여 10분 RPO 위반 위험이 있습니다.

이는 잘못된 데이터를 대상으로 합니다. 문제에서 애플리케이션 데이터가 EKS nodes에 저장되지 않는다고 했고, instance store volumes는 ephemeral이며 EBS snapshots로 스냅샷을 생성할 수 없습니다. 설령 nodes가 EBS를 사용하더라도 worker nodes를 snapshotting해도 FSx for ONTAP의 공유 NFS 상태는 캡처되지 않습니다. 이 옵션은 기술적으로도 결함이 있고 명시된 아키텍처와도 맞지 않습니다.

이것이 목적에 맞게 설계된 올바른 솔루션입니다. DR Region에 FSx for ONTAP를 배포하고 volume-level SnapMirror를 구성하면 예측 가능한 RPO로 incremental, scheduled replication을 제공합니다. 5분 스케줄은 10분 RPO 요구 사항을 여유 있게 충족합니다. 장애 조치 시 mirror를 break하고 DR EKS cluster에서 복제된 NFS volume을 마운트하여 애플리케이션의 기존 storage interface와 일치시킬 수 있습니다.

문제 분석

핵심 개념: 이 문제는 Amazon EKS 워크로드에서 사용하는 stateful storage, 특히 Amazon FSx for NetApp ONTAP에 대한 cross-Region disaster recovery를 테스트합니다. 핵심 요구 사항은 stateless compute(EKS nodes) 및 container images(ECR을 통해 이미 복제됨)와는 독립적으로, 공유 NFS 상태에 대해 RPO 10분을 충족하는 것입니다. 정답이 맞는 이유: FSx for ONTAP는 ONTAP volumes 간 NetApp SnapMirror replication을 기본적으로 지원하며, DR Region에 대상 FSx for ONTAP file system을 배포하면 cross-Region replication도 가능합니다. volume-level SnapMirror를 5분 스케줄로 구성하면(정상적인 replication 상태를 가정할 때) 10분보다 더 나은 RPO를 일관되게 달성할 수 있습니다. 이는 남아 있는 유일한 DR 격차인 NFS volume의 공유 상태를 직접 해결합니다. 주요 AWS 기능 / 모범 사례: - FSx for ONTAP는 ONTAP data management capabilities(snapshots, SnapMirror, cloning)를 managed AWS service로 제공합니다. - SnapMirror는 빈번한 incremental transfers와 예측 가능한 RPO로 DR replication을 위해 목적에 맞게 설계되었습니다. - Volume-level replication은 애플리케이션이 특정 NFS volume을 마운트하는 마이크로서비스 shared-state 패턴과 정렬됩니다. - DR 이벤트 시 SnapMirror relationship을 break하고 DR EKS cluster에서 destination volume을 마운트할 수 있습니다. 흔한 오해: 흔한 함정은 “backup”을 “DR replication”과 동일시하는 것입니다. AWS Backup은 point-in-time recovery 및 compliance에 매우 유용하지만, 해당 수준의 빈도로 FSx for ONTAP에 대해 10분 RPO의 운영 DR을 달성하도록 설계되지 않았으며, service limits/backup windows로 인해 그렇게 공격적인 RPO에서는 신뢰하기 어렵습니다. 또 다른 오해는 EKS nodes에 집중하는 것입니다. 문제에서 애플리케이션 데이터가 nodes에 저장되지 않는다고 명시하므로 node snapshots는 관련이 없습니다. 시험 팁: FSx for NetApp ONTAP와 엄격한 RPO 요구 사항이 함께 나오면 AWS Backup(restore 기반 복구)보다는 SnapMirror(replication)를 떠올리십시오. 또한 관심사를 분리하십시오: images(ECR replication)와 compute(IaC redeploy)는 해결되었고, 남은 요구 사항은 state replication입니다. 운영 복잡성을 최소화하면서 RPO를 충족하는 서비스 네이티브 replication 메커니즘을 선택하십시오.

18
문제 18

한 조직이 ap-northeast-2의 엔지니어링 계정(계정 A: 111111111111)에서 컨테이너 이미지를 빌드하고 svc-web이라는 단일 Amazon ECR 리포지토리에 푸시한다. CodePipeline 파이프라인이 계정 A의 스테이징 Amazon EKS 클러스터(Kubernetes 1.29)에 배포하고, 테스트가 통과하면 동일한 이미지를 프로덕션으로 승격한다. 회사는 동일한 Region의 별도 운영 계정(계정 B: 222222222222)으로 프로덕션 EKS 클러스터를 이전하고 있다. 계정 B의 프로덕션 VPC에는 internet gateway 또는 NAT gateway가 없으며, 모든 이미지 다운로드는 AWS 프라이빗 네트워크에만 머물러야 한다. 컴플라이언스 요구사항에 따라 이미지는 계속 계정 A의 단일 ECR 리포지토리에서 pull되어야 한다(리플리케이션 또는 중복 리포지토리는 허용되지 않음). 어떤 솔루션이 이러한 요구사항을 충족하는가?

오답. 계정 B에 새 ECR 리포지토리를 생성하는 것은 이미지가 계속 계정 A의 단일 ECR 리포지토리에서 pull되어야 한다는 요구사항(중복 리포지토리 금지)을 직접 위반한다. endpoint는 프라이빗 연결에 도움이 되지만, 이 옵션은 소스 오브 트루스를 계정 B의 로컬 리포지토리로 바꾸며 이는 컴플라이언스 요구사항에서 명시적으로 금지된다.

오답. 교차 계정 리포지토리 정책과 IAM 권한은 필요하지만 충분하지 않다. 계정 B의 프로덕션 VPC에는 IGW 또는 NAT가 없으므로 VPC endpoint가 없으면 EKS 노드가 ECR API/registry endpoint 또는 이미지 레이어를 다운로드하기 위한 S3에 도달할 수 없다. 네트워크 경로가 없어 이미지 pull이 실패하며, 트래픽을 AWS 프라이빗 네트워크로 제한할 수도 없다.

오답. ECR private image replication은 계정 B에 리포지토리/이미지의 복사본(대상 리포지토리)을 생성하게 되며, 이는 리플리케이션 또는 중복 리포지토리가 허용되지 않고 이미지가 계속 계정 A의 단일 리포지토리에서 pull되어야 한다는 요구사항을 위반한다. 리플리케이션은 멀티 계정 복원력을 위한 일반적인 모범 사례이지만, 여기서는 명시적으로 금지되어 있다.

정답. 단일 ECR 리포지토리는 계정 A에 그대로 유지되고, 계정 B에는 ECR 리포지토리 정책을 통해 교차 계정 pull 권한이 부여되며, 계정 B의 pull 주체에는 ECR 읽기 권한이 있다. 또한 프로덕션 VPC는 프라이빗(IGW/NAT 없음) 상태를 유지하면서도 ECR interface endpoint(ecr.api 및 ecr.dkr)와 레이어 다운로드를 위한 S3 gateway endpoint를 통해 이미지 pull을 가능하게 하여 트래픽이 AWS 프라이빗 네트워크에 머물도록 한다.

문제 분석

핵심 개념: 이 문제는 인터넷이 없는(IGW/NAT 없음) 프라이빗 Amazon EKS 클러스터에서 교차 계정 Amazon ECR 액세스를 수행하되, 이미지 pull이 AWS PrivateLink(VPC interface endpoint)를 사용하여 AWS 프라이빗 네트워크에 머물도록 하는지를 테스트한다. 또한 교차 계정 pull을 위한 ECR 리포지토리 정책과 ECR이 사용하는 네트워크 경로(ECR API/DKR + 이미지 레이어용 S3)를 함께 테스트한다. 정답이 맞는 이유: 옵션 D만이 (1) 계정 A에 단일 ECR 리포지토리를 유지하고, (2) 계정 B의 프로덕션 EKS 노드(또는 IRSA 기반 pull 역할)가 교차 계정으로 인증하고 이미지를 pull할 수 있게 하며, (3) 인터넷 egress 없이도 private connectivity를 제공하여 pull이 성공하도록 하는 세 가지를 동시에 만족한다. 계정 B의 EKS 노드는 interface endpoint를 통해 ECR control plane endpoint(ecr.api는 auth/token, ecr.dkr는 registry 작업)에 도달해야 하며, Amazon S3에 저장된 이미지 레이어도 가져와야 한다. 프라이빗 VPC에서는 S3 액세스를 S3 gateway endpoint(또는 동등한 프라이빗 라우팅)로 제공해야 하며, 그렇지 않으면 pull이 실패한다. 주요 AWS 기능: - ECR 교차 계정 액세스: 계정 A의 svc-web에 대한 ECR 리포지토리 정책을 사용하여 계정 B의 principal에 ecr:BatchGetImage, ecr:GetDownloadUrlForLayer, ecr:BatchCheckLayerAvailability 같은 권한을 부여한다. - 계정 B의 pull 주체에 대한 IAM 권한: 노드 instance role(또는 지원되는 경우 kubelet/container runtime에서 사용하는 전용 IRSA 역할)에도 동일한 ECR 읽기 작업을 허용해야 한다. - 프라이빗 연결: com.amazonaws.ap-northeast-2.ecr.api 및 com.amazonaws.ap-northeast-2.ecr.dkr에 대한 VPC interface endpoint와 S3 gateway endpoint를 함께 사용하면 트래픽이 AWS 네트워크에 머물고 NAT/IGW 없이도 동작한다. 흔한 오해: - “리포지토리 정책만 있으면 충분하다”(옵션 B): IAM이 올바르더라도 endpoint가 없으면 프라이빗 VPC에서 ECR/S3에 도달할 수 없다. - “그냥 리플리케이션하면 된다”(옵션 C): 리플리케이션/중복 리포지토리 금지라는 명시적 요구사항을 위반한다. - “계정 B에 리포지토리를 만들면 된다”(옵션 A): 단일 리포지토리 요구사항을 역시 위반한다. 시험 팁: egress가 없는 프라이빗 서브넷에서는 ECR pull에 일반적으로 ECR interface endpoint(api + dkr)와 S3 액세스(gateway endpoint) 둘 다가 필요하다는 점을 기억하라. 교차 계정 ECR의 경우 두 곳에서 권한이 필요하다: 리포지토리 정책(resource-based)과 호출자의 IAM 정책(identity-based).

19
문제 19
(3개 선택)

에너지 스타트업이 시간별로 내보낸 120GB의 센서 진단 데이터를 CSV 형식으로 Amazon S3 bucket에 날짜/시간 파티션 prefix(예: s3://env-data/diagnostics/year=2025/month=08/day=16/hour=00-23) 아래에 저장합니다. SQL 분석가 팀은 어떤 서버도 관리하지 않고 standard SQL을 사용해 ad hoc 쿼리를 실행해야 하며, 24시간마다 새로 고침되는 line 및 bar chart가 포함된 interactive dashboard를 게시해야 합니다. 또한 팀은 새로운 시간별 object가 도착할 때마다 CSV 파일의 table metadata(컬럼, 데이터 타입, 파티션)를 캡처하고 유지 관리할 수 있는 효율적이고 자동화되며 지속적인 방법이 필요합니다. 가장 적은 노력으로 이러한 요구 사항을 충족하는 단계 조합은 무엇입니까? (세 가지를 선택하세요.)

오답입니다. AWS X-Ray는 microservices 전반의 요청 흐름과 지연 시간을 분석하는 APM 및 distributed tracing 서비스입니다. S3의 CSV 데이터를 쿼리하거나 table metadata를 관리하거나 BI dashboard를 제공하지 않습니다. ingestion pipeline 애플리케이션을 추적하는 데는 사용할 수 있지만, 여기서 설명된 SQL analytics 및 시각화 요구 사항을 충족하지 않습니다.

정답입니다. Amazon QuickSight는 line 및 bar chart와 같은 시각화를 포함한 interactive dashboard를 구축하기 위한 AWS의 관리형 BI 서비스입니다. Athena를 data source로 통합할 수 있으며 스케줄된 refresh(예: 24시간마다)를 지원합니다. 이는 서버나 BI 인프라를 관리하지 않고 interactive dashboard를 게시해야 한다는 요구 사항을 충족합니다.

정답입니다. Amazon Athena는 S3에 저장된 데이터에 대해 serverless로 standard SQL 쿼리를 제공하며, CSV 파일의 ad hoc 분석에 적합합니다. 파티션이 catalog에 정의되어 있으면 (year/month/day/hour) 파티션 prefix를 효율적으로 쿼리할 수 있습니다. Athena는 데이터베이스 서버를 프로비저닝하거나 관리할 필요를 없애며, “least effort” 요구 사항에 부합합니다.

“least effort” 관점에서 오답입니다. Amazon Redshift는 대규모 dataset을 쿼리할 수 있고 BI dashboard를 지원하지만, 일반적으로 더 많은 설정이 필요합니다. cluster를 프로비저닝/운영하거나(Redshift Serverless 구성 포함), schema를 설계하고, 최적의 성능을 위해 데이터를 로드/변환(COPY/ETL)해야 하는 경우가 많습니다. 이미 S3에 시간별 CSV 파일이 있고 ad hoc 쿼리가 필요하다면 Athena가 더 단순하고 더 serverless합니다.

정답입니다. AWS Glue Data Catalog는 Athena 및 기타 analytics 서비스에서 사용하는 테이블, schema, 파티션을 위한 지속적이고 관리형 metadata repository입니다. Glue crawler는 CSV schema를 자동으로 추론하고, 날짜/시간 prefix 아래로 object가 도착할 때 새로운 시간별 파티션을 지속적으로 발견하여 수동 DDL 및 지속적인 유지보수를 최소화합니다.

오답입니다. Amazon DynamoDB는 NoSQL key-value/document 데이터베이스이며 Athena/Presto 스타일의 SQL 쿼리를 위한 네이티브 metastore가 아닙니다. DynamoDB를 사용해 schema/partition metadata를 저장하려면 동기화를 유지하기 위한 custom 로직을 구축하고 유지해야 하며, Glue Data Catalog처럼 Athena 및 QuickSight와 매끄럽게 통합되지 않습니다.

문제 분석

핵심 개념: 이 문제는 AWS에서의 전형적인 serverless analytics 패턴을 테스트합니다. 즉, 원시 파일을 Amazon S3에 저장하고, Amazon Athena(serverless SQL)로 쿼리하며, AWS Glue Data Catalog에서 metadata와 파티션을 유지하고, Amazon QuickSight로 결과를 시각화하는 방식입니다. 또한 지속적으로 유입되는 데이터에 대해 schema/partition discovery를 자동화하는지도 간접적으로 테스트합니다. 정답이 맞는 이유: (C) Amazon Athena는 서버를 프로비저닝하거나 관리하지 않고도 S3의 CSV 데이터에 대해 직접 ad hoc 쿼리를 실행할 수 있게 해줍니다. standard SQL(Presto/Trino 기반)을 지원하며 data lake에 대한 interactive querying을 위해 설계되었습니다. (E) AWS Glue Data Catalog는 테이블 정의(컬럼, 데이터 타입)와 파티션을 위한 지속적이고 관리형 metastore를 제공합니다. Glue crawler는 CSV에서 schema를 자동으로 추론하고, 시간별 prefix가 도착함에 따라 새로운 파티션을 발견하여 metadata를 최신 상태로 유지하므로 수동 작업을 최소화합니다. (B) Amazon QuickSight는 interactive dashboard(line/bar chart)를 위한 관리형 BI 서비스이며, dataset을 스케줄에 따라(예: 24시간마다) 새로 고침할 수 있습니다. QuickSight는 Athena(및 Athena가 사용하는 Glue Data Catalog 테이블)와 네이티브로 통합되어 S3에서 dashboard까지 운영 부담이 적은 파이프라인을 제공합니다. 주요 AWS 기능: Athena는 Glue Data Catalog를 기본 metastore로 사용하므로 Glue에서 테이블/파티션을 정의하면 즉시 쿼리할 수 있습니다. Glue crawler는 스케줄링하거나 트리거하여 새로운 S3 prefix가 나타날 때 파티션을 업데이트할 수 있습니다. QuickSight는 Athena를 data source로 사용할 수 있고, 더 빠른 dashboard 성능을 위해 SPICE로 가져올 수 있으며, 24시간마다 refresh를 스케줄링할 수 있습니다. 흔한 오해: Redshift(D)는 강력하지만 cluster 관리가 필요하며(Redshift Serverless를 사용하더라도 데이터 모델링/로딩 결정이 필요), Athena로 in-place 쿼리하는 것보다 ad hoc 분석에는 더 많은 노력이 듭니다. DynamoDB(F)는 SQL 엔진을 위한 metastore가 아니며 custom schema/partition 관리 로직이 필요합니다. X-Ray(A)는 분산 애플리케이션 tracing 용도이지 analytics/visualization 용도가 아닙니다. 시험 팁: “ad hoc SQL”, “no servers”, “data in S3”를 보면 Athena를 떠올리세요. “persistent metadata”, “schema/partitions”, “automated discovery”를 보면 Glue Data Catalog + crawler를 떠올리세요. “interactive dashboards”와 “scheduled refresh”를 보면 QuickSight를 떠올리세요. 이 조합(S3 + Glue + Athena + QuickSight)은 Well-Architected 관점에서 운영 부담이 적은 analytics reference pattern으로 흔히 사용됩니다.

20
문제 20

데이터 거버넌스 팀은 개발자가 실수로 프로덕션에서 Amazon RDS DB snapshot을 공개적으로 접근 가능하게 만들 수 있다는 점을 우려하고 있다. 어떤 개발자도 snapshot attribute를 수정하여 모든 계정과 공유할 수 없어야 하며, us-east-1 또는 us-west-2에서 Environment=prod로 태그된 어떤 snapshot이든 public 상태라면 팀은 5분 이내에 통지를 받아야 한다. 그렇다면 수동 검토 없이 이를 대규모로 어떻게 자동화할 수 있는가?

CloudTrail + Athena는 주로 로그 분석 접근 방식이며 강력한 준실시간 컴플라이언스 통제가 아니다. Athena 쿼리는 보통 scheduled/batch로 실행되며 추가 오케스트레이션을 구축하지 않는 한 5분 이내 통지를 보장하지 않는다. 또한 개발자가 snapshot을 public으로 만드는 것을 방지하지 못하고 사후에 시도/이벤트를 탐지할 뿐이다. Lambda로 remediation은 가능하지만, 이 옵션은 Config + explicit deny 가드레일보다 약하고 더 복잡하다.

가장 적합하다: IAM explicit Deny는 이후 다른 policy가 Allow하더라도 개발자가 snapshot attribute를 수정해 snapshot을 public으로 만들지 못하게 보장한다. custom AWS Config rule은 RDS snapshot이 공개적으로 복원 가능한지 평가할 수 있으며 Environment=prod로 범위를 제한하고 us-east-1 및 us-west-2에 배포할 수 있다. Config는 SNS/EventBridge를 통해 수 분 내에 알림을 보낼 수 있어 대규모에서 5분 요구사항을 충족한다.

단순히 “권한을 부여하지 않기”로 제거하는 것은 지속적인 가드레일이 아니다. 향후 정책 변경으로 실수로 다시 추가될 수 있고, 다른 principal이 여전히 해당 권한을 가질 수도 있다. 5분마다 실행되는 Lambda는 polling 기반으로 운영 오버헤드가 있으며 실행 사이의 변경을 놓치거나 조용히 실패할 수 있다. AWS Config는 지속적 컴플라이언스를 위해 설계되었고 알림과 깔끔하게 통합되므로 이 옵션은 열등하다.

RDS DB snapshot에는 IAM role이 연결되지 않으므로 전제가 틀렸다. IAM permission은 snapshot에 role을 붙이는 것이 아니라 principal(user/role)에 연결된다. AWS Config가 public snapshot을 확인할 수는 있지만, 설명된 메커니즘(deny statement가 있는 role이 snapshot에 연결되어 있는지 검증)은 구현 불가능하다. 이 옵션은 IAM permission 모델과 RDS snapshot 제어 방식에 대한 오해를 반영한다.

문제 분석

핵심 개념: 이 문제는 IAM explicit deny(위험한 작업을 방지)와 AWS Config(지속적인 컴플라이언스 평가 및 준실시간 알림)를 결합해 데이터 노출에 대한 예방 및 탐지 통제를 테스트한다. 위험은 ModifyDBSnapshotAttribute를 통해 snapshot attribute의 restore permission을 "all"로 설정하여 RDS DB snapshot을 공개적으로 복원 가능하게 만드는 것이다. 정답이 맞는 이유: Option B는 (1) rds:ModifyDBSnapshotAttribute에 대한 IAM policy의 explicit Deny로 개발자가 snapshot restore permission을 public으로 변경하지 못하게 하고, (2) 필요한 리전에서 프로덕션 snapshot(tag Environment=prod)으로 범위를 제한한 custom AWS Config rule로 어떤 snapshot이 public인지 탐지하여 수 분 내에 알림을 보낸다. 이는 두 요구사항을 모두 충족한다: 개발자는 snapshot을 public으로 만들 수 없고, 어떤 이유로든(예: 다른 role, 자동화, 잘못 구성된 break-glass account) prod snapshot이 public이 되면 거버넌스 팀이 빠르게 통지받는다. 주요 AWS 기능: - IAM explicit Deny: 어떤 Allow보다 우선하며 가장 강력한 가드레일이다. 조건(예: rds:AttributeName이 restore이고 rds:Values에 all이 포함될 때 deny)을 추가해 합법적인 비공개 공유를 막지 않도록 더 제한할 수 있다. - AWS Config custom rule: 리소스 구성을 평가하며 태그 및 리전별 rule 배포로 범위를 제한할 수 있다. Config는 Amazon SNS/EventBridge와 통합되어 일반적으로 구성 변경 후 수 분 내에 알림을 보낼 수 있다. - Multi-account/규모: Config rule과 IAM 가드레일은 AWS Organizations(예: StackSets)을 사용해 일관되게 배포할 수 있어 대규모 거버넌스에 부합한다. 흔한 오해: 흔한 함정은 로그 쿼리(CloudTrail + Athena)나 scheduled polling(Lambda를 5분마다 실행)에 의존하는 것이다. 이는 탐지 전용이며 엣지 케이스를 놓칠 수 있고, 본질적으로 해당 작업을 방지하지도 못한다. 또 다른 오해는 snapshot 같은 리소스에 “IAM role이 연결된다”고 생각하는 것인데(그렇지 않다), 따라서 snapshot별 IAM role 통제로 강제할 수 없다. 시험 팁: 문제가 “불가능해야 함”과 “빠르게 통지”를 동시에 요구할 때는 예방 통제(SCP/IAM explicit deny)와 지속적 컴플라이언스 모니터링(AWS Config)의 조합을 찾는다. 컴플라이언스 관점에서는 주기적 Lambda polling보다 Config를 선호하고, 향후 정책 변경으로 권한이 다시 추가될 수 있으므로 “권한을 부여하지 않기”보다 explicit deny를 선호한다.

합격 후기(6)

주
주**Nov 25, 2025

학습 기간: 2 months

앱의 문제들 3번이나 반복해서 풀고 떨어지면 어떡하지 불안했었는데 시험에서 문제들이 굉장히 유사하게 많이 나와서 쉽게 풀 수 있었어요. 감사해요!

**********Nov 20, 2025

학습 기간: 1 month

After going through a Udemy course, I wanted to do some practice exams before taking the real exam. Cloud pass is good resource for exam. I didn't complete every questions, i only completed 70% questions. But i passed! Thanks cloud pass

U
u*********Nov 18, 2025

학습 기간: 1 month

A lot of the questions in this app questions indeed appeared on the exam, very helpful.

S
S*******Oct 31, 2025

학습 기간: 1 month

Passed the exam DOP-C02 Oct 2025. These practice questions were essential for my preparation. The services covered in the test practices match the exam content very well.

D
D****Oct 27, 2025

학습 기간: 1 month

passed the dop exam with the help of Cloud pass questions. The real exam is full of tricky questions and these sets helped me prepared for it.

모의고사

Practice Test #1

75 문제·180분·합격 750/1000

Practice Test #2

75 문제·180분·합격 750/1000

다른 AWS 자격증

AWS Certified Solutions Architecture - Associate (SAA-C03)

AWS Certified Solutions Architecture - Associate (SAA-C03)

Associate

AWS Certified AI Practitioner (AIF-C01)

AWS Certified AI Practitioner (AIF-C01)

Practitioner

AWS Certified Advanced Networking - Specialty (ANS-C01)

AWS Certified Advanced Networking - Specialty (ANS-C01)

Specialty

AWS Certified Cloud Practitioner (CLF-C02)

AWS Certified Cloud Practitioner (CLF-C02)

Practitioner

AWS Certified Data Engineer - Associate (DEA-C01)

AWS Certified Data Engineer - Associate (DEA-C01)

Associate

AWS Certified Developer - Associate (DVA-C02)

AWS Certified Developer - Associate (DVA-C02)

Associate

AWS Certified Machine Learning Engineer - Associate (MLA-C01)

AWS Certified Machine Learning Engineer - Associate (MLA-C01)

Associate

AWS Certified Security - Specialty (SCS-C02)

AWS Certified Security - Specialty (SCS-C02)

Specialty

AWS Certified Solutions Architect - Professional (SAP-C02)

AWS Certified Solutions Architect - Professional (SAP-C02)

Professional

지금 학습 시작하기

Cloud Pass를 다운로드하여 모든 AWS Certified DevOps Engineer - Professional (DOP-C02) 기출 문제를 풀어보세요.

Get it on Google PlayDownload on the App Store
Cloud PassCloud Pass

IT 자격증 문제풀이 앱

Get it on Google PlayDownload on the App Store

자격증

AWSGCPMicrosoftCiscoCompTIADatabricks

법률

FAQ개인정보 처리방침서비스 약관

회사

문의하기계정 삭제

© Copyright 2026 Cloud Pass, All rights reserved.

이동 중에도 모든 문제를 풀고 싶으신가요?

앱 받기

Cloud Pass를 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.