Skip to content
Published on

AWS DevOpsエンジニア プロフェッショナル (DOP-C02) 模擬試験:75問

Authors

AWS DevOpsエンジニア プロフェッショナル (DOP-C02) 模擬試験:75問

この模擬試験はAWS DOP-C02試験の主要ドメインであるSDLCの自動化、構成管理、モニタリング、高可用性をカバーしています。


問題 1

企業はCI/CDにAWS CodePipelineを使用しています。デプロイ後10分以内にエラー率が5%を超えた場合に自動的にロールバックしたいと考えています。最も自動化された解決策はどれですか?

A) CloudWatchアラームを設定し手動でロールバックをトリガーする B) CloudWatchアラームによってトリガーされる自動ロールバックを持つCodeDeployを使用する C) 監視のために一時停止するCodePipeline承認アクションを使用する D) AWS Lambdaを使用して監視し手動でロールバックを呼び出す

答え

答え: B

解説: CodeDeployはCloudWatchアラームによってトリガーできる自動ロールバックをサポートします。デプロイグループを設定して特定のCloudWatchアラーム(エラー率など)を監視し、アラームが定義された期間内にALARM状態になった場合に自動的にロールバックします。これは手動介入やカスタムLambda関数を必要としない最も自動化されたネイティブな解決策です。


問題 2

チームはCIパイプラインにAWS CodeBuildを使用しています。依存関係が毎回のビルドでダウンロードされるため、ビルド時間が大幅に増加していることに気づきました。ビルド時間を短縮するにはどうすればよいですか?

A) CodeBuildコンピュートタイプを増やす B) 依存関係のためにCodeBuildローカルキャッシュまたはS3キャッシュを使用する C) ビルド用により大きなEC2インスタンスを使用する D) ビルドを並列実行する

答え

答え: B

解説: CodeBuildはビルド間で再利用可能なビルドアーティファクト(npmモジュール、Maven依存関係など)を保存するキャッシュをサポートします。キャッシュはビルド環境にローカルまたはS3に保存できます。変更されていない依存関係の再ダウンロードを避けることでビルド時間を大幅に短縮します。コンピュートタイプの増加(A)はビルド自体を高速化しますがダウンロード時間は短縮しません。


問題 3

企業はCloudFormationスタックを5つのリージョンにわたる50のAWSアカウントに同時にデプロイする必要があります。これを簡素化するサービスはどれですか?

A) CloudFormationネストされたスタック B) AWS CloudFormation StackSets C) AWS CDK D) AWS Service Catalog

答え

答え: B

解説: AWS CloudFormation StackSetsは1つの操作で複数のアカウントとリージョンにわたってCloudFormationスタックを作成、更新、削除することができます。マルチアカウント、マルチリージョンデプロイメント専用に設計されています。ネストされたスタック(A)は1つのアカウント内でスタックを階層的に整理します。CDK(C)はCloudFormationテンプレートを生成しますがクロスアカウントデプロイを管理しません。Service Catalog(D)は製品ポートフォリオを管理します。


問題 4

企業はすべてのEC2インスタンスが起動前に特定のタグを持つことを強制したいと考えています。どのように実装すべきですか?

A) タグベースの条件を持つIAMポリシーを使用する B) 欠けているタグを修復するためにAWS Configルールを使用する C) タグを要求するためにAWS Service Control Policies(SCP)を使用する D) AWS Organizationsのaws:RequestTag条件とタグポリシーを組み合わせたIAMポリシーを使用する

答え

答え: D

解説: 最も包括的なアプローチは、必要なタグなしのリソース作成を拒否するaws:RequestTag条件キーを持つIAMポリシーと、タグ値を標準化するAWS Organizationsタグポリシーを組み合わせることです。IAMポリシーのみ(A)は作成時のタグ付けを要求しますが値を標準化しません。Configルール(B)は事後検出です。SCPs(C)はアクションを拒否できますが慎重な設定が必要です。


問題 5

企業のCodePipelineはCodeDeployを使用して本番にデプロイします。一度に25%のインスタンスにデプロイし、ヘルスチェックを待ってから次に進むデプロイ戦略が必要です。どのCodeDeployデプロイ設定を使用すべきですか?

A) CodeDeployDefault.AllAtOnce B) CodeDeployDefault.HalfAtATime C) CodeDeployDefault.OneAtATime D) 25%バッチサイズのカスタムデプロイ設定

答え

答え: D

解説: CodeDeployは一度にデプロイするインスタンスの割合や数を指定するカスタムデプロイ設定の作成を許可します。最小健全ホスト値25%のカスタム設定は一度に25%のインスタンスにデプロイします。HalfAtATime(B)は50%ずつデプロイします。OneAtATime(C)は1インスタンムずつデプロイします。AllAtOnce(A)はすべてのインスタンスに同時にデプロイします。


問題 6

チームはEKS上のKubernetesワークロードにGitOpsを実装したいと考えています。どのAWSサービスまたは組み合わせがこの機能を提供しますか?

A) CodePipelineとCodeDeploy B) FluxまたはArgoCDを使用したCodePipeline C) CodeCommitとLambda D) AWS Elastic Beanstalk

答え

答え: B

解説: KubernetesのGitOpsはGitの望ましい状態とKubernetesの実際の状態を継続的に調整するFluxまたはArgoCDのようなツールを使用します。AWS CodePipelineはこれらのツールをトリガーするか、独立して動作してCodeCommit/GitHubから継続的にプルできます。CodePipelineとCodeDeploy(A)は従来のデプロイ用です。Lambda(C)はGitOpsツールではありません。Elastic Beanstalk(D)はマネージドアプリケーションデプロイ用です。


問題 7

企業はCodeBuildビルドスペックで使用される機密設定値を保存する必要があります。値は暗号化されアクセス制御されるべきです。どこに保存すべきですか?

A) CodeBuild環境変数(プレーンテキスト)に保存する B) リポジトリのbuildspec.ymlファイルに保存する C) AWS Secrets ManagerまたはSSMパラメータストアに保存し、ビルドスペックから参照する D) SSE-S3で暗号化されたS3バケットに保存する

答え

答え: C

解説: AWS Secrets ManagerまたはSSMパラメータストアのSecureStringパラメータはIAMベースのアクセス制御を持つ暗号化ストレージを提供します。CodeBuildは環境変数でSecrets ManagerシークレットとSSMパラメータをネイティブに参照し、ビルド時に取得できます。環境変数にプレーンテキストを保存すること(A)はログに公開されます。リポジトリに保存すること(B)はセキュリティリスクです。S3(D)は追加のコードが必要でアクセス制御統合が劣ります。


問題 8

企業はnpmパッケージ管理にAWS CodeArtifactを使用しています。CodeBuildがnpmレジストリとしてCodeArtifactを使用することを確認したいと考えています。何を設定する必要がありますか?

A) package.jsonにnpmレジストリURLを設定する B) ビルド前フェーズでCodeArtifactログインコマンドを使用してnpmレジストリを設定する C) CodeArtifactのVPCエンドポイントを作成する D) CodeBuild環境変数を使用してレジストリを設定する

答え

答え: B

解説: AWS CodeArtifactはnpmをCodeArtifactをレジストリとして設定し一時的な認証トークンを取得するログインコマンド(aws codeartifact login --tool npm)を提供します。このコマンドはbuildspec.ymlのビルド前フェーズで実行する必要があります。package.jsonにURLを設定するだけ(A)では認証を処理しません。VPCエンドポイント(C)はネットワーク接続用です。環境変数のみ(D)はnpmクライアントを設定しません。


問題 9

企業は本番デプロイ前に手動承認ステージを含むCloudFormationを使用してインフラをデプロイするパイプラインを実装する必要があります。また承認が必要なときにメールでチームに通知する必要があります。どのサービスを組み合わせるべきですか?

A) CodePipeline + SNS + 手動承認アクション B) CodePipeline + SQS + Lambda C) CodeCommit + CloudWatchイベント + メール D) Systems Manager + SNS

答え

答え: A

解説: AWS CodePipelineは手動承認アクションをネイティブにサポートします。パイプラインが承認ステージに達すると、SNS(メールをトリガーできる)経由で通知を送り、レビュアーが承認または拒否するまで一時停止します。これが通知付きパイプライン承認のネイティブな目的に合った解決策です。SQS+Lambda(B)は不必要な複雑さを追加します。


問題 10

企業はAWSインフラが常にセキュリティポリシーに準拠していることを確保したいと考えています。ドリフトが検出されたときに自動修復が必要です。どのサービスを使用すべきですか?

A) AWS CloudTrail B) Amazon Inspector C) 修復アクション付きのAWS Config D) AWS Security Hub

答え

答え: C

解説: AWS Configはリソース設定を継続的に監視し、Configルールに対して評価します。ルールが違反されると、ConfigはSystems Manager Automationドキュメントを使用してリソースをコンプライアンス状態に戻す修復アクションを自動的にトリガーできます。CloudTrail(A)はAPI呼び出しをログに記録します。Inspector(B)は脆弱性をスキャンします。Security Hub(D)は調査結果を集約しますが自動修復はしません。


問題 11

