AWS認定ソリューションアーキテクト-アソシエイトの試験勉強メモ

先日AWS認定ソリューションアーキテクト-アソシエイトを受験して合格したので、勉強の際に間違った部分のメモを忘れない内にダンプしておこうと思います。

以下メモ

グローバルインフラストラクチャとネットワーク

VPC

ルートテーブル

サブネット毎に1つ設定 1つのルートテーブルを複数のVPCで共有は可。1つのサブネットに複数のルートテーブルの適用は不可。 宛先アドレスとターゲットなるゲートウェイネクストホップ)を指定する。 VPCにはメインルートテーブルが有りサブネット作成時に指定しない場合のデフォルトのルートテーブルになる。

セキュリティグループとネットワークACL

セキュリティグループ

インスタンス単位の通信に利用
ステートフル (デフォルト拒否)

ネットワークACL

サブネット単位の通信に利用
ステートレス(デフォルト許可)

ゲートウェイ

インターネットゲートウェイ

各VPCに1つだけアタッチすることができる。
VPC内のリソースからインターネットへアクセスするためのゲートウェイ。インターネットゲートウェイをVPCにアタッチするとVPCからインターネットに出ることができる。

NATゲートウェイ

プライベートサブネットからインターネットへ接続するために用いる。AWSではマネージドなサービスとして提供されていてAZ内で冗長化されている。
NATゲートウェイを利用しない場合はNATインスタンスと呼ばれるEC2インスタンスを利用してインターネットにアクセスする。この場合は「送信元/送信先チェック」を無効化し、自身へのトラフィックを破棄する設定が必要になる。EC2インスタンスを利用するため単一障害点にならないよう冗長化の仕組みを検討する必要がある。

インターネットゲートウェイとNATゲートウェイ

パブリックサブネットにあるものはインターネットゲートウェイを通じてインターネットに出られる。
プライベートサブネットにあるものはインターネットゲートウェイへ直接接続できないので同じAZのパブリックサブネット内に配置したNATゲートウェイを通じてインターネットへ出る(前段に噛ますイメージ)。

仮想プライベートゲートウェイ

VPCがVPNやDirect Connectと接続するためのゲートウェイ

VPCエンドポイント

VPC内からインターネット上のAWSサービスに接続するための方法。
ネットワークレイヤーのゲートウェイ型とアプリケーションレイヤーのインタフェース型の2種類存在。

ゲートウェイ

ルーティングを利用。ルートテーブルに指定されたターゲットを追加することでS3やDynamoDBへインターネットを経由せずに接続できる。

インターフェース型

AWS PrivateLinkとも呼ばれ、AWSへのAPIコールに対してインターネットを接続せずに実現できる。

VPCピアリング

異なるVPC間をプライベート接続する機能。インターネットを経由しないでAWSのプライベートネットワーク内で直接通信できるようになる。異なるAWSアカウント間でも可能だがネットワークアドレスが一致or重複している場合は接続できない。

VPCフローログ

VPC内の通信の解析に利用。送信元/送信元アドレス、プロトコル番号、データ量と許可/拒否の区別が記録される。

ネットワーキングとコンテンツ配信

Route53

権威DNS

権威DNSはドメイン名とIPアドレスの変換情報を保持しているDNS ↔ キャッシュDNSは変換情報を保持していないDNS

ホストゾーンとレコード情報

ホストゾーン:レコード情報の管理単位。通常はドメイン名。
Zone Apex:最上位ドメインのこと
レコード情報:「www.example.comはIPアドレスが192.168.0.100である」のような変換情報。

レコードタイプ

Route53では各レコードに対してTTLを設定することができる Aレコード:ドメイン名からIPアドレスを取得 MXレコード:対象ドメイン宛のメール配送先ホスト名を定義 CNAMEレコード:ドメイン名から別のドメイン名を参照。ホストに関係なく登録できる。 ALIASレコード:各AWSプロダクト(ELB, CloudFront等)で利用するDNS名専用の、CNAMEレコード風の挙動を実現するレコード。ZoneApexの別名解決に用いる。

