模擬問題集一覧

DOP-C02 模擬問題集(練習問題)

AWS DevOps Engineer – Professional 合格に向けた本番形式の模擬問題集。すべての問題に詳しい解説と、ドメイン別の弱点分析つき。

4 練習テスト 200 問 合格ライン 70% 各 120 分

この模擬問題集で身につくこと

  • 本番と同じ形式・難易度の問題で実力を確認
  • 制限時間つきの試験モードで時間配分を体得
  • 演習モードで1問ずつ解説を読みながら学習
  • すべての問題に正解の根拠つきの詳しい解説
  • ドメイン別スコアで弱点分野をひと目で把握
  • 完了後も何度でも復習して本番前に仕上げ

練習テストの内容

4 テスト · 全 200 問
1
模擬問題集①先頭 15 問 無料
50 問 120 分 合格 70%
2
模擬問題集② プラン限定
50 問 120 分 合格 70%
3
模擬問題集③ プラン限定
50 問 120 分 合格 70%
4
模擬問題集④ プラン限定
50 問 120 分 合格 70%

説明

DOP-C02(AWS DevOps Engineer – Professional)の合格に向けた、本番形式の模擬問題集です。全 200 問を4 回の練習テストに分割し、 試験モード/演習モードで受験できます。各問題には正解の根拠と誤答の理由を記した詳しい解説が付き、受験後はドメイン別のスコアで弱点を把握できます。 各試験は先頭の問題から無料でお試しいただけます。

月額 ¥980 で全 200 問+全解説が受け放題

模試プラン(¥980/月)なら、ロックされた練習テストと詳しい解説、ドメイン別の弱点分析がすべて使い放題。本番に向けて実力を仕上げましょう。

DOP-C02 の操作は、実機のハンズオンラボで身につける

問題集で覚えた知識を、本物の Azure・AWS 環境で手を動かして確かめられます。 Pro プランなら DOP-C02 対応のハンズオンラボ 12 本と、この問題集の全 200 問がすべて使えます。 ラボは会員登録だけで 1 本無料で試せます。

DOP-C02 の対応ラボを見る(12 本)ラボを 1 本無料で試す

DOP-C02 の出題範囲(カバーしている分野)

全 200 問を、本番の試験ガイドに沿った次の分野から出題しています。 受験後はドメイン別の正答率が表示され、弱点が特定できます。 難易度・学習時間・合格までの進め方はDOP-C02 の学習ガイドにまとめています。

DOP-C02 の無料練習問題(15 問・解説つき)

会員登録なしで、全 200 問のうち 15 問を正解と解説つきでご覧いただけます。 問題をクリックすると選択肢と解説が開きます。

問題 1この要件を満たすソリューションはどれですか?回復力の高いクラウドソリューション
問題
ある企業が、アプリケーションを2つのAWSリージョンにデプロイしています。このアプリケーションは、アプリケーションと同じリージョンにあるAmazon S3バケットにオブジェクトを作成・保存します。アプリケーションの両方のデプロイは、両方のリージョンのすべてのオブジェクトとそのメタデータにアクセスできる必要があります。企業は、これらのS3バケット間で双方向レプリケーションを設定し、各S3バケットでS3レプリケーションメトリクスを有効にしています。 DevOpsエンジニアは、オブジェクトのレプリケーションが失敗した場合にレプリケーションプロセスを再試行するソリューションを実装する必要があります。 この要件を満たすソリューションはどれですか?

選択肢と解説

  • 1
    失敗したレプリケーションイベントに関するS3イベント通知をリッスンするAmazon EventBridgeルールを作成する。失敗したレプリケーション対象のオブジェクトをダウンロードし、そのオブジェクトに対して宛先バケットへのPutObjectコマンドを実行するAWS Lambda関数を作成する。レプリケーションに失敗したオブジェクトを処理するために、EventBridgeルールがLambda関数を呼び出すように設定する。
  • 2
    Amazon Simple Queue Service(Amazon SQS)キューを作成する。失敗したレプリケーションの通知をSQSキューに送信するようにS3イベント通知を設定する。失敗したレプリケーション対象のオブジェクトをダウンロードし、そのオブジェクトに対して宛先バケットへのPutObjectコマンドを実行するAWS Lambda関数を作成する。通知を処理するためにキューをポーリングするようにLambda関数を設定する。
  • 3
    失敗したレプリケーションに関するS3イベント通知をリッスンするAmazon EventBridgeルールを作成する。失敗したレプリケーション対象のオブジェクトをダウンロードし、そのオブジェクトに対して宛先バケットへのPutObjectコマンドを実行するAWS Lambda関数を作成する。
  • ✓
    失敗したレプリケーションについて、既存オブジェクトのレプリケーションを再試行するためにS3バッチオペレーションを使用するAWS Lambda関数を作成する。失敗したレプリケーションの通知をLambda関数に送信するようにS3イベント通知を設定する。

解説

【正解】D

【0からの解説】
S3レプリケーション(CRR/SRR)でオブジェクトの複製が失敗したとき、AWSが公式に推奨する「再試行」の手段はS3バッチオペレーション(S3 Batch Replication)です。S3バッチオペレーションは、既にバケットに存在するオブジェクト(レプリケーション失敗分を含む)に対して、レプリケーション設定に従って複製ジョブをまとめて実行できる機能です。

レプリケーションの失敗はS3イベント通知の s3:Replication:OperationFailedReplication イベントで検知できます。この通知をトリガーにLambda関数を起動し、Lambdaが該当オブジェクトに対してS3バッチオペレーションのレプリケーションジョブを作成すれば、AWSのレプリケーション機構そのもの(メタデータやタグ、バージョン情報も正しく保持される)を使って確実に再複製できます。これがDの構成であり、要件に最も適合します。

選択肢A・B・Cの「LambdaでオブジェクトをダウンロードしてPutObjectで宛先に書き込む」方式は一見動きそうですが、レプリケーション本来のメタデータ(レプリケーションステータス、バージョンID、オブジェクトのオーナーシップ等)を正しく引き継げず、さらに本問は双方向レプリケーションのため、Lambdaが宛先にPutObjectすると今度はそのPutが逆方向レプリケーションのトリガーになり、無限ループや余計な複製を引き起こすリスクがあります。S3レプリケーションは「複製で作られたオブジェクトはさらに再複製しない」制御を内部で行いますが、自前PutObjectはこの制御の対象外です。

【誤りの選択肢】
A:EventBridge+Lambdaの自前ダウンロード/PutObject方式。レプリケーションのメタデータを保持できず、双方向構成では逆方向レプリケーションを誘発する恐れがある。S3バッチオペレーションを使うDの方が正攻法。
B:SQS+Lambdaの自前ダウンロード/PutObject方式。Aと同じく自前複製の問題に加え、キューを挟む分だけ構成が複雑になる。
C:EventBridge+Lambdaの自前複製方式(再試行のための仕組みが弱い)。Aと同様の欠点を持つ。
D:失敗イベントを契機にLambdaがS3バッチオペレーションでレプリケーションを再試行する。AWS推奨の手段でメタデータも保持され、要件を正しく満たす。

【参考】
Replicating existing objects with S3 Batch Replication
Amazon S3 Event notifications - replication events
この問題のページを開く →
問題 2この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?構成管理と Infrastructure as Code (IaC)
問題
ある企業が、Amazon Elastic Kubernetes Service(Amazon EKS)を使用して、Amazon Elastic Container Registry(Amazon ECR)で利用可能なコンテナ化されたアプリケーションをホストしています。 企業は現在、AWS CLIの aws eks create-cluster コマンドを使用して、開発環境にEKSクラスターを起動しています。企業は aws eks create-addon コマンドを使用して必要なアドオンをインストールしています。インストール済みのすべてのアドオンは、現在企業が使用しているKubernetesのバージョンと互換性があります。すべてのクラスターは、コンピューティング容量にマネージドノードグループのみを使用しています。 一部のEKSクラスターはバージョンのアップグレードが必要です。DevOpsエンジニアは、AWSの標準サポートスケジュール内で継続的にアップグレードが行われるようにする必要があります。 この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?

