トキヌク

AWS DOP サンプル問題

AWS Certified DevOps Engineer - Professional(AWS DOP)対策のオリジナル問題50問を無料公開。アプリの無料枠と同じ問題で、全200問収録のAWS DOP問題集から抜粋しています。「答えと解説を見る」を開くと、正解だけでなく全選択肢の解説を読めます。

50問無料公開 全200問収録 全選択肢解説付き
アプリで解く(無料・登録不要)→

SDLCの自動化

CI/CDパイプライン設計

Q1. 共有ツールアカウントで稼働するAWS CodePipelineから、本番アカウントのCloudFormationスタックを更新する構成に変更することになりました。ビルド成果物はツールアカウントのS3アーティファクトバケットに保存され、本番アカウント側のロールがそれを取得してデプロイします。監査部門からは、保管時の暗号化を自組織で管理する鍵で行うことも求められています。本番アカウントが成果物を確実に復号して取得できるようにするために必要な構成はどれですか?

  1. A. アーティファクトバケットの暗号化をSSE-S3のままにし、本番アカウントのロールへバケットの読み取り権限だけを付与する
  2. B. カスタマー管理のKMSキーでバケットを暗号化し、キーポリシーとバケットポリシーで本番アカウントに利用を許可する
  3. C. 本番アカウントへ成果物を複製するS3レプリケーションを構成し、デプロイアクションに複製先を参照させる
  4. D. ツールアカウントのIAMユーザーのアクセスキーを発行し、本番アカウント側のデプロイ設定に共有して埋め込む
答えと解説を見る

正解:B

A SSE-S3の鍵はS3のサービス管理でクロスアカウント共有ができないため、別アカウントのロールは成果物を復号できず取得に失敗する

B(正解) 正解。クロスアカウントの成果物受け渡しではカスタマー管理キーが必須で、キーポリシーとバケットポリシーの双方で相手アカウントの利用を許可する

C レプリケーションは非同期で実行順序を保証できず、アクションは自身のアーティファクトストアを参照するため構成として成立しない

D 長期認証情報の共有は漏洩リスクが高くベストプラクティスに反する。クロスアカウントはロールの引き受けで解決すべき

CI/CDパイプライン設計

Q2. AWS CodePipelineのテストステージで、統合テストとセキュリティスキャンの2つのアクションを同時に開始して所要時間を短縮し、その両方が成功した場合にのみ同じステージ内の手動承認アクションへ進みたいと考えています。ステージ数を増やさず、アクションの設定だけでこの制御を実現する方法はどれですか?

  1. A. 3つのアクションすべてに同じrunOrderを設定し、承認アクションにだけ依存関係の属性を追加する
  2. B. テストとスキャンにそれぞれ異なるrunOrderを設定し、承認には最も小さいrunOrderを割り当てる
  3. C. テストとスキャンに同じrunOrderを設定し、承認にはそれより大きいrunOrderを設定する
  4. D. テストとスキャンを2つのステージに分割し、承認アクションをさらに後続のステージへ配置する
答えと解説を見る

正解:C

A アクションに個別の依存関係属性はなく、同じrunOrderのアクションは一斉に開始されるため承認も同時に走ってしまう

B runOrderが異なる2つは直列化され、最小値を持つ承認が先頭で実行されるため要件と逆の順序になる

C(正解) 正解。同一runOrderのアクションは並列に実行され、大きいrunOrderのアクションは先行するアクションがすべて成功した後に開始される

D ステージは必ず順番に実行されるため2つの検査が直列になり、所要時間を短縮したいという要件を満たせない

CI/CDパイプライン設計

Q3. 本番デプロイの直前にリリース担当者のレビューを挟む運用を追加することになりました。担当者にはメールで承認依頼が届き、レビュー対象のステージング環境のURLを提示したうえで、承認または却下の判断と、その理由の記録ができる必要があります。追加開発を最小にし、最も運用負荷が低い実装はどれですか?

  1. A. 手動承認アクションにSNSトピックとレビュー用URLを設定し、コンソールから承認または却下させる
  2. B. パイプラインを停止させるLambdaアクションを配置し、レビュー完了後に担当者が実行を再開する
  3. C. 承認用のステージでCodeBuildを起動し、担当者がログにコメントを書き込むまで待機させる
  4. D. EventBridgeでステージ遷移を検知し、Step Functionsのコールバックで承認状態を管理する
答えと解説を見る

正解:A

A(正解) 正解。手動承認アクションはSNS通知、レビューURL、コメント記録を標準機能として備えており、追加開発なしで要件を満たす

B 停止と再開の制御を自作することになり、通知や承認理由の記録も別途実装が必要となって運用負荷が上がる

C ビルドを待機させ続ける間も課金され、タイムアウト管理やコメント検知の仕組みも自作となるため非効率

D 実現は可能だが、ステートマシンとタスクトークンの管理、承認UIの用意まで必要で標準機能で足りる要件には過剰

CI/CDパイプライン設計