トラフィックルーティング

シンプルルーティング:設定されたレコードの情報に従ってルーティングする
フェイルオーバールーティング:ルーティング対象となるリソースへのヘルスチェックを行い、利用できるリソースへルーティングする
位置情報ルーティング:接続クライントの場所に基づいて地理的に近い場所へルーティングする
地理的近接性ルーティング:リソースの場所に基づいてルーティングする。リソースの移動の際に使用する。
レイテンシーベースルーティング:最もレイテンシーが低いリソースへルーティングする
複数値回答ルーティング:1つのレコードに異なるIPアドレスを複数登録しランダムに返却されたIPアドレスに接続。ヘルスチェックがNGになったIPアドレスは返却されないので正常に稼働しているサーバに対してのみアクセスを分散できる。
加重ルーティング:複数のリソースに対して加重度を設定し指定した比率に応じて処理を分散するようルーティングする

DNSフェイルオーバー

Route53が持つフォールトトレラントアーキテクチャ
フォールトトレラントアーキテクチャとはシステムに異常が発生した場合でも被害を最小限度に抑えるための仕組み。

コンピューティングサービス

EC2

EC2における性能の考え方

インスタンスタイプ

mとかpはインスタンスファミリー、数字は世代を表す。xlargeなどはインスタンスサイズを表す。
Dedicatedインスタンスはホストマシンを専有するタイプのインスタンス。

インスタンスメタデータ

インスタンスID
プライベートIPv4アドレス
パブリックIPv4アドレス
ローカルホスト名
公開鍵

AMI

EBS-Backedインスタンス or Instance Store-Backedインスタンスの2種類。EBS-Backedはデータを永続化でき、Instance Store-Backedは揮発性のためインスタンス停止時にデータが消える。

ELB

クロスゾーン負荷分散を有効にすると複数のAZに登録された全てのEC2インスタンスに対してリクエストを均等に分散する。

ELBの種類

Classic Load Balancer:L4/L7レイヤーで負荷分散を行う。
Application Load Balancer:L7レイヤーで負荷分散を行う。CLBよりも後に登場し機能も豊富。
Network Load Balancer:L4レイヤーで負荷分散を行う。HTTP(S)以外のプロトコル通信の負荷分散をしたいときに用いる。

Auto Scaling

EC2だけではなくELB, RDSに対しても設定できる。
最大インスタンス数などのスケールためのルールはAutoScalingGroupに記述する。

運用支援サービス

CloudWatch

メトリクス

標準メトリクスにある

CPUUtilization: CPU使用率
DiskReadOps: (指定期間における)インスタンスボリュームストアからの読み取り回数
DiskReadBytes: インスタンスボリュームから読み取られたバイト数
NetworkIn: すべてのネットワークインターフェースから受信されたバイト数

カスタムメトリクスで設定する必要がある

メモリ使用率
ディスク使用量等

等など

CloudWatch Logs

EC2などにCloudWatch Logs専用のエージェントをインストールする必要がある。
CloudTrailやVPCフローログ等様々なAWSのログを統合的に収集する。

CloudWatch Events

AWS上のリソースを監視しあるイベントをトリガーにアクションを実行する機能。例えばEC2インスタンスの状態を監視し変化があればLambdaやSNSを実行するなどができる。CloudWatchはメトリクスを監視していて、CloudWatch Eventsは状態を監視している。
スケジュールもイベントとして取り扱える。
GuardDutyと連携するときはGuardDutyの状態の変更をCloudWatch Eventsで監視する

CloudWatchアラーム

CloudWatchで監視している項目がある一定値になった場合にアラームとアクションを起動できる。

ストレージサービス

EBS

スナップショットを作成を開始する際は止めておく(デタッチしておく)。スナップショットを取り始めたらアタッチをしてもOK(完了を待たなくても良い)
AZをまたぐことは出来ない。

ボリュームタイプ