企業はECSでマイクロサービスアプリケーションを実行しています。新しいバージョンがヘルスチェックに失敗した場合の自動ロールバックを含むブルー/グリーンデプロイメントを実行したいと考えています。最善のアプローチはどれですか?

A) CodeDeployブルー/グリーンデプロイメントタイプのECS B) ローリングアップデートのCloudFormation C) ECSローリングアップデートデプロイメント D) ECSタスク定義リビジョンによる手動更新

答え

答え: A

解説: ECSはCodeDeployと統合してブルー/グリーンデプロイメントを提供します。CodeDeployは古い(ブルー)から新しい(グリーン)タスクセットに段階的にトラフィックをシフトし、ヘルスチェックを監視し、ヘルスチェックが失敗した場合に自動的に前のバージョンにロールバックします。CloudFormationローリングアップデート(B)はEC2 Auto Scaling用です。ECSローリングアップデート(C)はより洗練されていなくロールバックが難しいです。手動更新(D)はエラーが発生しやすいです。


問題 12

DevOpsチームはソフトウェアのインストールや設定変更を含む数百のEC2インスタンスの設定を管理する必要があります。エージェントを必要としない完全マネージドな解決策が必要です。最善のサービスはどれですか?

A) コントロールノード上のAnsible B) AWS Systems Manager Run CommandとState Manager C) AWS OpsWorks Chef/Puppet D) EC2ユーザーデータによるカスタムスクリプト

答え

答え: B

解説: AWS Systems Manager Run CommandはSSHアクセスやAnsibleコントロールノードの管理なしに複数のEC2インスタンスでコマンドを実行できます。State Managerはインスタンス設定を維持するための望ましい状態設定を提供します。SSMエージェントはAmazon Linux/WindowsのAMIにプリインストールされています。Ansible(A)はコントロールノードの管理が必要です。OpsWorks(C)はChef/Puppetの専門知識が必要です。EC2ユーザーデータ(D)はインスタンス起動時にのみ実行されます。


問題 13

企業のCodePipelineパイプラインはCloudFormationスタックのデプロイが失敗したため失敗しています。失敗した状態を失わずにスタックが失敗した原因を調査したいと考えています。どうすればよいですか?

A) API呼び出しのCloudTrailログを確認する B) コンソールまたはCLIでCloudFormationスタックイベントを確認する C) パイプラインを再実行してデバッグロギングを追加する D) CodeBuildログを確認する

答え

答え: B

解説: CloudFormationスタックイベントはスタックの作成/更新中に何が起こったかの詳細なタイムライン(どのリソースが失敗したか、なぜ失敗したか、エラーメッセージなど)を提供します。スタックは失敗情報を保持しながら失敗状態(ROLLBACK_COMPLETEまたはUPDATE_ROLLBACK_COMPLETE)に留まります。CloudTrail(A)はAPI呼び出しを表示しますがリソースレベルの失敗は表示しません。CodeBuildログ(D)はビルドステージの失敗用です。


問題 14

企業はAWSリソースの継続的なコンプライアンス監視を実装する必要があります。リソースがコンプライアンスポリシーに違反したときにすぐに通知を受けたいと考えています。何を設定すべきですか?

A) EventBridgeルールを持つCloudTrail B) SNS通知を持つAWS Configルール C) SNSを持つAmazon Inspector D) EventBridgeを持つAWS Security Hub

答え

答え: B

解説: AWS Configルールはリソース設定を継続的に評価します。Configはコンプライアンスステータスが変化したとき(例:COMPLIANTからNON_COMPLIANTへ)にSNS経由で通知を送るよう設定できます。これはポリシーが違反されたときのリアルタイム通知を提供します。CloudTrailとEventBridge(A)はAPI呼び出しを検出し、設定コンプライアンスは検出しません。Inspector(C)は脆弱性スキャン用です。Security Hub(D)は複数のサービスから調査結果を集約します。


問題 15

企業はAWS CDKを使用してInfrastructure as Codeを実装したいと考えています。複数のアプリケーションにわたってインフラコンポーネントを再利用したいと考えています。CDKコードをどのように構造化すべきですか?

A) CloudFormationテンプレートをコピーして貼り付ける B) CDKコンストラクトを作成してライブラリとして公開する C) 再利用のためにCDKアスペクトを使用する D) CloudFormationネストされたスタックを使用する

答え

答え: B

解説: AWS CDKコンストラクトはnpm、PyPI、またはMavenを通じてライブラリとしてパッケージ化し共有できる再利用可能なインフラコンポーネントです。チームは暗号化とバージョニングが有効なセキュアなS3バケットコンストラクトなど、ベストプラクティスをカプセル化した独自のコンストラクトライブラリを作成できます。CDKアスペクト(C)はCDKツリーの走査と変更(タグの適用など)用です。CloudFormationテンプレート(A、D)はCDKではありません。


問題 16

企業のLambda関数はCodePipeline経由でデプロイされています。新バージョンをデプロイした後、トラフィックの10%を新バージョンに送り、エラーがなければ5分ごとに10%ずつ増やしたいと考えています。どのCodeDeployデプロイタイプを使用すべきですか?

A) Linear10PercentEvery10Minutes B) Canary10Percent5Minutes C) AllAtOnce D) Linear10PercentEvery1Minute

答え

答え: B

解説: Lambda用CodeDeployはカナリアデプロイメントをサポートします。Canary10Percent5Minutesはトラフィックの10%を新しいLambdaバージョンにシフトし、5分待ち、CloudWatchアラームがトリガーされなければ残り90%をシフトします。これは要件と一致します。リニアデプロイメント(A、D)はトラフィックを均等な増分で段階的にシフトします。AllAtOnce(C)はすぐにすべてのトラフィックをシフトします。


問題 17

企業はAWS CodeCommitを使用しています。コードレビューを強制したいと考えています - メインブランチへの直接コミットを禁止し、すべての変更は少なくとも2人がレビューしたプルリクエストを通じて行われる必要があります。どのように強制しますか?

A) メインブランチへのcodecommit:GitPushを拒否するIAMポリシーを使用する B) CodeCommit承認ルールテンプレートを使用する C) CodeCommitのブランチ保護ルールを使用する D) AとBの両方

答え

答え: D

解説: CodeCommitでプルリクエストを強制するには2つのコンポーネントが必要です:(1)一般の開発者のメインブランチへの直接プッシュを拒否するIAMポリシー、(2)マージ前にプルリクエストに最小数の承認を要求するCodeCommit承認ルールテンプレート。承認ルールテンプレートのみでは直接プッシュを防止できません。IAMポリシーのみではPRの承認数を強制しません。


問題 18

企業はアプリケーションのパフォーマンスを監視し、カスタムメトリクス(キューの深さなど)に基づいて自動的にスケールしたいと考えています。これを達成するAWSサービスの組み合わせはどれですか?

A) CloudWatchカスタムメトリクス + Application Auto Scaling + ターゲット追跡スケーリングポリシー B) X-Ray + EC2 Auto Scaling C) CloudWatch Logs + Lambda + DynamoDB D) EventBridge + Step Functions

答え

答え: A

解説: CloudWatchにカスタムメトリクスを公開し、ターゲット追跡スケーリングポリシーを持つApplication Auto Scalingを使用することで、キューの深さなどのカスタムメトリクスに基づいてさまざまなリソース(ECSタスク、DynamoDB容量など)を自動的にスケールできます。X-Ray(B)は分散トレーシング用です。Lambda+DynamoDB(C)は自動スケーリングを提供しません。EventBridge+Step Functions(D)はイベントオーケストレーション用です。


問題 19

チームは本番環境へのすべての変更が追跡され監査可能であることを確保する必要があります。CloudFormationを使用しています。スタックへのすべての変更の履歴を提供する機能はどれですか?

A) CloudTrail APIログ B) CloudFormation変更セット C) CloudFormationドリフト検出 D) AWS Config CloudFormationスタックトラッキング

答え

答え: D

解説: AWS ConfigはCloudFormationスタックをリソースタイプとして設定履歴を記録します。時間の経過とともにスタック設定へのすべての変更を追跡し、監査トレイルを提供します。CloudTrail(A)はAPI呼び出しをログに記録しますが各時点でのスタック設定全体ではありません。変更セット(B)は適用前に変更されるものを示します。ドリフト検出(C)はテンプレートと実際のリソースの現在の差異を示します。


問題 20

企業は複数の環境(dev、staging、prod)に別々のAWSアカウントを使用してアプリケーションをデプロイする必要があります。環境を通じてアーティファクトを昇格させる単一のパイプラインが必要です。どのように設計すべきですか?

A) 環境ごとに3つの別々のパイプラインを作成する B) IAMロールを使用してクロスアカウントデプロイする1つのパイプラインを作成する C) マルチ環境管理にElastic Beanstalkを使用する D) 各アカウントに別々のCodePipelineを持つAWS Organizationsを使用する

答え

答え: B

解説: 単一のCodePipelineはターゲットアカウントのIAMロールを引き受けることで複数のAWSアカウントにデプロイできます。ツールアカウントのパイプラインはデプロイするためにターゲットアカウント(dev、staging、prod)のロールを使用します。これはアカウント分離を維持しながらパイプラインの単一の情報源を提供します。別々のパイプライン(A)は設定を重複させ同期を困難にします。Elastic Beanstalk(C)はマルチアカウントデプロイに対応しません。