選択肢と解説

  • 1
    aws eks update-cluster-version コマンドを実行する。クラスター名やバージョン番号などの適切な引数を指定する。
  • ✓
    すべてのEKSクラスターでEKS Auto Modeを有効にする。既存のマネージドノードグループをすべて削除する。
  • 3
    eksctl コマンドを実行してEKSクラスターをアップグレードする。クラスター名やバージョン番号などの適切な引数を指定する。
  • 4
    Infrastructure as Code(IaC)を使用してEKSクラスターを作成するように環境をリファクタリングする。コードの変更によってクラスターをアップグレードする。

解説

【正解】B

【0からの解説】
要件のポイントは「AWSの標準サポートスケジュール内で“継続的に”アップグレードが行われること」を「最も少ない運用オーバーヘッド」で実現することです。Kubernetesは新バージョンが頻繁にリリースされ、各バージョンの標準サポート期間は限られています。手動コマンドでのアップグレードは、その都度エンジニアが時期を見計らって実行する必要があり、運用負荷が高くなります。

EKS Auto Modeは、コンピューティング(ノード)、ネットワーク、ストレージなどのクラスターインフラをAWSが自動管理するモードです。Auto Modeを有効にすると、ノードのパッチ適用やKubernetesバージョンの整合性維持をAWSが肩代わりし、コントロールプレーンとデータプレーンのバージョン管理・更新の運用負担を大幅に削減できます。マネージドノードグループを廃止してAuto Modeに移行することで、継続的なアップグレードを最小の運用オーバーヘッドで実現できます。これがBであり要件に最も適合します。

【誤りの選択肢】
A:aws eks update-cluster-version はコントロールプレーンのバージョンを上げる手動コマンド。アップグレードのたびに人が実行する必要があり「継続的・低オーバーヘッド」を満たさない。さらにマネージドノードグループのアップデートは別コマンドが必要。
C:eksctl も手動ツールであり、毎回人手で実行する運用が前提。運用オーバーヘッドが残る。
D:IaC化はインフラの再現性向上には有効だが、アップグレード自体はコード変更とデプロイを人が起こす必要があり、継続的な自動アップグレードを保証しない。リファクタリングのコストも大きい。
B:EKS Auto Modeにより、バージョン整合性維持やノード更新をAWSが自動管理し、最小の運用オーバーヘッドで継続的アップグレードを実現できる。

【参考】
Automate cluster infrastructure with EKS Auto Mode
Amazon EKS Kubernetes versions and standard support
この問題のページを開く →
問題 3この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?モニタリングとロギング
問題
ある企業のアプリケーションは、複数のAWSアカウントでAmazon EC2インスタンス上で実行され、AWS Lambda関数を使用しています。すべてのEC2インスタンスにはAmazon CloudWatchエージェントがインストールされています。すべてのアカウントは、AWS Organizationsの同じ組織に属しています。企業は専用の中央ログアカウントを作成しています。 アプリケーションが生成するすべてのログは、中央の場所に送信される必要があります。ログは、企業が管理するキーで暗号化される必要があります。 この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?

選択肢と解説

  • 1
    中央ログアカウントで、CloudWatchのデータソースとしてログを有効にする。ソースアカウントリストに組織IDを追加する。CloudWatchが提供するテンプレートを使用してCloudFormation StackSetを作成し、組織のすべてのアカウントで中央モニタリングを有効にする。
  • 2
    中央ログアカウントにAmazon S3バケットを作成する。中央ログアカウントにAmazon Data Firehoseストリームを作成する。S3バケットをFirehoseストリームの宛先に設定する。中央ログアカウントにログサブスクリプションを作成する。Firehoseストリームをサブスクリプションのターゲットに設定する。各プロジェクトがS3バケットにログを送信するために使用するサブスクリプションログARNをAWS Systems Manager Parameter Storeに保存する。
  • 3
    各アカウントにAmazon S3バケットを作成する。中央ログアカウントにAmazon OpenSearch Serviceクラスターを作成する。中央ログアカウントにAmazon Simple Queue Service(Amazon SQS)キューを作成する。S3バケットに新しいファイルがアップロードされるたびにSQSキューにイベントを送信するS3トリガーを作成する。各ファイルを処理してOpenSearch Serviceクラスターに送信するLambda関数を作成する。
  • ✓
    中央ログアカウントにAmazon S3バケットを作成する。各アカウントにAmazon Data Firehoseストリームを作成する。S3バケットをFirehoseストリームの宛先に設定する。各アカウントにFirehoseストリームをターゲットとするログサブスクリプションを作成する。

解説

【正解】D

【0からの解説】
CloudWatch Logsには「サブスクリプションフィルター(subscription filter)」という機能があり、ロググループに届いたログをリアルタイムでAmazon Data Firehose(旧Kinesis Data Firehose)などへ転送できます。FirehoseはそのログをS3バケットへ配信でき、配信時にサーバー側暗号化(顧客管理のKMSキー = 企業が管理するキー)を適用できます。

クロスアカウントの集中ロギングでは、各ソースアカウント側に「ログを集める出口」を置く構成が定石です。Dは、中央ログアカウントに集約先のS3バケットを1つ作り、各ソースアカウントにFirehoseストリームとサブスクリプション(サブスクリプションフィルター)を作成して、各アカウントのCloudWatch Logsを中央のS3へ流し込みます。Firehoseの配信設定でKMS暗号化を有効にすれば「企業が管理するキーで暗号化」も満たせます。マネージドサービス(CloudWatch Logsサブスクリプション+Firehose+S3)の組み合わせで自前のETL/処理コードが不要なため、運用オーバーヘッドが小さく、要件に最も適合します。

【誤りの選択肢】
A:CloudWatchの「ソースアカウント/モニタリングアカウント(CloudWatch cross-account observability)」の話に近いが、これはメトリクス/ログのクロスアカウント“閲覧”の仕組みであり、「企業管理キーで暗号化した中央S3への集約」という本問の要件(保存・暗号化)を直接満たす構成ではない。記述も実際の機能と噛み合わない。
B:サブスクリプションとFirehoseを“中央アカウント側だけ”に作る構成だが、各ソースアカウントのロググループから中央アカウントのFirehoseへ流すには、ソースアカウント側にクロスアカウント送信先(送信先=destination)とサブスクリプションフィルターが必要。記述の「ARNをParameter Storeに保存して各プロジェクトが送る」だけでは配線が成立せず、回りくどく実装も曖昧。
C:各アカウントにS3、さらにOpenSearch+SQS+自前Lambdaで処理という構成は、コンポーネントが多く自前コードの保守が必要で運用オーバーヘッドが最大級。要件(中央集約・暗号化)に対して過剰。
D:各アカウントのCloudWatch LogsサブスクリプションからFirehose経由で中央S3へ集約し、KMSで暗号化。マネージドサービス中心で最小の運用オーバーヘッド。

【参考】
Real-time processing of log data with subscriptions
Cross-account log data sharing with subscriptions
Data protection (encryption) in Amazon Data Firehose
この問題のページを開く →
問題 4この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?構成管理と Infrastructure as Code (IaC)
問題
ある企業が、AWS CodePipelineのパイプラインを使用して、AWS CloudFormationテンプレートをAmazon S3バケットにアップロードしています。パイプラインは、これらのテンプレートを使用して、テンプレートの名前と一致する名前のCloudFormationスタックをデプロイします。 企業は、テンプレートを以前のバージョンに戻そうとしたときに問題を経験しました。これらの問題を防ぐため、企業は変更が本番環境にデプロイされる前にテンプレートの変更をレビューできる能力を持つ必要があります。 この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?