汎用SSD:デフォルトのSSD。安価。OSのルート領域などI/Oを要求されないデータ領域で利用
プロビジョンドIOPS SSD: 高パフォーマンスを実現。ミッションクリティカルなシーンで利用される。汎用SSDより高いパフォーマンスがほしい場合に利用
スループット最適化HDD:HDDタイプのストレージ。大容量を安価に利用したいとき。アクセス頻度が多いとき
Cold HDD:低コスト

EFS

スケーラブルな共有ストレージサービス。EC2やオンプレミスから利用できる。NFSの機能を有している。現状はLinuxのファイルシステムのみサポート

S3

ストレージクラス

スタンダード:頻繁にアクセスするデータの格納に適している。
標準低頻度アクセス:低頻度でアクセスされるものの、必要なときにアクセス可能なデータを格納するのに適している。
1ゾーン低頻度アクセス:RRS S3と呼ばれるもの。低頻度でアクセスされるものの、必要な時にアクセス可能なデータを格納するのに適している。1つのAZにしか格納されないため低コストだが、その分耐久性が低い。

オプション

デフォルトでリージョン内複製を有効になっている。バージョニングなどのオプションはユーザが任意で設定する。リージョン内複製をとっていても削除処理を行った場合は複製も消える(あくまで耐久性向上のための複製という見方?)。

バケットポリシー

削除の禁止を行うことで誤削除を防げる。

小技

ファイル名の先頭にランダムな文字列を付与するとインデックスが分散されてパフォーマンスの向上が期待できる。

Glacier

迅速(Expedited):1〜5分でアーカイブデータの取り出しが可能
標準(Standard):3〜5時間でアーカイブデータの取り出しが可能

大容量(Bulk):5〜12時間でアーカイブデータの取り出しが可能

データベースサービス

RDS

マルチAZ化可能。
リードレプリカにより読み取り性能の向上が可能(≠冗長化)
AutoScalingでリードレプリカを作ることも可能
SSL接続のためのオプションは--ssl-ca

Redshift

列指向データベース。
ペタバイト規模のデータを標準SQLで分析可能。
リーダーノードに対しコンピュータノードが1対Nで構成される。耐障害性を高めるにはノードを増やす。マルチAZは対応していない。

DynamoDB

DynamoDB Accelerator

DynamoDB用のインメモリキャッシュ

ElastiCache セッションを格納するのに良い。

セキュリティとアイデンティティ

KMS

AWS上で鍵管理を提供するマネージドサービス。
暗号化鍵の作成や有効/無効の管理、ローテーション、削除ができる

CloudHSM

AWSのデータセンター内に配置されるユーザ占有のハードウェアアプライアンス。

プロビジョニングサービス

Elastic Beanstalk

定番構成の自動構築
対応しているアプリケーション:Java, .NET, PHP, Node, js, Python, Ruby, Go, Docker
対応しているデプロイサーバ:Apache HTTP Server, Nginx, Passenger, Microsoft Internet Information Service(IIS) 等

AWS OpsWorks

OSより上のレイヤーの自動構築をサポート
ChefやPupperを利用できる。

AWSにおけるアーキテクチャ設計

AWS Well-Architectedフレームワーク

回復性の高いアーキテクチャを設計する
パフォーマンスに優れたアーキテクチャを定義する
セキュアなアプリケーション及びアーキテクチャを規定する
コスト最適化アーキテクチャを設計する
オペレーショナルエクセレンスを備えたアーキテクチャを定義する

AWS Trusted Advisor

コスト最適化
セキュリティ
耐障害性
パフォーマンス
サービスの制限

ストリーム処理

Kinesis Data Streams

ストリーミングデータをほぼリアルタイムで保存、EMRやLambdaなどの後続処理に流せる。
シャード単位でデータを分割して並行処理が可能。

Kinesis Data Firehose

ストリームデータをAWSの各サービスに配信、保存できる。

Kinesis Data Analytics

ストリーミングデータに対してSQLクエリを実行しリアルタイム分析を行う。

サービスの種類

グローバルサービス:S3, Route53
リージョンサービス:VPC
AZサービス:EC2, EBS, ELB, RDS