問題 21

企業はEC2ベースのアプリケーションのセルフヒーリングメカニズムを実装する必要があります。インスタンスがヘルスチェックに失敗した場合、自動的に交換されるべきです。何を実装すべきですか?

A) SNS通知を持つCloudWatchアラーム B) ELBヘルスチェックを持つEC2 Auto Scalingグループ C) インスタンスを監視して再起動するAWS Lambda D) AWS Systems Managerメンテナンスウィンドウ

答え

答え: B

解説: ELBヘルスチェックを持つEC2 Auto Scalingグループはヘルスチェックに失敗したインスタンスを自動的に終了して交換します。これはEC2のネイティブなセルフヒーリングメカニズムです。SNS通知を持つCloudWatchアラーム(A)は通知しますが自動的に交換しません。Lambda(C)は監視できますがカスタムの複雑さを追加します。メンテナンスウィンドウ(D)はスケジュールされたメンテナンス用です。


問題 22

企業はAWSアカウントで不正なAPI呼び出しを検出してアラートを受けたいと考えています。この機能を提供するサービスの組み合わせはどれですか?

A) VPCフローログ + CloudWatch B) AWS CloudTrail + Amazon EventBridge + SNS C) AWS Config + SNS D) Amazon GuardDuty + Security Hub

答え

答え: B

解説: AWS CloudTrailはすべてのAPI呼び出しを記録します。EventBridgeは特定のCloudTrailイベント(不正なAPI呼び出し、ルートアカウントの使用、セキュリティグループの変更など)に一致するルールを作成し、SNS通知をトリガーできます。これはAPIレベルのアラートの標準パターンです。VPCフローログ(A)はネットワークトラフィックをキャプチャします。Config(C)はリソース設定を監視します。GuardDuty(D)はML ベースの脅威検出を提供します。


問題 23

企業のビルドパイプラインはDockerイメージをビルドしてAmazon ECRにプッシュする必要があります。CodeBuildサービスロールに必要な権限はどれですか?

A) AmazonEC2ContainerRegistryFullAccess B) AmazonEC2ContainerRegistryPowerUser C) ecr:GetAuthorizationTokenと関連するプッシュ権限を許可するカスタムポリシー D) AmazonECS-FullAccess

答え

答え: C

解説: 最小権限の原則に従い、CodeBuildサービスロールには特定のECR権限が必要です:ecr:GetAuthorizationToken(Dockerログイン用)、ecr:BatchCheckLayerAvailabilityecr:PutImageecr:InitiateLayerUploadecr:UploadLayerPartecr:CompleteLayerUpload。AmazonEC2ContainerRegistryPowerUser(B)は必要な権限をすべて含みますが必要以上のものも含みます。FullAccess(A)は削除権限を含みます。AmazonECS-FullAccess(D)はECS管理用です。


問題 24

企業はCloudFormationを使用してインフラを管理しています。本番データベースの誤削除を防ぎたいと考えています。どのように実装できますか?

A) データベースリソースにCloudFormation保持ポリシーを使用する B) RDSリソースにDeletionPolicy属性をRetainに設定する C) cloudformation:DeleteStackを拒否するIAMポリシーを使用する D) CloudFormationターミネーション保護を使用する

答え

答え: B

解説: CloudFormationリソース(RDSインスタンスなど)にDeletionPolicy: Retainを設定することで、スタックが削除されるときにリソースが保持(削除されない)されます。これはCloudFormationスタック操作による誤ったデータベース削除を防ぎます。ターミネーション保護(D)はスタック全体が削除されるのを防ぎますが、質問はデータベースリソースを具体的に尋ねています。


問題 25

企業はCodePipelineを使用しており、ステージングへのデプロイ後に統合テストを実行したいと考えています。テストは外部テストフレームワークで実行されます。これをパイプラインに統合するにはどうすればよいですか?

A) テストを実行するCodeBuildステージを使用する B) 外部フレームワークをトリガーするLambda呼び出しアクションを使用する C) CodePipelineでJenkinsアクションを使用する D) デプロイ後に手動承認ステップを使用する

答え

答え: A

解説: CodePipelineのCodeBuildステージは統合テストの実行に使用できます。テストフェーズのbuildspec.ymlは外部テストフレームワークを呼び出し、テストスクリプトを実行し、結果を報告できます。テストが失敗するとCodeBuildステージが失敗しパイプラインが停止します。これがAWS内で最も統合されたアプローチです。Lambda呼び出し(B)は単純なイベント駆動タスク用です。Jenkins(C)はJenkinsインフラの管理が必要です。手動承認(D)は自動化されていません。


問題 26

企業は数千のEC2インスタンスを管理し、SSHアクセスなしに大規模でパッチ操作を実行したいと考えています。どのサービスとアプローチを使用すべきですか?

A) メンテナンスウィンドウを持つAWS Systems Manager Patch Manager B) パッチ適用のためのEC2ユーザーデータスクリプト C) 自動パッチ適用のためのAnsible Tower D) Chefレシピを持つAWS OpsWorks

答え

答え: A

解説: AWS Systems Manager Patch Managerはパッチベースラインとパッチグループに基づいてEC2インスタンスを自動的にパッチできます。メンテナンスウィンドウはパッチ操作をスケジュールします。インスタンスのSSMエージェントはSSHを必要とせずにパッチ指示を受け取ります。EC2ユーザーデータ(B)は起動時にのみ実行されます。Ansible Tower(C)はインフラの管理が必要です。OpsWorks(D)はChefの専門知識が必要です。


問題 27

企業はアプリケーションのカナリアテストを実装したいと考えています。少数のユーザーにデプロイして指標を監視し、完全なロールアウトを行います。自動ロールバックを可能にする組み合わせはどれですか?

A) Route 53加重ルーティング + CloudWatch + 手動プロセス B) AWS CodeDeployカナリアデプロイメント + CloudWatchアラーム C) ALB加重ターゲットグループ + CloudWatch + Lambda D) CloudFrontファンクション + CloudWatch

答え

答え: B

解説: AWS CodeDeployカナリアデプロイメントはトラフィックの一部を新バージョンにシフトしCloudWatchアラームを監視します。ベーキング期間中にアラームがトリガーされると、CodeDeployは自動的に前のバージョンにロールバックします。これにより完全に自動化されたカナリアデプロイメントとロールバックが提供されます。Route 53加重ルーティング(A)は手動ロールバックが必要です。ALB加重ターゲットグループ(C)はカスタム自動化が必要です。


問題 28

チームはCodeBuildビルドがインターネットアクセスなしの隔離された環境で実行されることを確保する必要があります。プライベートリポジトリとECRへのアクセスが必要です。何を設定すべきですか?

A) AWSサービス用のVPCエンドポイントを使用してインターネットアクセスのないVPC内でCodeBuildを実行する B) アウトバウンドトラフィックをブロックするセキュリティグループを持つCodeBuild C) 制限的なエグレスルールを持つNATゲートウェイを持つCodeBuild D) プライベートCodeBuild環境を使用する

答え

答え: A

解説: NATゲートウェイなしのVPC内でCodeBuildを実行するとインターネットアクセスがなくなります。CodeCommit、ECR、S3、その他のAWSサービス用のVPCエンドポイントにより、ビルドはAWSプライベートネットワーク経由でプライベートリポジトリとECRにアクセスできます。すべてのアウトバウンドをブロックするセキュリティグループ(B)はAWSサービスアクセスもブロックします。制限付きNATゲートウェイ(C)はまだインターネットアクセスを提供します。


問題 29

企業のアプリケーションはSSMパラメータストアに保存されたフィーチャーフラグを使用しています。アプリケーションを再起動せずにフィーチャーフラグをリロードする必要があります。最善のアプローチはどれですか?

A) SSMパラメータの変更時にアプリケーションを再起動する B) 動的設定デリバリーを持つAWS AppConfigを使用する C) アプリケーションからSSMパラメータストアを定期的にポーリングする D) フィーチャーフラグを保存するためにDynamoDBを使用する

答え

答え: B

解説: AWS AppConfigは再起動なしにアプリケーションへの動的設定デリバリーのために特別に設計されています。設定変更の段階的なロールアウト、検証、モニタリングをサポートします。アプリケーションはAppConfigエージェントまたはSDKを使用してリアルタイムで設定更新を受け取ります。SSMの定期的なポーリング(C)は機能しますがAppConfigほど洗練されていません。アプリケーションの再起動(A)はダウンタイムを引き起こします。DynamoDB(D)はカスタムポーリングコードが必要です。


問題 30

企業は複数のEC2インスタンスとLambda関数からのログを集中分析のために集約する必要があります。どのサービスを使用すべきですか?

A) AthennaのあるAmazon S3 B) Log InsightsのあるAmazon CloudWatch Logs C) Amazon Kinesis Data Streams D) EC2上のELKスタック

答え

答え: B