選択肢と解説

  • ✓
    AWS CodeConnectionsでGitリポジトリへの接続を設定する。テンプレートをGitリポジトリに保存する。テンプレートの変更をレビューするためのプルリクエストワークフローを設定する。スタックに対してAWS CloudFormation Git syncを設定する。
  • 2
    スタックのデプロイ前にテンプレートコードの変更をレビューするための手動レビューアクションをパイプラインに追加する。
  • 3
    スタックのデプロイ前にテンプレートの変更をチェックするAWS Lambda関数を呼び出すようにパイプラインを更新する。
  • 4
    AWS CodeConnectionsでGitリポジトリへの接続を設定する。テンプレートをGitリポジトリに保存する。接続を使用するソースアクションを含むようにパイプラインを設定する。スタックのデプロイ前にテンプレートの変更をレビューするための手動レビューアクションをパイプラインに追加する。

解説

【正解】A

【0からの解説】
本問の課題は2つあります。(1)「テンプレートを以前のバージョンに戻そうとすると問題が起きる」=バージョン管理がS3だけで不十分、(2)「本番デプロイ前に変更をレビューしたい」。これらを最小の運用オーバーヘッドで両立する仕組みが求められています。

CloudFormation Git sync(テンプレートのGit同期)は、CloudFormationスタックをGitリポジトリと直接同期させる機能です。テンプレートをGitに置き、AWS CodeConnections経由で接続すると、Gitへのコミット/マージを検知してCloudFormationが自動的にスタックをデプロイ・更新します。Gitを使うことでバージョン履歴とロールバック(以前のコミットに戻す)が自然に扱え、プルリクエスト(PR)ワークフローでマージ前のコードレビューが標準的に行えます。これにより、CodePipelineの複雑な配線や手動承認アクションを自前で組まなくても、「レビュー後にデプロイ」が成立します。Gitネイティブでパイプライン運用を簡素化できるため、運用オーバーヘッドが最小で、要件に最も適合します。

【誤りの選択肢】
B:既存のS3ベースのパイプラインに手動レビューアクションを足すだけでは、レビューはできても根本の「バージョン管理/ロールバックの脆弱さ(S3にテンプレートを置く構成)」が解決しない。
C:Lambdaで変更チェックを自前実装するのは、コードの開発・保守が必要で運用オーバーヘッドが増える。レビューの自動化要件にも厳密には合致しない。
D:GitリポジトリとCodeConnectionsを使い、ソースアクション+手動レビューを足す構成は要件を満たすが、パイプラインのステージ/アクション構成を自前で組む分、CloudFormation Git sync(A)よりも運用オーバーヘッドが大きい。「最も少ない運用オーバーヘッド」という基準ではAが上回る。
A:Git sync+PRワークフローで、バージョン管理・ロールバック・マージ前レビューをGitネイティブに実現し、運用負荷を最小化できる。

【参考】
Manage CloudFormation stacks with Git sync
What is AWS CodeConnections?
この問題のページを開く →
問題 5この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?セキュリティとコンプライアンス
問題
ある企業が、インフラストラクチャにAWS Cloud Development Kit(AWS CDK)アプリケーションを使用しています。AWS CDKアプリケーションは、AWS Lambda関数と、それらの関数にアタッチされるIAMロールを作成します。企業はAWS Organizationsも使用しています。企業の開発者は、AWS CDKアプリケーションのデプロイロールを引き受ける(assume)ことができます。 企業のセキュリティチームは、開発者とAWS CDKアプリケーションのデプロイに使用されるロールが、必要以上の権限を持っていることを発見しました。セキュリティチームはまた、CDKアプリケーションが作成するLambda関数にアタッチされるロールも、必要以上の権限を持っていることを発見しました。開発者には、追加の権限を付与する能力を持たせてはなりません。 この要件を最も少ない運用オーバーヘッドで満たすソリューションはどれですか?

選択肢と解説

  • 1
    開発者ロールとAWS CDKアプリケーションのデプロイロールに対して、iam:CreateRole アクションと iam:UpdateRole アクションを拒否するSCPを作成する。Lambda関数にアタッチする新しいIAMロールを中央で作成し、開発者がLambda関数をプロビジョニングするために使用させる。
  • ✓
    IAM権限境界(permission boundary)ポリシーを作成する。AWS CDKアプリケーションが必要とする最大のアクションをポリシーで定義する。アカウントのAWS CDKブートストラップを権限境界を使用するように更新する。AWS CDKアプリケーションの設定で、デフォルトの権限境界がこのポリシーを使用するように更新する。
  • 3
    IAM権限境界(permission boundary)ポリシーを作成する。AWS CDKアプリケーションが必要とする最大のアクションをポリシーで定義する。開発者に対し、AWS CDKアプリケーションのコードでロールを作成する際に権限境界ポリシー名を使用するように指示する。
  • 4
    開発者ロールに対して、iam:CreateRole アクションと iam:UpdateRole アクションを拒否するSCPを作成する。AWS CDKデプロイロールにLambda関数に関連付けられるロールを作成するアクセス権を与える。AWS Identity and Access Management Access Analyzerを実行して、Lambda関数のロールが権限を持たないことを確認する。

解説

【正解】B

【0からの解説】
要件は、(1)CDKデプロイロールの権限を絞る、(2)CDKが作成するLambda用ロールの権限も絞る、(3)開発者が追加権限を付与できないようにする、の3点を最小の運用オーバーヘッドで満たすことです。

ここで鍵になるのがIAMの「権限境界(permissions boundary)」です。権限境界は、IAMエンティティ(ユーザー/ロール)が“最大で”持てる権限の上限を定義する仕組みで、たとえそのロールに広い許可ポリシーが付いていても、境界を超える権限は実効的に行使できません。

AWS CDKはこの権限境界をネイティブにサポートしています。具体的には、(a)CDKのブートストラップ(bootstrap)で、デプロイに使うロール群に権限境界を適用でき、(b)CDKアプリ側の設定で「デフォルトの権限境界(default permissions boundary)」を指定すると、CDKが合成(synth)するすべてのIAMロール(=Lambdaにアタッチされるロールを含む)に自動的にその境界が付与されます。これにより、開発者がCDKコードでどんなロール/ポリシーを書いても、境界を超える権限は付与できなくなり、「開発者が追加権限を付与できない」を強制できます。ブートストラップとCDK設定の2か所を更新するだけで全Lambdaロールに横断適用されるため運用オーバーヘッドが小さく、Bが最適です。

【誤りの選択肢】
A:SCPで iam:CreateRole/iam:UpdateRole を拒否するとCDKデプロイロール自体がロールを作れなくなり、CDKの正常なデプロイが壊れる。中央で人手でロールを作る運用は手間が大きく、Lambdaごとに最小権限を維持するのも煩雑。
C:権限境界の考え方は正しいが、「開発者に各ロール作成時に境界名を手動で指定させる」のは強制力がなく(指定し忘れれば境界が効かない)、CDKのデフォルト権限境界(B)のように全ロールへ自動適用されないため、運用が脆い。
D:開発者ロールにSCPをかける一方でCDKデプロイロールに広くロール作成を許すと、Lambdaロールの権限を上限で縛れない。Access Analyzerは“検知”はできても“予防(権限の上限強制)”はできず、後追いの確認に留まる。
B:CDKブートストラップ+デフォルト権限境界で、デプロイロールと生成されるLambdaロールの双方に権限上限を自動適用でき、追加権限付与も防げる。最小オーバーヘッドで要件を満たす。

【参考】
Permissions boundaries for IAM entities
AWS CDK security and safety – permissions boundaries
この問題のページを開く →
問題 6DevOpsエンジニアが失敗の原因を特定するには、何をすべきですか?インシデントおよびイベントへの対応
問題
あるDevOpsエンジニアが、複数のAmazon EC2インスタンスを含むネストされたスタック(nested stack)を追加するために、AWS CloudFormationスタックを更新しています。DevOpsエンジニアが更新されたスタックをデプロイしようとすると、ネストされたスタックのデプロイが失敗します。 DevOpsエンジニアが失敗の原因を特定するには、何をすべきですか?

