めっちゃ歩く
フリーランスITエンジニアの
山旅系雑記ブログ
学習記録 PR

【学習記録】AWS認定デベロッパーアソシエイト学習記録③

AWS認定デベロッパーアソシエイトの学習記録3
<商品表示法に基づく表記>記事内にアフィリエイト広告が含まれている場合があります。

AWS認定デベロッパーアソシエイト取得に向けた学習記録です。
個人的なメモとして試験勉強で気になったところをまとめています。

目次

学習期間

  • 2021/09/07 – 2021/09/11

学習記録

KMSの主な特徴

  • 暗号化キーの一元管理
    • データ保護に使用するカスタマーマスターキー (CMK)を生成、インポートして管理する。
    • CMKで暗号化キーを生成してデータの暗号化を行う。
    • CMKは定期的にローテーションをすることができる。
  • 監査機能
    • CloudTrailを有効にした場合、CMK の使用状況がS3に保存される。

CloudFormationスタックでスタック間のリソース共有(クロススタック参照)について

  • クロススタック参照するにはFn::ImportValue組み込み関数を使用しては別のスタックによってエクスポートされた出力値を参照する。
  • クロススタック参照の制限事項
    • 単一のAWSアカウント内において、エクスポート名はリージョン内で一意である必要がある。
    • リージョンを跨るクロススタック参照は不可。Fn::ImportValue組み込み関数は同リージョンでエクスポートされた値のみインポートが可能。
    • OutputsNameプロパティとImportValue関数は、にリソースに依存するRefまたはGetAtt関数の使用は不可。
    • 他のスタックがOutputsで参照している場合は、参照されている側のスタックの削除は不可。
    • 他のスタックで参照した出力値の変更・削除は不可。

Elastic Beanstalkのデプロイポリシー

  • All at Once
    • 既存のインスタンスを利用して新しいバージョンを展開する。
    • 同時にすべてのインスタンスに展開する。
    • メリット
      • デプロイポリシーの中で一番早い。
    • デメリット
      • デプロイ失敗時の切り戻しの時間がかかる。
      • システムが停止している期間が発生する。
  • Rolling
    • 既存のインスタンスを利用して新しいバージョンを展開する。
    • 1回のバッチで置き換えるインスタンス数(バッチサイズ)を設定する。
    • メリット
      • システムが停止している期間が発生しない。
      • デプロイ失敗時の切り戻しがしやすい。
    • デメリット
      • デプロイ中は縮退構成になりシステムが動作するのに十分な容量を確保できない状態が発生する場合がある。
      • 古いバージョンと新しいバージョンのアプリケーションが混在する期間が発生する。
  • Rolling with additional batch
    • 既存のインスタンスと新しく作成したインスタンスを利用して新しいバージョンを展開する。
    • 最初に新しいインスタンスに新しいバージョンを展開して容量を確保したあとに既存のインスタンスに展開する。
    • メリット
      • システムが停止している期間が発生しない。
      • デプロイ失敗時の切り戻しがしやすい。
      • システムが動作するのに十分な容量をデプロイ中に確保できる。
    • デメリット
      • 古いバージョンと新しいバージョンのアプリケーションが混在する期間が発生する。
  • Immutable
    • 新しく作成したインスタンスを利用して新しいバージョンを展開する。
    • 別のAuto Scalingグループに新しいインスタンスをフルセットで起動する。
    • すべての新しいインスタンスが正常に起動したら既存のインスタンスを停止する。
    • メリット
      • システムが停止している期間が発生しない。
      • デプロイポリシーの中でデプロイ失敗時の切り戻しがしやすい。
      • システムが動作するのに十分な容量をデプロイ中に確保できる。
      • インスタンスを使い捨てできる。
    • デメリット
      • デプロイに時間がかかる。
      • 古いバージョンと新しいバージョンのアプリケーションが混在する期間が発生する。

CloudFrontとビューア間でHTTPS通信する際の設定

  • CloudFrontのビューワープロトコルポリシーに「Redirect HTTP to HTTPS」または「HTTPS Only」を設定して、CloudFrontに対してAWS Certificate Manager(ACM)が提供する証明書を設定します。

ECSのタスク定義

  • ECSでDockerコンテナを実行するためにはタスク定義が必要。
  • タスク定義は以下を設定する。
    • タスクファミリー(必須)
    • IAMタスクロール
    • ネットワークモード
    • コンテナ定義(必須)
    • ボリューム
    • タスク配置の制約事項
    • 起動タイプ

サーバーレスアプリケーションを構築する際のCloudFormationテンプレートの設定

  • AWS::Serverlessオプションを使用してTransformセクションにSAMバージョンを指定する。