解説: Amazon CloudWatch LogsはEC2(CloudWatchエージェント経由)とLambda(自動統合)とネイティブに統合されています。CloudWatch Logs Insightsは集中ログ分析のための強力なクエリ機能を提供します。これが最も統合されたAWSネイティブな解決策です。S3 + Athena(A)は機能しますがログのエクスポートが必要です。Kinesis(C)はストリーミング用でログストレージ/分析用ではありません。EC2上のELK(D)はインフラの管理が必要です。


問題 31

企業は分散トレーシングにAWS X-Rayを使用しています。あるサービスで高いレイテンシに気づきました。どのダウンストリーム呼び出しがレイテンシを引き起こしているか特定するにはどうすればよいですか?

A) サービスのCloudWatchメトリクスを確認する B) X-Rayサービスマップとトレース詳細を使用して高レイテンシセグメントを特定する C) RDSで拡張モニタリングを有効にする D) EC2インスタンスのCPUメトリクスを確認する

答え

答え: B

解説: AWS X-Rayサービスマップはアプリケーションコンポーネントとその接続の視覚的な表現を提供します。トレース内の各セグメントとサブセグメントは作業の単位を表し、費やされた時間を示します。トレース詳細を調べることで、どの特定のダウンストリーム呼び出し(データベース、API、マイクロサービス)が高いレイテンシを引き起こしているか特定できます。CloudWatchメトリクス(A)は集計データを提供します。RDS拡張モニタリング(C)はデータベース内部用です。EC2 CPUメトリクス(D)は分散呼び出しレイテンシを示しません。


問題 32

チームはCI/CDパイプラインでGitFlowブランチ戦略を実装する必要があります。フィーチャーブランチはビルドをトリガーし、プルリクエストは統合テストをトリガーし、メインへのマージは本番デプロイをトリガーするべきです。CodePipelineをどのように設定しますか?

A) すべてのブランチイベントでトリガーされる1つのパイプラインを作成する B) メインブランチデプロイにCodePipelineを使用し、EventBridgeルール経由でフィーチャーブランチにCodeBuildトリガーを使用する C) 各ブランチ用に別々のパイプラインを作成する D) 単一のJenkinsパイプラインを使用する

答え

答え: B

解説: 最善のアプローチは複数のメカニズムを使用します:(1)CodeCommitイベント発生時にフィーチャーブランチビルドとPRチェックのためのCodeBuildプロジェクトをトリガーするEventBridgeルール、(2)本番デプロイのためにメインブランチのみでトリガーされるCodePipeline。各ブランチの別々のパイプライン(C)は大規模では実用的ではありません。すべてのブランチで単一パイプライン(A)は意図しないデプロイにつながる可能性があります。Jenkins(D)はインフラの管理が必要です。


問題 33

企業はRDSデータベースパスワードの自動ローテーションを実装する必要があります。ローテーションはアプリケーションのダウンタイムなしに30日ごとに自動的に行われるべきです。どのサービスがこの機能を提供しますか?

A) AWSKMSキーローテーション B) 自動ローテーションを持つAWS Secrets Manager C) Lambdaローテーターを持つSSMパラメータストア D) AWS Certificate Manager

答え

答え: B

解説: AWS Secrets Managerはデータベース認証情報の自動ローテーションをサポートします。RDS用の組み込みローテーションLambda関数がSecrets ManagerとRDSインスタンスの両方でパスワードを更新します。アプリケーションはSecrets Managerから現在のシークレットを取得するため、ローテーションは透過的です。KMSキーローテーション(A)は暗号化キー用です。SSMパラメータストア(C)はカスタムLambdaでローテーションできますがより多くのカスタムコードが必要です。ACM(D)はSSL証明書用です。


問題 34

企業はCodeBuildとCodePipelineを使用しています。CodeBuildビルドはプライベートVPC内のリソースにアクセスします。CodeBuildビルドがビルド中に外部npmパッケージにアクセスしようとするとネットワークタイムアウトエラーで失敗しています。問題と解決策は何ですか?

A) CodeBuild VPCにインターネットゲートウェイを追加する B) CodeBuild VPCにNATゲートウェイがあり、CodeBuildサブネットがそれを通じてルーティングされていることを確認する C) VPCの外でCodeBuildを使用する D) CodeBuildインスタンスにElastic IPを追加する

答え

答え: B

解説: CodeBuildがVPC内で実行されると、デフォルトのインターネットアクセスが失われます。外部インターネットリソース(npmパッケージなど)にアクセスするには、VPCにパブリックサブネットのNATゲートウェイが必要で、CodeBuildサブネットのルートテーブルはインターネット向けトラフィックをNATゲートウェイ経由でルーティングする必要があります。CodeArtifact(npmのプロキシ)を使用することもこれを解決します。インターネットゲートウェイの追加(A)だけではプライベートサブネットからのトラフィックをルーティングしません。VPCの外への移動(C)はプライベートリソースへのアクセスを失います。


問題 35

企業はアプリケーションの回復力をテストするためにカオスエンジニアリングを実装したいと考えています。AWSサービスに制御された方法で障害を注入したいと考えています。どのAWSサービスがこれをサポートしますか?

A) AWS Systems Manager Automation B) AWS Fault Injection Simulator (FIS) C) AWS CloudFormationドリフト検出 D) Amazon DevOps Guru

答え

答え: B

解説: AWS Fault Injection Simulator(FIS)はAWSインフラに障害を注入する(EC2インスタンスの終了、ネットワーク遅延の追加、CPU負荷の発生、API呼び出しのスロットリングなど)制御された実験を実行できるマネージドカオスエンジニアリングサービスです。Systems Manager Automation(A)は運用タスクを実行します。CloudFormationドリフト検出(C)は設定ドリフトを検出します。DevOps Guru(D)はMLを使用して運用上の異常を検出します。


問題 36

企業はデプロイ前にコンテナイメージの既知の脆弱性をチェックするCI/CDパイプラインに自動セキュリティスキャンステップを実装したいと考えています。どのサービスを統合すべきですか?

A) ECR統合のあるAmazon Inspector B) AWS WAF C) Amazon GuardDuty D) AWS Security Hub

答え

答え: A

解説: Amazon InspectorはAmazon ECRと統合してコンテナイメージのソフトウェア脆弱性(CVE)を自動的にスキャンします。新しいイメージがECRにプッシュされると、InspectorはそれをスキャンしてFindings を報告します。パイプラインはAPI呼び出しまたはEventBridge通知経由でInspector Findingsを確認し、重大な脆弱性が見つかった場合にビルドを失敗させることができます。WAF(B)はウェブアプリ保護用です。GuardDuty(C)は脅威検出用です。Security Hub(D)は調査結果を集約します。


問題 37

企業はマイクロサービスアプリケーションを持ち、異なるチームが異なるサービスを所有しています。各チームが他のサービスに影響を与えずに独立してサービスをデプロイできるようにしたいと考えています。このデプロイ戦略は何ですか?

A) 1つのパイプラインですべてのサービスを一緒にデプロイする B) コントラクトテストを使用したサービスごとの独立したデプロイメントパイプライン C) フィーチャーフラグを使用してロールアウトを制御する D) 変更管理による手動デプロイメント

答え

答え: B

解説: コントラクトテスト(サービスが正しく通信し続けることを確認する)と組み合わせたサービスごとの独立したデプロイメントパイプラインにより、チームは調整なしに独立してデプロイできます。コントラクトテストはサービスインターフェースの互換性を検証します。すべてを一緒にデプロイすること(A)は密結合を作ります。フィーチャーフラグ(C)は機能の可視性を制御しますが独立したデプロイメントパイプラインを有効にしません。手動デプロイメント(D)はCI/CDの利点を排除します。


問題 38

企業はCloudFormationテンプレートが常に最新の承認済みAMI IDを使用することを確保する必要があります。承認済みAMI IDはSSMパラメータストアに保存されています。CloudFormationで最新のAMIを参照するにはどうすればよいですか?

A) テンプレートにAMI IDをハードコードして手動で更新する B) AWS::SSM::Parameterリソースを使用してデプロイ時にAMI IDを検索する C) CloudFormationテンプレートでresolve:ssm:/path/to/ami動的参照を使用する D) AMIを取得するためにLambdaバックのカスタムリソースを使用する

答え

答え: C

解説: CloudFormation動的参照は{{resolve:ssm:/path/to/parameter}}構文を使用してSSMパラメータストアの値をテンプレートで直接参照できます。スタックがデプロイまたは更新されると、CloudFormationはSSMから現在の値を取得します。これにより常に最新の承認済みAMIが使用されます。AWS::SSM::Parameter(B)はSSMパラメータを作成するためでなく取得するためのものではありません。Lambdaカスタムリソース(D)は複雑さを追加します。ハードコーディング(A)は手動更新が必要です。


問題 39

DevOpsチームはフィーチャーフラグを使用したプログレッシブデリバリーを実装する必要があります。ユーザー属性に基づいて段階的に新機能をユーザーに公開したいと考えています。最も適したサービスはどれですか?

A) Route 53加重ルーティング B) フィーチャーフラグ設定を持つAWS AppConfig C) ヘッダーに基づくALBリスナールール D) CloudFront Lambda@Edge

答え

答え: B

