##はじめに
先日、AWSソリューションアーキテクト アソシエイトに合格しました。
試験勉強の際にこれ重要だな、これ知らなかったなと思ったものを纏めていたので共有します!!
少しでも皆様の合格のお役に立てれば。
量が少し多かったため、主要サービス編とその他サービス編で2回に分けて公開します。
(合格ギリギリでしたが。。w)
##ちなみに使った教材は?
①徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書 徹底攻略シリーズ
→黒本。主要なサービスの概要が載っており、初めてAWSを勉強する方にオススメ!
②これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(初心者向け21時間完全コース)
→Udemyの講座。ハンズオンが多く、①を勉強した後にやると効率良いです。
テストも3回分付いており、良質な問題が多い!!(テストだけやるために購入する価値あり)
セール中だと1400円ほどで購入できます。
アプリからも講座を見れるので、通勤中にもできるので非常にオススメ!
③合格対策 AWS認定ソリューションアーキテクト -アソシエイト
→青白本。個人的に①の下⚪︎互換。(初期に出版されたのでやむなしか。。)
とりあえず1周はしましたが、あとはほとんど見てないです。
ということで①と②だけで合格できます!BlackBeltや他の教材は使っていません。
また②にテストが付いているので、公式模擬試験も受けてないです。
最速で試験合格が目標なら、①と②のテストだけやれば個人的にいけます!
それでは、本題に入っていきます!
##アジェンダ
- 全般
- EC2
- VPC
- ELB
- Route53
- CloudFront
- Lambda
- S3
- RDS
- DynamoDB
##1.全般
・AWS well-architectured フレームワーク
①運用上の優秀性
②セキュリティ
③信頼性
④パフォーマンス効率
⑤コスト最適化
・グローバルサービス
IAM, CloudFront, Route53 など
・リージョンサービス
VPC, DynamoDB, Lambda, S3, SQS など
・アベイラビリティーゾーンサービス
VPCのサブネット, EC2, RDS, EBS, ELB, Redshift など
##2.EC2(Elastic Compute Cloud)
安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービス
公式ページ_EC2
memo |
---|
オンデマンドインスタンスはインスタンスファミリー、OS、テナンシー、支払いオプションの変更ができない。リザーブドは可能。 |
インスタンスストアは、EC2の一時的なデータが保持される。インスタンスが停止または終了した場合、インスタンスストアボリューム上のデータはすべて失われるため。 EBSは他の物理ハードドライブと同じように使用可能。インスタンスが停止または終了した場合でも、データは失われない。 |
タグを使用すると、目的、所有者、環境など、さまざまな方法でAWSリソースを分類可能。 EC2インスタンスの開発用タグで分類分けを行い、そのタグが設定されているEC2インスタンスのみに操作できるようにIAMポリシーを設定することで、本番用への削除権限を与えない設定が可能。 |
AWSでは初期の制限によって、リージョンあたり20インスタンスという制限設定がある。 Auto Scalingで立ち上げが失敗した際は限度引き上げ申請を行い、承認されたら失敗した要求を再試行を行うことで立ち上げ可能。 |
EC2インスタンスを立ち上げたばかりのときにステータス情報がデータ不足の場合は、ボリューム上でチェックがまだ進行中である可能性がある。 |
起動設定においてソフトウェアがインストールされた最新の状態のAMIを作成するか、Bashスクリプトでソフトウェアのインストールを仕込んでおくことで自動で同じEC2インスタンスを起動できるようになる。 |
EBSのバックアップを取得することで、S3にデータが保存されるためEBSを復元することは可能だが、EC2インスタンスの設定自体は回復することができない。 |
Elastic IPは、起動しているEC2インスタンスにアタッチされている場合には料金発生なし。 |
プレイスメントグループとは、単一のアベイラビリティーゾーン内のEC2インスタンスを論理的にグルーピングしたもの。より高速に処理可能。 |
EC2インスタンスはステートレスなアプリ開発には向いてない。 ステートレスアプリケーションとは以前のシステム上のやり取りについての状態情報が不要なため、セッション情報が格納されていないアプリケーションのこと。 ステートレスな処理をサービス化するならば、Lambdaを利用する方がコスト最適できる可能性が高い。 |
3つのボリュームすべてのスナップショットを取るためにには、EC2インスタンスを停止して静止点を設けた上で、各EC2インスタンスのスナップショットを個別に作成する必要がある。 |
Dedicated Host:ユーザー専用のホスト。 |
スティッキーセッション:セッション中に同じユーザーから来たリクエストを全て同じEC2インスタンスに送信する機能。 |
VM import export: オンプレミス環境に作成した仮想サーバのマシンイメージをEC2インスタンスにインポート・エクスポートできる機能。 |
リザーブドインスタンスマーケットプレイス: 期間の長さや価格設定オプションが異なるサードパーティおよびAWSのお客様の未使用の標準リザーブドインスタンスの販売をサポートするプラットフォーム。 |
##3.VPC(Virtual Private Cloud)
AWS クラウドの論理的に分離されたセクションをプロビジョニングし、お客様が定義した仮想ネットワーク内の AWS リソースを起動することができます。自分の IP アドレス範囲の選択、サブネットの作成、ルートテーブルやネットワークゲートウェイの設定など、仮想ネットワーキング環境を完全に制御できます。
公式ページ_VPC
memo |
---|
ルートテーブル内のデフォルトゲートウェイ(0.0.0.0/0)へのルーティングに、インターネットゲートウェイを指定するとパブリックサブネット。 指定していないサブネットがプライベートサブネット。 |
NATゲートウェイをパブリックサブネットに配置し経由するとプライベートサブネットからインターネットへ接続可能。 |
サブネットはAZに跨って作成不可。 |
VPC内のすべてのサブネット間の通信はデフォルトのルーティングルールで許可されており、変更削除は不可 |
VPC内のCIDRは/16から/28までが利用可能。 |
VPCのDNS hostnamesオプションがYesに設定されていないと、サブネットで起動されたインスタンスはDNS名を取得できない。VPC構成の設定を変更することで解決可能。 |
VPゲートウェイ: direct connect やインターネットVPN接続するためのゲートウェイ。オンプレミス環境と接続するVPCにアタッチ。 |
VPCピアリング接続: VPC同士はインターネットを経由せずに、プライベートネットワーク内で直接通信が可能。これ無しだと、VPC同士は直接通信は行えない。異なるAWSアカウント間でも可能だが、ネットワークアドレスが一致または重複する場合は接続不可。接続する2つのVPCが同一リージョンに存在する必要がある。 |
VPCエンドポイント: プライベートサブネットからS3やDynamoDBへアクセスする際、インターネットを経由せずにプライベート接続可能。ルートテーブルでアクセスするIPアドレスをVPCエンドポイントへ向けるように設定する。 |
セキュリティグループ: インスタンス単位に適用可能なファイアウォール機能。デフォルトはインバウンドは全て拒否。アウトバウンドは全て許可。 ステートフルなので、戻りのトラフィックを考慮しなくてよい。設定後すぐルール適用される。 指定は許可のみ、拒否の指定不可。インバウンドは必要最低限、アウトバウンドは基本全て許可する。 |
ネットワークACL: サブネット単位に適用可能なファイアウォール機能。デフォルトはイン・アウトバウンド共に全て許可。ステートレスなので、インだけでなくアウトバウンドのトラフィックも明示的に許可設定する。 |
Egress-onlyインターネットゲートウェイ: 冗長化されたゲートウェイで、IPv6を利用してVPCからインターネットへ接続できるサービス。 |
VPCフローログ: VPC内のネットワークインターフェイス間で行き来する通信の内容をキャプチャする機能。 |
##4.ELB(Elastic Load Balancing)
アプリケーションへのトラフィックを複数のターゲット (Amazon EC2 インスタンス、コンテナ、IP アドレス、Lambda 関数など) に自動的に分散します。
Elastic Load Balancing は、変動するアプリケーショントラフィックの負荷を、1 つのアベイラビリティーゾーンまたは複数のアベイラビリティーゾーンで処理できます。
公式ページ_ELB
memo |
---|
【重要な特徴】 高可用性 (→複数のAZへ分散自動スケーリング) セキュリティ機能(→SSL復号の機能を備える) ELB自体にセキュリティグループの設定可能 ヘルスチェックとモニタリング 外部ELBと内部ELB クロスゾーン負荷分散 |
3種類のロードバランサーが用意されている。 ①NLB(Network Load Balancer)は高性能で複雑な設定をする際に利用。 ②ALB(Application Load Balancer): 通常のWEBアプリケーションに利用。 ③CLB(Classic Load Balancer): クラシックタイプのELBで、現在は使用することは稀。 |
NLBはPre-warming申請(暖気運転)は必要ない。 Pre-warming申請とは、急激なアクセス増加が見込まれる場合は、事前にELBをスケールアウトさせておくこと。 |
ELBは負荷に応じてELB自体を動的にスケーリングすることにより、ボトルネックにならないように設計されている。 |
##5.Route53
可用性と拡張性に優れたクラウドのドメインネームシステム (DNS) ウェブサービスです。
Amazon Route 53 は、www.example.com のような名前を、コンピュータが互いに接続するための数字の IP アドレス (192.0.2.1 など) に変換するサービスで、開発者や企業がエンドユーザーをインターネットアプリケーションにルーティングする、きわめて信頼性が高く、コスト効率の良い方法となるよう設計されています。
Amazon Route 53 は IPv6 にも完全準拠しています。
公式ページ_Route53
memo |
---|
外部向けDNSのパブリックホストゾーンと、VPC内DNSのプライベートホストゾーンがある。 |
複雑なルーティングはトラフィックフローを用いて設定する。 |
ルーティングポリシーを作成して加重ルーティングを使用すると、複数のリソースを単一のDNS名に関連付けることが可能。 |
地理位置情報ルーティングを使用すると、ユーザーの地理的位置に基づいてトラフィックを処理するリソースを選択可能。 |
加重ルーティングポリシーは、指定した比率で複数のリソースにトラフィックをルーティングする場合に使用する。 |
CNAMEレコード: DNSで定義されるそのドメインについての情報の種類の一つで、あるドメイン名やホスト名の別名を定義するレコード。 自ドメインの特定のサブドメインやホスト名について、それと同等とみなす別の名前を任意に設定することが可能。 自動フェイルオーバーをルーティングする際はCNAMEレコードに設定する。 |
TXTレコード: ホスト名に関連付けるテキスト情報(文字列)を定義するレコード。 |
MXレコード: 対象ドメイン宛のメール配送先ホスト名を定義するレコード。 |
A(Address)レコード: ホスト(FQDN)とサーバーを識別するグローバルIPアドレスの関連づけを定義するレコード。ドメイン名からIPアドレス。 |
DNAME: 別のドメインに対してDNS名の部分木全体をマッピングする機能を提供するレコード。 |
ALIASレコード: AWS独自のレコード方式。CNAMEレコードと同じように機能するが、CNAMEレコードでは対応できないZone Apexの名前解決をサポートする。Zone Apexとは、ゾーンの頂点のこと。 |
フェールオーバールーティングポリシー(アクティブ): Route53に設定された複数のリソースへ通信をルーティング |
フェールオーバールーティングポリシー(パッシブ): 通常利用しているシステムへの通信が正常に行われない場合に、待機系のシステムへ通信をフェールオーバー |
##6.CloudFront
データ、動画、アプリケーション、および API をすべて開発者にとって使いやすい環境で、低レイテンシーの高速転送により視聴者に安全に配信する高速コンテンツ配信ネットワーク (CDN) サービスです。
公式ページ_CloudFront
memo |
---|
オリジンとしてELB EC2 S3などを指定できる。 オリジンとはCloudFrontへキャッシュするコンテンツの提供元を指す。 |
地域制限の機能があり、アクセス制御も可能。特定の地域の人にコンテンツを配信したり、逆にブロックすることも可能。 |
マネージド型サービスでユーザーから最も近いエッジにデータをキャッシュするコンテンツ配信システム。ユーザーに近いエッジを自動で調整してくれるため、データ取得の待ち時間を短縮する。 データがエッジロケーションに存在しない場合、最初にデータをオリジンサーバーから取得・配信される可能性があるが、次回以降はキャッシュされたエッジから処理される。 |
Lambda@Edgeを使い、画像処理を任せることも可能。 Lambda@Edgeとは、Amazon CloudFrontの機能で、アプリケーションのユーザーに近いロケーションでコードを実行できるため、パフォーマンスが向上し、待ち時間が短縮可能。 |
##7.Lambda
AWS Lambda を使用することで、サーバーのプロビジョニングや管理をすることなく、コードを実行できます。課金は実際に使用したコンピューティング時間に対してのみ発生し、コードが実行されていないときには料金も発生しません。
公式ページ_Lambda
memo |
---|
実行時間に制限があるため時間を要する処理には不向き。 |
処理結果は全てCloudWatch Logsに保存。 |
SDKを利用してアプリケーションに組み込むことが可能。 |
PushモデルではS3、cognito、SNSなどのAWSサービスとカスタムイベントが直接実行する。3回リトライを実施する。 PullモデルではDynamoDB, kinesis と連携ができる。 |
EC2インスタンスを利用する場合よりも安価に実行環境を作ることが可能。 |
100ミリ秒単位でコード実行時間に対しての課金される。 |
512MBが一時ボリュームの最大制限。 |
##8.S3(Simple Storage Service)
業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。つまり、あらゆる規模や業界のお客様が、ウェブサイト、モバイルアプリケーション、バックアップおよび復元、アーカイブ、エンタープライズアプリケーション、IoT デバイス、ビッグデータ分析など、広範にわたるユースケースのデータを容量に関係なく、保存して保護することができます。Amazon S3 では使いやすい管理機能を使用するため、データを整理して、細かく調整されたアクセス制御を設定することで、特定のビジネスや組織、コンプライアンスの要件を満たすことができます。
公式ページ_S3
memo |
---|
以下の機能を備えている。 ・高耐久性 ・大容量ストレージ ・バージョニング機能 ・静的WEBサイトホスティング ・暗号化 ・アクセス制御→IAMポリシー、バケットポリシー、ACL ・柔軟なライフサイクルポリシー ・オブジェクトレベルのログ保管 |
サービスとしてはグローバルで、データはリージョンに配置される。 |
バケットポリシーでもアクセス制御ができるが、特定のユーザー単位でのアクセス制御を主としており、特定IPアドレスが付与されたEC2インスタンスからのアクセス制御にはIAMロールの方が最適。 |
URL例(http://バケット名.s3-website-リージョン名.amazonaws.com/モジュール名) |
処理要求が高い場合は、オブジェクト名の前(プレフィックス)にハッシュキーまたはランダムな文字列を使用可能。そのすることで、オブジェクトを格納するために使用されるパーティションはより良く分散され、オブジェクトに対する読み書き性能を向上させる。 主にGET要求を送信しているときは、キー名にランダム性を追加することで、データ処理を改善することが可能です。 |
ストレージオプション種類 ①S3-Standard: 頻繁に利用するデータに使用する。 ②S3 One Zone-IA: は、アクセスが頻繁ではないデータをレジリエンス(回復力)が低い単一アベイラビリティーゾーンに保存することによってコストを節約。データ消失の恐れがあるデータには向いていない。 ③S3 Standard-IA: アクセスが頻繁ではないマスターデータの長期保存に適している。読み込みはすぐにできるため突然の利用にも対応でき、Standardよりも安価に利用可能。 ④RRS(Reduced Redundancy Storage): 一時的なデータを保存するときに利用。動画変換など。 |
S3 Glacier: アーカイブを目的としたストレージで大容量のデータを安価に保管可能。ただデータへアクセスするには時間がかかる。 新しい Glacier Deep Archive ストレージクラスは、耐久性があり、セキュアな大量のデータ向けの長期ストレージを、オフプレミスのテープアーカイブサービスに負けない価格で提供するよう設計されている。データは 3 つ以上の AWS アベイラビリティゾーンにまたがって保存され、12 時間以内に取りだすことが可能。 |
Glacierの取り出しオプションは以下3つ。 ①標準:取り出し3〜5時間で完了。デフォルトで適用される。 ②大容量: 取り出し5〜12 時間で完了。最も安価な取り出しオプション。 ③迅速: 取り出し通常1~5 分で完了。一番高い。 |
バケットポリシーでCloudfrontからのアクセスだけを許可するには、CloudFrontユーザを意味するOAI (original Access identity)を作成し、OAIからのアクセスのみ許可する。 |
署名付きURLを使用してS3に直接アップロードすると、Webサーバーを経由せずに直接S3に格納可能。 |
S3バケットに対してMFA認証を有効化すると削除に対して認証情報を問われることになり作業ミスを防ぐことが可能。 またバージョニング機能を有効化することで削除されたファイルを戻すことが可能。 初期設定で削除できないようにすることも可能。 |
S3は結果整合性モデル。したがって、オブジェクトの更新が同じキーに対して行われると、次の読み取り要求が行われたときに更新されたオブジェクトがユーザーに返されるときにわずかな遅延が生じる可能性がある。 |
SSE-S3: サーバーサイド暗号化。AWSが管理する鍵をつかって暗号化する方法で、ユーザが鍵について意識する必要が無い。データとマスターの暗号化キーを管理する方式であるため、暗号化と複合化はS3によって自動で管理される。 |
SSE-KMS: サーバーサイド暗号化。AWS KMSで管理されている鍵を使って暗号化。SSE-S3と違い、ユーザごとに別の鍵を利用することも可能。鍵のアクセス権限の管理や、利用履歴などを確認することも可能。 |
SSE-C: サーバーサイド暗号化。ユーザが作成した鍵をAWSに送信し、AWSで暗号化する方式。 |
CSE-C: クライアントサイド暗号化。クライアント内で暗号化したオブジェクトをS3に登録する方式。暗号化されたオブジェクトはユーザー以外に複合化が不可能。 |
マルチパートアップロード: 大容量のオブジェクトを複数のパートに分割してアップ |
クロスリージョンレプリケーション: 異なる Amazon S3 バケット間でオブジェクトを自動的に非同期コピーすること。バージョニングが有効化されている必要がある。 |
##9.RDS(Relational Database Service )
ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなどの時間がかかる管理タスクを自動化しながら、コスト効率とサイズ変更可能なキャパシティーを提供します。
公式ページ_RDS
memo |
---|
標準設定の場合、1日一回バックアップ実施される。保存期間は最大35日。トランザクションログは5分ごとにS3に保存。 |
復元方法は2種類。通常のスナップショットから復元する。 ポイントインタイムリカバリというバックアップとトランザクションログが残っている範囲のデータを復元。 |
SSL接続可能。 |
リードレプリカは、マルチAZや異なるリージョン間で構築できる。またマスターデータベースと異なるインスタンスタイプやストレージで構築することができる。読み込み処理の負荷を下げることが目的で、冗長性は上がらない。 |
ストレージサイズは拡張はできるが縮小不可。 |
インスタンス作成時のみ暗号化設定可能。 |
マルチAZ構成は一方のAZのRDSが停止した際にもう一方のRDS DBに移行することが出来るという冗長化の構成。読み取り速度の性能が向上することはない。 |
レプリケーションラグ: リードレプリカは非同期的にレプリケートされる個別のデータベースインスタンスであるため、レプリケーションデータは遅れを受けやすく、最新のトランザクションのいくつかを表示できない可能性があること。 |
##10.DynamoDB
規模に関係なく数ミリ秒台のパフォーマンスを実現する、key-value およびドキュメントデータベースです。完全マネージド型マルチリージョン、マルチマスターで耐久性があるデータベースで、セキュリティ、バックアップおよび復元と、インターネット規模のアプリケーション用のメモリ内キャッシュが組み込まれています。DynamoDB は、1 日に 10 兆件以上のリクエストを処理することができ、毎秒 2,000 万件を超えるリクエストをサポートします。
公式ページ_DynamoDB
memo |
---|
完全マネージド型NoSQLデータベースサービスであり、シームレスでスケーラビリティを備えた高速かつ予測可能なパフォーマンスを提供。バックアップ、高可用性。結果整合性モデル。 |
利用負荷があらかじめ予想できる場合はプロビジョンドスループットを選択する。 |
クロスリージョンレプリケーションを実行するにはDynamoDB streamを有効化する。 |
DynamoDBストリームを有効化すると、DynamoDBへの登録・変更などのイベントをトリガーにしてLambda関数を動作させるなどを実行することが可能。 |
テーブル作成→項目→属性で作成。 |
メタデータや一連のストリームデータを蓄積することでビッグデータ解析などに利用可能。またユーザー設定などを格納するための理想的なデータ層。 |
DynamoDBのスキーマレスなNoSQLデータベースであり、セッションデータを大量に保存するのに適している。 |
DynamoDB accelerator (DAX): DynamoDb 用のインメモリキャッシュ。高速に処理できる。1秒あたり100万回単位のリクエスト処理でも数ミリ秒のレイテンシー。 |
##終わりに
試験合格するだけならば各サービスを動かさなくても教科書のみでも十分可能です!
がしかし、やはり実際に手を動かすべきですね。
資格取得が目標にならないように。実際にAWSサービスの構築・設定ができるのを目標にしましょう!
近いうちにその他サービス編も投稿致します。
ご覧いただきありがとうございます!