この記事について
この記事は、AWS Certified Developer - Associate(DVA-C02)の学習内容を整理するために、生成AIを活用して作成しています。
DynamoDBのTTL(Time to Live)
解説を表示
意味
DynamoDBのTTLは、アイテムごとに有効期限を設定し、期限切れとなったアイテムを自動的に削除する機能です。
テーブルでTTLを有効にし、有効期限を保存している属性をTTL属性として指定します。
TTL属性には、秒単位のUNIXエポック時間をNumber型で保存します。
session_expiry = 1784422677
有効期限を過ぎたアイテムは、DynamoDBによってバックグラウンドで削除されます。
DVAで問われるポイント
DVAでは、セッション情報や一時データなど、一定期間後に不要になるアイテムを自動削除したい場合によく問われます。
EventBridge、Lambda、Step Functionsなどで定期的な削除処理を作るより、DynamoDBのTTLを使用することで、運用負荷と開発工数を抑えられます。
ただし、TTLによる削除は有効期限になった瞬間ではなく、通常は期限切れ後の数日以内に非同期で行われます。
セッションを期限どおり無効にする必要がある場合は、アプリケーション側でもTTL属性を確認し、期限切れデータを利用しないようにします。
API GatewayのCanaryリリース
解説を表示
意味
API GatewayのCanaryリリースは、現在の本番バージョンを維持しながら、一部のリクエストだけを新しいAPIデプロイへ振り分ける機能です。
同じステージ内で、本番デプロイとCanaryデプロイを並行して動作させられます。
canarySettingsのpercentTrafficを設定することで、新しいバージョンへ送るリクエストの割合を指定できます。
percentTraffic = 10
現在のバージョン:90%
新しいバージョン:10%
DVAで問われるポイント
DVAでは、新しいAPIやLambda関数のバージョンを、全ユーザーへ一斉公開せずに段階的に検証したい場合によく問われます。
API Gateway REST APIのステージでCanaryリリースを有効にし、percentTrafficで新バージョンへ振り分ける割合を設定します。
問題がなければ割合を段階的に増やし、問題が発生した場合は割合を下げることで、障害の影響範囲を限定できます。
「一部のリクエストだけ新バージョンへ送る」「段階的にリリースする」「追加のインフラを増やしたくない」という要件では、API GatewayのCanaryリリースが適しています。
CloudFrontのヘッダーベースキャッシュ
解説を表示
意味
CloudFrontのヘッダーベースキャッシュは、HTTPリクエストヘッダーの値に応じて、異なるコンテンツをキャッシュ・配信する仕組みです。
CloudFront-Viewer-Countryヘッダーには、ユーザーの接続元を表す国コードが設定されます。
Accept-Languageヘッダーには、ユーザーのブラウザで優先されている言語が設定されます。
オリジンはこれらのヘッダーを参照し、国や言語に対応したコンテンツを返せます。
DVAで問われるポイント
DVAでは、世界中のユーザーへ低レイテンシでコンテンツを配信しながら、国やブラウザの言語設定に応じて表示内容を切り替えたい場合によく問われます。
CloudFrontからオリジンへCloudFront-Viewer-CountryとAccept-Languageを転送し、オリジン側でヘッダーに応じたコンテンツを返します。
国・言語ごとに異なるコンテンツをキャッシュする場合は、これらのヘッダーをキャッシュキーにも含めます。
「グローバル配信」「国別コンテンツ」「ブラウザ言語による切り替え」「低レイテンシ」という要件では、CloudFrontのヘッダーベースキャッシュが適しています。
AWS X-Rayのアクティブトレーシング
解説を表示
意味
AWS X-Rayのアクティブトレーシングは、Lambda関数へのリクエストがAWSサービス間をどのように通過したかを記録・可視化する仕組みです。
Lambda関数でアクティブトレーシングを有効にすると、サンプリングされた関数呼び出しのトレースデータがX-Rayへ送信されます。
X-Rayのサービスマップやトレース詳細を利用すると、処理の流れ、サービスごとのレイテンシー、エラーが発生した場所などを分析できます。
DVAで問われるポイント
DVAでは、Lambda関数がDynamoDB、S3、外部APIなど複数のサービスを呼び出しており、どの呼び出しが処理遅延の原因になっているかを特定したい場合によく問われます。
Lambda関数の設定からアクティブトレーシングを有効にし、X-Rayのサービスマップとトレース詳細でレイテンシーの内訳を確認します。
CloudWatchメトリクスではLambda関数全体の実行時間を確認できますが、外部サービスごとの処理時間を分析したい場合はX-Rayが適しています。
「複数サービスの呼び出し」「レイテンシーの内訳」「ボトルネックの可視化」という要件では、AWS X-Rayのアクティブトレーシングを選択します。
Amazon ECRのイメージスキャン(スキャンオンプッシュ)
解説を表示
意味
Amazon ECRのイメージスキャンは、コンテナイメージに含まれるOSパッケージなどを検査し、既知の脆弱性を検出する機能です。
スキャンオンプッシュを有効にすると、コンテナイメージがECRリポジトリへプッシュされた際に、自動的に脆弱性スキャンが実行されます。
検出結果には、脆弱性の内容や重大度などが含まれます。
DVAで問われるポイント
DVAでは、コンテナイメージを本番環境へデプロイする前に自動で脆弱性を検査し、重大な問題がある場合はCI/CDパイプラインを停止したい場合によく問われます。
ECRのスキャンオンプッシュを有効にし、CodePipelineの後続ステージでLambda関数からスキャン結果を確認します。
重大な脆弱性が検出された場合は、Lambda関数からCodePipelineへ失敗結果を返すことで、後続のデプロイを停止できます。
「ECRへのイメージ登録時に自動検査」「重大な脆弱性があればデプロイ停止」「手動作業を減らしたい」という要件では、ECRのイメージスキャンをCI/CDパイプラインへ組み込みます。
AWS X-Rayによるダウンストリーム呼び出しのトレース
解説を表示
意味
AWS X-Rayは、アプリケーションへのリクエストが複数のAWSサービスや外部サービスを通過する流れを記録し、処理時間やエラーを可視化する分散トレーシングサービスです。
Lambda関数からDynamoDB、SNS、外部HTTP APIなどを呼び出す場合、それぞれの呼び出しをサブセグメントとして記録できます。
X-Rayのサービスマップではサービス間の呼び出し関係を確認でき、トレース詳細では各呼び出しにかかった時間を比較できます。
DVAで問われるポイント
DVAでは、Lambda関数が複数のAWSサービスや外部APIを呼び出しており、どの呼び出しが処理遅延の原因になっているかを特定したい場合によく問われます。
Lambda関数でX-Rayのトレーシングを有効にし、AWS SDKクライアントやHTTPクライアントを計装します。
収集されたトレースデータをサービスマップとトレース詳細で確認することで、ダウンストリームサービスごとのレイテンシーを比較し、ボトルネックを特定できます。
CloudWatchメトリクスはLambda関数全体の実行時間を確認する用途に向いていますが、個々のダウンストリーム呼び出しの所要時間を分析する場合は、AWS X-Rayが適しています。
Lambdaのプロビジョンドコンカレンシー
解説を表示
意味
プロビジョンドコンカレンシーは、指定した数のLambda実行環境を事前に初期化し、リクエストをすぐ処理できる状態で待機させる機能です。
HTTPクライアントの生成、AWS SDKの読み込み、ライブラリの初期化などをリクエスト到着前に済ませるため、コールドスタートによる遅延を抑えられます。
DVAで問われるポイント
DVAでは、コールドスタートの影響を抑え、常に安定した低レイテンシーが必要な場合によく問われます。
Webアプリケーションや同期APIなど、利用者が応答を待つ処理では、プロビジョンドコンカレンシーが適しています。
予約済み同時実行数は同時実行数を確保・制限する機能であり、実行環境を事前に初期化する機能ではありません。
プロビジョンドコンカレンシーの設定数を超えたリクエストでは、通常の実行環境が作成され、コールドスタートが発生する可能性があります。
Lambda関数のバージョン
解説を表示
意味
Lambda関数のバージョンは、関数のコードと設定を変更できない状態で保存したものです。
未発行の関数は$LATESTとして管理されます。バージョンを発行すると、1、2、3のような番号が付けられます。
DVAで問われるポイント
DVAでは、プロビジョンドコンカレンシーを設定する前提として問われます。
プロビジョンドコンカレンシーは$LATESTには設定できず、発行済みの関数バージョンまたは、そのバージョンを指すエイリアスへ設定します。
そのため、新しい関数バージョンを発行してから、そのバージョンまたはエイリアスにプロビジョンドコンカレンシーを適用します。
「コールドスタートを抑えたい」「プロビジョンドコンカレンシーを利用したい」という要件では、関数バージョンの発行も必要です。
グローバルセカンダリインデックス(GSI)
解説を表示
意味
グローバルセカンダリインデックス(GSI)は、DynamoDBの元テーブルとは異なるパーティションキーやソートキーを設定できるインデックスです。
元テーブルの主キー以外の属性を検索の入口にできるため、アプリケーションに新しい検索パターンを追加するときに利用します。
例えば、元テーブルのパーティションキーがreviewIdでも、productIdをパーティションキーとするGSIを作成すれば、商品ごとのレビューを効率よく取得できます。
DVAで問われるポイント
DVAでは、既存のDynamoDBテーブルに対して、現在のパーティションキーとは異なる属性で効率よく検索したい場合によく問われます。
特定の属性を指定してQueryを実行したい場合は、その属性をGSIのパーティションキーに設定します。
GSIは既存テーブルへ後から追加できます。一方、LSIは元テーブルと同じパーティションキーを使用し、テーブル作成時にしか定義できません。
「既存テーブル」「別の属性で検索」「Scanを避けたい」「Queryを使いたい」という要件では、GSIが適しています。
VPCフローログ
解説を表示
意味
VPCフローログは、VPC内のネットワークインターフェイスを出入りするIPトラフィックの情報を記録する機能です。
VPC全体、サブネット、または個別のENIを対象として有効化できます。
ログには、送信元・送信先IPアドレス、ポート番号、プロトコル、通信が許可されたか拒否されたかを示す情報などが記録されます。
Application Load BalancerはVPC内にネットワークインターフェイスを作成するため、関連するENIのフローログを確認することで、外部クライアントからの通信がALB側まで到達しているかを調査できます。
DVAで問われるポイント
DVAでは、外部クライアントから送られた通信がVPC内のリソースまで到達しているか、またはセキュリティグループなどで拒否されているかを確認したい場合によく問われます。
ALBへのHTTPS接続で断続的なタイムアウトが発生している場合は、VPCフローログを有効にし、クライアントのIPアドレス、宛先ポート443、ACCEPTまたはREJECTの状態を確認します。
ALBアクセスログは、ALBが受信したHTTP・HTTPSリクエストの分析に利用します。一方、VPCへパケットが到達したかというネットワークレベルの調査には、VPCフローログが適しています。
「VPCまで通信が届いているか」「セキュリティグループで拒否されていないか」「送信元IPやポート単位で確認したい」という要件では、VPCフローログを選択します。
AWS X-Rayの分散トレーシング
解説を表示
意味
AWS X-Rayは、アプリケーションへのリクエストがAPI Gateway、Lambda、DynamoDBなどの複数サービスを通過する流れを追跡し、処理時間やエラーを可視化する分散トレーシングサービスです。
サービスマップでは、サービス間の呼び出し関係やレイテンシーの傾向を確認できます。
トレース詳細では、1回のリクエストについて、各サービスや処理区間にどの程度の時間がかかったかを確認できます。
DVAで問われるポイント
DVAでは、API Gateway、Lambda、DynamoDBなどを組み合わせたアプリケーションで、レスポンス遅延の原因となっているコンポーネントを特定したい場合によく問われます。
各サービスでX-Rayトレーシングを有効にし、生成されたサービスマップとトレース詳細から、レイテンシーが集中している箇所を分析します。
CloudWatchメトリクスや外形監視ではアプリケーション全体の遅延は確認できますが、複数サービスをまたぐリクエストの処理時間を詳細に分析したい場合は、AWS X-Rayが適しています。
「複数のAWSサービスを経由する」「どこで時間がかかっているか知りたい」「ボトルネックを迅速に特定したい」という要件では、AWS X-Rayの分散トレーシングを選択します。