Amazon Web ServicesLevel 5

難易度は Level 1(やさしめ)〜Level 5(難関) の5段階です。

AWS DOP-C02のサンプル問題(本番形式・解説付き)

AWS DOP-C02(Amazon Web Services・AWS Certified DevOps Engineer - Professional(DOP-C02))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(75問)の冒頭から抜粋したオリジナル問題です。当サイトは全600問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。

設問1

ある会社は、Amazon EC2 インスタンス群で動く Web アプリケーションを AWS CodeDeploy のインプレースデプロイで更新しています。新しいファイルをコピーしている最中に旧バージョンのプロセスがファイルを開いたままになり、デプロイが失敗することがあります。開発チームは appspec.yml にスクリプトを追加し、新しいファイルが配置される前に旧バージョンのプロセスを確実に止めたいと考えています。この要件を満たす解決策はどれですか。

  • 旧バージョンのプロセスを止めるスクリプトを AfterInstall フックに指定し、ファイルの配置が終わった直後に実行させる
  • 旧バージョンのプロセスを止めるスクリプトを appspec.yml の ApplicationStop フックに指定し、新しいファイルの配置より前に実行させる(正解)
  • 旧バージョンのプロセスを止めるスクリプトを ApplicationStart フックに指定し、新バージョンを起動する直前に実行させる
  • 旧バージョンのプロセスを止めるスクリプトを ValidateService フックに指定し、デプロイの検証の段階で実行させる

解説

ApplicationStop はデプロイの最初期に実行されるフックで、新しいファイルを配置する前に旧バージョンのアプリケーションを停止させるために使います。ファイルを掴んだままのプロセスを配置前に止めるという、この場面の要件に合います。AfterInstall はファイルの配置後に実行されるため、配置中の失敗は防げません。ApplicationStart は新バージョンの起動に使うフックで、配置はすでに終わっています。ValidateService はデプロイの最後に正常性を確かめるフックで、配置前の停止処理を置く場所ではありません。

他の選択肢が誤りである理由

  • 「旧バージョンのプロセスを止めるスクリプトを AfterInstall フックに指定し、ファイルの配置が終わった直後に実行させる」AfterInstall はファイルの配置後に実行されるため、配置中に旧プロセスがファイルを掴む失敗は防げません。
  • 「旧バージョンのプロセスを止めるスクリプトを ApplicationStart フックに指定し、新バージョンを起動する直前に実行させる」ApplicationStart は配置が終わった後の起動に使うフックで、配置前の停止には間に合いません。
  • 「旧バージョンのプロセスを止めるスクリプトを ValidateService フックに指定し、デプロイの検証の段階で実行させる」ValidateService はデプロイの最後に正常性を確かめるフックで、配置前の停止処理を置く場所ではありません。

設問2

ある会社は、本番環境の VPC とセキュリティグループを AWS CloudFormation のスタックで管理しています。先週の障害対応の際に、運用担当者がマネジメントコンソールからセキュリティグループへ直接インバウンドルールを追加しました。どのリソースがテンプレートの定義から外れたのかは記録に残っていません。次回のスタック更新の前に、テンプレートに書かれた状態と実際の設定の食い違いをリソースごとに洗い出す必要があります。この要件を満たす解決策はどれですか。

  • スタックにスタックポリシーを設定してセキュリティグループの更新を拒否し、次回のスタック更新で食い違いがあればエラーとして表示させる
  • 現在のテンプレートで変更セットを作成し、変更セットに表示される差分から、手作業で変更されたリソースを特定する
  • スタックに対してドリフト検出を実行し、ドリフトのステータスが MODIFIED のリソースについて、期待値と実際の値の差分を確認する(正解)
  • セキュリティグループをネストスタックに切り出して親スタックを更新し、子スタックの作り直しで設定をテンプレートの定義に戻す

解説

ドリフト検出は、スタックが管理するリソースの実際の設定を、テンプレートで定義された期待値と比べ、食い違い(ドリフト)をリソースごとに示す機能です。MODIFIED と判定されたリソースでは期待値と実際の値の差分を確かめられるので、コンソールからの直接変更を更新前に洗い出すという要件に合います。変更セットはこれから行う更新の差分を事前に確かめる機能で、テンプレートの外で入った変更は示しません。スタックポリシーは更新操作で書き換えてよいリソースを制限する機能で、既存の食い違いは検出しません。ネストスタックはテンプレートを部品に分ける構成で、実際の設定との比較は行いません。作り直しても、どのリソースが外れていたかは分かりません。