Q4. GitHubのモノレポをCodeConnections経由のソースとするV2タイプのパイプラインを運用しています。現在はリポジトリへのpushすべてでパイプラインが起動し、アプリケーションコードだけの変更でもインフラ用パイプラインが動いてビルド費用と通知ノイズが増えています。infra/配下に変更があったときだけ起動させるための、最小の構成変更はどれですか?

  1. A. ソースの後段にCodeBuildを配置し、差分にinfra/が含まれない場合はビルドを意図的に失敗させる
  2. B. GitHub側のWebhookを無効化し、EventBridgeのスケジュールで1日1回だけ実行する
  3. C. リポジトリをインフラ用とアプリケーション用に分割し、それぞれ専用のパイプラインを構成する
  4. D. パイプラインのトリガーにpushフィルターを追加し、ファイルパスにinfra/** を指定する
答えと解説を見る

正解:D

A 実行自体は発生するため課金と失敗通知が残り、パイプラインの成功率も汚れる。トリガー段階で抑止する方が適切

B 変更の有無に関わらず実行されるうえ、infra/の変更が最大24時間反映されないため要件を満たさない

C モノレポの運用体制そのものを変更する大掛かりな対応であり、最小の構成変更という条件から外れる

D(正解) 正解。V2タイプのパイプラインはブランチ・タグ・ファイルパスによるトリガーフィルターに対応し、設定追加だけで不要な起動を抑止できる

CI/CDパイプライン設計

Q5. CodeBuildでコンテナイメージをビルドし、コミットハッシュをタグとして付与しています。後続のECSデプロイアクションには、そのビルドで生成したタグの値を渡す必要があります。パラメータストアなどの外部ストアやLambdaを追加せず、パイプラインの機能だけで値を受け渡す方法はどれですか?

  1. A. ビルド中にParameter Storeへタグを書き込み、デプロイ前にLambdaアクションで読み出して差し替える
  2. B. タグをアーティファクト内のJSONに書き出し、デプロイアクションからS3を直接参照させる
  3. C. ビルドアクションで出力変数を宣言し、デプロイアクションから名前空間つきの変数構文で参照する
  4. D. パイプライン定義にタグの値をハードコードし、コミットのたびに定義を更新する
答えと解説を見る

正解:C

A 外部ストアと関数の作り込みが増え、同時実行時に値が混ざる危険もある。パイプラインの変数機能だけで完結できる

B デプロイアクションは入力アーティファクトを受け取れるが、設定値として使うには追加の解析処理が必要で無駄が生じる

C(正解) 正解。CodeBuildはexported-variablesで変数を公開でき、アクションの名前空間を通じて後続アクションの設定値に埋め込める

D コミットごとにパイプラインを書き換える運用は自動化の目的に反し、更新漏れによる誤ったイメージのデプロイを招く

CI/CDパイプライン設計

Q6. GitHub Enterprise Cloudで管理しているリポジトリをCodePipelineのソースにします。要件は、コミットからパイプライン開始までの遅延を最小化すること、そして個人アクセストークンなどの長期認証情報を自分たちで保管・ローテーションしなくてよいことです。この2点を同時に満たす構成はどれですか?

  1. A. ソースアクションのポーリングを有効にし、1分間隔でリポジトリの変更を検出する
  2. B. CodeConnectionsの接続を作成してソースアクションに指定し、Webhookで自動起動させる
  3. C. 個人アクセストークンをSecrets Managerに保存し、Lambdaが定期取得してパイプラインを開始する
  4. D. リポジトリをS3へミラーリングし、S3ソースアクションのイベント通知で起動させる
答えと解説を見る

正解:B

A ポーリングは検知までの遅延が大きくAWSも非推奨としており、接続用の資格情報を別途管理する必要も残る

B(正解) 正解。接続はマネージドに保持され、プッシュ時にほぼ即座にパイプラインが起動するため遅延も資格情報の管理負荷も最小化できる

C トークンの保管とローテーション、実行基盤の維持が必要になり、マネージドな接続を使う場合より運用負荷が高くなる

D ミラーリングの仕組みを自作することになり、コミット情報も失われて変更のトレーサビリティが低下する

CI/CDパイプライン設計

Q7. デプロイ承認の後に、対象リージョンごとに異なる手順を実行し、一部は並列に、失敗した手順だけを指数バックオフで再試行し、結果に応じて後続処理を分岐させるワークフローが必要になりました。既存のCodePipelineを起点としたまま、この複雑な制御を最も適切に実現する方法はどれですか?

  1. A. ステージからStep Functionsアクションを呼び出し、分岐・並列・再試行はステートマシン側で表現する
  2. B. 分岐の数だけステージを複製し、不要な経路のアクションは失敗させて後続の実行を続けさせる
  3. C. AWS Pipeline Conductorを有効化し、パイプラインに分岐と再試行のグラフを追加する
  4. D. デプロイ処理全体を単一のCodeBuildプロジェクトへ移し、buildspecのシェルスクリプトで分岐させる
答えと解説を見る

正解:A

A(正解) 正解。CodePipelineは直線的なステージ進行が基本のため、複雑な制御はStep Functionsに委譲し、パイプラインからは単一アクションとして起動するのが定石

B アクションが失敗するとパイプラインはそこで停止するため、特定の経路だけを無視して先へ進めることはできない

C架空 そのようなサービスは存在しない。CodePipeline自体に条件分岐グラフを定義する機能はない

D 実行はできるが可観測性と再試行の粒度が失われ、失敗箇所の特定やリージョン単位の再実行が困難になる

CodeDeploy/デプロイ戦略

Q8. 本番のAWS Lambda関数を更新する際、まず新バージョンへ10%のトラフィックのみを10分間流して様子を見てから残りを切り替え、その間にエラー率のアラームが発報した場合は自動的に旧バージョンへ戻したいという要件があります。関数コード以外の変更を最小限にして実現する方法はどれですか?

  1. A. Linear10PercentEvery1Minuteを選び、問題が起きたら前のバージョンを手動で再デプロイする
  2. B. エイリアスの加重ルーティングを手動で更新し、メトリクスを目視で確認しながら比率を上げる
  3. C. API Gatewayのステージ変数でバージョンを切り替え、Route 53の加重レコードで割合を制御する
  4. D. CodeDeployのCanary10Percent10Minutesを使い、CloudWatchアラームをロールバックトリガーに設定する
答えと解説を見る

正解:D

A 1分ごとに10%ずつ増やす設定は10%で10分間留まる要件と異なり、手動での切り戻しは復旧までの時間も長くなる

B リリースのたびに人手が必要で夜間の異常に即応できない。CodeDeployの定型設定で同じ挙動を自動化できる

C 関数を直接呼び出す経路には効かず、切り戻しもDNSの伝播に依存するため即時性が確保できない

D(正解) 正解。この設定は最初の10%を10分間維持してから残りを移行し、アラーム発報時のロールバックを有効にすれば自動で旧バージョンへ戻る

CodeDeploy/デプロイ戦略

Q9. Amazon ECS on AWS Fargateのサービスをローリング更新で運用しています。新しいタスク定義に不具合があると、タスクが起動と失敗を繰り返したままデプロイが長時間停滞し、担当者が気づいて手動で前のタスク定義へ戻しています。CodeDeployを導入せず、ECSの標準機能だけで失敗を検知して直前の安定した状態へ戻したいです。最も適切な設定はどれですか?

  1. A. minimumHealthyPercentを0%に下げ、失敗したタスクが速やかに置き換わるようにする
  2. B. サービスの希望タスク数を一時的に0にしてから、新しいタスク定義で起動し直す
  3. C. サービスのデプロイサーキットブレーカーを有効にし、ロールバックもあわせて有効にする
  4. D. タスク定義の停止タイムアウトを短くし、失敗したタスクを早く終了させる
答えと解説を見る

正解:C

A 起動に失敗するタスクが入れ替わり続けるだけで停滞は解消せず、稼働タスクが減ってサービス断のリスクも高まる

B 完全なサービス断を伴ううえ、不具合があった場合に自動で元へ戻る仕組みも得られない

C(正解) 正解。サーキットブレーカーは新しいタスクの起動失敗が続くとデプロイを打ち切り、直前に安定していたデプロイへ自動的に戻す

D 個々のタスクの終了が早まるだけで、デプロイ全体を失敗と判定して切り戻す仕組みにはならない

CodeBuild/ビルド最適化2つ選択

Q10. ある開発チームのAWS CodeBuildプロジェクトは、1回のビルドに約12分を要しています。ビルドログを分析したところ、大半の時間がnpmの依存パッケージのダウンロードとDockerイメージのベースレイヤーの再取得に費やされており、ソースコードのコンパイル自体は1分未満でした。チームはビルド定義の大幅な書き換えを避けつつ、ビルド時間を短縮したいと考えています。有効な施策はどれですか?(2つ選択)

  1. A. buildspecのcacheセクションでカスタムキャッシュとDockerレイヤーキャッシュを有効にする
  2. B. ビルドプロジェクトのタイムアウトを既定の60分から8時間に延長する
  3. C. 依存パッケージをあらかじめ含めたカスタムビルドイメージをAmazon ECRに用意し、環境イメージとして指定する
  4. D. コンピュートタイプをBUILD_GENERAL1_LARGEからBUILD_GENERAL1_SMALLに変更する
  5. E. ビルドプロジェクトのサービスロールにAdministratorAccessを付与し、権限確認の待ち時間をなくす
答えと解説を見る

正解:A・C

A(正解) 正解。キャッシュにより依存パッケージやベースレイヤーの再取得を回避でき、2回目以降のビルドが大幅に短縮される。buildspecへの追記だけで済む点も要件に合致する

B タイムアウトはビルドを強制終了するまでの上限にすぎず、延長しても各工程の所要時間は1秒も短くならない。むしろ異常な長時間ビルドの検知を遅らせる副作用がある

C(正解) 正解。依存関係を焼き込んだイメージを使えば、ビルドのたびにダウンロードする工程そのものを削減できる。ビルド定義の変更は環境イメージの指定のみで済む

D コンピュートを小さくするとCPU・メモリ・ネットワーク帯域がいずれも減るため、ダウンロード中心の処理はさらに遅くなり、ビルド時間は悪化する

E 権限の広さはビルド速度と無関係であり、最小権限の原則にも反する。ボトルネックは依存関係の取得であって、IAMの権限評価ではない

CI/CDパイプライン設計2つ選択

Q11. ある企業は開発アカウントのAWS CodePipelineから、本番アカウントのAmazon ECSへアプリケーションをデプロイしています。パイプラインはソースをCodeConnections経由でGitHubから取得し、AWS CodeBuildでビルドした成果物を本番アカウントのデプロイアクションに渡します。しかし本番アカウント側のアクションが成果物を取得できずに失敗し続けています。クロスアカウントのパイプラインを正しく機能させるために必要な対応はどれですか?(2つ選択)

  1. A. アーティファクトストアのAmazon S3バケットでブロックパブリックアクセスを解除し、匿名の読み取りを許可する
  2. B. アーティファクトストアのAmazon S3バケットのバケットポリシーで、本番アカウントのデプロイロールに読み取りを許可する
  3. C. 開発アカウントと本番アカウントのVPCをVPCピアリングで接続し、パイプラインの通信経路を確保する
  4. D. アーティファクトの暗号化にカスタマー管理のAWS KMSキーを使い、キーポリシーで本番アカウントのロールに復号を許可する
  5. E. 本番アカウントのIAMユーザーのアクセスキーをCodeBuildの環境変数に平文で設定し、デプロイ時に使用する
答えと解説を見る

正解:B・D

A パブリック公開はセキュリティを大きく損なうだけで、クロスアカウントの権限問題は解決しない。必要なのは特定のロールへの明示的な許可

B(正解) 正解。成果物は開発アカウントのS3バケットに保管されるため、本番アカウントのロールに対しバケットポリシーで読み取りを許可する必要がある

C VPCピアリングはネットワーク到達性の話であり、CodePipelineの成果物取得の可否はS3とKMSの権限設定で決まる

D(正解) 正解。既定のAWS管理キーでは他アカウントから復号できないため、カスタマー管理キーのキーポリシーで相手ロールに復号を許可する

E 長期アクセスキーの平文保管は資格情報漏えいのリスクが高く、クロスアカウントはロールの引き受けで実現するのが正しい方法

構成管理とIaC

CloudFormationテンプレート設計

Q12. ある企業は、本番環境のリレーショナルデータベースを含むCloudFormationスタックを運用しています。過去にテンプレート更新で意図しないリソースの置換が発生し、データを失う事故が起きました。今後は更新内容を承認者がレビューし、どのリソースが置換されるかを実行前に把握したうえで適用したいと考えています。最も運用負荷が低い方法はどれですか?

  1. A. 変更セットを作成し、Replacement列を確認してから実行する
  2. B. 更新前にドリフト検出を実行し、その結果を承認者に提示する
  3. C. cfn-lintによる静的検査をパイプラインに追加し、警告が出たら停止する
  4. D. スタックを削除してから、更新後のテンプレートで作成し直す
答えと解説を見る

正解:A

A(正解) 正解。変更セットは追加・変更・削除されるリソースと置換の要否を実行前に一覧化するため、承認者が破壊的変更を判断してから適用できる

B ドリフト検出はテンプレートと実リソースの現時点の差分を示すだけで、これから行う更新が置換を伴うかどうかは判定できない

C cfn-lintは構文やベストプラクティスの静的検査であり、稼働中のスタックに対して実際に置換が起きるかまでは分からない

D 削除と再作成はデータベースを確実に失ううえ長いダウンタイムも生じ、事故防止どころか被害を拡大する対応

CloudFormationテンプレート設計

Q13. 監査部門から、スタックを削除した場合でも、テンプレート変更でデータベースが置換される場合でも、データをスナップショットとして必ず残すことを求められました。開発チームは日常的にスタックを更新しており、更新のたびにバックアップ取得などの追加の手作業が発生する運用は避けたいと考えています。テンプレート側の設定だけでこの要件を満たす方法はどれですか?

  1. A. DeletionPolicyにRetainを設定し、置換時は手動でスナップショットを取得する
  2. B. DeletionPolicyとUpdateReplacePolicyの両方にSnapshotを設定する
  3. C. スタック本体に終了保護を有効化し、コンソールからの削除を禁止する
  4. D. スタックポリシーで当該リソースへのUpdate:Replaceを明示的に拒否する
答えと解説を見る

正解:B

A Retainは削除時に残すだけで、置換時の挙動はUpdateReplacePolicyが制御する。手作業が残る点も要件に反する

B(正解) 正解。前者がスタック削除時、後者が更新で置換される時の挙動を制御し、いずれの場合も自動でスナップショットが作成される

C 終了保護はスタック削除操作を防ぐだけで、更新による置換は止められず、スナップショットも作成されない

D 置換を伴う更新自体が失敗するようになるだけで、正当な変更まで阻害され、データ保全の手段にもならない

CloudFormationテンプレート設計

Q14. Auto Scalingグループ上で稼働するWebアプリケーションをCloudFormationで管理しています。起動テンプレートを更新するとローリング更新が実行されますが、アプリケーションの初期化に約3分かかるため、まだリクエストを処理できないインスタンスが順次投入され、スタック更新も成功として完了してしまいます。ダウンタイムなしで更新するにはどうすればよいですか?

  1. A. ヘルスチェックの猶予期間を延ばし、更新完了後に手動で動作確認を行う
  2. B. 更新前に希望容量を2倍に増やしてから新しい起動テンプレートを適用する
  3. C. cfn-signalでシグナルを送り、UpdatePolicyでWaitOnResourceSignalsを有効にする
  4. D. UpdatePolicyのMinInstancesInServiceを0に設定して一括で入れ替える
答えと解説を見る

正解:C

A 猶予期間の延長は異常インスタンスの置換を遅らせるだけで、初期化未完了のインスタンスへの振り分けもスタックの誤った成功判定も防げない

B 台数を増やしても新規インスタンスの初期化完了は待たれないため、初期化中のインスタンスにトラフィックが向かう問題は解消しない

C(正解) 正解。初期化完了後に送られるシグナルをCloudFormationが待つため、準備できたインスタンスだけが投入され、更新の成否も正しく判定される

D 稼働中インスタンスを維持しない設定であり、入れ替え中にサービスが完全に停止するためダウンタイムなしの要件に反する

CloudFormationテンプレート設計

Q15. ネットワークチームが管理するスタックがVPC IDとサブネットIDをExportし、10個のアプリケーションスタックがImportValueでそれらを参照しています。ネットワークスタックのサブネット構成を変更しようとすると、出力値が他スタックから参照されているため更新が拒否されました。スタック間の結合を緩め、それぞれ独立して更新できるようにする方法はどれですか?

  1. A. アプリケーションスタックのテンプレートにVPC IDを直接ハードコードする
  2. B. 参照している全アプリケーションスタックを削除してから、ネットワークを更新する
  3. C. 全体をネストされたスタックに作り替え、親スタックからパラメータで渡す
  4. D. 出力値をSSMパラメータストアに格納し、各スタックから動的参照で取得する
答えと解説を見る

正解:D

A 参照エラーは消えるが環境ごとの再利用性が失われ、値の変更時に全テンプレートの改修が必要になり運用負荷が増える

B 本番アプリケーションの停止を伴う破壊的な手順であり、更新のたびに繰り返す必要があるため恒久的な解決にならない

C ネストは1つのライフサイクルにまとめる構成であり、アプリケーションを個別に更新したいという要件とは逆方向の結合強化になる

D(正解) 正解。Exportと異なり参照中でも値を変更でき、ネットワーク側とアプリケーション側を独立したライフサイクルで更新できる

CloudFormationテンプレート設計

Q16. AWS Lambda関数をバックエンドとするカスタムリソースを含むスタックを作成したところ、スタックがCREATE_IN_PROGRESSのまま約1時間停止し、その後CREATE_FAILEDになりました。CloudWatch Logsには関数が処理を完了した記録があり、明らかな例外は出力されていません。原因への対処として最も適切なものはどれですか?

  1. A. 例外発生時も含め、必ず事前署名URLへレスポンスを送信するよう実装する
  2. B. Lambda関数のタイムアウトを15分に延ばし、メモリ割り当ても増やす
  3. C. カスタムリソースにDependsOnを追加し、作成順序を明示的に指定する
  4. D. スタックの作成時にロールバック設定のタイムアウトを短く設定しておく
答えと解説を見る

正解:A

A(正解) 正解。CloudFormationは応答が届くまで待ち続けるため、成功・失敗いずれの経路でもS3の事前署名URLに結果を返す実装が必須

B 関数自体は完了しており実行時間は問題ではない。応答が返らない限り、リソースを増やしても待ち続ける状況は変わらない

C DependsOnは依存順序を制御するだけで、応答が届かないことによるスタックの待機とタイムアウトには影響しない

D 失敗が判明するまでの時間が短くなるだけで根本原因は残り、カスタムリソースは同じ理由で失敗し続ける

CloudFormationテンプレート設計

Q17. セキュリティチームは、全アカウントにおいて暗号化が有効でないAmazon S3バケットがCloudFormationによって作成されることを、リソースが実際に作られる前に阻止したいと考えています。各チームが運用する多数のパイプラインやテンプレートには手を入れたくありません。最適な方法はどれですか?

  1. A. AWS Configのルールで非準拠を検出し、修復アクションで暗号化を有効化する
  2. B. CloudFormationテンプレート検疫(Template Quarantine)機能を有効にする
  3. C. CloudFormation Hooksを各アカウントに登録し、非準拠リソースを拒否する
  4. D. SCPでs3:CreateBucketを全面的に拒否し、作成依頼を運用チームに集約する
答えと解説を見る

正解:C

A Configは作成された後の検出と修復であり、非準拠バケットが一時的にせよ存在してしまうため事前阻止の要件を満たさない

B架空 このような機能はCloudFormationに存在しない。プロビジョニング前の検査はHooksが担う

C(正解) 正解。Hooksはプロビジョニング前にリソース構成を検査して不適合な操作を失敗させるため、テンプレート側を変更せず横断的に強制できる

D 暗号化の有無に関わらず作成をすべて止めるため開発を阻害し、手動作業を増やして運用負荷も大きくなる

CloudFormationテンプレート設計

Q18. 手作業で構築された本番環境のAmazon DynamoDBテーブルとApplication Load Balancerを、サービスを停止せずにCloudFormationの管理下に置くよう指示されました。リソースを作り直すことは許されず、既存の識別子はそのまま維持する必要があります。どうすればよいですか?

  1. A. 同一構成のテンプレートで新スタックを作成し、切り替え後に旧リソースを削除する
  2. B. リソースのインポート操作で、既存リソースを識別子付きでスタックに取り込む
  3. C. AWS Backupで対象をバックアップし、CloudFormationからリストアして管理する
  4. D. ドリフト検出を実行し、検出された差分をテンプレート側に反映していく
答えと解説を見る

正解:B

A リソースが作り直されて識別子が変わり、切り替えに伴う影響も避けられないため、再作成禁止という制約に反する

B(正解) 正解。インポートは既存リソースを再作成せずにCloudFormationの管理下へ取り込む機能で、稼働を止めずに識別子も維持される

C リストアは新しいリソースを生成する操作であり、既存リソースがそのまま管理対象になるわけではない

D ドリフト検出はスタックに含まれるリソースが対象であり、スタック外のリソースを管理下に取り込む手段ではない

CloudFormationテンプレート設計

Q19. 本番スタックの更新が失敗し、ロールバック中にも一部リソースの復元に失敗したため、スタックがUPDATE_ROLLBACK_FAILED状態になりました。以降の更新はすべて受け付けられません。本番リソースを稼働させたままにする必要があるためスタックの削除は許されておらず、できるだけ早く通常の更新操作が可能な状態へ戻す必要があります。取るべき対応はどれですか?

  1. A. 変更セットを作成し、更新前のテンプレートを適用してスタックを戻す
  2. B. スタックを削除し、直前のテンプレートから同じ構成で作成し直す
  3. C. ドリフト検出を実行して差分を解消し、ステータスの自動回復を待つ
  4. D. 問題のリソースを手動で整合させ、対象をスキップしてロールバックを継続する
答えと解説を見る

正解:D

A UPDATE_ROLLBACK_FAILEDのスタックでは通常の更新操作を受け付けないため、変更セットの実行自体ができない

B 削除が許されないという制約に反し、本番リソースの再作成による停止も発生するため選べない

C ドリフト検出は情報を提供するだけで、失敗したロールバックを再開したりスタックの状態を遷移させたりはしない

D(正解) 正解。ContinueUpdateRollbackにResourcesToSkipを指定してロールバックを再開すると、UPDATE_ROLLBACK_COMPLETEへ戻せる

StackSets/組織展開

Q20. サービスマネージド型のStackSetをOU単位で展開していますが、そのOUに含まれる検証専用の3アカウントだけは対象から外したいという要件が出ました。OUの構成は変更できず、StackSetも1つに保ちたいと考えています。最も適切な方法はどれですか?

  1. A. 除外したい3アカウントを別のOUへ移動し、そちらにはStackSetを展開しない
  2. B. 展開後に対象アカウントのスタックインスタンスを手動で削除する
  3. C. テンプレートのConditionsでアカウントIDを判定し、リソースを作成しないようにする
  4. D. デプロイターゲットでOUを指定したうえで、アカウントフィルターに除外対象を指定する
答えと解説を見る

正解:D

A OUの構成を変更できないという制約に反する。運用都合で組織階層を動かすことにもなり影響範囲が読みにくい

B 自動デプロイによって再作成されるため恒久的な除外にならず、削除作業も繰り返し発生する

C スタックインスタンス自体は作成されて管理対象に残り、アカウントが増減するたびに条件の保守が必要になる

D(正解) 正解。サービスマネージド型のデプロイターゲットはOU指定に加えてアカウントフィルターを持ち、特定のアカウントだけを対象から差し引ける

耐障害性の高いクラウドソリューション

高可用性/Multi-AZ

Q21. ある企業はEC2 Auto Scalingグループ配下のWebアプリケーションをApplication Load Balancerで公開しています。アプリケーションプロセスがメモリリークで応答を返さなくなる障害が月に数回発生しますが、OSは動作し続けるためインスタンスは置き換えられず、ALBのターゲットがunhealthyのまま放置されて実効容量が目減りしています。インスタンスの起動処理には約5分かかります。運用者の手を介さずにこの状態を自動的に解消する方法はどれですか?

  1. A. ALBのターゲットグループの登録解除の遅延を600秒に延長し、異常なターゲットが外れるまでの時間を確保する
  2. B. Auto ScalingグループのヘルスチェックタイプにELBを追加し、ヘルスチェックの猶予期間を起動時間より長く設定する
  3. C. Auto Scalingグループの終了ポリシーをOldestInstanceに変更し、スケールイン時に古いインスタンスを優先的に削除する
  4. D. ALBのヘルスチェックのタイムアウトと間隔を大きくし、unhealthyと判定されるしきい値を引き上げる
答えと解説を見る

正解:B

A 登録解除の遅延は正常なターゲットを外す際に処理中のリクエストを待つための設定で、異常インスタンスの置き換えとは無関係。実効容量の目減りは解消しない

B(正解) 正解。ELBのヘルスチェック結果をAuto Scalingが異常とみなして置き換えるようになる。猶予期間を起動時間より長くしないと、起動途中のインスタンスが誤って終了される

C 終了ポリシーはスケールイン時にどのインスタンスを選ぶかの規則にすぎず、異常検知の契機にはならない。応答しないインスタンスが残る問題は解決しない

D 判定を緩めると異常なターゲットにリクエストが送られ続け、利用者への影響がむしろ悪化する。自動復旧の仕組みにもならない

高可用性/Multi-AZ

Q22. 3つのアベイラビリティゾーンに分散したEC2 Auto Scalingグループで基幹APIを運用しています。過去のAZ障害時に、生き残ったAZでのスケールアウトが起動APIのスロットリングと容量不足で遅れ、数十分にわたり性能が劣化しました。平常時の追加コストは許容できるので、AZが1つ失われた瞬間から全トラフィックを処理できる構成にしたいです。最も確実な設計はどれですか?

  1. A. ターゲット追跡スケーリングのしきい値を下げ、CPU使用率が上がったら早めにスケールアウトさせる
  2. B. AZ障害を検知するCloudWatchアラームからLambdaを起動し、希望容量を2倍に更新する
  3. C. 各AZに必要容量の1.5倍のインスタンスを常時稼働させ、障害時に新たな起動を伴わずに処理できるようにする
  4. D. オンデマンドキャパシティ予約を1つのAZにまとめて購入し、障害時にそこへインスタンスを集約する
答えと解説を見る

正解:C

A しきい値を下げても障害時には結局EC2の起動が必要になり、APIのスロットリングや容量不足という根本原因は残る

B 自動化しても復旧が制御プレーンの成否に依存する点は変わらない。AZ障害時は起動要求が集中し、必要な速度で容量が揃う保証がない

C(正解) 正解。静的安定性の考え方で、障害時に制御プレーンの操作(インスタンス起動)へ依存しないよう、あらかじめ余剰容量を各AZに確保しておく

D 予約を1つのAZに集中させると、そのAZが失われたときに予約ごと使えなくなる。キャパシティ予約はAZごとに分散して保持する必要がある

高可用性/Multi-AZ

Q23. Aurora MySQLクラスターで、ライターに加えて4つのリーダーを運用しています。うち2つは分析クエリ用に小さいインスタンスクラスで動かしており、残り2つは本番と同じクラスです。先日の自動フェイルオーバーで分析用の小さいリーダーが昇格し、本番アプリケーションが数時間にわたり性能不足に陥りました。追加コストをかけずに再発を防ぐ方法はどれですか?

  1. A. 分析用リーダーを別のAuroraクラスターへ移し、バイナリログレプリケーションで同期する
  2. B. クラスターエンドポイントの代わりに、ライターのインスタンスエンドポイントをアプリケーションに設定する
  3. C. 分析用リーダーを削除し、必要なときだけAurora Serverless v2のリーダーを追加する運用にする
  4. D. 分析用リーダーの昇格階層(promotion tier)を、本番用リーダーより大きい数値に設定する
答えと解説を見る

正解:D

A 昇格対象からは外れるが、インスタンスとレプリケーションの追加コストおよび運用が発生し、追加コストをかけないという要件に反する

B インスタンスエンドポイントを直接指定すると、フェイルオーバー後も接続先が旧ライターのままとなり可用性がむしろ低下する

C 分析基盤の作り直しが必要なうえ、昇格順序という根本問題は解決しない。Serverless v2のリーダーも昇格対象になり得る

D(正解) 正解。昇格階層は0〜15で数値が小さいリーダーが優先的に昇格するため、分析用を15などにすれば同クラスの本番用リーダーが先に選ばれる

高可用性/Multi-AZ

Q24. Network Load Balancerの背後に2つのAZでEC2インスタンスを配置しています。AZ-aには8台、AZ-cには2台が登録されていますが、AZ-cの2台だけCPU使用率が飽和し、AZ-aの8台には余裕があります。クライアントは同一リージョンのVPC内からのアクセスのみで、AZ間のデータ転送コストは許容できます。負荷の偏りを解消する最も簡単な方法はどれですか?

  1. A. NLBのターゲットグループでクロスゾーン負荷分散を有効にする
  2. B. NLBのリスナーでラウンドロビンのルーティングアルゴリズムを選択する
  3. C. AZごとにRoute 53の加重レコードを作成し、重みを登録台数の比に合わせる
  4. D. AZごとに別々のNLBを用意し、クライアント側でどちらへ接続するかを振り分ける
答えと解説を見る

正解:A

A(正解) 正解。NLBはクロスゾーン負荷分散が既定で無効のためAZ単位で均等配分される。有効化すると全ターゲットへ均等に分散される(AZ間転送料が発生する)

B ルーティングアルゴリズムはAZ内でのターゲット選択方法を変えるだけで、AZ単位に均等配分するという既定動作は変わらない

C NLBは単一のDNS名でAZごとのノードIPを返すため、台数変動のたびに重みを保守する必要があり運用が複雑になる

D クライアント改修と二重管理が必要になる。設定1つで解決できる問題に対して過剰かつ複雑な対応

高可用性/Multi-AZ

Q25. セッション情報を保持するElastiCache (Redis OSS)クラスターが単一ノードで稼働しており、ノード障害時にセッションが失われて全ユーザーが強制ログアウトになっています。アプリケーションは接続先のエンドポイント名をハードコードしており、コード変更のリリースには数週間かかります。アプリケーションの変更を伴わずに単一障害点を除去する方法はどれですか?

  1. A. 同じ構成の2つ目のクラスターを別AZに作成し、アプリケーションから両方のエンドポイントへ二重書き込みする
  2. B. クラスターモードを有効にしてシャードを増やし、キースペースを複数ノードに分割する
  3. C. レプリケーショングループに別AZのレプリカを追加し、マルチAZの自動フェイルオーバーを有効にする
  4. D. ノードのスナップショットを1時間ごとに取得し、障害時は新しいクラスターへ復元して切り替える
答えと解説を見る

正解:C

A 二重書き込みはアプリケーション改修が前提で要件に反する。整合性の担保や切り替えロジックも自前で持つ必要がある

B シャード分割はスループットと容量のスケール手段であり、レプリカがなければノード障害でそのシャードのデータは失われる

C(正解) 正解。プライマリエンドポイントを維持したままレプリカが自動昇格するため、接続先を変えずに単一障害点を除去できる

D 最大1時間分のセッションが失われ、復元とエンドポイント切り替えの間はダウンタイムも生じる。可用性対策としては不十分

Auto Scaling/自己修復

Q26. 500台規模のEC2 Auto Scalingグループで、四半期ごとにパッチ適用済みの新しいAMIへ入れ替えています。現在は手動で希望容量を倍にしてから古いインスタンスを終了させており、作業に半日かかっています。入れ替え中も常に90%以上の容量を維持し、途中で検証して問題があれば止められるようにしたいです。最も運用負荷が低い方法はどれですか?

  1. A. 新しい起動テンプレートで別のAuto Scalingグループを作成し、ALBのターゲットグループの重みを段階的に移す
  2. B. 起動テンプレートの既定バージョンを更新し、スケジュールされたアクションで毎晩少しずつ入れ替える
  3. C. AWS Systems Manager Patch Managerで稼働中のインスタンスへ直接パッチを適用し、AMIは据え置く
  4. D. 新しい起動テンプレートを指定してインスタンスリフレッシュを開始し、最小正常率とチェックポイントを設定する
答えと解説を見る

正解:D

A ブルー/グリーンとしては成立するが、グループとターゲットグループの二重管理や切り戻し手順を自前で組む必要があり運用負荷が高い

B 既定バージョンの更新は新規起動にしか効かず、既存インスタンスは置き換わらない。完了時期も容量維持も制御できない

C 実行中インスタンスとAMIがドリフトし、次に起動するインスタンスは古いままになる。不変インフラの方針にも反する

D(正解) 正解。インスタンスリフレッシュは最小正常率(90%)を保ちながら段階的に置き換え、チェックポイントで一時停止して検証・中断できる

Auto Scaling/自己修復

Q27. Auto Scalingグループのインスタンスがスケールインで終了すると、ローカルディスクに残っていた直近のアプリケーションログが失われ、障害調査ができないことがあります。ログ転送エージェントはバッファリングしており、フラッシュの完了に最大3分かかります。スケールインを止めずにログの取りこぼしをなくす仕組みはどれですか?

  1. A. Auto Scalingグループでスケールインを無効にし、インスタンスの終了は運用担当者が手動で実施する運用に変更する
  2. B. 終了ライフサイクルフックを追加し、待機状態の間にログをフラッシュしてから完了アクションを送信する
  3. C. スケールインポリシーのクールダウンを5分に延長し、連続した縮退が起きないようにする
  4. D. インスタンスの終了保護を有効にして、Auto Scalingによる終了そのものを防止する
答えと解説を見る

正解:B

A 運用負荷が大きいうえ、スポット中断やヘルスチェック異常による自動終了は防げないため取りこぼしは残る。要件のスケールイン継続にも反する

B(正解) 正解。Terminating:Waitでインスタンスを保留し、その間にログ退避を実行してCompleteLifecycleActionで解放できる。ハートビートで延長も可能

C クールダウンはスケーリング動作の間隔を制御するだけで、個々のインスタンスが終了するまでの猶予時間は生まれない

D 終了保護はスケールイン対象から除外する設定であり、そもそも縮退できなくなる。ログ退避の仕組みにはならない

Auto Scaling/自己修復

Q28. JavaアプリケーションのEC2インスタンスは、起動からキャッシュのウォームアップ完了までに12分かかります。イベント開始直後の5分でトラフィックが3倍になるため、ターゲット追跡スケーリングでは容量の投入が間に合わずエラー率が上がっています。平常時に余剰インスタンスを常時稼働させたくはありません。この要件を満たす方法はどれですか?

  1. A. Auto Scalingグループの「インスタンス事前起動キュー」を有効にし、起動要求を先読みさせる
  2. B. ヘルスチェックの猶予期間を12分へ延長し、ウォームアップ中のインスタンスが終了されないようにする
  3. C. Auto Scalingグループにウォームプールを構成し、初期化済みのインスタンスを停止状態で保持しておく
  4. D. スケールアウトのクールダウンを0秒に設定し、連続してスケーリングできるようにする
答えと解説を見る

正解:C

A架空 そのような機能は存在しない。事前初期化にはウォームプール、需要の先読みには予測スケーリングという実在の機能を使う

B 猶予期間は起動直後の誤った異常判定を防ぐだけで、容量が揃う速度は変わらない。エラー率の上昇は解消しない

C(正解) 正解。ウォームプールは初期化を終えたインスタンスを停止(または休止)状態で保持し、スケールアウト時は起動するだけで投入できる。停止中の課金はEBSなどに限られる

D クールダウンを詰めても1台あたり12分という起動時間は短縮されず、過剰なスケールアウトを招くだけになる

モニタリングとロギング

ログ集約/保管

Q29. ある企業はAWS Organizations配下に50を超えるメンバーアカウントを持ち、各アカウントのアプリケーションログを監査用の集約アカウントへ準リアルタイムで集めたい考えです。メンバーアカウントの開発チームには転送処理を独自実装させたくなく、集約側の受け口は1つに統一したいと考えています。アカウント追加時の作業も最小限にしたい場合、最も運用負荷が低い構成はどれですか?

  1. A. 各アカウントでLambdaを5分ごとに実行し、GetLogEvents APIで取得したログイベントを集約アカウントのS3バケットへ直接アップロードする
  2. B. 各アカウントでCloudWatch Logsのエクスポートタスクを日次実行し、出力先S3バケットのレプリケーションで集約アカウントへ複製する
  3. C. 集約アカウントにKinesis Data Streamsを宛先とするCloudWatch Logsのデスティネーションを作成し、各ロググループにサブスクリプションフィルタを設定する
  4. D. 集約アカウントにCloudWatch Agentを導入し、各メンバーアカウントのクロスアカウントロールを使ってロググループをリモートから収集させる
答えと解説を見る

正解:C

A ポーリング実装をアカウントごとに配布・保守する必要があり、APIのスロットリングや重複取得の制御も自作になるため運用負荷が高くなる

B エクスポートタスクはバッチ処理で完了まで時間がかかり、準リアルタイム要件を満たさない。アカウントごとのスケジュール管理も残る

C(正解) 正解。クロスアカウントのデスティネーションはアクセスポリシーで組織全体に共有でき、送信側はサブスクリプションフィルタを付けるだけで準リアルタイムに転送される

D CloudWatch Agentはホスト上のログやメトリクスを送信するエージェントであり、他アカウントのロググループを引き抜く用途には使えない

ログ集約/保管

Q30. オンプレミスのデータセンターとAWSのEC2インスタンスが混在する環境で、OSメトリクス(メモリ・ディスク使用率)とアプリケーションログを同じダッシュボードで扱いたいと考えています。収集設定はサーバー種別ごとに標準化し、設定変更を全台へ一斉反映できるようにしたいです。最も運用負荷が低い方法はどれですか?

  1. A. 各サーバーにcronを配置し、OSのコマンド出力を整形してPutMetricDataとPutLogEventsを呼ぶスクリプトを構成管理ツールで配布する
  2. B. CloudWatch Agentを導入し、設定ファイルをSSM Parameter Storeに保管してSSMのAmazonCloudWatch-ManageAgent経由で適用する
  3. C. CloudWatchのEC2詳細モニタリングを有効化し、オンプレサーバーはSite-to-Site VPN経由で同じ名前空間へ取り込む
  4. D. AWS Systems Manager Inventoryを全ノードで有効化し、収集されたインベントリデータをCloudWatchメトリクスとして参照する
答えと解説を見る

正解:B

A 自作スクリプトの保守、認証情報の配布、API呼び出しのリトライ制御まで自前になり、標準化された収集基盤に比べて負荷が大きくなる

B(正解) 正解。エージェント設定をParameter Storeで一元管理し、Systems Managerからハイブリッド有効化したオンプレサーバーを含めて一斉に配布・更新できる

C 詳細モニタリングは1分粒度になるだけでメモリやディスク使用率は取得できず、オンプレサーバーのOSメトリクスも対象外である

D Inventoryはソフトウェア構成や設定情報の棚卸しが目的で、継続的なメトリクスやアプリケーションログの収集機能ではない

ログ集約/保管

Q31. 監査部門は、アプリケーションログを7年間保持することを求めています。一方で運用チームがCloudWatchコンソールで検索するのは直近30日分のみです。現在は全ロググループが無期限保持となっており、CloudWatch Logsの保管コストが増大しています。要件を満たしつつコストを最小化する構成はどれですか?

  1. A. ロググループの保持期間を7年に設定し、CloudWatch LogsのInfrequent Accessログクラスへ全ロググループを切り替える
  2. B. ロググループの保持期間を30日に設定し、削除前に日次のエクスポートタスクでS3へ書き出すようLambdaをスケジュール実行する
  3. C. ロググループの保持期間を30日に設定し、CloudWatchの請求アラームで超過分を検知して手動でアーカイブする
  4. D. ロググループの保持期間を30日に設定し、サブスクリプションフィルタからData Firehose経由でS3へ継続的に配信する
答えと解説を見る

正解:D

A 検索性は残るが、7年分をCloudWatch Logsに置き続けるためS3へ退避する構成よりも保管コストが大幅に高くなる

B エクスポートタスクは同時実行数の上限やタスク管理の作りこみが必要で、取りこぼし時の再実行制御も自作になるため継続転送より運用負荷が高くなる

C 請求アラームはコストの通知にすぎず、7年保持の要件を満たすアーカイブそのものは実現されない。手動運用も現実的ではない

D(正解) 正解。CloudWatch Logs側は短期保持でコストを抑え、Firehoseによる継続配信でS3へ集約できる。S3側でライフサイクルルールによりGlacierストレージクラスへ移行すれば、7年分をさらに安価にアーカイブできる

ログ集約/保管

Q32. Amazon ECS on AWS Fargate上のマイクロサービスで、すべての標準出力ログは分析基盤のAmazon OpenSearch Serviceへ、ERRORレベルのログのみ別途S3の長期保管バケットへ送りたいという要件が出ました。アプリケーションのコードは変更せず、タスク定義の変更だけで実現したいです。最も適切な方法はどれですか?

  1. A. タスク定義でFireLensログドライバーを設定し、Fluent Bitのサイドカーで出力先を条件により振り分ける
  2. B. awslogsログドライバーを2つ設定し、片方をOpenSearch Service、もう片方をS3バケットへ向ける
  3. C. awslogsログドライバーでCloudWatch Logsに集約し、ロググループに2本のメトリクスフィルタを設定して各宛先へ配信する
  4. D. FargateタスクにEBSボリュームをアタッチし、ログファイルを保存して日次バッチで両方の宛先へコピーする
答えと解説を見る

正解:A

A(正解) 正解。FireLensはFluent Bitの設定でフィルタと複数出力を定義できるため、アプリを変更せずタスク定義だけでルーティングを実現できる

B コンテナに設定できるログドライバーは1つだけで、awslogsの出力先はCloudWatch Logsのロググループのみである

C メトリクスフィルタはログをメトリクス化するだけで、ログ本文を他サービスへ配信する機能はない。転送にはサブスクリプションフィルタが必要

D 永続ボリュームを介したバッチ転送はリアルタイム性がなく、タスク終了時のログ喪失リスクもあり、コンテナのログ収集手段として不適切である

ログ集約/保管

Q33. セキュリティ部門から、個人情報を含む可能性のあるアプリケーションログについて、保管時に暗号化したうえで暗号化キーの権限と利用状況を組織側で管理・監査できる状態にするよう指示がありました。ログは引き続きLogs Insightsで検索でき、アプリケーションの改修は伴わないことが条件です。既存のCloudWatch Logsのロググループに適用する構成として最も適切なものはどれですか?

  1. A. ロググループにサーバー側暗号化(SSE-S3)を有効化し、キーのローテーション間隔を1年に設定する
  2. B. アプリケーション側でAWS Encryption SDKを用いてログ本文を暗号化してからPutLogEventsで送信する
  3. C. カスタマー管理のKMSキーを作成し、logsサービスプリンシパルを許可してロググループに関連付ける
  4. D. ロググループを保持期間1日に設定し、Data Firehose経由でS3に転送してからバケットのデフォルト暗号化に任せる
答えと解説を見る

正解:C

A SSE-S3はS3の暗号化オプションであり、CloudWatch Logsのロググループに設定するものではない。キー管理の監査要件も満たせない

B 暗号化は実現できるが、Logs Insightsでの検索やメトリクスフィルタが機能しなくなり、アプリ改修も必要なため要件に対して過剰かつ運用性を損なう

C(正解) 正解。CloudWatch Logsはassociate-kms-keyでカスタマー管理キーを指定でき、キーポリシーとCloudTrailによって利用の管理と監査が可能になる

D 転送後は暗号化されるが、CloudWatch Logs上に保持される期間は要件どおりの暗号化がされず、保管時暗号化の要求を満たさない

メトリクス/アラーム設計

Q34. AWS Lambdaで動く決済処理から、顧客ID・加盟店IDといった高カーディナリティの次元を含む業務メトリクスを出したいと考えています。関数の同時実行数が非常に多いため、PutMetricData APIの呼び出しがスロットリングされ、関数の実行時間とコストも増加しています。アプリケーションの計装を大きく変えずにこの問題を解消したい場合、最も適切な解決策はどれですか?

  1. A. PutMetricDataの呼び出しをLambda内でバッファリングし、100件ごとにまとめて非同期送信する
  2. B. 埋め込みメトリクスフォーマット(EMF)で構造化ログを標準出力に書き、CloudWatch Logs側でメトリクスを生成させる
  3. C. サービスクォータの引き上げを申請してPutMetricDataのレートを拡大し、関数のメモリ割り当てを増やす
  4. D. CloudWatchメトリクスストリームを有効化し、Amazon Data Firehose経由でS3へ継続的に配信して外部の基盤で集計する
答えと解説を見る

正解:B

A Lambdaはレスポンス返却後に処理が凍結されるためバッファの取りこぼしが起き、同時実行が多い環境ではスロットリングも解消しない

B(正解) 正解。EMFはAPIを呼ばずログ出力だけでメトリクスを生成でき、高カーディナリティの項目はログのプロパティとして保持できる

C 呼び出し回数と実行時間の課題が残るうえコストも増え、高カーディナリティ次元によるカスタムメトリクス料金の増大も解決しない

D メトリクスストリームはCloudWatchに取り込み済みのメトリクスを外部へ送り出す機能であり、送信元のPutMetricData呼び出しは減らない。スロットリングも実行時間も改善しない

メトリクス/アラーム設計

Q35. 運用チームは、1つのマイクロサービスにCPU・メモリ・エラー率・レイテンシの4つのアラームを設定しています。基盤障害が起きるとこれらが同時に発報し、オンコール担当者へ大量の通知が届いてアラート疲れが起きています。個々のアラームは調査時に参照したいので削除したくありません。最も適切な対応はどれですか?

  1. A. 4つのアラームの評価期間を15分に延ばし、通知が集中しないようにしきい値を緩和する
  2. B. 4つのメトリクスをメトリクス演算で1つの合成メトリクスにまとめ、そのメトリクスにだけアラームを設定する
  3. C. SNSトピックの配信ポリシーで再試行間隔を延ばし、短時間に届く重複通知を抑制する
  4. D. 既存アラームの通知先を外し、それらを子として参照する複合アラームを作成してSNS通知を設定する
答えと解説を見る

正解:D

A 検知が遅れ重大障害への対応が遅延する。通知数の集中も根本的には解消されず、監視の感度だけを落とすことになる

B CPU使用率やレイテンシなど単位の異なるメトリクスを演算しても意味のある値にならない。個々のアラームを調査用に残したいという要件にも反する

C 配信ポリシーは配信失敗時の再試行制御であり、別々のアラームから発生する複数通知を束ねる機能ではない

D(正解) 正解。複合アラームは子アラームの状態を論理式で評価し、通知を1本に集約できる。子アラームは調査用にそのまま残せる

メトリクス/アラーム設計

Q36. 夜間はリクエストがまったく発生しない社内向けAPIがあります。ALBのターゲット5XXエラー数に対するアラームを設定したところ、リクエストがない時間帯にメトリクスが送信されず、アラームがINSUFFICIENT_DATAになってオンコールへ通知が飛んでしまいます。最小の変更で誤検知をなくす方法はどれですか?

  1. A. アラームの欠落データの処理をnotBreachingに設定する
  2. B. アラームの欠落データの処理をignoreに設定し、評価期間を1時間に延長する
  3. C. アラームアクションをINSUFFICIENT_DATA状態にも設定し、通知先を別トピックへ切り替える
  4. D. ALBのアクセスログをS3に出力し、Athenaの定期クエリでエラー数を集計してから通知する
答えと解説を見る

正解:A

A(正解) 正解。データポイントが存在しない期間を「しきい値内」として扱うため、トラフィックのない時間帯に状態が変化せず誤通知を防げる

B ignoreは直前の状態を維持するため、既にALARMだった場合に解除されないまま残る。評価期間の延長も検知遅延を招く

C 通知先を分けるだけで発報自体は続く。むしろINSUFFICIENT_DATAでの通知を明示的に増やす設定であり逆効果である

D 検知の即時性が失われ、クエリ基盤の構築という大きな変更が必要になる。最小の変更という要件に反する

インシデントとイベントへの対応

EventBridge/イベント駆動

Q37. あるチームは、S3バケットにアップロードされた画像のうち、特定のプレフィックス配下かつ拡張子が .pngのオブジェクトだけを、Lambda関数とStep Functionsステートマシンの両方で並行処理したいと考えています。今後ターゲットを追加する際にバケット側の設定変更を不要にし、抽出条件もあとから柔軟に変更できるようにしたいです。最も運用負荷が低い構成はどれですか?

  1. A. S3バケットでEventBridgeへの通知を有効化し、ルールのイベントパターンで対象を絞って複数ターゲットを登録する
  2. B. S3のイベント通知でプレフィックスとサフィックスを指定し、宛先ごとに通知設定を1件ずつ追加していく
  3. C. CloudTrailのデータイベントを有効化し、AWS API Call via CloudTrailイベントをルールで受け取って処理する
  4. D. S3のイベント通知をSNSトピックへ送り、両ターゲットをサブスクライブしてフィルターポリシーで絞り込む
答えと解説を見る

正解:A

A(正解) 正解。S3のEventBridge通知は1本のイベント配信で済み、条件変更もターゲット追加もルール側の変更だけで完結する

B 宛先を増やすたびにバケット設定の変更が必要になり、抽出条件もプレフィックスとサフィックスに限定されるため拡張性が低い

C オブジェクトレベルのデータイベントは記録コストが大きく配信遅延も増える。ネイティブな通知で足りる場面でCloudTrailを経由させる必然性がない

D SNSの属性フィルターは発行側がメッセージ属性を設定している前提だが、S3通知はオブジェクトキーを属性として持たないため .pngだけを抽出できない

EventBridge/イベント駆動

Q38. EventBridgeのルールからAmazon GuardDutyの検出結果をSNS経由でメール通知していますが、本文がJSONのままで運用担当者が読みづらいという苦情が出ています。Lambda関数などのコンポーネントを増やさずに、重大度・アカウントID・検出タイプだけを含む短い文面に整形して通知したいです。どの方法を採るべきですか?

  1. A. ルールのターゲット設定で入力トランスフォーマーを構成し、抽出した値を埋め込んだ文字列をSNSに渡す
  2. B. ルールのターゲットに入力パスのみを指定し、JSONから必要なフィールドだけを切り出してSNSに送信する
  3. C. GuardDutyの検出結果をSecurity Hubに集約し、Security Hubの通知設定で本文テンプレートを指定する
  4. D. SNSのサブスクリプションフィルターポリシーで不要なフィールドを除外し、残りを本文として配信する
答えと解説を見る

正解:A

A(正解) 正解。入力トランスフォーマーは入力パスで取り出した値をテンプレートに差し込めるため、追加の実行基盤なしで通知文を整形できる

B 入力パスは値の切り出しだけを行い、複数の値を1つの文章に組み立てることはできない。整形にはテンプレートを伴う入力トランスフォーマーが要る

C Security Hubには通知本文のテンプレートを定義する機能がなく、検出結果の集約先を増やしても本文の見た目は変わらない

D フィルターポリシーはメッセージを配信するかどうかを判定するだけで、本文の一部を削ったり書き換えたりする用途には使えない

EventBridge/イベント駆動

Q39. 決済システムでは注文イベントをEventBridgeのカスタムバス経由で複数のマイクロサービスに配信しており、そのバスではアーカイブを有効にしています。あるサービスの不具合で過去6時間分のイベント処理に失敗していたことが後から判明しました。ほかのサービスには重複配信せず、障害中のイベントだけを修正後のサービスへ再度届けたいです。最も適切な方法はどれですか?

  1. A. アーカイブから対象期間を指定してリプレイを開始し、再配信先として当該サービスのルールだけを選択する
  2. B. アーカイブから対象期間のイベントをエクスポートし、PutEvents APIで同じイベントバスに再投入する
  3. C. ターゲットに設定したDLQのメッセージを再処理用のLambdaで読み出し、サービスのAPIを直接呼び出す
  4. D. イベントバスのルールを一度無効化してから有効化し、保留されているイベントを再送させる
答えと解説を見る

正解:A

A(正解) 正解。リプレイは期間と再生対象のルールを指定できるため、影響を受けたサービスにだけ過去のイベントを再配信できる

B 再投入したイベントはバス上の全ルールに一致し得るため、正常に処理済みだったほかのサービスにも重複配信されてしまう

C DLQに入るのはターゲットへの配信自体に失敗したイベントだけで、配信後にサービス内部で処理が失敗したイベントは含まれない

D EventBridgeは配信済みのイベントをバスに保持しないため、ルールを操作しても過去のイベントが再送されることはない

EventBridge/イベント駆動

Q40. 組織には50を超えるAWSアカウントがあり、各アカウントで発生するEC2インスタンスの状態変化などのイベントを、監査用の中央アカウントに集約して分析したいと考えています。イベントは取りこぼしなく中央へ届ける必要があり、新しいアカウントが追加されても設定作業がほとんど増えない形にしたいです。メンバーアカウント側で独自の転送基盤を維持することは避けたいです。最も適切な設計はどれですか?

  1. A. 各アカウントのLambda関数でイベントを受け取り、中央アカウントのAPI GatewayへHTTPSで転送する共通テンプレートを配布する
  2. B. 中央アカウントのイベントバスに組織を許可するリソースポリシーを付与し、中央バスへ転送するルールをStackSetsで配布する
  3. C. 中央アカウントのルールで各メンバーアカウントのデフォルトイベントバスをソースに指定し、まとめて取得する
  4. D. 各アカウントのCloudTrailを中央のS3バケットへ集約し、S3イベントを起点に中央のイベントバスへ変換する
答えと解説を見る

正解:B

A EventBridgeのクロスアカウント配信をそのまま使えば済むところに、独自の転送基盤と再試行処理の保守が発生してしまう

B(正解) 正解。イベントバスのリソースポリシーで組織単位のPutEventsを許可し、転送ルールをStackSetsの自動デプロイで配ればアカウント追加時の作業がなくなる

C ルールは自分のアカウントのイベントバス上のイベントしか評価できず、他アカウントのバスを直接参照する設定は存在しない

D CloudTrailの配信は数分の遅延があり、インスタンスの状態変化のようなAPI呼び出し以外のサービスイベントは記録対象にならない

EventBridge/イベント駆動

Q41. EventBridgeのルールからLambda関数を呼び出してイベントを処理していますが、下流のRDS障害中に関数がエラーを返し続け、一部のイベントが失われました。復旧までの間はしばらく再試行を続け、それでも処理できなかったイベントは後から確実に再処理できるようにしたいです。最小の変更で実現する方法はどれですか?

  1. A. Lambdaの非同期呼び出し設定で最大再試行回数を0にし、送信先にSNSトピックを指定して失敗を通知する
  2. B. EventBridgeのアーカイブを有効にし、障害復旧後に対象期間の全イベントをリプレイして取りこぼしを補う
  3. C. ルールのターゲットにDLQ用のSQSキューを設定し、再試行ポリシーの最大経過時間と再試行回数を調整する
  4. D. Lambda関数のコードで例外を捕捉して正常終了させ、失敗したイベントをログに出力して後から手動で再投入する
答えと解説を見る

正解:C

A 再試行を止めると一時的な障害でも即座に失敗が確定し、通知は届いてもイベント本体を後から再処理する手段が残らない

B 期間指定のリプレイでは成功していたイベントも再配信されるため、処理が冪等でない限り二重処理を引き起こす

C(正解) 正解。ターゲット単位の再試行ポリシーで粘り強く再試行させ、上限に達したイベントはDLQに退避されるので後から再処理できる

D エラーを隠すとEventBridgeもLambdaも失敗を検知できず、再投入をログからの手作業に頼ることになり運用負荷が上がる

EventBridge/イベント駆動

Q42. 予約システムでは「予約開始の1時間前に1回だけ通知する」スケジュールが予約ごとに必要で、その数は数十万件に達します。これまでは予約のたびにEventBridgeのルールを作成していましたが、ルール数の上限に達し、キャンセル時の後始末も追いつかなくなっています。通知時刻の精度は1分以内を維持しつつ、運用負荷を増やさずにスケールさせる方法はどれですか?

  1. A. 1分ごとに動く単一のルールでLambdaを起動し、予約テーブル全体をスキャンして対象時刻の予約を抽出する
  2. B. SQSの遅延キューに通知メッセージを送り、最大15分の遅延を繰り返し適用して通知時刻まで待たせる
  3. C. ルール数の上限緩和を申請したうえで、予約ごとにcron式のルールを作成する現行方式を継続する
  4. D. EventBridge Schedulerで予約ごとに一回限りのスケジュールを作成し、完了後に自動削除されるよう設定する
答えと解説を見る

正解:D

A 件数の増加に比例して毎分のスキャンコストが膨らみ、通知の精度も実行間隔に依存するためスケール特性が悪い

B SQSの配信遅延は最大15分のため、1時間先の通知には再投入のループを自前で組む必要があり実装と失敗時の追跡が複雑になる

C 上限を引き上げても数十万件のルールを管理するのは非現実的で、ルールの棚卸しや削除漏れの運用が破綻する

D(正解) 正解。Schedulerは数百万件規模の一回限りスケジュールを扱え、完了後の自動削除により後始末も不要になる

自動修復/SSM Automation

Q43. EC2インスタンス群でアプリケーションログが肥大化し、ルートボリュームの空き容量が枯渇して障害になることが月に数回あります。運用チームは検知のたびに手動で接続し、古いログを削除しています。インスタンスを入れ替えずにこの対応を自動化し、いつどのインスタンスで何が実行されたかも後から追跡できるようにしたいです。最も運用負荷が低い方法はどれですか?

  1. A. ログ削除スクリプトをcronで定期実行する仕組みをAMIに組み込み、全インスタンスを新しいAMIで入れ替える
  2. B. EC2のステータスチェック失敗を検知するCloudWatchアラームから、インスタンスを再起動して領域を解放する
  3. C. CloudWatchエージェントでディスク使用率を収集し、しきい値超過アラームのアクションでSSM Automationを実行する
  4. D. CloudWatch Logsのメトリクスフィルターでディスク使用率を抽出し、Auto Scalingでスケールアウトを実行する
答えと解説を見る

正解:C

A 実装は可能だがインスタンスの入れ替えが必要で、しきい値の調整のたびにAMIを作り直す運用が発生する

B ステータスチェックはOSやハードウェアの疎通を見るもので、ディスク使用率の逼迫は検知できず再起動でログも消えない

C(正解) 正解。アラームからAutomationランブックを直接起動でき、実行履歴がSystems Managerに残るため追跡も容易になる

D ディスク使用率はログの本文ではなくメトリクスとして取得するものであり、台数を増やしても既存インスタンスの空き容量は回復しない

セキュリティとコンプライアンス

IAM/権限管理

Q44. ある企業では開発チームがサーバーレスアプリケーションを頻繁に追加しており、そのたびにLambda実行ロールの作成をクラウド基盤チームへ依頼しています。基盤チームは依頼対応が負担になっているため、開発者自身にロールを作成させたいと考えていますが、開発者が管理者相当の権限を持つロールを作って権限昇格することは確実に防がなければなりません。最も運用負荷が低く安全な方法はどれですか?

  1. A. 開発者にはロール作成を許可せず、共通のLambda実行ロールを全関数で共有させる
  2. B. 開発者にiam:CreateRoleを許可し、iam:PermissionsBoundary条件で境界の付与を必須にする
  3. C. 開発者にIAMFullAccessを付与したうえで、作成されたロールをAWS Configのカスタムルールで検査して通知する
  4. D. 開発者アカウントに適用するSCPでiam:CreateRoleを拒否し、申請フローでの作成を継続する
答えと解説を見る

正解:B

A 共通ロールの権限は全関数が必要とする権限の和集合になり、最小権限から大きく乖離する。委任という要件も満たさない

B(正解) 正解。アクセス許可境界の付与を条件で強制すると、作成されたロールの実効権限は境界の範囲内に制限されるため、権限昇格を防ぎつつロール作成を委任できる

C IAMFullAccessは自身の権限を拡大できるため権限昇格を許す。Configは発見的統制であり、危険なロールが作られる瞬間を止められない

D ロール作成を委任するという目的に反し、基盤チームの負担も現状のまま変わらない。ガードレールとしては機能するが課題の解決にならない

IAM/権限管理

Q45. GitHubでホストしているリポジトリのGitHub Actionsワークフローから、AWSアカウントへアプリケーションをデプロイしています。現在はIAMユーザーのアクセスキーをGitHubのシークレットに保存していますが、長期認証情報を廃止し、さらに特定のリポジトリのmainブランチで実行されるワークフローだけがデプロイロールを引き受けられる状態にしたいと考えています。最も適切な実装はどれですか?

  1. A. OIDC IDプロバイダーを登録し、信頼ポリシーでsubを該当リポジトリのrefs/heads/mainに限定する
  2. B. OIDC IDプロバイダーを登録し、信頼ポリシーの条件はaudがsts.amazonaws.comであることのみとする
  3. C. アクセスキーは維持したままSecrets Managerに保存し、90日ごとに自動ローテーションさせる
  4. D. デプロイ用IAMユーザーのポリシーにaws:SourceIp条件を追加し、GitHubの実行環境のIP範囲に限定する
答えと解説を見る

正解:A

A(正解) 正解。OIDCフェデレーションで長期キーが不要になり、sub条件でリポジトリとブランチを限定することで意図したワークフローだけがロールを引き受けられる

B audだけではGitHub上の任意のリポジトリのワークフローがロールを引き受けられてしまう。subによる絞り込みが欠かせない

C ローテーションしても長期認証情報が存在し続けるため、廃止という要件を満たさない。ブランチ単位の制限も実現できない

D GitHubホストランナーのIP範囲は広大かつ変動し、他の利用者とも共有される。長期キーも残るため要件を満たさない

IAM/権限管理

Q46. 本番アカウントには長年運用されてきたEC2インスタンスプロファイル用のロールがあり、複数のサービスに対してワイルドカードのアクションを許可しています。監査指摘を受け、実際に使用されているAPIアクションだけに絞り込みたいと考えています。過去90日分のCloudTrail証跡はS3に保管されています。アクション単位のポリシー案を最小の手作業で得る方法はどれですか?

  1. A. IAMコンソールのアクセスアドバイザーで最終アクセス日時を確認し、未使用のサービスを除外する
  2. B. IAM Access Analyzerの外部アクセス分析を有効化し、検出結果に含まれないアクションを削除する
  3. C. IAM Access Analyzerのポリシー生成で、対象ロールとCloudTrail証跡を指定してポリシーを生成する
  4. D. CloudTrail Lakeでイベントを集計し、抽出したアクション一覧から手作業でポリシーを書き起こす
答えと解説を見る

正解:C

A 最終アクセス情報は原則としてサービス単位の粒度であり、サービス内のどのアクションが使われたかまでは特定できない

B 外部アクセス分析は組織外と共有されているリソースを検出する機能で、ロールの権限使用実績とは無関係

C(正解) 正解。ポリシー生成は指定期間のCloudTrailから実際に呼び出されたアクションを抽出し、アクション単位のIAMポリシーを自動生成する

D 技術的には可能だが、クエリ作成とポリシーの手書きが必要で手作業が多く、最小の手間という要件に反する

IAM/権限管理

Q47. 外部のSaaS型コスト最適化ベンダーに、自社アカウントの読み取り専用アクセスを提供することになりました。ベンダーは自社のAWSアカウントからクロスアカウントロールを引き受ける方式を求めています。ベンダーが他の顧客向けの処理で誤って自社のリソースへアクセスしてしまう、いわゆる混乱した代理問題を防ぎたいと考えています。信頼ポリシーに加えるべき設定はどれですか?

  1. A. aws:MultiFactorAuthPresentがtrueであることを条件に追加し、MFAを必須にする
  2. B. aws:PrincipalOrgID条件で自社の組織IDに一致することを必須にする
  3. C. ロールの最大セッション時間を1時間に短縮し、読み取り専用ポリシーだけを付与する
  4. D. ベンダーが顧客ごとに発行する一意の値をsts:ExternalId条件で必須にする
答えと解説を見る

正解:D

A ベンダーの自動化処理はMFAを提示できないため運用が成立しない。そもそも混乱した代理問題への対策ではない

B ベンダーは自社組織の外部にいるため、この条件を課すとすべてのアクセスが拒否され、連携そのものが成立しない

C 権限と有効期間は狭められるが、ベンダーが顧客を取り違えて自社アカウントを操作する事象そのものは防げない

D(正解) 正解。外部IDを条件に含めると、その値を知る呼び出しだけがロールを引き受けられるため、第三者による混乱した代理問題を防止できる

IAM/権限管理

Q48. 20を超えるアカウントを持つ組織で、運用担当者が各アカウントに個別のIAMユーザーを持ち、長期アクセスキーでCLIを利用しています。監査ではキーの棚卸しと退職者の権限剥奪が困難であると指摘されました。職務ごとの権限をアカウント横断で一元管理し、CLIでも一時認証情報だけを使う状態にしたいと考えています。最も運用負荷が低い方法はどれですか?

  1. A. 共有アカウントにIAMユーザーを集約し、各アカウントのロールへスイッチロールさせる
  2. B. IAM Identity Centerの権限セットをアカウントに割り当て、CLIはSSOログインで使う
  3. C. 各アカウントのIAMユーザーに対し、アクセスキーの90日ローテーションをConfigルールで強制する
  4. D. Amazon CognitoのIDプールで一時認証情報を発行し、運用担当者のCLIプロファイルに設定する
答えと解説を見る

正解:B

A 集約はできるが共有アカウントに長期キーが残る。各アカウントのロールとポリシーを手作業で同期する必要もある

B(正解) 正解。権限セットを職務ごとに定義して複数アカウントへ割り当てられ、CLIも一時認証情報で動作するため長期キーを完全に廃止できる

C ローテーションしても長期キーは存在し続け、アカウントごとの棚卸し負荷と権限管理の分散も解消されない

D Cognitoはアプリケーションのエンドユーザー向けのIDサービスであり、従業員による管理アクセスの標準的な仕組みではない

Organizations/SCP/ガードレール

Q49. AWS Organizationsで、RootにはFullAWSAccess、Sandbox OUにはap-northeast-1以外のリージョンでのAPI呼び出しを拒否するSCPが適用されています。Sandbox OU配下のあるアカウントでCloudFront用のACM証明書をus-east-1に作成する必要が生じたため、そのアカウントへus-east-1を許可するSCPを直接アタッチしましたが、依然として拒否されます。原因はどれですか?

  1. A. アカウントに直接アタッチしたSCPは親OUのSCPより優先されるが、反映に最大24時間かかる
  2. B. SCPはIAMポリシーを上書きしないため、IAM側でus-east-1を許可すれば呼び出せるようになる
  3. C. 階層のどこかに明示的なDenyがあると許可できないため、Sandbox OUのSCPを修正する
  4. D. 1つのアカウントに複数のSCPをアタッチすると評価が停止するため、1つに統合する必要がある
答えと解説を見る

正解:C

A SCPにアタッチ先による優先順位という概念はなく、反映は通常ごく短時間。時間の経過では解決しない

B SCPの明示的なDenyはIAM側の許可があっても最終的に拒否される。IAMポリシーの変更では回避できない

C(正解) 正解。SCPはルートから対象アカウントまでの各階層すべてで許可されて初めて有効になり、いずれかの明示的なDenyが最優先される

D 複数のSCPは同時に評価され、統合は不要。評価が停止するという動作は存在しない

Organizations/SCP/ガードレール

Q50. 金融系の企業が、組織内すべてのアカウントのAmazon S3バケットについて、自社組織外のプリンシパルからのアクセスを一括で禁止したいと考えています。バケット数は数千に及ぶため、個々のバケットポリシーを書き換える運用は避けたいところです。既存のIAMポリシーやバケットポリシーを維持したまま、組織全体に予防的な上限を課す方法はどれですか?

  1. A. リソースコントロールポリシー(RCP)を適用し、aws:PrincipalOrgIDが一致しないアクセスを拒否する
  2. B. サービスコントロールポリシー(SCP)を組織に適用し、組織外のプリンシパルによるs3:GetObjectを拒否する
  3. C. 全バケットでブロックパブリックアクセスを有効化し、Configルールで逸脱を継続的に検出する
  4. D. AWS Configの適合パックでバケットポリシーを評価し、非準拠バケットを自動修復する
答えと解説を見る

正解:A

A(正解) 正解。RCPはリソース側に組織全体の上限を課すポリシーで、個々のバケットポリシーを変更せずに組織外プリンシパルからのアクセスを拒否できる

B SCPは組織内アカウントのプリンシパルの権限にしか作用しないため、組織外からのアクセスを制御する用途には使えない

C パブリック公開は防げるが、特定の外部アカウントを指定したクロスアカウント共有は依然として可能なため要件を満たさない

D 評価と修復は作成後に行われる発見的統制であり、予防的にアクセスを止めるという要件を満たさない

続きは演習アプリで

このページの50問は、演習アプリなら弱点に合わせた出題・成績記録つきで解けます。全200問と本番形式の模擬試験は期間パス(1,500円/30日、自動更新なし)で利用できます。

AWS DOPの演習を無料で始める →

AWS DOP問題集の詳細(出題範囲・よくある質問)→

掲載している問題はすべてトキヌクのオリジナル問題です。実試験問題の流出コピー(ブレインダンプ)は一切使用していません。本サービスは非公式の学習教材であり、各認定団体とは提携・承認・後援関係にありません。試験名は各団体の商標または登録商標です。
トキヌク トップページへ