DISPLAY SETTINGS 各種設定
表示モード
画像位置
文字位置
理解度の自動記録
理解度の位置
Q1AWS Certified Developer Associate
Q1. スタートアップ企業のエンジニアが、Amazon API GatewayのAPI、AWS Lambda関数、Amazon DynamoDBテーブルで構成されるアプリケーションを開発しています。
このエンジニアはAWS Serverless Application Model(AWS SAM)を用いて、AWS上でサーバーレスアプリケーションのビルドと実行を行っています。
Lambda関数だけを修正してプッシュした場合でも、アプリケーション内のすべての成果物が毎回再ビルドされてしまう状況です。
そこでAWS SAM Accelerateを導入し、あるコマンドの実行によって変更のあったLambda関数のみを再デプロイできるようにしたいと考えています。
この要件を満たすコマンドはどれですか。
解答を見る
正解:D. sam sync –watch
sam sync –watch はAWS SAM Accelerateを有効化し、ローカルの変更を検知して差分のあるリソースのみを高速に反映します。–watchフラグによりソースコードの変更が自動的に監視され、Lambda関数など変更されたリソースだけがクラウドへ同期されるため、全成果物の再ビルドと完全な再デプロイを回避できます。
sam deploy –force-upload(A)は全成果物を強制的にアップロードするため逆効果です。
sam deploy –no-execute-changeset(B)はチェンジセットを作成するだけで実行しません。
sam package(C)は成果物をパッケージ化するのみでデプロイも差分同期も行いません。
開発中の反復的な更新を高速化する用途にはsam syncが最適です。
AWS SAM CLI sam sync コマンドリファレンス
Q2AWS Certified Developer Associate
Q2. 気象データを扱うベンチャー企業のエンジニアが、Amazon S3バケットへ配信されるデータを処理するアプリケーションを作成しています。
データは1日におよそ10回配信され、処理は平均して1分未満で完了する見込みです。
このアプリケーションを最も低いコストかつ最も低いレイテンシーでデプロイ・呼び出しするには、どうすればよいですか。
解答を見る
正解:B. アプリケーションをAWS Lambda関数としてデプロイし、S3のイベント通知をトリガーとして呼び出す。
S3イベント通知はオブジェクト作成の直後にLambda関数を呼び出すため、最も低いレイテンシーを実現します。アプリケーションは1日約10回、1回あたり約1分しか実行されないため、アイドル時にも課金が発生するEC2よりも、実行時間分だけ課金されるLambdaが大幅に低コストです。
CloudWatchアラーム(A)はメトリクスのしきい値監視向けであり、オブジェクトアップロードの即時トリガーには適しません。
スケジュールイベント(C)は決まった間隔でしか起動しないため、データ到着から実行までに遅延が生じます。
EC2ポーリング(D)は常時稼働のコストとポーリング間隔による遅延の両面で不利です。
Amazon S3でAWS Lambdaを使用する
Q3AWS Certified Developer Associate
Q3. 全国展開する小売チェーンが、Amazon DocumentDBに保存されたトランザクションデータをAWS Lambda関数で処理する売上分析アプリケーションを運用しています。
このアプリケーションは500店舗分の日次売上データを集計し、経営層向けのレポートを作成しています。
最近、利用者からレポート生成に時間がかかり、リクエストが時折タイムアウトするとの声が寄せられました。
調査の結果、開発者はレポート生成の平均応答時間が3秒からおよそ25秒以上にまで増加していることを確認しました。
開発者はアプリケーションのパフォーマンス上のボトルネックを特定する必要があります。
最も運用上のオーバーヘッドが少なく、この要件を満たすソリューションはどれですか。
解答を見る
正解:A. Lambda関数とDocumentDBクラスターの両方でAWS X-Rayのトレースを有効にする。クエリ実行を追跡するカスタムサブセグメントを実装し、遅いクエリを特定する。
Lambda関数がダウンストリームのデータベース(DocumentDB)を呼び出す構成で、どこに時間が費やされているかを最小の手間で突き止めるには分散トレースが最適です。AWS X-Rayはリクエストのエンドツーエンドのトレースとタイミングの内訳を提供し、遅延がLambdaの初期化・ダウンストリーム呼び出し・データベースクエリのどこに起因するかを可視化します。
DocumentDB操作の周囲にカスタムサブセグメントを追加すれば、クエリ実行や接続取得ごとの正確な所要時間を計測でき、遅いクエリを迅速に特定できます。
Bはエラーと汎用メトリクス中心で、増加した20秒超の原因経路を正確に切り分けられません。
Cは根本原因を確認する前の性能改善策であり、まず特定するという要件に合いません。
Dは詳細なログ実装とクエリが必要で、開発工数とログコストの両面でオーバーヘッドが大きくなります。
AWS LambdaでのAWS X-Rayの使用
Q4AWS Certified Developer Associate
Q4. ある医療関連企業では、個人を特定できる情報(PII)を、アカウントA内のPIIという名前のAmazon DynamoDBテーブルへ保存しています。
開発者は、アカウントB内のAmazon EC2インスタンス上で動作するアプリケーションを開発中です。
このアカウントBのアプリケーションは、PIIテーブルへのアクセスを必要としています。
アカウントAの管理者は、PIIテーブルへのアクセス権を持つAccessPIIという名前のIAMロールを作成しました。
あわせて、アカウントBをこのロールの引き受け(Assume)が可能なプリンシパルとして指定する信頼ポリシーも作成しています。
アプリケーションがPIIテーブルへアクセスできるようにするために、開発者がアカウントB側で行うべき手順の組み合わせはどれですか。
(2つ選択)
解答を見る
正解:A、D
これはAWS STSのAssumeRoleを用いたクロスアカウントアクセスの典型パターンです。アカウントAはロール側の信頼ポリシーでアカウントBを許可していますが、それだけでは不十分で、呼び出し側であるアカウントBのEC2ロールにも sts:AssumeRole を実行する権限が必要です(A)。
さらにアプリケーションは実際に一時認証情報を取得するため、コード内でAssumeRole APIを呼び出す必要があります(D)。
Bは、アカウントA所有のテーブルにアカウントB側で直接権限を付与しても効果がないため誤りです。
Cは、EC2ロールの認証情報を得るだけではアカウントAの権限は得られず、クロスアカウントロールの引き受けが必須です。
EのGetSessionTokenはIAMユーザーのMFAセッション用であり、クロスアカウントのロール引き受けには使いません。
AWS STS AssumeRole APIリファレンス
Q5AWS Certified Developer Associate
Q5. ある電力会社が、すべての顧客拠点にスマートメーターを導入しました。
スマートメーターは1分間隔で電力使用量を計測し、収集用のリモートエンドポイントへ読み取り値を送信します。
この企業は、スマートメーターの読み取り値を受信してデータベースへ保存するエンドポイントを構築する必要があります。
保存するデータには拠点ID(location ID)とタイムスタンプ情報を含めたいと考えています。
さらに、顧客が現在および過去の使用量へオンデマンドかつ低レイテンシーでアクセスできるようにする必要があります。
今後、需要は大幅に増加する見込みです。
ソリューションはパフォーマンスに影響を与えず、書き込み時にダウンタイムが発生してはなりません。
これらの要件を最もコスト効率よく満たすソリューションはどれですか。
解答を見る
正解:B. スマートメーターの読み取り値をAmazon DynamoDBテーブルへ保存する。拠点IDとタイムスタンプの列で複合キーを構成し、それらの列を使って顧客データを絞り込む。
拠点IDをパーティションキー、タイムスタンプをソートキーとする複合キーのDynamoDBテーブルは、時系列の使用量データを低レイテンシーかつ高スループットで書き込み・取得でき、需要増に対してシームレスにスケールします。DynamoDBはサーバーレスで書き込み時のダウンタイムがなく、高頻度な書き込みと拠点単位の範囲クエリの両立に適しています。
RDS(A)は書き込みスケールに上限があり運用負荷とコストが増します。
ElastiCache for Redis(C)はインメモリのため耐久保存に向かず長期の履歴保持にはコスト高です。
S3+Athena(D)は安価ですがクエリごとにスキャンが走り、現在使用量への低レイテンシーなオンデマンドアクセスには不向きです。
DynamoDBでのクエリの操作
Q6AWS Certified Developer Associate
Q6. ある企業が、Elastic Load Balancing(ELB)ロードバランサーの背後にアプリケーションを展開する予定です。
このアプリケーションはHTTP/HTTPSリスナーを使用し、クライアントのIPアドレスを取得できる必要があります。
これらの要件を満たすロードバランシングソリューションはどれですか。
解答を見る
正解:A. Application Load Balancerを使用し、X-Forwarded-Forヘッダーからクライアントのアドレスを取得する。
HTTP/HTTPSリスナーを使う場合、レイヤー7で動作するApplication Load Balancerが元のクライアントIPをX-Forwarded-Forヘッダーに付加して転送するため、アプリケーションはこのヘッダーからクライアントIPを取得できます。ALBはHTTP/HTTPSトラフィックを終端し、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-Portといったヘッダーを標準で挿入します。
NLBのプロキシプロトコル(B)はレイヤー4のTCP接続向けの仕組みで、HTTP/HTTPSヘッダーによるクライアントIP取得の要件には合致しません。
CのインスタンスID登録はターゲット登録方式の話でクライアントIP取得とは無関係です。
NLBはX-Forwarded-Forヘッダーを付与しない(D)ため誤りです。
Application Load Balancerのx-forwarded-forヘッダー
Q7AWS Certified Developer Associate
Q7. ある開発者が、アプリケーションとそのリソースへのアクセスを提供するAPIを構築する必要があります。
この開発者はすでにTLS証明書を保有しています。
APIの既定のベースURLは、カスタムドメイン名へ変更できる必要があります。
APIの利用者は世界各地に分散しています。
ソリューションはAPIのレイテンシーを最小限に抑える必要があります。
解答を見る
正解:C. Amazon API GatewayのREST APIを作成し、エッジ最適化(edge-optimized)エンドポイントタイプを使用する。TLS証明書をAWS Certificate Managerへインポートし、REST API用のカスタムドメイン名を作成してそこへトラフィックをルーティングする。REST APIの既定のエンドポイントは無効化する。
API Gatewayのエッジ最適化エンドポイントはAmazon CloudFrontのグローバルなエッジネットワークを自動的に利用し、世界中に分散した利用者のレイテンシーを最小化します。ACMにインポートしたTLS証明書をカスタムドメイン名に関連付ければ、任意のドメインで安全な接続を提供できます。
既定のエンドポイントを無効化することで、カスタムドメイン経由のアクセスのみを強制できます。
A・DのようにCloudFrontを別途構築しLambda@EdgeやCloudFront Functionsで処理する方式は、エッジ最適化API Gatewayが標準で備える機能を重複させるだけで不要です。
BのプライベートエンドポイントはVPC内部からの利用向けで、グローバルかつ低レイテンシーという要件を満たしません。
Amazon API Gatewayのカスタムドメイン名
Q8AWS Certified Developer Associate
Q8. ある開発者が、Amazon S3バケットへ新しいファイルが追加された直後に、Amazon DynamoDBテーブルへレコードを挿入したいと考えています。
これを実現するために必要な手順の組み合わせはどれですか。
解答を見る
正解:B. AWS Lambda関数を呼び出すS3イベントを設定し、その関数内でDynamoDBへレコードを挿入する。
S3イベント通知でLambda関数を呼び出す構成にすれば、新しいファイルがバケットに追加された時点で即座にDynamoDBへレコードを挿入でき、サーバーの管理も不要です。S3のオブジェクト作成イベントがトリガーとなるため、追加とほぼ同時に処理が走ります。
EventBridge(A)でも実現は可能ですが、選択肢の説明は具体的な処理手段が曖昧で、S3イベント→Lambdaが最も直接的かつ標準的な方法です。
Lambdaによるポーリング(C)は継続的なポーリングコストと遅延が生じます。
cronジョブ(D)はスケジュール実行のため「追加されるとすぐに」という即時性の要件を満たしません。
チュートリアル:Amazon S3トリガーを使用してLambda関数を呼び出す
Q9AWS Certified Developer Associate
Q9. ある企業には、オブジェクトストレージとしてAmazon S3バケットを利用するアプリケーションがあります。
開発者は、このS3バケットに対して転送中(in-transit)の暗号化を構成する必要があります。
また、個人データを含むすべてのS3オブジェクトは、オンデマンドでローテーション可能なAWS KMSキーによって保管時(at rest)に暗号化されなければなりません。
これらの要件を満たす手順の組み合わせはどれですか。
(2つ選択)
解答を見る
正解:C、D
要件は、転送中の暗号化と、オンデマンドでローテーション可能なKMSキーによる保管時暗号化の2点です。保管時暗号化は、AWS KMSカスタマー管理キーでオブジェクトを暗号化することで満たせます(C)。カスタマー管理キーはオンデマンドでのローテーションが可能です。
転送中の暗号化は、バケットポリシーでaws:SecureTransport条件を使いHTTPS接続のみを許可することで強制できます(D)。これはAWSが推奨する標準的な方法です。
Aのアクセス許可境界はIAMポリシーの制御用でバケットポリシーの転送暗号化強制には使えません。
BはS3バケットポリシーでクライアント側暗号化を強制することはできず誤りです。
Eのブロックパブリックアクセスは公開防止のための機能で暗号化の強制とは無関係です。
AWS KMSキーによるサーバー側暗号化の使用
Q10AWS Certified Developer Associate
Q10. ある企業が、すべてのAWSクラウドリソースに対して安全なデータベース認証情報を設定する必要に迫られています。
対象のリソースには、Amazon RDS DBインスタンス、Amazon DocumentDBクラスター、Amazon Aurora DBインスタンスが含まれます。
企業のセキュリティポリシーでは、データベース認証情報を保管時に暗号化し、かつ定期的な間隔でローテーションすることが義務付けられています。
これらの要件を最も安全に満たすソリューションはどれですか。
解答を見る
正解:D. AWS Secrets Managerコンソール上で、SecretsManagerRotationTemplateテンプレートを使ってAWS Lambda関数を作成する。Secrets Managerにデータベース認証情報のシークレットを作成し、スケジュールに基づくローテーションを設定する。
AWS Secrets Managerは認証情報をAWS KMSで保管時に暗号化し、RDS・DocumentDB・Auroraに対応したローテーション用テンプレート(SecretsManagerRotationTemplate)でスケジュールに基づく自動ローテーションを実現します。これにより、暗号化とローテーションという要件を最も安全かつマネージドに満たせます。
AのIAMデータベース認証はすべてのエンジンで利用できるとは限らず、要件の認証情報ローテーションとは目的が異なります。
BのParameter Store(SecureString)は保管時暗号化はできますが、シークレットの自動ローテーション機能を標準では備えていません。
CのS3保存は暗号化キーのローテーションであって認証情報自体のローテーションではなく、アクセス管理も煩雑になります。
AWS Secrets Managerシークレットのローテーション