選択肢と解説

  • 1
    失敗したスタックに対してCloudFormationの「detect root cause(根本原因の検出)」機能を使用して失敗を分析し、失敗の最も可能性の高い原因となるイベントを返す。
  • ✓
    ルートスタックを ParentId プロパティに指定して、失敗したスタックをクエリする。返されたすべてのスタックの StackStatusReason プロパティを調べて、ネストされたスタックのデプロイが失敗した理由を特定する。
  • 3
    アプリケーションが実行されているAWSアカウントでAWS Systems Managerを有効にする。AWS Systems Manager Automationの AWS-SupportTroubleshootCFNCustomResource ランブックを使用して、ネストされたスタックのデプロイが失敗した理由を特定する。
  • 4
    CloudFormationテンプレートを設定してログをAmazon CloudWatchに発行する。CloudWatchコンソールで失敗したスタックのCloudFormationログを表示して、ネストされたスタックのデプロイが失敗した理由を特定する。

解説

【正解】B

【0からの解説】
ネストされたスタックは、親(ルート)スタックの中から子スタックを呼び出す入れ子構造です。子スタックが失敗すると親スタックも失敗しますが、本当の失敗理由(どのリソースで何が起きたか)は子スタック側のイベントに記録されています。

失敗原因を特定する正攻法は、CloudFormationのスタックイベントを調べることです。具体的には DescribeStacks や ListStacks でスタックを照会し、ネストされたスタックを ParentId(親スタックのID)で絞り込み、各スタックの StackStatusReason(ステータス理由)を確認します。StackStatusReason には「このリソースがこういう理由で失敗した」という具体的なメッセージが入るため、ここからEC2作成失敗などの根本原因に辿り着けます。これがBであり、CloudFormationが標準で提供する正規の調査手段です。

【誤りの選択肢】
A:「detect root cause」という名称のCloudFormation機能は存在しない(ドリフト検出 detect drift とは別物)。実在しない機能を指しており誤り。
C:AWS-SupportTroubleshootCFNCustomResource は“カスタムリソース”のトラブルシュート用ランブックであり、EC2インスタンスを含む通常リソースのネストスタック失敗の調査には対象が合わない。
D:CloudFormation自体はスタックの詳細ログをCloudWatchへ自動発行する仕組みを標準では持たない(個々のリソースのログはあっても、スタックの失敗理由はスタックイベントに出る)。設定も曖昧で正攻法ではない。
B:ParentId で子スタックを特定し StackStatusReason を確認するのが、ネストスタック失敗原因を特定する標準手順。

【参考】
Working with nested stacks
DescribeStacks - AWS CloudFormation API
Troubleshooting CloudFormation
この問題のページを開く →
問題 7この問題をトラブルシューティングするために取るべきアクションは次のうちどれですか?SDLC の自動化
問題
ある開発チームが、アプリケーションコードのバージョン管理にAWS CodeCommitを使用し、ソフトウェアデプロイのオーケストレーションにAWS CodePipelineを使用しています。チームは、コード変更を統合するためのパイプラインのトリガーとして、リモートのmainブランチを使用することにしました。ある開発者がCodeCommitリポジトリにコード変更をプッシュしましたが、10分経ってもパイプラインが何も反応しないことに気づきました。 この問題をトラブルシューティングするために取るべきアクションは次のうちどれですか?

選択肢と解説

  • ✓
    パイプラインをトリガーするためのAmazon EventBridgeルールがmainブランチに対して作成されているかどうかを確認する。
  • 2
    CodePipelineサービスロールがCodeCommitリポジトリにアクセスする権限を持っているかどうかを確認する。
  • 3
    開発者のIAMロールがCodeCommitリポジトリにプッシュする権限を持っているかどうかを確認する。
  • 4
    CodeCommitのエラーが原因でパイプラインの起動に失敗していないか、Amazon CloudWatch Logsで確認する。

解説

【正解】A

【0からの解説】
CodePipelineがCodeCommitのソース変更を検知して自動起動する仕組みは、内部的にAmazon EventBridge(旧CloudWatch Events)ルールに依存しています。パイプラインのソースアクションでCodeCommitを指定し「変更検知=CloudWatch Events(推奨)」にすると、対象リポジトリ・対象ブランチ(ここではmain)への変更を捕捉するEventBridgeルールが作成され、そのルールがパイプラインを起動します。

「プッシュしたのにパイプラインが全く反応しない」という症状の典型原因は、このEventBridgeルールが存在しない/無効/対象ブランチの指定が誤っているケースです。実際、開発者はリポジトリへプッシュ自体はできている(=プッシュ権限はある)と読めるので、まず確認すべきは「mainブランチの変更でパイプラインを起動するEventBridgeルールが正しく作成されているか」です。これがAであり、最初のトラブルシュート観点として最適です。

【誤りの選択肢】
B:CodePipelineサービスロールにソースアクセス権がない場合、パイプラインは“起動はするが失敗する”か、ソース取得段階でエラー表示される。今回は「全く反応しない(起動すらしない)」症状なので、起動トリガー(EventBridge)の不備を疑う方が先。
C:開発者がコードをプッシュできている時点で、プッシュ権限は足りている可能性が高い。仮に権限不足ならプッシュ自体が失敗するはずで、症状(プッシュ成功・パイプライン無反応)と矛盾する。
D:CodePipelineはパイプライン起動の失敗ログをCloudWatch Logsに自動出力する構成が標準ではなく、ここを見ても「起動トリガーが無い」原因は判明しにくい。観点として遠回り。
A:自動起動はEventBridgeルールに依存するため、mainブランチ向けルールの有無/正否を確認するのが正しい第一歩。

【参考】
Start a pipeline automatically using CloudWatch Events (CodeCommit source)
Use CloudWatch Events to start a pipeline (CodeCommit)
この問題のページを開く →
問題 8回復力の高いクラウドソリューション回復力の高いクラウドソリューション
問題
ある企業が、そのデータとアプリケーションのフェイルオーバーおよびディザスタリカバリ(DR)の戦略を必要としています。アプリケーションはMySQLデータベースとAmazon EC2インスタンスを使用しています。企業は、データとアプリケーションについて、常に最大RPO 2時間、最大RTO 10分を要求しています。 これらの要件を満たすデプロイ戦略の組み合わせはどれですか?(2つ選択)

選択肢と解説

  • 1
    データストアとして、複数のAWSリージョンにAmazon Aurora Single-AZクラスターを作成する。災害発生時にはAuroraの自動復旧機能を使用する。
  • ✓
    データストアとして、2つのAWSリージョンにAmazon Auroraグローバルデータベースを作成する。障害発生時には、セカンダリリージョンをプライマリに昇格させてアプリケーションに使用する。アプリケーションを、セカンダリリージョンのAuroraクラスターエンドポイントを使用するように更新する。
  • 3
    データストアとして、複数のAWSリージョンにAmazon Auroraクラスターを作成する。Network Load Balancerを使用して、異なるリージョンのデータベーストラフィックを負荷分散する。
  • ✓
    アプリケーションを2つのAWSリージョンにセットアップする。両方のリージョンのApplication Load Balancerを指すAmazon Route 53フェイルオーバールーティングを使用する。各リージョンでヘルスチェックとAuto Scalingグループを使用する。
  • 5
    アプリケーションを2つのAWSリージョンにセットアップする。両方のリージョンのApplication Load Balancer(ALB)を指すようにAWS Global Acceleratorを設定する。両方のALBを単一のエンドポイントグループに追加する。各リージョンでヘルスチェックとAuto Scalingグループを使用する。

解説

【正解】B、D

【0からの解説】
まず指標を整理します。RPO(目標復旧時点)はデータ損失の許容量で、ここでは「最大2時間」=最大2時間分のデータ損失まで許容。RTO(目標復旧時間)は復旧までに許容する時間で、ここでは「最大10分」=10分以内に復旧する必要があります。データ層(MySQL)とアプリ層(EC2)の両方でこれを満たす組み合わせを2つ選びます。