解説: AWS AppConfigはデプロイ戦略を使用して段階的にデプロイできるフィーチャーフラグ設定をサポートします。アプリケーションは実行時にフィーチャーフラグを評価して特定のユーザーや割合の機能を有効にできます。Route 53加重ルーティング(A)はDNSレベルでルーティングしユーザーごとではありません。ALBルール(C)はリクエスト属性に基づいてルーティングしますがフィーチャーフラグ管理インターフェースを提供しません。Lambda@Edge(D)はカスタムコードが必要です。


問題 40

企業はデプロイのためにCodePipelineを実行しています。パイプラインが失敗したときにSlack通知を受け取りたいと考えています。最も効率的な解決策はどれですか?

A) Lambda関数から1分ごとにCodePipeline APIをポーリングする B) CodePipeline状態変化のEventBridgeルールを作成してSlackに送るLambda関数をトリガーする C) パイプライン失敗のCloudWatchメトリクスアラームを使用する D) メールサブスクリプションのSNSを使用してSlackに手動転送する

答え

答え: B

解説: EventBridge(以前のCloudWatchイベント)はCodePipelineのステージとパイプライン状態変化のイベントを発行します。EventBridgeルールはFAILED状態変化をフィルタリングし、Slack webhook APIを使用してSlackにメッセージを送るLambda関数をトリガーできます。これはイベント駆動型で効率的でポーリングが必要ありません。ポーリング(A)は非効率的です。CloudWatchアラーム(C)はパイプライン状態を直接監視しません。SNSと手動Slack転送(D)は自動化されていません。


問題 41

企業はCloudFormationネストされたスタックを使用しています。ネストされたスタックの更新が失敗したため親スタックの更新が失敗しています。失敗した特定のネストされたスタックとその理由をどのように特定しますか?

A) 親スタックのイベントを確認する B) 各ネストされたスタックのイベントタブを個別に確認する C) 親スタックのイベントを確認する - 失敗したネストされたスタックを参照しているので、そのネストされたスタックのイベントを確認する D) CloudTrailログを確認する

答え

答え: C

解説: ネストされたスタックが失敗すると、親スタックのイベントはネストされたスタックを参照する失敗を示します。イベントのネストされたスタック名をクリックするか直接ナビゲートすることで、失敗した特定のリソースとエラーメッセージを示すそのネストされたスタックのイベントを確認できます。親スタックのイベントの確認(A)は部分的な情報を提供します。すべてのネストされたスタックの確認(B)は非効率的です。CloudTrail(D)はAPI呼び出しを示しますがスタックレベルのリソース失敗は示しません。


問題 42

企業はCI/CDパイプラインの一部としてデータベース移行を実装する必要があります。新しいアプリケーションコードをデプロイする前に移行を適用する必要があります。どのように構造化すべきですか?

A) アプリケーションコードに移行スクリプトを含め起動時に実行する B) デプロイステップの前にパイプラインに専用の移行ステップを追加し、CodeBuildを使用して移行を実行する C) 各デプロイ前に手動で移行を実行する D) 移行管理にRDS自動バックアップを使用する

答え

答え: B

解説: デプロイステージの前にCodePipelineに専用の移行ステージを追加することで、移行が最初に実行されることを保証します。CodeBuildアクションはデータベースに接続して移行スクリプトを実行できます。移行が失敗するとパイプラインが停止し新しいアプリケーションコードはデプロイされず、バージョンの不一致を防ぎます。起動時の実行(A)は複数のインスタンスが同時に実行される問題を引き起こす可能性があります。手動移行(C)は自動化の利点を排除します。RDSバックアップ(D)はデータ復旧用です。


問題 43

チームはすべてのCodeBuildプロジェクトが承認済みのベースイメージを使用し、buildspec.ymlがインラインではなくCodeCommitリポジトリに保存されていることを強制したいと考えています。どのアプローチが強制しますか?

A) コードレビュープロセス B) CodeBuildのAWS ConfigルールとIAMポリシー C) Amazon Inspectorスキャン D) 手動監査

答え

答え: B

解説: AWS ConfigはCodeBuildプロジェクトの設定を評価し、非準拠プロジェクト(例:承認されていないイメージを使用するプロジェクトやインラインビルドスペックを持つプロジェクト)にフラグを立てることができます。IAMポリシーはCodeBuildプロジェクト設定でどのイメージが許可されるかを制限できます。これにより検出(Config)と予防(IAM)の両方が提供されます。コードレビュー(A)と手動監査(D)は自動化されていません。Inspector(C)は設定コンプライアンスではなく脆弱性をスキャンします。


問題 44

企業はEC2デプロイメントにAWS CodeDeployを使用しています。デプロイ開始前にロードバランサーから接続をドレインするスクリプトを実行する必要があります。AppSpecのどこにこのスクリプトを配置すべきですか?

A) BeforeInstallフック B) AfterInstallフック C) BeforeBlockTrafficフック D) AfterBlockTrafficフック

答え

答え: C

解説: ロードバランサーデプロイメントのCodeDeploy AppSpecライフサイクルイベントには:BeforeBlockTraffic(ロードバランサーがインスタンスへのトラフィックをブロックする前)、BlockTraffic(ロードバランサーがトラフィックをブロック)、AfterBlockTraffic(トラフィックがブロックされた後)が含まれます。ロードバランサーがトラフィックをブロックする前に接続をドレインするには、BeforeBlockTrafficフックを使用します。BeforeInstall(A)はトラフィックが既にブロックされた後に実行されます。AfterInstall(B)はアプリケーションインストール後に実行されます。


問題 45

企業はGitOps原則を実装したいと考えています - Gitリポジトリがインフラの唯一の情報源です。リポジトリへの変更はインフラに自動的に反映されるべきです。CloudFormationのためにどのように実装しますか?

A) CodeCommitの変更によってトリガーされるCodePipelineを使用する B) CloudFormationの変更を手動で適用する C) CloudFormation StackSetsを使用する D) AWS CDK Pipelinesを使用する

答え

答え: A

解説: CodeCommit(またはGitHub)の変更によってトリガーされるCodePipelineはCloudFormationのGitOpsを実装します。リポジトリへのすべてのコミットがパイプラインをトリガーしCloudFormationの変更を適用します。これにより展開されたインフラが常にリポジトリと一致することが保証されます。CDK Pipelines(D)もこれを実装しますがCDKアプリケーション専用です。手動変更(B)はGitOps原則に違反します。StackSets(C)はクロスアカウントデプロイメントを管理しますがトリガーが必要です。


問題 46

企業のECSでデプロイされたアプリケーションが断続的な問題を経験しています。アプリケーションログとインフラメトリクスおよび分散トレースを相関させる必要があります。この可視性を提供する組み合わせはどれですか?

A) CloudWatch Logs + CloudWatchメトリクス + X-Ray B) S3 + Athena + X-Ray C) Elasticsearch + Kibana + X-Ray D) CloudTrail + CloudWatch + Inspector

答え

答え: A

解説: CloudWatch Logs(アプリケーションログ)、CloudWatchメトリクス(インフラメトリクス)、X-Ray(分散トレース)はAWSの可観測性トリオを形成します。CloudWatch Container InsightsはECS固有のメトリクスとログを提供します。X-RayはトレースIDを使用してCloudWatchとトレースを相関させます。S3+Athena(B)はリアルタイム相関を提供しません。Elasticsearch+Kibana(C)はインフラの管理が必要です。CloudTrail(D)はアプリケーションの可観測性ではなくAPIの監査用です。


問題 47

企業はマルチリージョンアプリケーションを運用しており、リージョン間でデプロイを調整する必要があります - 最初にus-east-1にデプロイし、us-east-1が正常な場合のみeu-west-1にデプロイします。最善のアプローチはどれですか?

A) 2つの別々のパイプラインと2番目のリージョンの手動トリガー B) ヘルスチェックゲートを持つ各リージョンの順次デプロイステージを持つ単一のCodePipeline C) 両方のリージョンへの同時デプロイにCloudFormation StackSetsを使用する D) 変更管理による手動デプロイメント

答え

答え: B

解説: 各リージョン用の順次ステージを持つ単一のCodePipelineは必要なフローを実装します:us-east-1にデプロイし、ヘルスチェックを実行し(CodeBuildテストステージ)、ヘルスチェックが通過した場合のみeu-west-1にデプロイします。これにより自動化された順次デプロイとゲートが提供されます。2つの別々のパイプライン(A)は手動の調整が必要です。StackSets(C)はゲートなしに複数のリージョンに同時にデプロイします。手動デプロイメント(D)は自動化を排除します。


問題 48

企業はEC2 Auto Scalingと起動テンプレートを使用しています。新しいAMIを使用したいが、すべてのインスタンスを更新する前に少数のインスタンスでテストしたいと考えています。どの機能を使用すべきですか?

A) 起動設定の更新 B) ウォームプールと段階的置換割合を持つインスタンスリフレッシュ C) 手動インスタンス終了と再起動 D) 新しいAuto Scalingグループの作成

答え

答え: B

