AWS認定(3)SysOps アドミニストレーター(アソシエイト)に合格するまで

AWS認定SysOpsアドミニストレーター試験合格に向けての資料集。以下の資料を何度も読み込んで、手を動かしながら実践を繰り返すことが合格の近道となる。

出題範囲と学習法

AWS認定SysOpsアドミニストレーター試験の問題は、AWS上でデプロイ運用管理を行う際に、可用性や拡張性を考慮してどのようなサービスや機能を選択すべきかについて問われることが多い。AWSが提供するサービスは100を超えるが、本試験を受講する上では以下のサービスを理解しておくことが望ましい。

カテゴリ サービス名
コスト管理 Cost Explorer
コンピューティング Auto Scaling, ELB
データベース RDS
マネジメントとガバナンス CloudWatch, Personal Health Dashboard, Config, System Manager, CloudFormation, Trusted Advisor
移行と転送 Snowball
ネットワーキングとコンテンツ配信 VPC, Route 53, DirectConnect
セキュリティとコンプライアンス IAM, Organizations
ストレージ S3, Glacier, EBS

勉強法は、

  1. サンプル問題集に目を通してレベルを確認する
  2. 以下の資料を読みながら実際に各サービスに触れる
  3. 模擬試験を受講する

で十分合格ラインに行くかと。ちなみに学習時間はソリューションアーキテクトとデベロッパーを取得済みだったので3日ほど。なお、各サービスのドキュメントにベストプラクティスの項目が存在する場合は、該当部分を理解しておく

対策本

対策本はほとんど発売されていない。以下の本が唯一の試験対策本。この本には、各サービスの概要や特徴が簡潔に書かれており、AWSの各サービスの概要を学ぶためには非常に有効。一方で、章末問題と実際の試験問題は異なるので、実際の問題に慣れるためには、模擬試験の受講が必要である。

AWSの概要とセキュリティ

AWS(1)AWSの概要とメリット
AWS(4)Well-Architectedフレームワーク
AWS(5)セキュリティのベストプラクティス

AWS Identity and Access Management

AWS(2)セキュリティの概要
AWS Identity and Access Management(1)IAMの概要
AWS Identity and Access Management(4)STS

AWSの基本サービスの概要

Amazon EC2 と Elastic Load Balancing

AWS EC2(1)EC2の概要
AWS EC2(3)AMIとインスタンス
AWS EC2(6)Elastic Load Balancing
EC2(7)Auto Scaling

Amazon VPC

AWS VPC (1)Amazon Virtual Private Cloud とは

Amazon S3

AWS S3(3)S3の概要
AWS S3(4)使用する上で注意すること

Amazon RDS

AWS RDS(1)Relational Database Serviceの概要

Amazon SQS

AWS SQS(1)Amazon Simple Queue Serviceの概要

AWS CloudFormation

AWS CloudFormation(1)CloudFormationの概要

Amazon CloudWatch

AWS CloudWatch(1)CloudWatchの概要

AWS EC2(7)Auto Scaling

EC2 Auto Scalingとは

EC2 Auto Scalingを用いることで、アプリケーションの負荷を処理するための適切な数のEC2インスタンスを利用することができる、。Auto Scalingを利用するためには、Auto Scalingグループと呼ばれるEC2インスタンスの集合を定義し、このグループに含まれる最小と最大のインスタンスの数を定義する。また、希望するインスタンス数(Desired capacity)を定義することも可能。また、Auto Scalingグループ内のEC2インスタンスを複数のAZに分散配置することで、地理的な冗長性や安全性を実現できる。

Auto Scaling グループ

Auto Scalingを用いることで、耐障害性や可用性が向上する。また、必要な数のインスタンスのみ起動されるため安定的なパフォーマンスを低コストで実現することができる。

Auto Scalingグループ内の各EC2インスタンスの負荷に偏りが発生した場合は、古いインスタンスを終了して新しいインスタンスを起動させる。この場合にスムーズに処理が継続されるように、一時的に最大容量に対して10%のマージンが確保される

ライフサイクル

Auto Scalingのライフサイクルは以下の通り。

ライフサイクル

Auto Scalingグループはグループ内のインスタンスに対して定期的にヘルスチェックを行なっている。スケールイン/アウトは、手動もしくはスケーリングポリシースケジュールに基づき実行される。スケールイン、ヘルスチェックの失敗、Auto Scalingグループからの離脱等が発生した場合には、Auto Scalingグループ内のEC2インスタンスは終了処理が実施される。

Auto Scalingグループ

起動設定

Auto Scalingグループ内のEC2インスタンスは、起動テンプレートもしくは起動設定の設定内容に基づいて起動される。これらには、AMIのIDやインスタンスタイプ、ネットワーク設定、ストレージの設定、オンデマンドインスタンスとスポットインスタンスの配分等が含まれる。また、起動設定は、既に起動済みのインスタンスの属性を使用して作成することも可能である。Auto Scalingグループに関連付けられる起動設定は1つだけであり、グループ作成後に変更することはできない。Auto Scalingグループに関連づける起動設定を変更する場合は、現在の起動設定をコピーした上で新たな起動設定を作成し、これを当該のAuto Scalingグループに紐づける。

ロードバランサとの連携

Auto Scalingで増減したインスタンスに対して適切にトラフィックが分散されるようにするためには、Elastic Load Balancingの受信トラフィックの通信先にAuto Scalingグループを指定する。Auto Scalingのヘルスチェックは、通常EC2のステータスチェックのみであるが、オプションでELBのヘルスチェックを用いてAuto Scalingグループのヘルスチェックを行う設定にすることも可能である。この場合、ELBから送られる定期的なPINGに応答しないなど、ELBのヘルスチェック合格しなかった場合、このインスタンスは異常ありと判定されて他のインスタンスに置き換えられる。