他の選択肢が誤りである理由

  • 「スタックにスタックポリシーを設定してセキュリティグループの更新を拒否し、次回のスタック更新で食い違いがあればエラーとして表示させる」スタックポリシーは更新で書き換えてよいリソースを制限する機能で、手作業で入った食い違いは検出しません。
  • 「現在のテンプレートで変更セットを作成し、変更セットに表示される差分から、手作業で変更されたリソースを特定する」変更セットはこれから行う更新の差分を示す機能で、テンプレートの外で入った変更は示しません。
  • 「セキュリティグループをネストスタックに切り出して親スタックを更新し、子スタックの作り直しで設定をテンプレートの定義に戻す」ネストスタックはテンプレートを部品に分ける構成で、実際の設定との比較は行いません。

設問3

ある会社は、Application Load Balancer と Auto Scaling グループを使い、2 つのアベイラビリティーゾーン(AZ)に Web アプリケーションを配置しています。事業部門は、1 つの AZ が完全に停止しても、ピーク時の負荷をすべて処理し続けることを求めています。Auto Scaling による新しいインスタンスの起動には数分かかり、その間も処理能力が足りなくなってはいけません。この要件を満たす各 AZ の最小構成はどれですか。

  • 各AZにピーク負荷の50%分のインスタンスを配置する
  • 各AZにピーク負荷の100%分のインスタンスを配置する(正解)
  • 各AZにピーク負荷の70%分のインスタンスを配置する
  • 1つのAZに100%、もう1つは空にしておく

解説

片方の AZ が止まり、残りの AZ で増設が間に合わない間もピークを処理するには、残る 1 つの AZ だけでピークを処理できる必要があります。したがって各 AZ にピーク負荷の 100% 分を持たせる構成(合計 200%)が要件を満たします。各 AZ に 50% では、片方が止まった時点で 50% しか残りません。各 AZ に 70% でも、残るのは 70% でピークに届きません。1 つの AZ に 100% を置いてもう 1 つを空にする構成は、100% を持つ AZ が止まった瞬間に処理能力がゼロになります。

他の選択肢が誤りである理由

  • 「各AZにピーク負荷の50%分のインスタンスを配置する」1つのAZが停止すると残り50%の処理能力しかなく、ピーク100%の要件を満たせません。
  • 「各AZにピーク負荷の70%分のインスタンスを配置する」片系喪失時に70%の処理能力しか残らず、100%のピーク要件を満たせません。
  • 「1つのAZに100%、もう1つは空にしておく」100%を持つAZが障害になった瞬間に残りのAZの容量がゼロになり、可用性が全く担保されません。

設問4

ある会社のセキュリティチームは、本番 VPC の通信の許可と拒否の状況を 1 年以上さかのぼって分析するため、VPC フローログを有効にする計画を立てています。設計レビューでは、フローログをどこへ直接配信できるかについてメンバーの意見が割れました。チームは、配信先の候補を正しく理解したうえで、長期保管と分析の方式を決める必要があります。VPC フローログの配信先について正しい説明はどれですか。

  • Amazon CloudWatch Logsに限られ、長期保管が必要な場合はロググループからAmazon S3へ定期的にエクスポートして保管する
  • AWS Configの設定レコーダー(Configuration Recorder)で記録し、Configの配信チャネル経由でAmazon S3バケットへ保管する
  • Amazon CloudWatch Logs、Amazon S3、Amazon Data Firehoseのいずれかを選択でき、S3へは直接配信できる(正解)
  • Amazon SNSトピックへ配信し、サブスクリプションでSQSキューやLambda関数へ渡して保管する

解説

VPC フローログの配信先は、Amazon CloudWatch Logs、Amazon S3、Amazon Data Firehose から選べます。長期保管と分析が目的なら S3 へ直接配信する方式を選べます。配信先が CloudWatch Logs に限られるという説明は誤りで、S3 を直接選べるため、ロググループからのエクスポートを挟む必要はありません。AWS Config の設定レコーダーはリソースの構成を記録する仕組みで、フローログの配信先ではありません。Amazon SNS は通知の仕組みで、フローログの配信先には選べません。