解説: EC2 Auto Scalingインスタンスリフレッシュは新しい起動テンプレートを使用するインスタンスのローリング更新を可能にします。MinHealthyPercentageを設定してチェックポイントを設定することで、続行する前にインスタンスの割合でテストできます。ウォームプールは交換インスタンスを事前にウォームアップできます。起動設定(A)は非推奨です。手動終了(C)はエラーが発生しやすいです。新しいASGの作成(D)は既存のデプロイメントと統合されません。


問題 49

チームはCI/CDパイプラインでデータベーススキーマ変更の堅牢なロールバック戦略を実装する必要があります。最善のプラクティスは何ですか?

A) 各移行前にデータベースダンプを保存する B) パイプラインでの自動ロールバック機能を持つ可逆的な移行(上/下)を使用する C) RDSバックアップからのポイントインタイム復旧を使用する D) 各デプロイ前にデータベースのスナップショットを取得する

答え

答え: B

解説: アップ/ダウンスクリプトを持つ可逆的な移行により、デプロイ時に(アップ)移行を適用し、ロールバック時に(ダウン)移行を元に戻すことができます。デプロイが失敗した場合、パイプラインは自動的にダウン移行を実行できます。これはスナップショットからの復元よりも高速です。データベースダンプ(A)とスナップショット(D)は復元が遅いです。PITR(C)はさらに遅くスナップショット後の期間のデータを失う可能性があります。


問題 50

企業はDockerビルドが再現可能でセキュアであることを確保したいと考えています。Dockerイメージレイヤーに誤ってコミットされたシークレットをスキャンしたいと考えています。どのアプローチを使用すべきですか?

A) 手動画像検査によるCodeBuild B) 攻撃面を最小化するマルチステージDockerビルド + 脆弱性スキャンのAmazon Inspector C) InspectorによるECRイメージスキャンを使用する D) ビルド前にDockerfileを手動でレビューする

答え

答え: C

解説: Amazon InspectorはECRと統合してコンテナイメージの脆弱性(パッケージ内のCVE)とイメージレイヤーに誤って埋め込まれたシークレット(シークレット検出機能を使用)の両方をスキャンします。InspectorによるECR拡張スキャンは手動レビューなしに自動検出を提供します。マルチステージビルド(B)はイメージサイズを削減しますがシークレットを検出しません。手動レビュー(A、D)はスケーラブルではありません。


問題 51

企業はCodePipelineを使用しており、デプロイ後にエラー率が増加した場合に自動的にデプロイを停止してチームに通知する戦略を実装したいと考えています。最善のアプローチはどれですか?

A) メールを送るCloudWatchアラームを設定する B) CloudWatchアラームベースの自動ロールバック + SNS通知を持つCodeDeployデプロイグループを使用する C) 監視してパイプラインを停止するLambda関数を書く D) チェックリストを使用した手動モニタリング

答え

答え: B

解説: CodeDeployデプロイグループは自動ロールバックのためのCloudWatchアラームと、デプロイイベント(ロールバックを含む)発生時にSNS通知を送るトリガーで設定できます。これが自動ロールバックと通知の完全に統合されたネイティブな解決策です。CloudWatchメールアラーム(A)は通知しますがデプロイを停止/ロールバックしません。Lambda(C)はカスタムの複雑さを追加します。手動モニタリング(D)は自動化されていません。


問題 52

企業は数百のLambda関数を管理しており、すべての関数が1つの関数がすべての同時実行を消費するのを防ぐために適切な予約済み同時実行制限を持つことを確保する必要があります。大規模でこれを強制するにはどうすればよいですか?

A) 各関数の予約済み同時実行を手動で設定する B) 予約済み同時実行のないLambda関数を確認するAWS Configルールを使用する C) Service QuotasでLambdaの同時実行を制限する D) 予約済み同時実行なしの関数作成を防ぐIAMポリシーを使用する

答え

答え: B

解説: AWS ConfigカスタムルールはすべてのLambda関数を評価し、予約済み同時実行が設定されていない非準拠のものを報告できます。Configは修復アクションをトリガーすることもできます。これにより手動確認なしに大規模での可視性が提供されます。手動設定(A)はスケールしません。Service Quotas(C)は合計アカウントの同時実行を制限しますが関数ごとの強制はしません。IAMポリシー(D)は作成時に設定属性の存在を要求できません。


問題 53

企業はAWS CloudFormationを使用しており、スタック作成中にサードパーティサービスを設定するカスタムスクリプトを実行する必要があります。どのリソースタイプを使用すべきですか?

A) CloudFormation Init (cfn-init) B) LambdaによるAWS::CloudFormation::CustomResource C) AWS::CloudFormation::WaitCondition D) AWS::CloudFormation::Stack

答え

答え: B

解説: Lambdaバックのカスタムリソースはスタックの作成/更新/削除操作中に任意のコードを実行できます。Lambda関数はサードパーティAPIを呼び出し、外部サービスを設定し、CloudFormationテンプレートにデータを返すことができます。cfn-init(A)はEC2インスタンスの設定用です。WaitCondition(C)はEC2インスタンスからのシグナルを待つためのものです。AWS::CloudFormation::Stack(D)はネストされたスタック用です。


問題 54

DevOpsチームはAuto Scalingグループのインスタンスレベルだけでなくアプリケーションレベルのヘルスチェックを実装する必要があります。アプリケーションの健全性に基づいてASGが不健全なインスタンスを置き換えるようにしたいと考えています。どのように実装すべきですか?

A) EC2インスタンスステータスチェックを使用する B) ELBヘルスチェックを使用するようにASGを設定する C) インスタンス終了をトリガーするCloudWatchアラームを使用する D) カスタムヘルスチェックエンドポイントを設定してEC2ヘルスチェックを使用する

答え

答え: B

解説: ASGがELBヘルスチェックを使用するよう設定されている場合、ロードバランサーが(ALB/NLBターゲットグループのヘルスチェックに基づいて/healthのようなアプリケーションレベルのエンドポイントを確認する)不健全と報告するインスタンスを不健全と見なします。ASGはその後自動的に不健全なインスタンスを終了して置き換えます。EC2ステータスチェック(A)はEC2インフラの健全性のみを確認します。CloudWatchアラーム(C)はスケーリングポリシーをトリガーしますが直接の置換はしません。


問題 55

企業はCI/CDパイプラインで環境固有の設定を管理する戦略を実装する必要があります。各環境には異なるデータベースエンドポイント、APIキー、フィーチャーフラグがあります。最善のアプローチはどれですか?

A) すべての設定をコードリポジトリに保存する B) 環境ごとに環境固有のSSMパラメータストアパスを使用する C) ビルドアーティファクトに環境固有の値をハードコードする D) 各環境ごとに異なるCodeBuildプロジェクトを使用する

答え

答え: B

解説: 環境固有のパス(例:/dev/database/endpoint/prod/database/endpoint)を持つSSMパラメータストアを使用することで、アプリケーションとパイプラインが実行時に環境固有の設定を取得できます。IAMポリシーで環境ごとのアクセスを制御できます。リポジトリへの設定保存(A)はシークレット漏洩のリスクがあります。ビルドアーティファクトへのハードコーディング(C)は環境ごとに異なるアーティファクトを作成します。異なるCodeBuildプロジェクト(D)は設定管理の問題に対処しません。


問題 56

企業はイミュータブルインフラを実装したいと考えています - 既存のサーバーを更新する代わりに、各デプロイメントで新しいものに置き換えます。どのAWSサービスとパターンがこれを最もサポートしますか?

A) ゴールデンAMIパイプラインを使用したインスタンスリフレッシュを持つEC2 Auto Scaling B) 既存のEC2インスタンスへのインプレースCodeDeployデプロイメント C) 既存のインスタンスへのAWS Systemsパッチ適用 D) SSH経由の手動インスタンス更新

答え

答え: A

解説: イミュータブルインフラはAMIパイプライン(新しいコードでゴールデンAMIをビルドしてベークするCodeBuild、その後新しいAMIでAuto Scalingグループをインスタンスリフレッシュ)を使用します。新しいインスタンスは新しいAMIから起動され、古いインスタンスは終了されます。インプレースデプロイメント(B)は既存のインスタンスを変更しイミュータブルの原則に違反します。SSMパッチ適用(C)は既存のインスタンスを変更します。手動更新(D)はエラーが発生しやすいです。


問題 57

企業は複数のCodePipelineパイプラインを持っています。AWS Organizationにわたるすべてのパイプラインのステータスを表示する集中ダッシュボードが必要です。何を実装すべきですか?

A) 複数のブラウザタブを持つAWSマネジメントコンソール B) CodePipelineメトリクスを持つAmazon CloudWatchカスタムダッシュボード C) AWS DevOps Guru D) AWS Organizationsコンソール

答え

答え: B

解説: Amazon CloudWatchダッシュボードは複数のパイプラインにわたってCodePipeline実行メトリクスとステータスを集計できます。パイプラインからのEventBridgeイベントと組み合わせて、Lambda関数がパイプラインステータスのDynamoDBテーブルを更新し、CloudWatchダッシュボードが表示します。CloudWatchはパイプラインレベルのメトリクスも提供します。DevOps Guru(C)はMLを使用した異常検出でパイプラインダッシュボードではありません。Organizationsコンソール(D)はアカウントを管理しパイプラインは管理しません。


