AWS認定デベロッパーアソシエイト取得に向けた学習記録です。
試験勉強で気になったところをまとめています。
追記:AWS認定デベロッパーアソシエイトに合格しました。勉強方法など以下の記事で紹介しているので参考にしてください。
スポンサーリンク
目次
- 1 学習期間
- 2 学習記録
- 2.1 コードレビューで承認された場合のみデプロイプロセスを進めるCodePipelineのパイプラインについて
- 2.2 ECSクラスタで動くアプリから外部データベースに接続する際の資格情報の暗号化して定期的にローテーションする設定方法
- 2.3 DynamoDBのキャパシティーユニットについて
- 2.4 CodeBuildでビルド出力アーティファクトを暗号化する設定方法
- 2.5 CodeBuildからECRにDockerイメージをプッシュする際に発生した認証エラーの原因として最も可能性の高い要因
- 2.6 コードを変更せずにLambda関数のパフォーマンスの改善
- 2.7 ECSのタスク定義でのIAMロールを設定
- 2.8 X-Rayのサンプリングリクエスト数の計算式
- 2.9 2つのLambda関数に対してALBで着信トラフィックを分散した際、片方のLambdaでパフォーマンス低下した場合の可能性の高い原因
- 2.10 多数のユーザーが利用しても問題なく機能する、webサイトのクリックデータの管理できるAWSサービス
- 2.11 ECSのタスク配置戦略
- 2.12 Elastic Beanstalkで展開完了までに最も時間がかからないデプロイ方式
- 2.13 AWSとオンプレミスのハイブリッド環境にデプロイについて
- 2.14 AWS Organizationsを利用した他アカウントが管理するリソースへのアクセス許可設定
- 2.15 クライアントとバックエンドがHTTPエンドポイントで直接対話するAPI Gatewayの統合タイプ
- 2.16 KMSによるサーバーサイド暗号化が設定されたS3へのアップロードリクエスト
- 2.17 Kinesis Data Streamsストリーム処理でプロデューサーの再試行が発生した際の重複対策
- 2.18 サーバーレスアプリケーションを構築するCloudFormationテンプレートの設定方法
- 2.19 DynamoDBの単一パーティションに対して複数のインデックスを利用したクエリを実行可能な設計
- 2.20 DynamoDBの非キー属性のクエリを高速化する設計
- 2.21 ElastiCacheのキャッシュ内のデータが常に最新であることを確認して読み取られないデータを自動的に削除する設定
- 2.22 API呼び出し元からヘッダーおよびクエリ文字列パラメーターで認証をするLambdaオーソライザー
- 2.23 ElastiCache Redisでコマンドを実行する際にパスワードを使った認証をする
- 2.24 SQSで256KB以上のメッセージサイズを処理する際の対応
- 2.25 AWS CLIでEC2インスタンスの詳細モニタリングを有効化する設定
- 2.26 Lambdaのデッドレターキューが利用されるケース
- 2.27 不正なドメインからのAPIアクセスが多発した際の、APIコール処理のパフォーマンスの改善
- 2.28 DynamoDBパフォーマンスを向上させるためのプライマリキーの設計
- 3 まとめ
学習期間
- 2021/09/01 – 2021/09/06
学習記録
コードレビューで承認された場合のみデプロイプロセスを進めるCodePipelineのパイプラインについて
- CodePipelineはAmazon SNSと連携することで、パイプラインのステージに対して承認アクションを追加することができる。
- パイプラインがアクションするまでの7日間以内にアクションが実施されないとパイプラインは実行されない。
ECSクラスタで動くアプリから外部データベースに接続する際の資格情報の暗号化して定期的にローテーションする設定方法
- AWS Secrets Managerを利用して認証情報を保持して、AWS KMSを利用して暗号化する。
- AWS Secrets Managerは、認証情報を定期的にローテーションする機能を利用する。
- コンテナに設定する環境変数の名前と機密データをSecrets ManagerシークレットのARNで管理する。
DynamoDBのキャパシティーユニットについて
- 読み込みキャパシティーユニット(RCU)
- 1ユニットあたりの最大サイズ:4KB
- 1秒あたりの読み込み回数
- 強力な整合性:1回
- 結果整合性:2回
- 書き込みキャパシティーユニット(WCU)
- 1ユニットあたりの最大サイズ:1KB
- 1秒あたり書き込み回数:1回
CodeBuildでビルド出力アーティファクトを暗号化する設定方法
- AWS KMS カスタマーマスタキー (CMK) にアクセスする。
- デフォルトではS3のAWS Managed CMKを使用する。
CodeBuildからECRにDockerイメージをプッシュする際に発生した認証エラーの原因として最も可能性の高い要因
- CodeBuildでDockerイメージをECRにプッシュするためには認証が必要となる。
- CodeBuild側にECRへのIAMアクセス許可の設定をする必要がある。
コードを変更せずにLambda関数のパフォーマンスの改善
- Lambda関数に割り当てるメモリの量を変更することでパフォーマンスを向上することができる。
- 128~3008MBで指定が可能
ECSのタスク定義でのIAMロールを設定
ECS_ENABLE_TASK_IAM_ROLE
をTrue
に設定ことでECSのタスク定義にIAMロールが有効になる。
X-Rayのサンプリングリクエスト数の計算式
- サンプリングリクエスト数=リザーバーサイズ×(100%-固定レート)+1秒あたりの着信リクエスト×固定レート
2つのLambda関数に対してALBで着信トラフィックを分散した際、片方のLambdaでパフォーマンス低下した場合の可能性の高い原因
- 片方のLambdaの同時実行処理がプロビジョニングが多く設定されているため、不均衡が生じて使用可能な同時実行数を片方のLambdaが使い果たしている可能性がある。
多数のユーザーが利用しても問題なく機能する、webサイトのクリックデータの管理できるAWSサービス
- DynamoDBの
UpdateItem
オペレーションの利用してアトミックカウンターを実装する。 - 他のオペレーションを妨害しないでクリック数をカウントすることができる。
ECSのタスク配置戦略
- ECSのEC2起動の場合に設定できる機能。
- タスクの配置またはタスクの終了する際にどのインスタンスを対象にするか決定する。
- タスク配置戦略は3種類から選択する。
- Binpack
- CPUまたはメモリの最小利用可能量に基づいてタスクを配置する。
- 使用するインスタンス数を最小限に抑えることができる。
- Random
- タスクをランダムに配置する。
- Spread
- 指定された値に基づいてタスクを均等に配置する。
- Binpack
Elastic Beanstalkで展開完了までに最も時間がかからないデプロイ方式
- すべてのインスタンスに同時に展開する
All at once
を使用する。- メリット
- デプロイの時間が短くなる。
- デメリット
- デプロイする際にシステムが一瞬全停止する。
- デプロイに失敗した場合、切り戻しをするためにシステムを停止する期間が延びる。
- メリット
AWSとオンプレミスのハイブリッド環境にデプロイについて
- CodeDeployを利用してAWSリソースとオンプレミスの両方にアプリをデプロイすることが可能。
AWS Organizationsを利用した他アカウントが管理するリソースへのアクセス許可設定
- クロスアカウントアクセスの許可することで他のAWSアカウントにアクセス許可することができる。
クライアントとバックエンドがHTTPエンドポイントで直接対話するAPI Gatewayの統合タイプ
- 統合リクエストまたは統合レスポンスを設定せずにクライアントとバックエンドがAPI Gatewayが直接対話することができる
HTTP_PROXY
(HTTPプロキシ統合)を選択する。 - 統合タイプの種類は以下。
AWS
(Lambdaカスタム統合)- APIをLambda関数に統合する。
- 統合リクエストと統合レスポンスの両方を設定してデータのマッピングを行うことができる。
AWS_PROXY
(Lambdaプロキシ統合)- APIをLambda関数に統合する。
- 統合リクエストと統合レスポンスの設定はしない。
HTTP
(HTTPカスタム統合)- APIをバックエンドのHTTPエンドポイントに統合する。
- 統合リクエストと統合レスポンスの両方を設定してデータのマッピングを行うことができる。
HTTP_PROXY
(HTTPプロキシ統合)- APIをバックエンドのHTTPエンドポイントに統合する。
- 統合リクエストと統合レスポンスの設定はしない。
MOCK
(モック統合)- API Gatewayから直接レスポンスを生成する。
KMSによるサーバーサイド暗号化が設定されたS3へのアップロードリクエスト
- SSE-KMSでアップロードのデータを保護するには
x-amz-server-side-encryptio
ヘッダーにaws:kms
を設定する。- SSE-S3の場合は
AES256
を設定する。
- SSE-S3の場合は
Kinesis Data Streamsストリーム処理でプロデューサーの再試行が発生した際の重複対策
- ストリーミング処理が失敗した際、プロデューサーは同じデータを2回送信する可能性があるためレコードに主キーを埋め込み、後で重複データを削除することが必要となる。
サーバーレスアプリケーションを構築するCloudFormationテンプレートの設定方法
Transform
セクションにSAMバージョンを指定する。- そうすることでSAM構文で記述されたテンプレート全体を受け取り、CloudFormationテンプレートに変換および拡張することができる。
DynamoDBの単一パーティションに対して複数のインデックスを利用したクエリを実行可能な設計
- プライマリーキーがテーブルのパーティションキーで、別の属性を代替のソートキーとして作成することで検索性を向上することができるセカンダリインデックスを設定する。
- ローカルセカンダリインデックスはテーブル作成時に追加する。
DynamoDBの非キー属性のクエリを高速化する設計
- グローバルセカンダリインデックスを設定する。
- すべてのパーティションでテーブル全体に対してクエリを実行できるインデックス。
- 非キー属性を射影の対象にすることで非キー属性のクエリを高速化することができる。
ElastiCacheのキャッシュ内のデータが常に最新であることを確認して読み取られないデータを自動的に削除する設定
- 書き込みスルー戦略を実装し、データベースに書き込まれるとキャッシュのデータを常に最新の状態にする。
- TTLを有効にすることで、有効期限内に読み取られていないデータを削除して無駄な領域を最小限に抑える。
API呼び出し元からヘッダーおよびクエリ文字列パラメーターで認証をするLambdaオーソライザー
- リクエストパラメタベースのLambdaオーソライザーを選択する。
- 以下のパラメタタイプを使用することができる。
Header
Query String
Stage Variable
Context
- 以下のパラメタタイプを使用することができる。
ElastiCache Redisでコマンドを実行する際にパスワードを使った認証をする
- Redis AUTHでユーザ認証を行う。
- ユーザ認証意外でElastiCacheのデータ保護する場合。
- 保存されているデータを暗号化する:Redisレプリケーショングループ作成時にパラメーター
AtRestEncryptionEnabled
をtrue
に設定する。 - 転送中のデータを暗号化する:Redisレプリケーショングループを作成時に転送時の暗号化を有効に設定する。
- 保存されているデータを暗号化する:Redisレプリケーショングループ作成時にパラメーター
SQSで256KB以上のメッセージサイズを処理する際の対応
- S3とJava用Amazon SQS拡張クライアントライブラリを使用すること通常のメッセージサイズの上限である256KBから最大2GBまでのメッセージの処理が可能になる。
AWS CLIでEC2インスタンスの詳細モニタリングを有効化する設定
aws ec2 monitor-instances --instance-ids {EC2のインスタンスID}
- 詳細モニタリングを無効化する場合は
unmonitor-instances
を使う。
Lambdaのデッドレターキューが利用されるケース
- 非同期呼び出し処理の試行が3回失敗した時LambdaはSQSキューまたはSNSトピックにイベントを送信することができる。
- Lambdaがデッドレターキューにメッセージを送信できない場合、イベントは削除され、DeadLetterErrorsメトリクスが発行される。
- アクセス権限がない場合やメッセージサイズがキューやトピックの許容サイズを超過した際に発生する。
不正なドメインからのAPIアクセスが多発した際の、APIコール処理のパフォーマンスの改善
- API GatewayのCross-origin resource sharing (CORS)を無効化することで、自身のドメイン以外のドメインからリクエストを制限する。
DynamoDBパフォーマンスを向上させるためのプライマリキーの設計
- 以下の方法で読み込みもしくは書き込みのスループットを各パーティションに分散する。
- カーディナリティの高いパーティションキーを使用する。
- メールアドレスや従業員番号などなるべく一意となるような値を属性を使用する。
- 複合属性を使用する。
- 複数の属性を組み合わせてユニークキーを構成するようにする。
- パーティションキーに乱数を追加する。
- 書き込みの多いユースケースの場合、事前に定義された範囲からパーティションキーに乱数を追加する。
- カーディナリティの高いパーティションキーを使用する。
まとめ
AWS認定デベロッパーアソシエイトの学習記録でした。
模擬試験を1回解いてみましたがボロボロでした、、、
落ち込んでも仕方ないので毎日コツコツ勉強していきます。
スポンサーリンク
スポンサーリンク