データ層=B:Amazon Auroraグローバルデータベースは、プライマリリージョンからセカンダリリージョンへ通常1秒未満の遅延でレプリケーションし(RPO≒数秒、2時間以内を余裕で満たす)、障害時はセカンダリを短時間でプライマリに昇格できます(マネージドな計画外フェイルオーバーで通常数分以内、RTO 10分を満たせる)。クロスリージョンDRに最適です。

アプリ層=D:アプリを2リージョンに配置し、Route 53のフェイルオーバールーティング+ヘルスチェックで、プライマリ障害時に自動的にセカンダリのALBへ振り向けます。各リージョンにAuto Scalingグループを持たせれば、フェイルオーバー後も必要な台数を確保できます。DNSフェイルオーバーは数分で切り替わり、RTO 10分を満たせます。

よってB(データ)+D(アプリ)が要件を満たす組み合わせです。

【誤りの選択肢】
A:Aurora「Single-AZ」を複数リージョンに置くだけでは、リージョン間レプリケーションやフェイルオーバーが自動で成立せず、Single-AZ構成は可用性も低い。「自動復旧」では低RTO/低RPOのクロスリージョンDRを満たせない。
C:複数リージョンのAuroraクラスターをNetwork Load Balancerで“負荷分散”するというのはAuroraの設計に合わない(DBはNLBでマルチリージョン分散する使い方をしない)。要件を満たさない。
E:Global Acceleratorで両ALBを“単一のエンドポイントグループ”に入れると、両リージョンへトラフィックを分散するアクティブ/アクティブ寄りの構成になり、本問の「フェイルオーバー(プライマリ→セカンダリ)」というDR要件の意図とずれる。要件充足の組み合わせとしてはDの方が直接的で適切(DはRoute 53フェイルオーバーで明確にフェイルオーバーを実現)。
B・D:データ層はAuroraグローバルDB、アプリ層はRoute 53フェイルオーバー+ASGで、RPO 2時間・RTO 10分のクロスリージョンDRを満たす。

【参考】
Amazon Aurora global databases
Configuring DNS failover (Amazon Route 53)
Disaster recovery options in the cloud
この問題のページを開く →
問題 9デプロイの問題をトラブルシューティングするために適切な情報を提供するソリューションはどれですか?SDLC の自動化
問題
ある企業は、重要なアプリケーションの AWS CodeDeploy デプロイで失敗が発生しています。アプリケーションは Amazon EC2 インスタンス上にデプロイされています。DevOps エンジニアは、失敗したデプロイを分析して失敗の根本原因を特定する必要があります。 デプロイの問題をトラブルシューティングするために適切な情報を提供するソリューションはどれですか?

選択肢と解説

  • 1
    VPC フローログを設定してネットワークトラフィックを監視する。Amazon Inspector を使用してネットワーク以外のデプロイ問題を検出する。Amazon Detective を使用して検出結果を分析する。
  • 2
    EC2 インスタンスで詳細モニタリングを有効にする。AWS Systems Manager Run Command を使用してすべての EC2 インスタンスで同時にトラブルシューティングスクリプトを実行する。結果を AWS CloudTrail ログで分析する。
  • ✓
    Amazon CloudWatch Logs を使用してアプリケーションログを確認する。EC2 インスタンスの /opt/codedeploy-agent/deployment-root/ ディレクトリにある CodeDeploy デプロイログを分析する。AWS X-Ray を使用してアプリケーションコンポーネント全体にわたるリクエストをトレースする。
  • 4
    CodeDeploy デプロイに関する AWS Trusted Advisor のチェックを確認する。AWS Health Dashboard を使用してアプリケーションの正常性を監視する。Amazon CloudWatch ダッシュボードでパフォーマンスメトリクスを分析する。

解説

【正解】C

【0からの解説】
EC2 上の CodeDeploy デプロイが失敗した場合、根本原因を突き止める最も直接的な情報源は CodeDeploy エージェントのログとデプロイログです。CodeDeploy エージェントは EC2 インスタンス上で動作し、各デプロイの実行履歴・各ライフサイクルフック(BeforeInstall、AfterInstall、ApplicationStart など)のスクリプト出力やエラーを、デフォルトで /opt/codedeploy-agent/deployment-root/ 配下に書き出します(エージェントログ本体は /var/log/aws/codedeploy-agent/codedeploy-agent.log)。ここを見ればどのフックで失敗したか、スクリプトの終了コードやエラーメッセージが分かります。
さらに CloudWatch Logs にアプリケーションログを集約しておけばアプリ側の挙動を確認でき、X-Ray を使えばリクエストのトレースで遅延・エラー箇所を特定できます。これらを組み合わせた選択肢 C が、デプロイ失敗のトラブルシューティングに直接役立つ情報を提供します。

【誤りの選択肢】
A:VPC フローログはネットワークトラフィックの記録、Amazon Inspector は脆弱性評価、Amazon Detective はセキュリティ調査向けで、いずれも CodeDeploy のデプロイ失敗原因(フックスクリプトの失敗など)を直接示すものではありません。
B:Run Command で任意スクリプトを流せても、CodeDeploy のデプロイ失敗ログそのものを見るわけではありません。また CloudTrail は API 呼び出しの監査ログであり、フック実行の詳細なエラー内容は記録しません。
D:Trusted Advisor はベストプラクティスチェック、AWS Health はサービス側の障害情報を扱うもので、個別のデプロイ失敗の根本原因分析には適しません。

【参考】
View CodeDeploy logs (EC2/on-premises)
CodeDeploy agent operations
この問題のページを開く →
問題 10モニタリングとロギングモニタリングとロギング
問題
ある企業は、祝日に季節セールを実施する Web アプリケーションを開発しました。この Web アプリケーションは AWS 上にデプロイされ、ストレージ、データベース、コンピューティング、暗号化に AWS のサービスを利用しています。季節セール中、企業は多数のユーザーからの高いネットワークトラフィックを見込んでいます。企業はセール中に発生する予期しない挙動に関するインサイトを受け取る必要があります。 DevOps チームは、セール中に異常な挙動を検出した際にそのインサイトを確認したいと考えています。さらに DevOps チームは、その異常な挙動を解決するための推奨アクションを受け取りたいと考えています。推奨内容は、将来発生し得る問題に対処できるよう、プロビジョニング済みのインフラに即したものである必要があります。 これらの要件を最小の運用オーバーヘッドで満たす手順の組み合わせはどれですか?(2 つ選択)

選択肢と解説

  • ✓
    AWS アカウントで Amazon DevOps Guru を有効にする。アカウント内のすべてのサポート対象 AWS リソースに対する DevOps Guru のカバレッジを決定する。DevOps Guru のダッシュボードで分析・推奨事項・関連メトリクスを確認する。
  • ✓
    Amazon Simple Notification Service (Amazon SNS) トピックを作成する。異常が検出されたときに重要なイベントに関する通知を企業に送信するよう Amazon DevOps Guru を設定する。
  • 3
    Amazon S3 バケットを作成する。Amazon CloudWatch ログ、AWS CloudTrail データ、AWS Config データを S3 バケットに保存する。Amazon Athena を使用してデータからインサイトを生成する。Amazon QuickSight でダッシュボードを作成する。
  • 4
    Amazon QuickSight ダッシュボード用の E メールメッセージレポートを設定する。E メールレポートをスケジュール設定して企業に送信する。
  • 5
    Amazon Simple Notification Service (Amazon SNS) トピックを作成する。異常が検出されたときに重要なイベントに関するクエリ結果を企業に送信するよう Amazon Athena を設定する。

解説

【正解】A、B