問題 58

企業はECSタスク定義が常にダイジェスト検証付きのECRから最新イメージをプルすることを確保する必要があります(「latest」タグを使用しない)。パイプラインでどのように実装すべきですか?

A) ECSタスク定義でlatestタグを使用する B) CodeBuildのビルド後ステージで、ダイジェストを含むイメージURIを出力してタスク定義の更新に使用する C) タグの上書きを防ぐためにECRタグの変更不可を使用する D) 各ビルド後にタスク定義を手動で更新する

答え

答え: B

解説: CodeBuildビルドがECRにイメージをプッシュした後、docker inspectまたはECR APIを使用してダイジェスト(SHA256ハッシュ)を含む完全なイメージURIを取得できます。このダイジェストURIはCodePipelineのCodeDeployアクションがECSタスク定義を更新するために使用するアーティファクトファイル(imagedefinitions.json)に書き込まれます。ダイジェストを使用することで、latestが指すものではなく正確なイメージがデプロイされることが保証されます。ECRタグの変更不可(C)はタグの上書きを防ぎますがダイジェストベースのデプロイメントを保証しません。


問題 59

企業はCloudFormationデプロイメントの後に、スタックがセキュリティ標準に準拠しているかを自動的に確認するコンプライアンスチェックを実装する必要があります。CodePipelineに何を実装すべきですか?

A) 手動レビューステップ B) スタックのリソースのConfig ルールコンプライアンスを確認するAWS CLIを実行するCodeBuildアクション C) Amazon Inspectorスキャン D) GuardDutyの調査結果のレビュー

答え

答え: B

解説: CloudFormationデプロイメント後、CodeBuildアクションはAWS CLIコマンドを実行してスタックによって作成されたリソースのAWS Configルールコンプライアンスを確認できます(aws configservice get-compliance-details-by-resource)。リソースがNON_COMPLIANTの場合、CodeBuildステージが失敗してパイプラインが停止します。手動レビュー(A)は自動化されていません。Inspector(C)は脆弱性をスキャンします。GuardDuty(D)は脅威検出用です。


問題 60

企業はセキュリティ標準に準拠しないCloudFormationスタックデプロイメント(暗号化のないS3バケットなど)を防ぐ解決策を実装する必要があります。予防的コントロールはどれですか?

A) CloudFormationフック(AWS CloudFormation Guard) B) AWS Configルール C) AWS Security Hub D) AWS Trusted Advisor

答え

答え: A

解説: AWS CloudFormation Guardはデプロイ前にCloudFormationテンプレートをカスタムルールに対して検証するポリシーアズコードツールです。CloudFormationフックはリソース作成前にGuardまたはLambda関数を呼び出して非準拠リソースをブロックできます。Configルール(B)は事後検出(デプロイ後)です。Security Hub(C)は調査結果を集約します。Trusted Advisor(D)は推奨事項を提供しますがデプロイを防止しません。


問題 61

企業はAuto ScalingグループのすべてのEC2インスタンスが新しいAMIが利用可能になってから24時間以内に置き換えられることを確保する必要があります。自動的に行われるようにしたいと考えています。何を実装すべきですか?

A) 新しいAMIイベントのEventBridgeルールでインスタンスリフレッシュをトリガーする B) 新しいAMIの通知を受けたときに手動でインスタンスリフレッシュを行う C) 頻繁に置き換えられるスポットインスタンスを使用する D) Auto Scalingグループで最大インスタンスライフタイムを設定する

答え

答え: D

解説: EC2 Auto Scalingの最大インスタンスライフタイム機能は指定された期間後にインスタンスを自動的に置き換えます。86400秒(24時間)に設定することで、起動テンプレートが更新された場合に新しいAMIを取得しながら24時間以内にすべてのインスタンスが置き換えられます。インスタンスリフレッシュをトリガーするEventBridge(A)はカスタム自動化が必要です。手動リフレッシュ(B)は自動化されていません。スポットインスタンス(C)は置き換えられる可能性がありますが24時間以内は保証されません。


問題 62

DevOpsチームはコードパイプラインでアプリケーションコードのセキュリティスキャンを実行する必要があります。ソースコードにハードコードされたシークレットと認証情報を検出したいと考えています。どのツールを統合すべきですか?

A) Amazon Inspector B) AWS Secrets Manager C) CodeBuildビルドスペックに統合されたgit-secretsまたはtruffleHog D) Amazon Macie

答え

答え: C

解説: git-secrets、truffleHog、またはGitleaksなどのツールはソースコードのハードコードされたシークレットと認証情報をスキャンするために設計されています。これらはCodeBuildビルドスペックにビルドステップとして統合できます。シークレットが見つかった場合、ビルドが失敗します。Amazon Inspector(A)はコンテナイメージとEC2インスタンスをスキャンします。Secrets Manager(B)はシークレットを保存しますがコードをスキャンしません。Macie(D)はソースコードではなくS3オブジェクトの機密データをスキャンします。


問題 63

企業はCodePipelineを使用して複数のECSサービスにデプロイします。各サービスには独自のCodeDeployデプロイグループがあります。1つのサービスのデプロイが失敗した場合、そのサービスのデプロイのみをロールバックし、すべてのサービスをロールバックしないようにしたいと考えています。パイプラインをどのように構造化すべきですか?

A) すべてのサービス用の単一のCodeDeployデプロイグループ B) 別々のCodeDeployデプロイグループを使用した各サービスの別々の並列デプロイステージ C) 単一のCloudFormationスタックによる順次デプロイメント D) 単一のCodeDeployデプロイメントですべてのサービスをデプロイする

答え

答え: B

解説: CodePipelineで各ECSサービスに対して別々の並列デプロイアクション(それぞれ独自のCodeDeployデプロイグループを持つ)を使用することで、デプロイが失敗した場合に個別のサービスロールバックが可能になります。1つのサービスのデプロイが失敗した場合、そのデプロイのみがロールバックされ、他のサービスは続行されます。単一のデプロイグループ(A)またはすべてのサービスの単一デプロイ(D)はすべてのサービスをロールバックします。順次CloudFormation(C)はCodeDeployのロールバック機能を活用しません。


問題 64

企業はIMDSv2(インスタンスメタデータサービスバージョン2)を使用していないEC2インスタンスを自動的に検出して修復する解決策を実装する必要があります。何を実装すべきですか?

A) AWS Configルール + SSM Automation修復 B) Amazon Inspectorスキャン C) 手動監査とスクリプト実行 D) CloudTrailモニタリング

答え

答え: A

解説: AWS ConfigルールはMetadataOptions.HttpTokensrequired(IMDSv2)に設定されていないEC2インスタンスを検出できます。非準拠インスタンスが見つかると、SSM Automationの修復ドキュメントはIMDSv2を要求するようにインスタンスメタデータオプションを自動的に更新できます。これにより検出と自動修復の両方が提供されます。Inspector(B)は脆弱性用です。手動監査(C)はスケーラブルではありません。CloudTrail(D)はAPI呼び出しをログに記録します。


問題 65

DevOpsチームはCloudFormationの横でインフラ管理にTerraformを使用しています。バージョニングとロックを使用してTerraform状態ファイルを安全に保存する必要があります。何を使用すべきですか?

A) ローカルファイルシステム B) バージョニングが有効なS3バケット + 状態ロック用のDynamoDB C) CodeCommitリポジトリ D) AWS CodeArtifact

答え

答え: B

解説: AWS上のTerraformの推奨バックエンドはS3(状態履歴と復旧のためのバージョニング)とDynamoDB(同時状態変更を防ぐための状態ロック)の組み合わせです。これはAWS上での安全なTerraform状態管理の標準的で十分に文書化されたパターンです。ローカルファイルシステム(A)はチームコラボレーションやDRをサポートしません。CodeCommit(C)は状態ファイルのコミットが必要で推奨されません。CodeArtifact(D)はパッケージマネージャーです。


問題 66

企業はEKSへのデプロイにCodePipelineを使用しています。デプロイ前にKubernetesマニフェストのセキュリティ問題(rootとしての実行、リソース制限なしなど)を検証したいと考えています。どのアプローチを取るべきですか?

A) マニフェストの手動レビュー B) CodeBuildステージとして統合されたOPA(Open Policy Agent)またはKyvernoポリシー C) Amazon Inspectorを使用する D) GuardDutyランタイムモニタリングを使用する

答え

答え: B

解説: conftest付きのOPA(Open Policy Agent)またはKyvernoはCodeBuildステージでKubernetesマニフェストをポリシールール(rootユーザー以外の要求、リソース制限、読み取り専用ファイルシステムなど)に対して検証できます。ポリシーが失敗するとビルドが失敗しマニフェストがデプロイされません。これはシフトレフトセキュリティです。Inspector(C)は実行中のワークロードをスキャンします。GuardDuty(D)はランタイムの脅威を検出します。手動レビュー(A)はスケールしません。


問題 67

企業は本番アクセスの「ブレークグラス」手順を実装する必要があります。通常は誰も本番への直接アクセスを持ちませんが、緊急時には特定の個人が一時的に昇格されたアクセスを取得できます。どのように実装すべきですか?