Elastic Beanstalkのワーカー環境で定期的なタスク実行をする際に必要な設定ファイル

  • ソースコードのルートにcron.yamlを配備することで、定期的にワーカー環境のキューにジョブを自動的に追加することができる。
  • ワーカー環境について
    • SQS+Auto Scalingでスケーラブルなバッチ処理基盤。
    • バッチアプリケーションをElastic Beanstalkで実行する際に使用する。
    • SQSキューに登録されたジョブを各インスタンスのデーモンプロセスが実行する。

AWS X-Rayで適切なセグメント検索やトレースを実施するための設定

  • X-Rayコンソールでフィルタ式を使用して、検索したいトレース情報の結果を絞り込む。
  • X-RayコンソールまたはGetTraceSummaries APIを使用して、特定の情報に関連付けられたセグメントを検索する。

DynamoDBテーブルへのデータを格納する際の書き込み容量不足に対する対応

  • 書き込みシャーディングを使用してワークロードを均等に分散させることで書き込み容量を増やす。

DynamoDBのキャパシティーユニットについて

  • 読み込みキャパシティーユニット(RCU)
    • 1ユニットあたりの最大サイズ:4KB
    • 1秒あたりの読み込み回数
      • 強力な整合性:1回
      • 結果整合性:2回
  • 書き込みキャパシティーユニット(WCU)
    • 1ユニットあたりの最大サイズ:1KB
    • 1秒あたり書き込み回数:1回

Elastic BeanstalkでDNSスイッチを使用してトラフィックを新しいバージョンにリダイレクトする展開方式

  • Blue-Green Deployment方式を設定する。
    • 新しく作成したインスタンスを利用して新しいバージョンを展開した後、古いバージョンの環境から新しいバージョンの環境にトラフィックを切り替わるようにDNSスイッチする。
    • 実際にはクライアント側がキャッシュで接続先を保持している場合は古いバージョンへリクエストをする可能性がある。

DynamoDBから一部の属性のみを取得するためのオプション

  • --projection-expression(ProjectionExpression)オプションを使用する。
    • get-itemqueryscan などのオペレーションで使用可能。
    • DynamoDBテーブルから特定の属性サブセットを取得する。
    • 複数指定はカンマ区切りで指定する。

Elastic Beanstalkの設定ファイルの格納先

  • アプリケーションのソースバンドルのルートに.ebextensionsディレクトリに設定ファイルを配備する。

PCやモバイルなどのデバイス間でアプリケーションデータを同期するための新しいサービスについて

  • AWS AppSyncとAmazon Cognito Syncを利用することで同期することが可能。
    • AWS AppSyncの利用が推奨されている。

Amazon Kinesis Data Streamsが時間とともにスケールする設定

  • シャード分割を実現するように設定することでスケールが可能となる。
    • シャードの追加をする。
    • パーティションキーに多数の異なる値を使用する。

CodeBuildのログの設定

  • Codebuildに対してCloudTrailを有効化することでどのようなリクエストが行われたか確認することができる。
  • S3とCloudWatchの統合を有効化することでCodeBuildの実行データのログを確認することができる。

ELBからサーバにクライアント固有のIPアドレスを連携する方法

  • クライアントのIPアドレスをX-Forwarded-Forヘッダーをリクエストに設定する。

ECSのFargate起動モードでのX-Rayデーモンを実行方法

  • X-Rayデーモンエージェントをサイドカーコンテナとしてデプロイする。
    • UDPポート2000のトラフィックを利用する。
    • Fargate起動モードではインスタンスの制御ができないためデプロイする必要がある。
  • IAMロールタスクでX-RayがFargateを操作するためのアクセス権限を設定する

SQSのFIFOキューで重複したメッセージを排除するメッセージパラメタ

  • メッセージ重複排除IDを利用する。
    • コンテンツに基づく重複削除する設定の場合はIDは自動作成されるが、そうでない場合は自前で作成する必要がある。
    • 同一のメッセージ重複排除IDが設定されたメッセージは5分間の間は受け付けない。

X-Rayを使用する際の考慮事項

  • サブセグメントを作成して、AWSサービスとAWS SDKで作成するリソースへの呼び出などの記録することができる。
  • セグメント(サブセグメント)にメタデータオブジェクトを含めることで追加のカスタムデータを設定することが可能。

Lambdaにアップロードするパッケージが大きすぎてエラーになった際の回避方法

  • Lambdaレイヤーを利用してLambda関数の依存関係をアップロードする。

Elastic Beanstalkで展開するアプリケーションの環境名などを構成するファイル

  • env.yamlに環境の名前、ソリューションスタックと環境リンクを設定する。
  • アプリケーションのソースバンドルのルートに配備する。

まとめ

AWS認定デベロッパーアソシエイトの学習記録でした。
Beanstalkの理解不足が目立つな、、、
あとは開発現場の改善とか興味あるのでCodeシリーズについてもう少し勉強したいと思いました。