スケーリング

Auto Scalingでは、以下のスケーリング方法を実施可能である。

  • 現在のインスタンスレベルの維持
  • 手動スケーリング
  • スケジュールに基づくスケーリング
  • 要求に基づくスケーリング(動的スケーリング

CloudWatchのメトリクスを利用して複数のスケーリングポリシーを適用することも可能である。例えば、EC2のCPU使用率を指標としたポリシーと、SQSのメッセージ処理に関するメトリクスを指標としたポリシーを同時に適用する、といったような場合である。複数のポリシーが適用となった場合は、より影響を与えるポリシーの実行命令が優先される

スケジュールされたスケーリング

あらかじめ指定したスケジュールに沿って、スケーリングアクションが実行されるように指定することが可能である。スケーリングアクションが有効になる時間と、最小/最大サイズ希望するサイズを指定する。このスケジュールは、1回のみ実行することも定期的に実行することもできる。

スケジュールされたスケーリングを作成する場合、ほとんどの場合指定した時刻から数秒以内に実行されるが、最大2分ほど遅れる可能性もあるので留意が必要である。また、複数のスケジュールを同時刻に設定することはできない。

動的スケーリング

動的スケーリングは、以下の方法をサポートしている。

ポリシー名 トリガおよび動作
Target tracking scaling 特定のメトリクスのターゲット値を維持するようにスケーリング
Step scaling 複数のスケーリング調整値をトリガにスケーリング
Simple scaling 1つのスケーリング調整値をトリガにスケーリング

Simple scaling および Step scaling

トリガに基づいてスケーリングが実行される際には、以下の調整タイプに基づいてスケーリングが実行される。

調整タイプ 動作
ChangeInCapacity 指定した数だけ増減する
ExactCapacity 指定した数になるように増減する
PercentChangeInCapacity 割合指定する

また、Step scalingの場合は、新しく起動されたインスタンスがAuto Scalingグループに追加されるまでの待ち時間(ウォームアップ)を指定できる。

SQSに基づくスケーリング

SQSにキューが積み上がり、処理が遅延することがないようにするには、 SQSのデータを読み取り処理を行うEC2をAuto Scalingさせる必要がある。このAuto Scalingを適切にスケーリングさせるためには、 Amazon SQS メトリックスApproximateNumberOfMessagesを用いてキューの長さを測定した上で、1インスタンスあたりの処理能力を計算しどの程度スケーリングさせる必要があるか指定する。

SQSに基づくスケーリング

クールダウン

メトリクス値が短期間で増減し、その度にスケーリングが実行されることを防ぐために、クールダウン期間が設けられている。デフォルトのクールダウン値は300秒。クールダウン期間は新たなスケーリングは実行できない。なお、このクールダウンが有効なのは、Simple scalingのみ。

インスタンスの停止

スケールイン時に停止されるインスタンスは以下の条件で決定される。

  1. インスタンスが最も多いAZ
  2. 最も古い起動設定またはテンプレートを使用している
  3. 次の課金開始時間に近いインスタンス

終了時ポリシーはカスタマイズが可能である。また、終了から保護するインスタンスを指定することもできる。

ポリシー名 実行内容
OldestInstance 最も古いインスタンス
NewestInstance 最も新しいインスタンス
OldestLaunchConfiguration 最も古い起動設定のインスタンス
ClosestToNextInstanceHour 次の課金開始時間に近いインスタンス
Default デフォルト(上記)
OldestLaunchTemplate 最も古い起動テンプレート
AllocationStrategy オンデマンド/スポットの割り当て戦略に合わせて決定

ライフサイクルフック

インスタンスの起動時もしくは削除時に一時停止して、カスタムアクションを実行できる機能。ソフトウェア等をインストールできる。

ライフサイクルフック

スケーリングプロセスの中断と再開

スケーリングプロセスの1つ以上を停止し、あとで再開できる。

スケーリングプロセス 内容
Launch インスタンスを追加
Terminate インスタンスを削除
HealthCheck ヘルスチェック
ReplaceUnhealthy 異常なインスタンスを削除し代替インスタンスを作成
AZRebalance AZ間のバランスを調整
AlarmNotification CloudWatchからアラーム通知を受け取る
ScheduledActions スケジュールされたアクションを実施
AddToLoadBalancer ELBに追加

注意事項

Auto Scalingは、バーストトラフィックには対応できない

AWS CloudFormation(1)CloudFormationの概要

CloudFormationについて

使用するAWSの全てのリソースをテンプレートに記述することで、これらのリソースのデプロイや設定を自動で行なってくれるのが、AWS CloudFormationである。テンプレートは、JSONもしくはYAML形式で記述できる。CloudFormationは、既存のテンプレートを作成または変更、削除することが可能であることから、作成済みのリソースの変更や複製も容易である。変更時には履歴が残るため、過去に遡って変更点を確認することもできる。

テンプレートとスタック

テンプレートには、リソースのデプロイ時に値を手動入力できる入力パラメータを設定することができる。このテンプレートを適用したリソースの集合体をスタックと呼ぶ。スタックおよびリソースに変更を加える際に、既存のリソースにどのような影響があるかを事前に調べるために、**変更セット(Edit Template)**を記述することもできる。

変更セットのデプロイ