A) ルートアカウントの認証情報を共有する B) AWS STS経由の時間制限付き引き受け権限を持つIAMロールを使用する C) ブレークグラスシナリオ用の恒久的な管理者ユーザーを作成する D) SCPバイパスのAWS Organizationsを使用する

答え

答え: B

解説: ブレークグラスアクセスはAWS STSを介して限られた期間引き受けることができるIAMロールを使用します。アクセスは厳密に制御され(特定のユーザーがロールを引き受けることができる)、CloudTrailで監査され、時間制限されています(STSセッション時間)。ロールの引き受けはSNSアラートをトリガーできます。ルート認証情報の共有(A)は絶対に許容されません。恒久的な管理者ユーザー(C)は常に利用可能で「ブレークグラス」ではありません。SCPs(D)はOrganization管理者アクセスなしにはバイパスできません。


問題 68

企業のCodeBuildプロジェクトはテストレポートを生成します。時間の経過とともにテスト結果のトレンドを表示したいと考えています。どのCodeBuild機能がこれを提供しますか?

A) CloudWatch Logs B) レポートグループを持つCodeBuildテストレポート C) S3アーティファクトストレージ D) X-Rayトレーシング

答え

答え: B

解説: AWS CodeBuildテストレポートは複数のビルドにわたってテスト結果を集計するレポートグループを作成できます。CodeBuildはテスト結果ファイル(JUnit XML、Cucumber JSONなど)を解析し、CodeBuildコンソールで合否統計、トレンド、テスト時間を表示します。CloudWatch Logs(A)は生のログ出力を保存します。S3アーティファクト(C)はファイルを保存しますがテストトレンドを視覚化しません。X-Ray(D)は分散トレーシング用です。


問題 69

企業はリレーショナルデータベースの新しいスキーマ変更を本番トラフィックをルーティングする前にテストするブルー/グリーンデプロイメントを実装する必要があります。どのサービスがリレーショナルデータベースのこれをサポートしますか?

A) RDSブルー/グリーンデプロイメント B) RDSマルチAZフェイルオーバー C) DNS切り替えによるRDSリードレプリカ D) スキーマ移行のためのDMS

答え

答え: A

解説: Amazon RDSブルー/グリーンデプロイメントは本番データベース(ブルー)と同期されたステージング環境(グリーン)を作成する機能です。グリーン環境にスキーマ変更を適用し、テストし、最小のダウンタイムで切り替えを実行できます。RDSマルチAZ(B)は高可用性フェイルオーバー用です。リードレプリカ(C)は読み取り専用です。DMS(D)は異なるデータベースタイプ間の移行用です。


問題 70

チームは開発者がローカルマシンから本番に直接デプロイするのを防ぐポリシーを実装する必要があります。すべてのデプロイメントはCI/CDパイプラインを通じて行われる必要があります。どのように強制しますか?

A) チームポリシーと開発者教育 B) 直接デプロイメントアクションを拒否するIAMポリシー + デプロイメント用のIAM実行ロールを持つCodePipeline C) VPNベースのアクセス制御 D) ネットワークACL

答え

答え: B

解説: IAMポリシーは開発者がCodeDeployを直接呼び出したり、ECSサービスを更新したり、ECR/EKSにプッシュしたりする能力を拒否できます。CodePipelineは必要な権限を持つ専用のサービスロールを使用します。これによりデプロイメントはパイプラインを通じてのみ行えます。チームポリシー(A)は技術的に強制されません。VPN(C)とNACL(D)はネットワークアクセスを制御しますがデプロイメント権限は制御しません。


問題 71

企業は複数のサービスを含むモノレポを持っています。変更されたサービスのみをビルドしてデプロイするCI/CDパイプラインが必要です。どのように実装すべきですか?

A) 常にすべてのサービスをビルドしてデプロイする B) git diffを使用して変更されたサービスを識別するビルド前ステップを持つCodeBuildを使用する C) 各サービスに別々のリポジトリを使用する D) Lambda関数を使用して変更を検出する

答え

答え: B

解説: CodeBuildのビルド前ステップでスクリプトはgit diffを実行して最後の成功したビルド以降にどのディレクトリ(サービス)が変更されたかを識別できます。スクリプトはその後どの後続のビルド/デプロイステップが実行されるかを制御する環境変数や出力ファイルを設定できます。これはモノレポCI/CD最適化の一般的なパターンです。常にすべてをビルドすること(A)は時間とリソースを無駄にします。別々のリポジトリ(C)はアーキテクチャを大幅に変更します。Lambda検出(D)は複雑さを追加します。


問題 72

企業はデプロイメントパイプラインの一部として自動負荷テストを実装する必要があります。ステージングへのデプロイ後に負荷テストを実行し、P99レイテンシが200ms未満の場合のみ本番に昇格させたいと考えています。何を実装すべきですか?

A) 各デプロイメント前の手動負荷テスト B) P99レイテンシが200msを超えた場合に失敗する負荷テストツール(LocustまたはK6など)を実行するCodeBuildステージ C) 本番メトリクスを監視するCloudWatchアラーム D) AWS Trusted Advisorチェック

答え

答え: B

解説: ステージングデプロイ後のCodeBuildステージはLocust、k6、またはJMeterのような負荷テストツールを実行できます。テストスクリプトは負荷プロファイルとアサーション(P99レイテンシ < 200ms)を定義します。アサーションが失敗するとCodeBuildはゼロ以外の終了コードを返し、パイプラインステージを失敗させて本番への昇格を防ぎます。手動テスト(A)は自動化されていません。CloudWatchアラーム(C)は本番を監視しますがデプロイ前のステージングテストはしません。Trusted Advisor(D)はコスト/パフォーマンスの推奨事項を提供します。


問題 73

企業はCloudFormationスタックのドリフト検出を実装し、ドリフトが検出されたときに自動的に修復する必要があります。最善のアプローチはどれですか?

A) 毎週手動でドリフトを確認する B) すべてのスタックのドリフト検出を開始するLambdaをトリガーするCloudWatch Events(EventBridge)ルール、ドリフト検出時にCodePipeline経由でCFを修復 C) CloudFormationリソースのAWS Configルール D) CloudFormationターミネーション保護を有効にする

答え

答え: B

解説: 自動化された解決策:EventBridgeスケジュールルールがすべてのスタックのCloudFormationドリフト検出を開始するLambda関数をトリガーします。ドリフトが検出されると、LambdaはCodePipelineをトリガーしてCloudFormationスタックを再デプロイします(望ましい状態に戻す)。これは完全に自動化されています。手動確認(A)は継続的ではありません。Configルール(C)はドリフトを検出できますがCloudFormationスタックドリフトのために特別に設計されていません。ターミネーション保護(D)は削除を防ぎますがドリフトは防ぎません。


問題 74

企業はリデプロイなしに本番で変更できるフィーチャーフラグを実装する必要があります。変更後60秒以内にフラグが有効になる必要があります。最善の解決策はどれですか?

A) ECSタスク定義の環境変数(再デプロイが必要) B) 45秒ごとに変更をポーリングするエージェントを持つAWS AppConfig C) 60秒ごとにポーリングされるSSMパラメータストア D) 毎分チェックするLambda関数を持つDynamoDB

答え

答え: B

解説: AWS AppConfigは動的設定デリバリーのために特別に設計されています。AppConfigエージェント(またはSDK)は設定変更をポーリングし、45秒ごとにチェックするよう設定でき、変更が60秒以内に有効になることを保証します。AppConfigはデプロイ戦略と検証もサポートします。ECS環境変数(A)はタスク再起動が必要です。SSMポーリング(C)は機能しますがAppConfigの検証とデプロイ戦略機能が欠けています。DynamoDB+Lambda(D)はカスタムコードとスケジューリングの遅れが必要です。


問題 75

DevOpsチームはCI/CDパイプラインで作成されたすべてのAWSリソースにパイプライン名、コミットID、デプロイタイムスタンプを自動的にタグ付けする解決策を実装する必要があります。最も包括的なアプローチはどれですか?

A) 各リソースに手動でタグを追加する B) スタックレベルでCloudFormationタグ付けを使用してリソースに伝播させる C) CloudFormationスタックタグ + CodePipelineからCloudFormationパラメータとして渡される環境変数 + AWS Organizationsのタグポリシーの組み合わせ D) CloudTrailイベント経由でリソース作成後にタグを適用するLambda

答え

答え: C

解説: 最も包括的なアプローチ:(1)CloudFormationスタックタグはスタックが作成するリソースに自動的に伝播する、(2)CodePipelineはコミットIDとパイプライン名をタグとして使用するCloudFormationパラメータとして渡す、(3)AWS Organizationsタグポリシーはタグ標準を強制する。これはパイプラインソースでのタグ付け、CloudFormation経由の伝播、Organizationsを通じたガバナンスを処理します。手動タグ付け(A)はスケールしません。Lambda作成後タグ付け(D)はレースコンディションがあり一部のリソースを逃します。


模擬試験完了。SDLCの自動化、構成管理とIaC、モニタリングとロギング、ポリシーと標準の自動化、インシデントとイベント対応、高可用性とフォールトトレランスのすべてのドメインを復習してください。