【0からの解説】
「異常な挙動の検出」「インサイトの確認」「推奨アクションの提示」「プロビジョニング済みインフラに即した推奨」「最小の運用オーバーヘッド」というキーワードはすべて Amazon DevOps Guru を指しています。DevOps Guru は機械学習を用いて、運用データ(CloudWatch メトリクス、AWS リソースの設定、イベントなど)を自動で分析し、運用上の異常(インサイト)を検出して、根本原因と具体的な推奨対処を提示してくれるフルマネージドサービスです。
A:アカウントで DevOps Guru を有効化し、対象リソースのカバレッジを設定すれば、ダッシュボード上で分析・推奨事項・関連メトリクスを確認できます。自前でログ収集や分析基盤を構築する必要がないため運用負荷が最小です。
B:DevOps Guru は Amazon SNS と連携でき、インサイト(異常)が生成された際に SNS トピック経由で通知を送れます。これにより、セール中に異常を検出した瞬間に DevOps チームへアラートが届きます。
A と B を組み合わせることで「検出 → 通知 → ダッシュボードで推奨確認」という流れを最小構成で実現できます。

【誤りの選択肢】
C:S3 にログを集約し Athena でクエリして QuickSight で可視化する構成は、自前でデータ収集・分析・可視化基盤を組み立てるもので運用オーバーヘッドが大きく、しかも「異常の自動検出」や「推奨アクションの提示」は自動では行われません。
D:QuickSight の E メールレポートはダッシュボードの定期配信に過ぎず、リアルタイムの異常検出や推奨アクションの提示にはなりません。
E:Athena は対話型クエリエンジンであり、SNS にクエリ結果を能動的に送信して異常を検出・通知する仕組みは標準で備えていません。異常検出・推奨提示の要件を満たしません。

【参考】
What is Amazon DevOps Guru?
Working with Amazon SNS notifications in DevOps Guru
この問題のページを開く →
問題 11DevOps エンジニアはこの問題をどのようにトラブルシューティングすべきですか?インシデントおよびイベントへの対応
問題
ある DevOps エンジニアは、マネージドノードグループを含む Amazon Elastic Kubernetes Service (Amazon EKS) クラスターの作成に成功しました。DevOps エンジニアがクラスターにノードグループを追加しようとすると、クラスターは「NodeCreationFailure: Instances failed to join the Kubernetes cluster」というエラーを返します。 DevOps エンジニアは、EC2 ワーカーノードが稼働中であり、EKS クラスターがアクティブな状態にあることを確認しました。 DevOps エンジニアはこの問題をどのようにトラブルシューティングすべきですか?

選択肢と解説

  • 1
    EKS クラスターの VPC サブネットが 172.17.0.0/16 の CIDR 範囲と重複していないことを確認する。
  • 2
    kubectl を使用して、クラスターを作成した認証情報を使うように kubeconfig ファイルを更新する。
  • ✓
    AWSSupport-TroubleshootEKSWorkerNode ランブックを実行する。
  • 4
    クラスター用に AWS Identity and Access Management (IAM) OpenID Connect (OIDC) プロバイダーを作成する。

解説

【正解】C

【0からの解説】
「NodeCreationFailure: Instances failed to join the Kubernetes cluster」は、ワーカーノード(EC2 インスタンス)は起動したものの、Kubernetes クラスターに参加できなかったことを示す典型的なエラーです。原因は多岐にわたり、ノードの IAM ロールの権限不足、サブネットのルーティング/インターネット到達性、セキュリティグループの設定、aws-auth ConfigMap の設定、DNS(kube-dns/CoreDNS)到達性などが考えられます。
AWS はこの問題の切り分けを自動化する Systems Manager の自動化ランブック「AWSSupport-TroubleshootEKSWorkerNode」を提供しています。このランブックはクラスター名とインスタンス ID を入力すると、ノードがクラスターに参加できない一般的な原因(IAM、ネットワーク、設定など)を体系的にチェックして結果を返してくれます。原因が一つに特定できない本問の状況では、まずこのランブックを実行して網羅的に切り分けるのが最も適切です。

【誤りの選択肢】
A:EKS のドキュメントでは予約 CIDR として 10.100.0.0/16 や 172.20.0.0/16 などがサービス CIDR に使われますが、172.17.0.0/16 は Docker のデフォルトブリッジ範囲であり、これ単独が「ノードがクラスターに参加できない」エラーの一般的な根本原因とは言えません。網羅的な切り分けにはなりません。
B:kubeconfig の更新は kubectl でクラスターに接続できないときの対処であり、ノードがクラスターに「参加」できない問題とは別の話です。エラーの原因解決にはなりません。
D:IAM OIDC プロバイダーは IRSA(Pod に IAM ロールを割り当てる仕組み)に必要なものであり、ワーカーノードがクラスターに参加する処理とは無関係です。

【参考】
Troubleshoot worker nodes failing to join an EKS cluster (AWS re:Post)
Run the AWSSupport-TroubleshootEKSWorkerNode runbook
この問題のページを開く →
問題 12これらの要件を満たすソリューションはどれですか?インシデントおよびイベントへの対応
問題
ある企業は、アプリケーションに影響を及ぼす可能性のある AWS サービスの問題をプロアクティブに監視し、対応したいと考えています。企業は AWS Health イベントをアプリケーションのパフォーマンスメトリクスと相関させ、自動アラートを設定する必要があります。さらにこのソリューションは、企業がイベントをアーカイブし、さまざまなシナリオでアプリケーションのレイテンシをテストし、カスタムメトリクスを作成できるものでなければなりません。 これらの要件を満たすソリューションはどれですか?

選択肢と解説

  • 1
    AWS CloudTrail を使用してすべての AWS Health イベントをログに記録する。Amazon Athena を使用してログをクエリし、Amazon Timestream for LiveAnalytics に保存されたアプリケーションメトリクスとログを相関させる。リアルタイム通知用に AWS Chatbot をセットアップする。
  • ✓
    Amazon EventBridge を使用して AWS Health イベントを Amazon CloudWatch Logs にルーティングする。AWS Health イベント用のメトリクスフィルターを作成する。アプリケーションのパフォーマンスデータに基づくカスタムメトリクスを CloudWatch に作成する。AWS Health イベントとカスタムメトリクスを相関させる CloudWatch アラームを設定する。
  • 3
    AWS Health Dashboard が Amazon Simple Notification Service (Amazon SNS) に通知を送信するように設定する。AWS Lambda を使用して通知をメトリクスと相関させ、Amazon CloudWatch のカスタムメトリクスを更新する。カスタムメトリクス用に CloudWatch アラームを設定する。自動修復には AWS Systems Manager を使用する。
  • 4
    AWS X-Ray を設定して AWS Health イベントとアプリケーションのパフォーマンスをトレースする。Amazon QuickSight を使用してイベントとメトリクスの相関を可視化する。Amazon GuardDuty を使用してアプリケーションの挙動の異常を検出し、アラートを提供する。

解説

【正解】B

【0からの解説】
AWS Health イベント(サービスの障害・メンテナンス・自アカウント影響など)はネイティブに Amazon EventBridge に配信されます。したがって AWS Health をプロアクティブに監視・自動処理する標準的な方法は、EventBridge ルールで Health イベントを受け取り、目的の宛先(CloudWatch Logs、Lambda、SNS など)へルーティングすることです。
要件を順に見ると、(1) Health イベントとアプリのパフォーマンスメトリクスの相関 → EventBridge で Health イベントを CloudWatch Logs に送り、メトリクスフィルターでメトリクス化し、アプリのカスタムメトリクスと CloudWatch アラームで突き合わせられる、(2) 自動アラート → CloudWatch アラーム、(3) イベントのアーカイブ → EventBridge にはイベントをアーカイブ&リプレイする機能がある、(4) 異なるシナリオでのレイテンシテスト → カスタムメトリクスや CloudWatch Synthetics 等と組み合わせ可能、(5) カスタムメトリクスの作成 → CloudWatch カスタムメトリクス。これらをすべて自然に満たすのが選択肢 B です。

