学習メモ:AWS-DVA-C01
目的
2022年7月中旬にAWS-DVA受験予定
学習メモをまとめます。
Lambda オーソライザー
Lambda オーソライザー (以前のカスタムオーソライザー) は、Lambda 関数を使用して API へのアクセスを制御する API Gateway の機能です。
Lambda オーソライザーには 2 種類あります。
トークンベース の Lambda オーソライザー
- TOKEN オーソライザーとも呼ばれる
- JSON ウェブトークン (JWT) や OAuth トークンなどのベアラートークンで発信者 ID 受け取る。
リクエストパラメータベースの Lambda オーソライザー
- REQUEST オーソライザーとも呼ばれます
- ヘッダー、クエリ文字列パラメータ、stageVariables、および $context 変数の組み合わせで発信者 ID を受け取る。
- WebSocket API では、リクエストパラメータベースのオーソライザーのみがサポート
DynameDBセカンダリインデックス
AWS 認定デベロッパー アソシエイト模擬試験問題集(5回分325問)より
グローバルセカンダリインデックス
ベーステーブルと異なるパーティションキーとソートキーを持つインデックスです。
グローバルセカンダリインデックスは、そのインデックスのクエリは、すべてのパーティションにわたって、ベーステーブルのすべてのデータを対象に実行できるので、「グローバル」と見なされます。
ローカルセカンダリインデックス
ベーステーブルと同じパーティションキーと、異なるソートキーを持つインデックスです。
ローカルセカンダリインデックス内部のすべてのパーティションの範囲が、同じパーティションキーの値を持つベーステーブルパーティションに限定されるという意味で「ローカル」です。
AWS Systems Manager Parameter Store
AWS Systems Manager パラメータストア は、設定データ管理と機密管理のための安全な階層型ストレージを提供
メリットは?
- セキュアでスケーラブルな、ホストされたシークレット管理サービスを使用します (管理が必要なサーバーはありません)。
- コードからデータを分離してセキュリティ体制を改善します。
- 設定データと暗号化された文字列を階層内に保存し、バージョンを追跡します。
- きめ細かいレベルでアクセスの制御と監査を行います。
- Parameter Store は AWS リージョン で複数のアベイラビリティーゾーンでホストされるため、パラメータは確実に保存してください
引用
AWS 認定デベロッパー アソシエイト模擬試験問題集(5回分325問)
AWS Systems Manager Parameter Store
Elastic Beanstalkがデプロイ時に依存しているサービスと後から設定できるサービス
CodePipeline
- Elastic Beanstalk を使用してコードをデプロイするように CodePipeline を設定
- パイプラインを作成する前または [Create Pipeline] ウィザードのステージのデプロイアクションで使用できるように、Elastic Beanstalk アプリケーションおよび環境を作成
CloudFormation
- AWS CloudFormationとAWS Elastic Beanstalkは互いに補完するように設計されている
引用
AWS KMSの最大データサイズは4KB
エクスポネンシャルバックオフ
エクスポネンシャルバックオフの背後にある考え方は、連続したエラー応答の再試行間の待機時間を徐々に長く使用することです。
引用
Lambda関数エイリアス
Lambda のエイリアスとは、特定の関数のバージョンに対するポインタのようなものです。ユーザーは、エイリアス Amazon リソースネーム (ARN) を使用して関数のバージョンにアクセスできます。
エイリアスを介して複数バージョン間の切り替えが可能
Lambda 関数のエイリアス
API Gateway のメトリクス
メトリクス | 説明 |
---|---|
4XXError | 指定された期間に取得されたクライアント側エラーの数 |
5XXError | 指定された期間に取得されたサーバー側エラーの数 |
CacheHitCount | 指定された期間内に API キャッシュから配信されたリクエストの数 |
CacheMissCount | API キャッシュが有効になっている特定の期間における、バックエンドから提供されたリクエストの数 |
Count | 指定期間内の API リクエストの合計数 |
IntegrationLatency | API Gateway がバックエンドにリクエストを中継してから、バックエンドからレスポンスを受け取るまでの時間 |
Latency | API Gateway がクライアントからリクエストを受け取ってから、クライアントにレスポンスを返すまでの時間 |
Amazon ElastiCache キャッシュ戦略
名称 | 説明 |
---|---|
遅延読み込み | 必要なときにのみキャッシュにデータを読み込む |
書き込みスルー | 書き込みスルー戦略では、データがデータベースに書き込まれると常にデータを追加するか、キャッシュのデータを更新 |
TTL | キーの有効期限までの秒数を指定する整数値、一定期間でデータ項目を失効させる |
AWS Elastic Beanstalkのデプロイオプション
名称 | 説明 |
---|---|
AllAtOnce | ローリングデプロイを無効にし、常に同時にすべてのインスタンスにデプロイを実行 |
Rolling | 標準的なローリングデプロイを有効にする |
RollingWithAdditionalBatch | 総容量を維持するために、デプロイ開始前にインスタンスの追加バッチを起動 |
Immutable | すべてのデプロイ時にイミュータブルな更新を実行 |
TrafficSplitting | トラフィック分割デプロイを実行して、アプリケーションのデプロイの Canary テストを実施 |
API キーを使用した使用量プラン
API GatewayからAPIキーを発行することで、以下が可能になる
- APIキーを持つユーザのみアクセス可能なAPIを作成できる
- APIキー毎のアクセス回数を取得できる
- 使用量プランを作成することで、APIキーにクォータ(アクセス可能回数)、レート(アクセス頻度)、バーストを設定できる(レート、バーストの制限値はAWSアカウント全体、APIステージ毎にも元々存在)
AWS KMSの最大データサイズ
AWS KMSの最大データサイズは4KB
CloudFront間のHTTPS通信_Viewer Protocol Policy
CloudFront がディストリビューションに割り当てたドメイン名を使用している場合 (d111111abcdef8.cloudfront.net など)、
1 つ以上のキャッシュ動作の [ビューワープロトコルポリシー] 設定を変更して、HTTPS 通信を必須にします。
Viewer Protocol Policy
-
Redirect HTTP to HTTPS
ビューワーは両方のプロトコルを使用できます。HTTP
GET
およびHEAD
リクエストは自動的に HTTPS リクエストにリダイレクトされます。CloudFront は新しい HTTPS URL とともに HTTP ステータスコード 301 (Moved Permanently) を返します。ビューワーはこの HTTPS URL を使用して CloudFront にリクエストを再送信します。 -
HTTPS Only
ビューワーは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。ビューワーが HTTPS リクエストではなく HTTP リクエストを送信した場合、CloudFront は HTTP ステータスコード 403 (Forbidden) を返し、オブジェクトは返しません。
参考ドキュメント
IAM Policy Simulator
IAM Policy Simulator を使用すると、アイデンティティベースのポリシー、IAM アクセス許可の境界、組織のサービスコントロールポリシー、リソースベースのポリシーをテストおよびトラブルシューティングできます。
端的にまとめると、IAMのテストツール
AWS_KMS:エンベロープ暗号化
公式ドキュメントより、
データを暗号化するとデータは保護されますが、暗号化キーを保護する必要があります。1 つの戦略としては、それを暗号化します。エンベロープ暗号化は、データキーでプレーンテキストデータを暗号化してから、そのデータキーを別のキーで暗号化する手法です。
データ暗号化キーを別の暗号化キーで暗号化し、その暗号化キーを別の暗号化キーで暗号化することもできます。しかし、最終的には、キーとデータを復号化するために、1 つのキーをプレーンテキストで保持する必要があります。この最上位プレーンテキストキーの暗号化キーは、ルートキーと呼ばれます。
利点
- データキーの保護
- 複数のキーを使用した同じデータの暗号化
- 複数のアルゴリズムの強度の結合
参考ドキュメント
Amazon DynamoDB Transactions
公式ドキュメントより
Amazon DynamoDB Transactions を使用すれば、複数のアクションをまとめてグループ化し、1 つのオールオアナッシングの
TransactWriteItems
またはTransactGetItems
オペレーションとして送信できます。以下のセクションでは、API オペレーション、容量管理、ベストプラクティス、DynamoDB でのトランザクション操作の使用に関する他の詳細について説明します。
参考ドキュメント
概要:AWS X-Ray
勉強前のイメージ
AWS認定試験の勉強中にX-Rayを知る。
分析用のサービスという認識
勉強中のメモ
サービス概要
Cloudwatchとの違い
CloudWatch:インフラレイヤでのパフォーマンスを確認
X-Ray:アプリケーションレイヤを対象としてレスポンスタイムやレスポンスステータスなどの情報を収集
X-Rayの方が包括的という印象
メモ
- 各リクエストの情報をトレース、セグメント、サブセグメントという階層に整理
- AWS:サービス別資料やチュートリアルが一番概要を掴みやすい
- 元のアプリからトレースして分析
参考ドキュメント
AWS:AWS X-Ray の特徴
AWS:サービス別資料
Qiita:AWS X-Ray とは
DevelopersIO:AWS再入門ブログリレー2022 X-Ray編
ECSのタスク戦略
binpack
タスクはコンテナインスタンスに配置され、未使用の CPU またはメモリを最小にします。この戦略は、使用中のコンテナインスタンスの数を最小限に抑えます。
この戦略が使用されてスケールインアクションが実行されると、Amazon ECS はタスクを終了します。タスクが終了した後にコンテナインスタンスに残されたリソース量に基づいてこれが実行されます。タスクの終了後に利用可能なリソースが最も多く残るコンテナインスタンスが、そのタスクを終了されます。random
タスクはランダムに配置されます。
spread
タスクは指定された値に基づいて均等に配置されます。有効な値は
instanceId
(または同じ効果を持つhost
)、またはattribute:ecs.availability-zone
などのコンテナインスタンスに適用される任意のプラットフォームまたはカスタム属性です。
サービスタスクはそのサービスからのタスクに基づいて分散されます。スタンドアロンタスクは、同じタスクグループからのタスクに基づいて分散されます。タスクグループの詳細については、「タスクグループ」を参照してください。
spread戦略が使用されてスケールインアクションが実行されると、Amazon ECS は、アベイラビリティーゾーン間のバランスを維持するタスクを選択して終了します。アベイラビリティーゾーン内では、タスクはランダムに選択されます。
EC2のインスタンスタイプ:ファミリー
汎用
他のインスタンスファミリーの特徴を要するような、尖らない要件ではない限り全般的に利用可能です。ただし、 tシリーズについては前述の特徴から開発環境や一定の時間帯のみリソース負荷がスパイクするユースケースに適しています
コンピューティング最適化
バッチ処理、高性能/高負荷なWebサーバ、動画エンコード、ゲームサーバなど
メモリ最適化
高性能/高負荷なデータベース、キャッシュサーバ、ビッグデータ分析など
ストレージ最適化
NoSQL データベース、インメモリデータベース、データウェアハウスなど
高速コンピューティング
インスタンスタイプによりハードウェアアクセラレータは異なります。・P3:機械学習/深層学習、HPC、計算流体力学 等・G4:機械学習のトレーニングと推論、ビデオトランスコーディング 等・Inf1:レコメンデーションエンジン、画像/動画分析 等(機械学習推論に対しては最も低コスト)・F1:ゲノム研究、財務分析、リアルタイムのビデオ処理 等
AWS Systems Manager Parameter StoreとAWS Secrets Managerの使い分け
AWS Systems Manager Parameter Store
構成とシークレット用の単一の保存用ストアが必要な場合
AWS Secrets Manager
ライフサイクル管理を備えた専用のシークレットストアが必要な場合
X-Rayのサンプリングルールの計算方法
サンプリングリクエスト数 = リザーバーサイズ+((1秒あたりの着信リクエスト-リザーバーサイズ)*固定レート)
CloudFormationの各セクション
Parametersセクション
- 条件において評価する入力を定義
- これらの入力パラメータの値に基づいて、条件は true または false と評価される
- 条件で擬似パラメータを評価する場合は、このセクションで擬似パラメータを定義する必要はない
- 擬似パラメータはCloudFormation によって事前に定義
Conditionsセクション
- 組み込み関数を使用して条件を定義
- 条件はCloudFormation が関連するリソースをいつ作成するかを指定
Resources および Outputsセクション
- 条件付きで作成するリソースまたは出力と条件を関連付け
- CloudFormation は、true に関連付けられたエンティティを作成し、false に関連付けられたをエンティティを無視
- Condition キーと条件の論理 ID を使用して、リソースまたは入力と関連付
- 条件付きでプロパティを指定するには、Fn::If 関数を使用
Amazon ECS のユーザーデータの一般的なユースケース
設定情報を Docker デーモンと Amazon ECS コンテナエージェントに渡すこと
Amazon EC2 Auto Scaling グループを使用してコンテナインスタンスを
起動する場合はecs.configファイルにおいて、
ECS_CONTAINER_INSTANCE_TAGS エージェント設定
パラメータを使用してタグを追加する必要がある。
Amazon RDS DBインスタンスの拡張モニタリングで取得出来るメトリクス
- RDS Child プロセス
- OSプロセス
パスベースルーティング
マイクロサービスを実行している場合はパスベースのルーティングを使用して、トラフィックを複数のバックエンドサービスにルーティングできる
Lambda同時実行数のバーストの制限
- 3000 – 米国西部 (オレゴン)、米国東部(バージニア北部)、欧州 (アイルランド)
- 1000 – アジアパシフィック (東京)、欧州 (フランクフルト)
- 500 – その他のリージョン
STSの資格情報の有効時間
資格情報は、15分から1時間の範囲で有効期限が設定
デフォルトでは1時間
SQSの最大メッセージサイズは256KB
Lambdaのメモリ
メモリは 128 MB から 3,008 MB までの間で 64 MB 刻みで設定可能
Lambda@Edge
AWS_Lambda@Edge
Qitta:Lambda@Edge とは
Lambda@Edge は、Amazon CloudFrontの機能で、アプリケーションのユーザーに近いロケーションでコードを実行できるため、パフォーマンスが向上し、待ち時間が短縮されます。
Lambda関数を呼び出す際のInvoke API
InvocationTypeから選択する3つのオプション
- RequestResponse(デフォルト)
関数を同期的に呼び出します。関数が応答を返すかタイムアウトになるまで、接続を開いたままにします。API応答には関数応答と追加データが含まれます。 - Event
InvocationTypeにEventを指定すると非同期実行になります。非同期呼び出しでは、Lambda関数が直接実行されるのではなく、キューイングされたのち実行されます。 キューイングされるために、EventタイプでInvoke APIを実行すると、API実行後にすぐにレスポンスが返りステータスコードは202となります。 - DryRun
パラメーター値を検証し、ユーザーまたはロールに関数を呼び出す権限があることを確認します。
VPC フローログ
VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報を
キャプチャする機能
2022.7.10に試験合格したので、こちらのスクラップはクローズします。