AWS Certified Developer - Associate (DVA-C02) 試験ガイド
バージョン 1.3 DVA-C02
はじめに
AWS Certified Developer - Associate (DVA-C02) 試験は、開発者の役割を行う人物を対象としています。この試験では、AWS クラウドベースのアプリケーションの開発、テスト、デプロイ、デバッグの能力を証明します。
この試験では、次のタスクを完了する能力も検証します:
- AWS上でアプリケーションを開発および最適化する。
- 継続的インテグレーションと継続的デリバリー (CI/CD) ワークフローを使用してパッケージ化およびデプロイする。
- アプリケーションコードおよびデータのセキュリティを確保する。
- アプリケーションの問題を特定し解決する。
対象候補の説明
対象候補には、AWS サービスを使用したアプリケーションの開発および保守の実務経験が1年以上必要です。
推奨される一般的なIT知識
対象候補には、以下の一般的なIT知識が必要です:
- 1つ以上の高水準プログラミング言語の熟達
- アプリケーションライフサイクル管理の理解
- クラウドフォーカスのアプリケーションを記述するための基本的な理解
- 機能的なアプリケーションの開発能力
- 開発ツールの使用経験
推奨されるAWS知識
対象候補には、以下のタスクを完了できる能力が必要です:
- AWS サービスのAPI、AWS Command Line Interface (AWS CLI)、SDKを使用してアプリケーションを開発およびセキュリティ保護する。
- CI/CDパイプラインを使用してAWSにアプリケーションをデプロイする。
対象候補には期待されないタスク
以下のリストには、対象候補に期待されないタスクが含まれています。このリストは網羅的ではありません。これらのタスクは試験の範囲外です:
- アーキテクチャの設計 (分散システム、マイクロサービス、データベーススキーマ、モデリングなど)。
- CI/CDパイプラインの設計と作成。
- IAMユーザーとグループの管理。
- サーバーとオペレーティングシステムの管理。
- AWS ネットワークインフラストラクチャの設計 (Amazon VPC、AWS Direct Connectなど)。
付録には、試験に登場する可能性のある技術とコンセプト、試験の範囲に含まれるAWSサービスと機能、試験の範囲外のAWSサービスと機能のリストがあります。
試験内容
回答形式
試験には2種類の質問があります:
- 多肢選択: 1つの正解と3つの誤答肢から成ります
- 複数選択: 5つ以上の選択肢から2つ以上の正解を選択します
最も適切な回答を1つ以上選択してください。誤答肢は、知識や技術が不十分な受験者が選択しそうな、一見して正解に見えるものです。
未回答の問題は誤答として扱われ、不正解を答えても減点はありません。この試験には採点される50問と採点されない15問の合計65問があります。
採点外の問題
この試験には採点外の15問があり、これらの問題は得点に影響しません。AWSは、これらの未採点問題の出力を評価し、今後の採点問題として使用できるかどうかを判断します。これらの未採点問題は試験では特定されません。
試験結果
AWS Certified Developer - Associate (DVA-C02) 試験は合格/不合格の判定です。この試験は、AWSの専門家が認証業界のベストプラクティスとガイドラインに従って設定した最低基準に基づいて採点されます。
試験結果は100-1,000のスケール得点で報告されます。合格ラインは720点です。得点は全体の成績を示し、合格したかどうかを示します。スケール得点モデルにより、難易度が若干異なる複数の試験フォームの得点を同等に換算できます。
成績報告書に各セクションのパフォーマンス分類が記載される場合があります。この試験は補償型採点モデルを使用するため、各セクションで合格点を取る必要はありません。全体として合格すれば良いです。
各試験セクションには特定の重みがあるため、一部のセクションには他のセクションよりも多くの問題があります。パフォーマンス分類表には、受験者の長所と短所が要約されています。セクションレベルのフィードバックは注意深く解釈する必要があります。
試験内容の概要
この試験ガイドには、試験の重み付け、領域、タスクが記載されています。ただし、試験の網羅的な内容はここに記載されていません。各タスクの詳細な説明は、試験の準備に役立ちます。
試験の内容領域とその重み付けは以下の通りです:
- 領域 1: AWS サービスを使用した開発 (得点内容の32%)
- 領域 2: セキュリティ (得点内容の26%)
- 領域 3: デプロイ (得点内容の24%)
- 領域 4: トラブルシューティングと最適化 (得点内容の18%)
領域 1: AWS サービスを使用した開発
タスク 1: AWS上でホストされるアプリケーションのコードを開発する
知識:
- アーキテクチャパターン (イベントドリブン、マイクロサービス、モノリシック、コレオグラフィ、オーケストレーション、ファンアウトなど)
- 冪等性
- ステートフルとステートレスの概念の違い
- 密結合と疎結合コンポーネントの違い
- フォールトトレラントなデザインパターン (リトライ指数バックオフ、ランダム遅延、デッドレターキューなど)
- 同期と非同期パターンの違い
スキル:
- プログラミング言語 (Java、C#、Python、JavaScript、TypeScript、Go など) でフォールトトレラントで耐障害性のあるアプリケーションを作成する
- APIを作成、拡張、維持する (レスポンス/リクエスト変換、検証ルールの適用、ステータスコードのオーバーライドなど)
- 開発環境でユニットテストを書いて実行する (AWS Serverless Application Modelなど)
- メッセージングサービスを使用するコードを書く
- AWS サービスのAPIとAWS SDKを使用してインタラクションするコードを書く
- データストリーミングを処理するコードを書く
タスク 2: AWS Lambdaのコードを開発する
知識:
- イベントソースマッピング
- ステートレスアプリケーション
- ユニットテスト
- イベントドリブンアーキテクチャ
- スケーラビリティ
- VPC内のプライベートリソースへのLambdaコードからのアクセス
スキル:
- 環境変数、パラメータ (メモリ、並行性、タイムアウト、ランタイム、ハンドラー、レイヤー、拡張機能、トリガー、宛先) を定義してLambda関数を設定する
- コード (Lambda宛先、デッドレターキュー) を使用してイベントライフサイクルとエラーを処理する
- AWSサービスとツールを使用してテストコードを書いて実行する
- Lambdaを他のAWSサービスと統合する
- Lambdaの最適なパフォーマンスを調整する
タスク 3: アプリケーション開発でデータストアを使用する
知識:
- リレーショナルデータベースと非リレーショナルデータベース
- 作成、読取、更新、削除 (CRUD) 操作
- 偏りのないパーティショニングのためのハイカーディナリティのパーティションキー
- ファイル、オブジェクト、データベースなどのクラウドストレージオプション
- データベースの整合性モデル (強整合性、eventual consistency)
- クエリとスキャン操作の違い
- Amazon DynamoDBのキーとインデックス
- キャッシュ戦略 (ライトスループット、リードスループット、遅延読み込み、TTL)
- Amazon S3のティアとライフサイクル管理
- 一時ストレージとpersistent ストレージパターンの違い
スキル:
- データストアへの永続性を提供するためにデータをシリアル化および逆シリアル化する
- データストアを使用、管理、維持する
- データのライフサイクルを管理する
- データキャッシングサービスを使用する
領域 2: セキュリティ
タスク 1: アプリケーションとAWSサービスの認証および/または承認を実装する
知識:
- ID フェデレーション (SAML、OIDC、Amazon Cognito)
- ベアラートークン (JWT、OAuth、AWS STS)
- Amazon Cognitoのユーザープールとアイデンティティプールの比較
- リソースベースのポリシー、サービスポリシー、プリンシパルポリシー
- ロールベースアクセス制御 (RBAC)
- アクセス制御リストを使用したアプリケーション承認
- 最小特権の原則
- AWSマネージドポリシーとカスタマーマネージドポリシーの違い
- アイデンティティとアクセス管理
スキル:
- ID プロバイダを使用して連携アクセスを実装する (Amazon Cognito、IAM)
- ベアラートークンを使用してアプリケーションをセキュリティ保護する
- AWSへのプログラムアクセスを設定する
- AWSサービスに対して認証されたコールを行う
- IAMロールを引き受ける
- プリンシパルのアクセス許可を定義する
タスク 2: AWS サービスを使用して暗号化を実装する
知識:
- 保管時の暗号化と転送中の暗号化
- 証明書管理 (AWS プライベート認証局)
- キー保護 (ローテーション)
- クライアントサイドの暗号化とサーバーサイドの暗号化の違い
- AWSマネージドキーとカスタマーマネージドAWS KMSキーの違い
スキル:
- データの暗号化または復号化にキーを使用する
- 開発目的で証明書とSSHキーを生成する
- アカウント間で暗号化を使用する
- キーのローテーションを有効化および無効化する
タスク 3: アプリケーションコードで機密データを管理する
知識:
- データ分類 (PII、PHIなど)
- 環境変数
- シークレット管理 (Secrets Manager、Systems Manager Parameter Store)
- セキュアな資格情報の処理
スキル:
- 機密データを含む環境変数を暗号化する
- シークレット管理サービスを使用して機密データをセキュアにする
- 機密データを除去する
領域 3: デプロイ
タスク 1: AWSにデプロイするためのアプリケーションアーティファクトを準備する
知識:
- アプリケーション設定データにアクセスする方法 (AppConfig、Secrets Manager、Parameter Store)
- Lambdaのデプロイパッケージ、レイヤー、構成オプション
- Gitベースのバージョン管理ツール (Git)
- コンテナイメージ
スキル:
- コードモジュールの依存関係 (環境変数、設定ファイル、コンテナイメージ) をパッケージ内に管理する
- デプロイ用のファイルとディレクトリ構造を整理する
- デプロイ環境でのコードリポジトリの使用
- リソースの要件 (メモリ、コア) をアプリケーションに適用する
タスク 2: 開発環境でアプリケーションをテストする
知識:
- アプリケーションデプロイを行うAWSサービスの機能
- モックエンドポイントを使用した統合テスト
- Lambdaのバージョンとエイリアス
スキル:
- AWSサービスとツールを使用して展開されたコードをテストする
- APIとの統合依存関係を解決するためのモック統合を実行する
- 開発エンドポイント (API Gatewayのステージなど) を使用してアプリケーションをテストする
- 既存の環境にアプリケーションスタックの更新をデプロイする (異なるステージング環境にAWS SAMテンプレートをデプロイするなど)
タスク 3: デプロイテストを自動化する
知識:
- API Gatewayのステージ
- CI/CDワークフローのブランチとアクション
- 自動ソフトウェアテスト (ユニットテスト、モックテスト