【誤りの選択肢】
A:AWS Health イベントは CloudTrail に記録される性質のものではなく(CloudTrail は API 操作の監査ログ)、Athena + Timestream + Chatbot の構成は要件(イベントのアーカイブ/レイテンシテスト/カスタムメトリクス)を一体で満たすには複雑かつ不適切です。
C:AWS Health Dashboard 自体が直接 SNS に通知する仕組みは標準的なイベント駆動経路ではなく、EventBridge 経由が推奨です。Lambda での相関は実装可能でも、イベントのアーカイブ/レイテンシテストの要件を素直に満たせません。
D:X-Ray は分散トレーシング、GuardDuty は脅威検出のサービスで、AWS Health イベントの相関・アラート・アーカイブという要件には合致しません。

【参考】
Monitoring AWS Health events with Amazon EventBridge
Archiving and replaying events with EventBridge
この問題のページを開く →
問題 13これらの要件を満たすソリューションはどれですか?構成管理と Infrastructure as Code (IaC)
問題
ある DevOps エンジニアは、マイクロサービスベースのアプリケーションの Infrastructure as Code (IaC) を管理するために AWS Cloud Development Kit (AWS CDK) を使用する計画を立てています。この DevOps エンジニアは、一般的なインフラストラクチャパターンの再利用可能なコンポーネントを作成し、異なるマイクロサービス間で同じコスト配分タグを適用しなければなりません。 これらの要件を満たすソリューションはどれですか?

選択肢と解説

  • 1
    一般的なインフラストラクチャパターンを含むカスタム CDK コンストラクトライブラリを作成する。CDK アプリを作成する。TagManager クラスを使用してアプリ全体にコスト配分タグを追加する。カスタム CDK コンストラクトライブラリを使用して、すべてのマイクロサービスを含む高レベルのコンストラクトを記述する。マイクロサービスを、環境固有の設定を持つ単一の CDK スタックとしてデプロイする。
  • ✓
    一般的なインフラストラクチャパターンを含むカスタム CDK コンストラクトライブラリを作成する。CDK アプリを作成する。Tags クラスを使用してアプリ全体にコスト配分タグを追加する。カスタム CDK コンストラクトライブラリを使用して、マイクロサービスごとに高レベルのコンストラクトを記述する。マイクロサービスを、環境固有の設定を持つ個別の CDK スタックとしてデプロイする。
  • 3
    一般的なインフラストラクチャコンポーネントを含む AWS Service Catalog 製品を作成する。CDK アプリを作成する。TagManager クラスを使用してアプリ全体にコスト配分タグを追加する。Service Catalog 製品を使用して、すべてのマイクロサービスを含む高レベルのコンストラクトを記述する。マイクロサービスを単一の CDK スタックとしてデプロイする。
  • 4
    一般的なインフラストラクチャコンポーネントを含む AWS Service Catalog 製品を作成する。CDK アプリを作成する。Tags クラスを使用してアプリ全体にコスト配分タグを追加する。Service Catalog 製品を使用して、マイクロサービスごとに高レベルのコンストラクトを記述する。マイクロサービスを個別の CDK スタックとしてデプロイする。

解説

【正解】B

【0からの解説】
この問題は AWS CDK で「再利用可能なコンポーネント」と「共通のコスト配分タグ」を両立する正しい設計を問うものです。

ポイントは2つあります。
1つ目は「再利用可能なコンポーネントの作り方」です。CDK では、複数のリソースをまとめた再利用可能な部品を「コンストラクト (Construct)」と呼びます。自分で作った共通パターン(VPC、サブネット、ロギング設定など)を部品化するには、カスタム CDK コンストラクトライブラリを作成するのが正攻法です。AWS Service Catalog は IT サービスのカタログ化・配布のためのサービスであり、CDK コンストラクトを書くための部品ではないため、ここでは不適切です。

2つ目は「コスト配分タグの付け方」です。CDK では `Tags` クラス(`Tags.of(scope).add(key, value)`)を使うと、対象スコープ配下のすべてのリソースに再帰的にタグを伝播できます。これがアプリ全体やスタック全体に統一タグを適用する公式の方法です。一方 `TagManager` は CDK 内部で各コンストラクトのタグを保持・集約するための低レベルクラスであり、利用者がアプリ全体にタグを付ける用途で直接使うものではありません。

さらにマイクロサービスは、ベストプラクティスとして「マイクロサービスごとに高レベルのコンストラクトを定義し、個別の CDK スタックとしてデプロイ」します。こうすると各サービスを独立してデプロイ・更新・ロールバックでき、障害の影響範囲を分離できます。

したがって、カスタムコンストラクトライブラリ+`Tags` クラス+サービスごとの個別スタック、という B が正解です。

【誤りの選択肢】
A:再利用可能コンポーネントの作り方(カスタムライブラリ)は正しいですが、`TagManager` クラスはタグ付けの公式手段ではなく `Tags` クラスを使うべきです。また全マイクロサービスを単一スタックにまとめるとデプロイの分離ができず、マイクロサービスの利点を損ないます。
C:再利用可能コンポーネントに Service Catalog 製品を使う点が誤りです(CDK コンストラクトの部品にはなりません)。`TagManager` 使用と単一スタックも不適切です。
D:`Tags` クラスと個別スタックは正しいですが、共通インフラパターンの再利用に Service Catalog 製品を使う点が誤りです。CDK で再利用部品を作るならカスタムコンストラクトライブラリが正解です。

【参考】
AWS CDK - Tags
AWS CDK - Constructs
この問題のページを開く →
問題 14最も少ない管理オーバーヘッドでこれらの要件を満たすソリューションはどれですか?SDLC の自動化
問題
ある企業は、複数のデバイスタイプにわたる広範な自動テストを必要とするモバイルアプリを開発しています。企業は CI/CD パイプラインに AWS CodePipeline を使用しています。 企業は、アプリの成長に伴って増加するテスト負荷に対応できる、スケーラブルなテストソリューションを実装しなければなりません。 最も少ない管理オーバーヘッドでこれらの要件を満たすソリューションはどれですか?

選択肢と解説

  • ✓
    AWS Device Farm をパイプラインと統合してテストを実行し、必要に応じてスケールする。
  • 2
    さまざまなモバイルデバイスエミュレータと Auto Scaling を備えた Amazon EC2 インスタンスのフリートをデプロイしてテストを実行する。カスタム AWS Lambda 関数を作成して EC2 テスト実行を呼び出す。
  • 3
    Auto Scaling を備えた Amazon Elastic Container Service (Amazon ECS) を使用するコンテナ化されたテストソリューションを実装する。パイプラインを構成して AWS Lambda 関数を呼び出し、ECS クラスター上でテスト実行を開始する。
  • 4
    カスタムランタイムエミュレータを備えた AWS Lambda 関数を使用してテストを実行する。Lambda 関数をパイプラインと統合する。

解説

【正解】A

【0からの解説】
この問題のキーワードは「複数のデバイスタイプにわたるモバイルアプリの自動テスト」と「最も少ない管理オーバーヘッド」です。

AWS Device Farm は、まさにこの用途のためのフルマネージドサービスです。AWS がクラウド上に実機の Android / iOS デバイスを多数用意しており、それらの実デバイス上でアプリのテストを自動実行できます。デバイスの調達・OS バージョン管理・エミュレータの保守などをユーザーが行う必要はなく、テスト負荷の増加に対してもサービス側がスケールします。さらに CodePipeline のテストステージとして Device Farm を直接統合できるため、CI/CD への組み込みも容易です。よってマネージドで管理オーバーヘッドが最小の A が正解です。

【誤りの選択肢】
B:EC2 にデバイスエミュレータを自前で構築し、Auto Scaling や Lambda での起動制御まで作り込む必要があり、インスタンス・エミュレータ・スケーリングロジックすべてを自分で運用・保守することになります。管理オーバーヘッドが非常に大きく、実機テストもできません。
C:ECS でコンテナ化したテスト基盤を自前で構築・運用する案で、クラスター・タスク定義・スケーリング・Lambda 連携を保守する必要があります。Device Farm に比べ管理負荷が大きく、実デバイスでのテストにも向きません。
D:Lambda 上にカスタムランタイムのエミュレータを構築するのは現実的でなく、実行時間制限などの制約も大きいです。モバイル実機テストの要件に適さず、自前構築の保守負荷も高くなります。