他の選択肢が誤りである理由

  • 「Amazon CloudWatch Logsに限られ、長期保管が必要な場合はロググループからAmazon S3へ定期的にエクスポートして保管する」S3を直接の配信先に選べるため、CloudWatch Logsに限られてエクスポートが必要という説明は誤りです。
  • 「AWS Configの設定レコーダー(Configuration Recorder)で記録し、Configの配信チャネル経由でAmazon S3バケットへ保管する」AWS Configの設定レコーダーはリソースの構成を記録する仕組みで、フローログの配信先ではありません。
  • 「Amazon SNSトピックへ配信し、サブスクリプションでSQSキューやLambda関数へ渡して保管する」SNSは通知の仕組みで、フローログの配信先には選べません。

設問5

ある会社は AWS Organizations で 30 の AWS アカウントを運用しています。運用担当者は管理アカウントの IAM ユーザーでサインインし、各メンバーアカウントで管理作業を行います。各メンバーアカウントには共通の管理者ロールを作り、信頼ポリシーで管理アカウントを信頼させました。運用担当者は、メンバーアカウントごとに長期の認証情報を作らずに、このロールの一時的な認証情報を取得する必要があります。この要件を満たす解決策はどれですか。

  • 運用担当者の IAM ユーザーに各メンバーアカウントの管理者ロールへの sts:AssumeRole を許可し、AssumeRole でロールの一時的な認証情報を取得させる(正解)
  • 管理アカウントで GetFederationToken を呼び出してフェデレーションユーザーの一時的な認証情報を取得し、それで各メンバーアカウントの管理者ロールを操作させる
  • 運用担当者を OIDC の ID プロバイダーで認証し直し、AssumeRoleWithWebIdentity で各メンバーアカウントの管理者ロールの一時的な認証情報を取得させる
  • 運用担当者を SAML 2.0 の ID プロバイダーで認証し直し、AssumeRoleWithSAML で各メンバーアカウントの管理者ロールの一時的な認証情報を取得させる

解説

AssumeRole は、IAM ユーザーやロールが、信頼ポリシーで許可された別のロールを引き受けて一時的な認証情報を得るための STS API です。管理アカウントの IAM ユーザーに sts:AssumeRole を許可すれば、メンバーアカウントの管理者ロールを引き受けられます。GetFederationToken は、長期の認証情報を持つ独自の ID ブローカーがフェデレーションユーザー向けの一時認証情報を得る API で、ロールの引き受けには使いません。AssumeRoleWithWebIdentity は OIDC の Web ID プロバイダーで認証した利用者向け、AssumeRoleWithSAML は SAML IdP で認証した利用者向けです。どちらも IAM ユーザーが別アカウントのロールを引き受ける場面には当たらず、IdP を新たに用意する手間も増えます。

他の選択肢が誤りである理由

  • 「管理アカウントで GetFederationToken を呼び出してフェデレーションユーザーの一時的な認証情報を取得し、それで各メンバーアカウントの管理者ロールを操作させる」GetFederationToken は独自の ID ブローカー向けにフェデレーションユーザーの認証情報を得る API で、別アカウントのロールの引き受けには使いません。
  • 「運用担当者を OIDC の ID プロバイダーで認証し直し、AssumeRoleWithWebIdentity で各メンバーアカウントの管理者ロールの一時的な認証情報を取得させる」AssumeRoleWithWebIdentity は OIDC の Web ID プロバイダーで認証した利用者向けで、IAM ユーザーがロールを引き受ける場面には当たりません。
  • 「運用担当者を SAML 2.0 の ID プロバイダーで認証し直し、AssumeRoleWithSAML で各メンバーアカウントの管理者ロールの一時的な認証情報を取得させる」AssumeRoleWithSAML は SAML IdP で認証した利用者向けで、IAM ユーザーがロールを引き受ける場面には当たりません。

続きは、会員登録なしでそのまま50問解けます。採点と解説つきで、上と同じ本物の問題です。

登録なしで50問解く