【参考】
AWS Device Farm とは
CodePipeline と AWS Device Farm の統合
この問題のページを開く →
問題 15最もコスト効率の高い方法でこれらの要件を満たすソリューションはどれですか?モニタリングとロギング
問題
ある企業には、Amazon CloudWatch Logs ロググループにログをストリーミングするアプリケーションがあります。これらのログは、CloudWatch でチームが検索できるように少なくとも 30 日間利用可能でなければなりません。ログは少なくとも 90 日間、低レイテンシでアクセス可能でなければなりません。180 日後は、ログの取得はまれであり、レイテンシは重要ではありません。 ある DevOps エンジニアは、ログを保存するために Amazon S3 バケットを作成します。企業にとって、ログの可用性メトリクスとデータ保護は重要です。 最もコスト効率の高い方法でこれらの要件を満たすソリューションはどれですか?

選択肢と解説

  • 1
    ロググループの保持期間を 30 日に設定し、低頻度アクセスのログクラスを使用するように構成する。Amazon Kinesis Data Streams を使用して S3 バケットにログイベントを送信する CloudWatch メトリクスストリームを作成する。90 日後に Amazon S3 Standard-Infrequent Access (S3 Standard-IA) に、180 日後に Amazon Glacier Flexible Retrieval にオブジェクトを移動する S3 ライフサイクルポリシーを作成する。
  • 2
    ロググループの保持期間を 30 日に設定し、低頻度アクセスのログクラスを使用するように構成する。Amazon Data Firehose を使用して S3 バケットにログイベントを送信する CloudWatch メトリクスストリームを作成する。90 日後に Amazon S3 One Zone-Infrequent Access (S3 One Zone-IA) に、180 日後に Amazon S3 Glacier Flexible Retrieval にオブジェクトを移動する S3 ライフサイクルポリシーを作成する。
  • 3
    ロググループの保持期間を 30 日に設定する。Amazon Kinesis Data Streams を使用してファイルを書き込むことで S3 バケットにログイベントを送信する CloudWatch サブスクリプションフィルターを作成する。90 日後に Amazon S3 Standard-Infrequent Access (S3 Standard-IA) に、180 日後に Amazon S3 Glacier Instant Retrieval にオブジェクトを移動する S3 ライフサイクルポリシーを作成する。
  • ✓
    ロググループの保持期間を 30 日に設定する。Amazon Data Firehose を使用して S3 バケットにログイベントを送信する CloudWatch サブスクリプションフィルターを作成する。90 日後に Amazon S3 Standard-Infrequent Access (S3 Standard-IA) に、180 日後に Amazon S3 Glacier Deep Archive にオブジェクトを移動する S3 ライフサイクルポリシーを作成する。

解説

【正解】D

【0からの解説】
この問題は、CloudWatch Logs のログを段階的に S3 へアーカイブする際の「正しい転送方法」と「正しいストレージクラスの遷移」を、コスト効率と要件の両面から選ぶものです。

まず「ログ(log events)を S3 に送る方法」を考えます。CloudWatch Logs のログイベントをほぼリアルタイムで別の宛先に転送する公式の仕組みは「サブスクリプションフィルター (subscription filter)」です。一方「メトリクスストリーム (metric stream)」は、ログではなく CloudWatch メトリクス(数値)をストリーミングするための機能なので、ログイベントを S3 に保存する用途には不適切です。よって A・B(メトリクスストリーム使用)は誤りです。

次に「転送先への配信サービス」です。Amazon Data Firehose(旧 Kinesis Data Firehose)はフルマネージドで、バッファリング・S3 への自動配信・スケーリングまで面倒を見てくれるため、運用負荷とコストの両面で有利です。一方 Kinesis Data Streams は生のストリームであり、S3 へ書き込むコンシューマを別途用意・運用する必要があり、サブスクリプションフィルターの宛先としても追加の作り込みが要ります。よってマネージドな Firehose を使う D が有利です。

最後に「ストレージクラスの遷移」です。要件は、(a) 90 日まで低レイテンシ → 90 日後に S3 Standard-IA(即時アクセス可・低コスト)へ移行、(b) 180 日後は取得がまれでレイテンシ不問 → 最も安価なアーカイブクラスへ移行、です。180 日後にレイテンシが重要でないなら、取り出しに時間はかかるが最安の S3 Glacier Deep Archive が最もコスト効率的です。

また「データ保護」の観点でも、S3 Standard-IA は複数 AZ にまたがって冗長化されており、One Zone-IA(単一 AZ)より耐久性が高い点で D が適切です。

以上より、サブスクリプションフィルター+Firehose+S3 Standard-IA(90日)→Glacier Deep Archive(180日) の D が正解です。

【誤りの選択肢】
A:ログイベントの転送に「メトリクスストリーム」を使う点が誤り(メトリクス用であり、ログには使えません)。また配信に Kinesis Data Streams を使うため自前のコンシューマが必要で運用負荷が高くなります。
B:A 同様「メトリクスストリーム」を使う点が誤りです。さらに 90 日後の移行先が S3 One Zone-IA(単一 AZ)で、データ保護要件に対して耐久性が劣ります。
C:転送方法(サブスクリプションフィルター)は正しいものの、配信に Kinesis Data Streams を使うため S3 へ書き込むコンシューマの自前運用が必要で、Firehose より運用負荷が高くなります。また 180 日後の移行先が Glacier Instant Retrieval で、レイテンシ不問の要件に対しては Deep Archive の方が安価でコスト効率が劣ります。

【参考】
CloudWatch Logs サブスクリプションフィルター
S3 ストレージクラス
S3 ライフサイクル設定によるオブジェクトの移行
この問題のページを開く →

DOP-C02 対策のハンズオンラボ

実際の Azure・AWS 環境を払い出して手を動かせます。問題演習と組み合わせると理解が定着します。

CodePipeline にセキュリティ/ガバナンス検査ステージ(CodeBuild)を追加する
intermediate・約 50 分
CodePipeline と CodeBuild で品質・コンプライアンスゲートを実装する
intermediate・約 50 分
CodePipeline に手動承認とSNS通知でガバナンスゲートを追加する
intermediate・約 45 分
Terraform(CloudShell)で AWS インフラをデプロイ・管理する
intermediate・約 50 分
EC2 上に CI サーバー(Jenkins)を構築し ALB 配下で公開する
intermediate・約 55 分
Ansible(CloudShell)で AWS リソースをプロビジョニングする
intermediate・約 45 分
Security Hub の検出結果を EventBridge + Lambda で自動対応する
intermediate・約 50 分
AWS Fault Injection Simulator で回復性の弱点を見つける
intermediate・約 20 分
DOP-C02 のラボを全て見る(12 件)→

DOP-C02 模擬問題集についてよくある質問

DOP-C02 の練習問題は無料で試せますか?

はい。DOP-C02 は先頭 15 問を会員登録なしで、正解と全選択肢の解説つきでご覧いただけます。16 問目以降は模試プラン(月額 ¥980)または Pro プラン(月額 ¥4,980)でご利用ください。

問題は何問ありますか?

DOP-C02 は本番形式の練習テスト 4 回・全 200 問を収録しています。全問に解説が付いています。

解説は付いていますか?

全ての問題に、正解の理由と各選択肢がなぜ誤りなのかの解説を付けています。ドメイン(出題分野)別の正答率も受験後に確認できます。

DOP-C02 のハンズオン学習もできますか?

はい。DOP-C02 に対応するハンズオンラボを 12 件ご用意しています。実際の Azure・AWS 環境を払い出して手を動かしながら学習できます。