AWSソリューションアーキテクト–アソシエイト(SAA-C02)資格勉強法

AWSソリューションアーキテクト–アソシエイト(SAA-C02)の資格には下記サービスを抑えておく必要があると言われています。

●必須レベル
・Amazon VPC
・Amazon Simple Storage Service(S3)
・Amazon S3 Glacier
・Amazon RDS
・Amazon DynamoDB
・Amazon EC2
・Amazon Elastic Block Store(EBS)
・Amazon EC2 Auto Scaling
・Elastic Load Balancing(ELB)
・Amazon CloudWatch
・AWS Identity and Access Management(IAM)

●大事レベル
・Amazon CloudFront
・Amazon Route53
・Amazon ElastiCache
・Amazon Redshift
・Amazon Aurora
・AWS Direct Connect
・AWS CloudFormation
・Amazon Simple Queue Service(SQS)
・AWS Lambda
・Amazon Elastic File System(EFS)

●概要レベル
・Amazon Elastic Container Service(ECS)
・AWS OpsWorks
・AWS Config
・AWS Key Management Service(KMS)
・AWS Elastic Beanstalk
・AWS Systems Manager
・Amazon Simple Notification Service(SNS)
・AWS Trusted Advisor
・AWS CloudTrail
・AWS Storage Gateway
・ Amazon EMR
・Amazon Kinesis
・AWS Glue 等

資格に必要な情報はAWSが出していますが、一覧で情報を確認するサイト等がなかったので私が書きました。ぜひ参考にしてください。

この記事は2万文字ほどありますので、検索または目次から目当てのサービスに飛んだ方がいいと思います。スクロールして探すのは骨が折れますよ笑

この記事に書いてあるAWSサービスは概要であり、このサイトを読んだからと資格に受かるという保証は出来ません。

詳しく中身を知るには、自分自身でもAWSのブラックベルトを参照してくださいね。

https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/

Amazon VPC(Virtual Private Cloud)

Amazon VPCとは、『AWS上にプライベートなネットワークを作れる』というものです。

外部に接続できない「プライベートサブネット」、外部にアクセス出来る「パブリックサブネット」を作成することが出来ます。

厳密には「NATインスタンス」や「NATゲートウェイ」を使用することで、「プライベートサブネット」でも外部ネットワークに繋げることが出来ます。

VPCとプライベートネットワークを繋ぐには、「VPN接続」と「専用線接続(AWS Direct Connect)」があります。

VPNとは「Virtual Private Network」の略で、簡単に言うと仮想的な専用線です。離れた場所でもトンネルで繋がっているとイメージすると分かりやすいかと思います。

専用線なのでセキュリティが非常に高いです。

ここでは一般的なVPNで説明しましたが、AWS VPNでは「AWSサイト間VPN」と「AWS Client VPN 」で構成されています。

AWSサイト間VPNとは、”データセンターまたは支社とAWS クラウドリソース間の安全な接続を作成”するものです。

AWS Client VPNとは、”ユーザー需要に合わせて自動的にスケールアップまたはスケールダウンする、フルマネージド型で伸縮自在な VPN サービス”です。

引用 : https://d1.awsstatic.com/webinars/jp/pdf/services/20201021_AWS-BlackBelt-VPC.pdf

専用線接続(AWS Direct Connect)とは、専用線を使ってAWSへプライベート接続するものです。VPNとの違いは、仮想的な専用線なのか直接接続されているかの違いです。

AWS VPNはインターネット回線に仮想的なトンネルを作成してAWSと繋ぐのに対し、AWS Direct Connectは専用線で直接AWSとオンプレミス等を繋ぎます。

そのためコスト的にはAWS VPNの方が安価ですが、セキュリティ的にはAWS Direct Connectの方が優れています。

以下が一般的な比較です。AWSに限りません。

引用 : https://d1.awsstatic.com/webinars/jp/pdf/services/20201021_AWS-BlackBelt-VPC.pdf

VPCピアリング接続とは、2つのVPC間でプライベートなトラフィックのルーティングを行うことができるものです。

特徴としては、VPCでネットワークを分けていたとしても、同一ネットワークに存在しているかのように相互通信ができます。

このVPCピアリングはゲートウェイでもVPNでもないので、単一の物理ハードウェアには依存しません。障害が起きたとしても、単一障害点や帯域幅のボトルネックにはならないのが特徴です。

またVPCピアリングを行う対象は、自分のアカウントのVPCだけではなく、別のアカウントのVPCや、他のリージョンのVPCとも接続することができます。

VPCエンドポイントとは下記を使用せず、サポートされているAWSサービスやVPCエンドポイント関連サービスとVPCをプライベート接続できるものです。

  • インターネットゲートウェイ
  • NATデバイス
  • VPN接続
  • AWS Direct Connect接続

VPCエンドポイントは仮想デバイスであり、AWS PrivateLinkと呼ばれるAWSのネットワークを使用しています。

VPCと他のサービス間のトラフィックは、AWSネットワーク内で処理されることになるため、インターネットに繋がらず安全に通信が可能です。

VPCエンドポイントには二種類存在します。

VPCエンドポイントの種類
  • インターフェイスエンドポイント
  • ゲートウェイエンドポイント

また時間があるときに、上記二つについては書きます。

その他にもVPCは、ルートテーブルやゲートウェイなどのネットワークに関することを設定できます。

Amazon Simple Storage Service(S3)

Amazon S3とは『容量無制限のクラウド(Web)時代のオブジェクトストレージ』です。

容量無制限と言っても、1ファイル5TBまでなのでその点は注意してください。

容量単価は月額1GB/約3円です。※2020年10月の東京リージョンの価格。

S3は使用した分のみ料金が発生します。詳しくは下記3つです。

S3の料金体系
  • 1か月あたりのGB
  • リージョン外へのデータ送信
  • PUT、COPY、POST、LIST、GET リクエストの数

逆に無料なのが、「S3へのデータ転送」と「S3から同一リージョンの他サービスへのデータ転送」です。

さらにS3は「99.999999999%」の高い耐久性を持っていることも特徴です。

その高い耐久性の理由は、S3標準で少なくとも3つのアベイラビリティゾーン(AZ)にデータを格納しているためです。

アベイラビリティゾーン(AZ)とは下記の画像のように、リージョンの中にあるものです。

リージョンとは地理的に離れたデータセンター群のことを指します。

そのリージョンの中にアベイラビリティゾーン(AZ)と呼ばれる、リージョンより地理的距離が近い複数のデータセンタが固まったものがあります。

もっと簡単に言いますと、リージョンではAZ群を塊で指しているのに対し、AZはもう少し細かくデータセンタ群を塊で言っている感じです。

1つのAZは最大8つのデータセンタで構成されます。いくつなのかはAWSの中の人でも知らないそうです。
さらにAZの中にVPCがあり、その中にEC2インスタンスなどが配置されるのです。

中々難しいですよね。マトリーショカみたいな感じと覚えておいてください。リージョンがあって、その中にAZがあり、その中にVPCがあり、その中にEC2インスタンスがあって仮想サーバが立つという感じです。

上記画像はAZ1とAZ2しか書いていませんが、S3標準は少なくとも三つのAZで構成されています。

そのため下記画像で例えると、AZ1が壊れてもAZ2でS3が動作するので、高い耐久性を誇るのです。

またデータセンタ間、AZ間は低遅延のプライベートネットワークで接続されています。

次にストレージクラスを紹介していきます。

引用: https://d1.awsstatic.com/webinars/jp/pdf/services/20190220_AWS-BlackBelt_S3_Glacier.pdf

最後にS3関連で覚えて頂きたいのが、「マルチアップロード」です。

マルチアップロードとは100MB以上のファイルを早くアップロードできるサービスです。

こちらは基本的にファイルが100MBを超える際は、利用することがAWSで推奨されております。

仕組的には、ファイルをS3にアップロードする際に、複数チャンク(大きなファイルを分割して送ること)に分割して並列アップロードを行うので、アップロードが早いのです。

AWSでは基本的にマルチアップロードを推奨しています。

Amazon S3 Glacier

Amazon S3 GlacierはS3クラウドストレージの中の一つで、データを安く長期期間保存(アーカイブ)するためのものです。

S3との違いは、その料金です。S3はおおよそ月額1GB/約3円に対し、S3 Glacierは月額1GB/約0.53円です。1円を切っています。

S3 Glacier Deep Archiveになると、1GB/約0.21円となります。

※2020年10月の東京リージョンの価格。

S3 GlacierとS3 Glacier Deep Archiveの違いは下記です。

S3 Glacier

1 分から~12 時間の取り出しオプションがある。低コストではあるが、S3 Glacier Deep Archiveと比べると高い。

S3 Glacier Deep Archive

料金はS3 Glacierより安いものの、データを取り出すのに12~48 時間かかる。
ちなみにS3 Glacierのデータ習得には下記3種類があります。

  • 迅速(Expedited)
    1~5分でデータを取り出せる。値段は1GB/約3.49円。
  • 標準(Standard)
    3〜5 時間でデータを取り出せる。値段は1GB/約1.16円。
  • ⼤容量(Bulk)
    5〜12 時間でデータを取り出せる。値段は1GB/約0.29円。

Amazon RDS (Relational Database Service)

Amazon RDSは『フルマネージドなリレーショナルデータベース』となります。
リレーショナルとは、「参照整合性」、「ACIDトランザクション」、「Schema-On-Write」が挙げられます。
ユースケースとしては、「リフト&シフト」、「ERP」、「CRM」、「金融」が挙げられます。

Amazon RDSの特徴としては、「シンプルな構築」、「高い可用性」、「パフォーマンスの向上」、「運用負荷の軽減」、「高いセキュリティ」が挙げられます。

一つずつ解説していきます。

シンプルな構築

RDSは数クリックでDBを起動することができ、マネジメントコンソールやAPIで簡単に高度な機能を実装できます。

高い可用性

RDSではマルチAZデプロイメント(Multi-AZ)が使用されています。
Multi-AZとは、『同期レプリケーション+自動フェイルオーバー』です。

レプリケーションとは、常にデータを同期させていることです。
フェイルオーバとは、障害が起きた際、自動的にサーバ/システム/ネットワークを切り替えることです。

パフォーマンスの向上

RDSにはリードレプリカ(RR)があります。
リードレプリカ(RR)とはレプリカデータベースを複数作成し、読み取りの処理を分散させるものです。

そのため読み取り処理速度が速くなります。RRは5台まで作成できます(Auroraは15台)。
作成可能なデータベースは「MySQL」、「MariaDB」、「PostgreSQL」、「Aurora」です。

ただAWS Database Migration Service (DMS) を使用することにより、「Oracle」、「SQL Server」でもリードレプリカが作成可能です。

RR以外にもRDSではスケールアップ・スケールダウンが可能です。
スケールアップとは、メモリはCPUなどを増やす意味となります。

似たような言葉にスケールアウトというものがありますが、そちらはサーバ等を物理的に増やすことによって処理能力を上げることを指します。

人間に例えて分かりやすく説明をしますと、スケールアップは個人の攻撃力アップです。スケールアウトは人を増やして物理的な数で攻撃力を上げるという感じです。

スケールイン・スケールダウンはその逆です。

話は戻り、RDSのスケールアップ・スケールダウンですが、マネージメントコンソールやAPIからも操作が可能となります。

RDSで使用できるストレージタイプは下記となります。

引用:https://d1.awsstatic.com/webinars/jp/pdf/services/20180425_AWS-BlackBelt_RDS.pdf

RDSで使用できるDBエンジンの最大ストレージサイズは下記です。

RDSで使用できるDBエンジンの最大ストレージサイズ
  • MySQ : 6TB
  • Oracle : 6TB
  • SQL Server : 4TB
  • Postgre SQL : 6TB
  • Aurora : 64TB
  • MariaDB : 6TB

下記のサービスについては、基本的にどのDBエンジンでも使用可能です。

どのDBエンジンでも使用可能なサービス
  • VPC
  • マルチAZ
  • スケールアップ
  • 暗号化
  • リードレプリカ
  • クロスリージョンレプリカ
  • ストレージサイズの増加
  • 運用負荷の軽減

RDSには標準で自動バックアップがあります。具体的には自動スナップショット + トランザクションログをS3に保存です。

保存したスナップショットを元にリストアも可能です。DBインスタンスが作成されます。

Point-in-Timeリカバリという、指定した時刻(5分以上前)の状態になるサービスも存在し、こちらもDBインスタンスが作成されます。

スナップショットの料金ですが、自動スナップショットについてはDBインスタンスのサイズと同じサイズまでストレージコストが無料です。

運用負荷の軽減

運用負荷の軽減をするためのRDSには下記があります。

運用負荷の軽減をするためのRDS
  • リネーム(Rename)
    RDSに接続する際に使用するエンドポイント(FQDN)を切り替えるサービス。
  • ソフトウェアメンテナンス
    メンテナンスウィンドウにて指定した曜日や時間帯に自動的に実施するサービス。
  • 監視
    CloudWatchで対応します。CloudWatchでは各種メトリクスを60秒間隔で習得や確認が可能です。
  • イベント通知(Event Subscriptions)
    RDSで発生した40種類以上のイベントをAmazon SNS経由でプッシュ通知するサービス。
  • ログアクセス
    各種ログを直接参照するサービス。
  • 各種制限と緩和申請
    初期状態ではRDSインスタンス数、RR(リードレプリカ)数やDBインスタンスの合計ストレージ数などが決めっていますが、それを必要に応じて上限緩和できるサービス。

高いセキュリティ

RDSはVPC内部の任意のサブネットで起動が可能です。デフォルトではDBインスタンスに対するネットワークアクセスは無効となっています。

セキュリティグループによってアクセスを制御しています。
DBインスタンスの暗号化ですが、保管時のインスタンスとスナップショットが対象です。

RDSで対応しているDBエンジン全て、AWS KMSによる鍵管理により、インスタンスを暗号化することができます。

Amazon DynamoDB

Amazon DynamoDBは『完全マネージド型の NoSQL データベースサービス』です。

ストレージの容量制限がありません。

使用した分だけの従量課金制ストレージとなり、ディスク拡張やノード増設作業は必要ありません。

3か所のAZにデータが保存されるため冗長性が高いのも特徴です。

ストレージは必要に応じて自動的にパーティショニングされます。

読み込み/書き込みに関しては二つの方式があります。

読み込み/書き込みの2つの方式
  • オンデマンド
    容量計画なしで1使用した分のみ料金が発生する
  • プロビジョニング済み
    あらかじめ読み取り/書き込みスループット量を指定する。料金的にはプロビジョニング済みの方が安価です。

料金に関しては、下記二つで決まります。

・プロビジョンドスループットにより決定する料金
・データストレージ利用料

こちらは保存したデータ容量によって月額利用料が決まります。月初めの25GBは無料です。

2020年2月現在、東京リージョンでは1GB当たり月額$0.285となります。

DynamoDBが使用されるユースケースは下記です。

DynamoDBが使用されるユースケース
  • KVSとして、ユーザ情報を格納するデータベース
  • 広告やゲームなどのユーザ行動履歴DBとして利用する
  • モバイルバックアプリのバックエンド。
  • バッチ処理のロック管理
  • フラッシュマーケティング

DynamoDBのポイントをまとめると下記4つです。

DynamoDBのまとめ
  • スケーラブルかつ低レイテンシー
  • 高可用性
    3つのAZにデータを保存。3レプリケーション。
  • 結果整合性
    分散データベース環境にてデータが更新された際、最終的な一貫性が一定の時間経過後に担保されるという考え方。デフォルト有効です。
  • KVS、行動履歴DB
    NoSQLなので複雑なSQLは不向きです。

まぁ色々書きましたが、「キー」と「値」がついていたら、DynamoDBのことを言っていると思っていいかもしれません。

Amazon EC2 (Elastic Compute Cloud)

Amazon EC2とは、『数分で起動、1秒ごとに従量課⾦を行うことにより利⽤可能な仮想サーバ』です。

多数のOSをサポートしており、スケールアップ/ダウン、スケールアウト/インが容易に可能となります。

OSより下はAWSが行い、その上をユーザが自由に使用できます。

具体的なAWSが行ってくれるものは下記です。

・OS(Windows、Linux)
・ハイパーバイザー
・ネットワーク
・電源、ラック等

その他にもEC2はリージョン、アベイラビリティゾーンを自由に選択して起動させることが可能です。

EC2はVPCの中にプライベートネットワーク空間を構築することもできますし、オンプレミスとVPN接続又は専用線で繋ぐことも出来ます。

EC2の購入オプションは三通りあります。

EC2の購入オプション
  • オンデマンド(従量方)
    使用した分だけの時間課金制インスタンス。
  • リザーブドインスタンス(予約型)
    1年~3年分のインスタンス利用予約をすることにより、最大72~75%が割引されるインスタンス。
  • スポットインスタンス(入札型)
    使用されていないEC2インスタンスを使用するので、コスト面では上記2つよりも格段に安い。最大90%オフ。ただし、突然利用を停止させられることもあるので要注意。

その他には、「Dedicated Host(専有型)」と呼ばれるお客様専用の物理サーバを確保することも出来ます。

Amazon Elastic Block Store(EBS)

Amazon Elastic Block Store(EBS)は『EC2にアタッチして使用するブロックレベルのストレージサービス』です。

99.999%の耐久性を持ち、Snapshot機能によるS3へのバックアップやディスクの暗号化にも対応しています。

EBSの容量は1GB単位で指定でき、最大容量は16TBまで可能です。Magneticは1TBまでです。

ボリュームタイプは下記5種類があります。

・汎用SSD
・プロビジョンドIOPS(SSD)
・スループット最適化HDD
・コールドHDD
・マグネティック(Magnetic)

●EBSのボリュームタイプ(SSD)

●EBSのボリュームタイプ(HDD)

引用 : https://d1.awsstatic.com/webinars/jp/pdf/services/20190320_AWS-BlackBelt-EBS.pdf

注意点としては、EC2インスタンスに複数のEBSは接続できますが、EBSを複数のインスタンスに共有することはできません。

つまりAZをまたがってEBSは共有できないということです。

EBSは内部的に他のAZに自動的にRAID1のミラーリングを行っているため、使用者が冗長化を気にする必要はありません。

またEBSの実態はネットワーク接続なのですが、これも使用者は何も気にする必要はないです。

セキュリティグループによる通信制御も対象外となるので、全ポート通信を拒否していてもEBSは使用できます。

EBSのスナップショットはバックエンドでS3に保存されますが、S3のインターフェイスからは直接見ることはできません。

スナップショットからのリストアですが、既存のEBSでなくてもアタッチは可能です。

先ほど、EBSはAZをまたがって共有は出来ないと書きました。

ただ、EBSを別のAZで使用したい場合は、スナップショット経由で別のAZで使用することは可能です。

それでもAZをまたがってEBSを共有することは出来ませんので注意しましょう。

スナップショットは増分バックアップとなり、一世代目を削除しても復元が可能となります。

データの暗号化に関してですが、EBSボリュームを作成する際に暗号化を指定することで、AES-256によって暗号化が可能です。

暗号化キーはAWS Key Management Service(KMS)で管理します。

ボリューム作成後に暗号化したい場合は、スナップショット経由で暗号化が可能です。

順序としては下記の流れとなります。

  1. スナップショットを習得
  2. 暗号化を有効にし、スナップショットをコピー
  3. コピーされたスナップショットからボリュームを作成
  4. 新しいボリュームをインスタンスにアタッチ

Amazon EC2 Auto Scaling

Amazon EC2 Auto Scalingとは、『EC2インスタンスを決められたルールに沿って自動的(手動も可)にインスタンスを増減させるサービス』です。

主な利用方法としては、「Amazon CloudWatch」「Elastic Load Balancing(ELB)」を利用して、自動的なリソースの増減を行います。

Auto Scalingは下記3つの構成要素で成り立っています。

・Auto Scaling Group
・Launch Configuration(Template)
・Scaling Plan

『Auto Scaling Group』はAuto Scalingの全体的な設定情報の管理を行っています。

例えば、設定したインスタンス以上は起動させなかったり、AZ障害時は他のAZでインスタンスを起動させたりなど設定が出来ます。

『Launch Configuration』はEC2インスタンスの情報を管理します。

例えば、どのようなインスタンスを起動させるかであったり、AMIやインスタンスタイプなどを設定出来ます。

『Scaling Plan』もEC2インスタンスの情報を管理しますが、起動インスタンス自体の細かいところを管理しています。

例えばどのようにインスタンスをスケールするかであったり、手動スケーリング、動的スケーリングの設定などが出来ます。

Elastic Load Balancing(ELB)

Elastic Load Balancing(ELB)とは、『複数のEC2インスタンスに自動的に負荷分散を行ってくれるサービス』です。

ELBで実現できることとしましては、上記で書いたように複数のEC2インスタンスやECSコンテナなどに負荷分散できることです。

イメージとしては下記のような感じです。

クライアントがWebを見る際、ELBを経由することにより、アクセスをAZ内で負荷分散することでサーバ1台1台の負荷が軽くなります。

負荷分散=ロードバランサーです。そしてAmazonのロードバランサーがELBとなります。

上の画像で例えると、右のAZ3のサーバが壊れた場合、ELBはAZ3のサーバにトラフィックを送らないということが出来るのです。

ユーザがサイトにアクセスできないという事態を防げます。

ELB自体の特徴としては、下記があります。

ELB自体の特徴
  • スケーラブル
    ELB自体も負荷分散を行い、自動的にキャパシティの増減を行ってくれます。
  • 従量課金なので安い
  • 運用管理が楽
    マネージド型サービスなので、ユーザが管理する必要はありません。
  • 連携機能が豊富
    「Auto Scaling」、「Route 53」、「Cloud Formation」などと連携が可能です。

またELBは冗長化にも優れています。例えば上記画像の構成の場合、ロードバランサー自体が壊れるとユーザはどのAZにもアクセス出来なくなります。そうならないように、ロードバランサーもユーザが意図しない裏で自動的に冗長化しているのです。

ELBは下記3種類存在します。

・Application Load Balancer(ALB)
・Network Load Balancer(NLB)
・Classic Load Balancer(CLB)

簡単に違いを書きますと、『ALB』はL7でロードバランシングを行います。

『NLB』はL4でロードバランシングを行います。

『CLB』はL7とL4どちら使用してロードバランシングをしますが、現在はあまり使われていません。名前の通りクラシックです。

もっと具体的に書きますと、『ALB』は下記でロードバランシングが出来ます。

ALBでロードバランシングできるもの
  • HTTP
  • HTTPS
  • HTTP/2

『NLB』は下記でロードバランシングができます。

NLBでロードバランシングできるもの
  • TCP
  • UDP
  • TLS

クロスゾーン負荷分散と言って、各AZにEC2インスタンスの起動数が偏っていても、トラフィックを均等に分散してくれる機能も存在します。

ELBはヘルスチェックも使用できます。

ヘルスチェックでは、ELBがロードバランシングする際、ロードバランシングする先のサーバが正常かどうかを事前に同期して確認してくたり出来るのです。

正常判定を厳しく設定すると、インスタンスが使用できるまでに時間がかかるので、その辺は注意しましょう。

Amazon CloudWatch

Amazon CloudWatchは『AWSの各種リソースを監視するサービス』です。

特徴としては下記5つが挙げられます。

Amazon CloudWatchの特徴
  • リソースプロビジョニング
    テンプレートによるインフラプロビジョニングの自動化
  • 構成管理
    パッケージの導入、ソフトウェアとリソースのコンフィグレーション、バッチ適用
  • モニタリング
    AWSリソースの死活、性能、ログ監視、イベント管理。アプリケーションも同様。
  • ガバナンスとコンプライアンス
    リソースインベントリ、構成変更管理、習得メトリックスのグラフ化、ユーザ操作とAPI呼び出しの記録、各メトリックスに対してアラーム作成
  • リソース最適化
    コスト低減、パフォーマンス向上、セキュリティ改善のための推奨事項の自動提供

料金に関しては、メトリクスの基本モニタリング(5分間隔)は無料です。

カスタマイズで利用できるのは詳細モニタリング(1分間隔)、ダッシュボード、アラーム、ログ、イベント等があります。

メモリー/ディスク使用率を見る場合は、カスタムメトリクスを使用します。

AWS Identity and Access Management(IAM)

Identity and Access Management(IAM)とは、『AWSサービスの認証・認可を行うサービス』です。

各AWSサービスに対して別々のアクセス権限をユーザごとに付与できるので、AWSをセキュアに操作することが出来ます。

IAM自体の料金は無料です。

IAMの管理方法は下記三つです。

・グループ
・ユーザ
・ロール

「グループ」は1つのAWSアカウントで100グループまで作成が可能です。グループに設定可能な情報としては、グループ名/パス(階層)/パーミッションがあります。

「ユーザ」は1つのAWSアカウントで5000ユーザまで作成可能です。ユーザごとに設定可能な情報としては、ユーザ名/パス(階層)/所属グループ/パーミッションなどがあります。

「ロール」はAWSサービスなどの操作権限を付与することができ、設定項目はロール名とIAMポリシーとなります。注意点としては、IAMユーザやグループにはロールには紐づかないということです。

AWS IAMのベストプラクティスは下記です。

引用 : https://d1.awsstatic.com/webinars/jp/pdf/services/20190129_AWS-BlackBelt_IAM_Part1.pdf

MFA (Multi-Factor Authentication)とは、『多要素認証』です。多要素認証とは、パスワードや指紋認証など様々な認証方法にしてセキュリティを高めるものです。

IAMではルートユーザ、IAMユーザの各IDに別々のMFAを設定することが可能です。

Amazon CloudFront

Amazon CloudFrontとは大容量のキャパシティを持つ地理的に離れたところにあるサーバ群(エッジ)から、コンテンツをキャッシュしたり代理配信を行ってくれるサービスです。

そのため配信を高速化でき、オリジンの負荷も下げることができます。

具体的な特徴は下記です。

・高性能な分散配信 (世界187拠点の接続ポイント) ※2019年7月時点
・高いパフォーマンス (高いパフォーマンスの実績)
・キャパシティアクセスからの解放 (予測不可能なスパイクアクセスへの対応)
・ビルトインのセキュリティ機能 (WAF 連携、DDoS 対策)
・設定が容易で即時利用可能 (GUI からの設定で15 分程度でサービス利用可能)
・充実したレポーティング (ログ、ダッシュボード、通知機能)
・完全従量課金 (初期費用がなく安価、一時的な利用も可能)

引用 : https://d1.awsstatic.com/webinars/jp/pdf/services/20190730_AWS-BlackBelt_Amazon_CloudFront.pdf

ユースケースとしては、S3と組み合わせてWebコンテンツを配信することが多いです。

S3はCloudFrontと組み合わせることにより、スパイクアクセスが対応可能になります。

スケーラブルにあらゆる規模にも対応配信が可能です。

AWSではCloudFrontとS3を組み合わせて利⽤することを推奨しています。

他にも、S3とCloudFrontを組み合わせることにより、webサイトのフロントキャッシュサーバとして利用可能です。

ユーザからは低レイテンシーでサイトの閲覧が可能となります。

エッジでのgzip圧縮機能、キャッシュコントロール機能、動的コンテンツ機能、データ保護機能、オリジン暗号化通信など、他にも多数のサービスがあるのも特徴です。

Amazon Route 53

Amazon Route 53とは、『AWSで権威DNSを提供するサービス』です。

DNSが分からない方がいれば調べて欲しいのですが、簡潔に書くと名前解決を行ってくれます。

名前解決をすることにより、ドメインとIPが紐づきます。

ドメインを打ってもWebサイトのIPに接続できるのはDNSを使っているからです。

Route 53の機能としては下記があります。

・権威DNSサービス
・トラフィックルーティング
・DNSフェイルオーバー
・トラフィックフロー

「権威DNSサービス」は上記で書いたように、DNSサービスを提供するものです。基本的には、「ホストゾーン」でドメインのリソースレコードを管理し、「パブリックホストゾーン」でインターネット上に公開されているDNSドメインのレコードを管理し、「プライベートホストゾーン」でVPC内のプライベートネットワーク内のDNSレコードを管理します。

「トラフィックルーティング」はトラフィックを適切な要件に従って転送するというものです。従来のDNSでは静的な、例えばaaa.bbb.comのリクエストは1.1.1.1に転送するというものでした。ただRoute 53の「トラフィックルーティング」は、定義されたルール(ルーティングポリシー)に従って動的に転送先を決めます。

「ルーティングポリシー」とは上記の「トラフィックルーティング」などで利用するポリシーです。下記があります。

ルーティングポリシー
  • シンプルルーティング
    こちらは従来のDNSと同様、事前に設定されたレコードで静的なルーティングを行います。
  • 加重ルーティング
    指定した比率によってルーティングを行います。例えば2つのEC2インスタンスがあった場合、事前にトラフィックを1:1で行うと定義していれば、50%ずつトラフィックを分散してくれるというものです。
  • レイテンシールーティング
    複数のリージョンにリソースがあった場合、一番遅延が少ない方にルーティングしてくれるものです。
  • フェイルオーバールーティング
    使用できない(例えば壊れている)リソースにはルーティングせず、正常なリソースのみルーティングするというものです。ヘルスチェックによって宛先のリソースが正常かどうかを判断します。
  • 位置情報ルーティング
    ユーザの位置から一番近いリージョン等を選択してルーティングするものです。
  • 地理的近接性ルーティング
    リソースの位置から一番近いリージョン等を選択してルーティングするものです。

『DNSフェイルオーバー』とは、「ヘルスチェック」と「フェイルオーバー」を組み合わせたもので、正常なリソースにのみルーティングを行うものです。

上記で書いた「フェイルオーバールーティング」と仕組は同じです。

『トラフィックフロー』とは、ポリシーベースのトラフィックルーティングを簡単に作成・管理できるものです。

高可用性、低レイテンシーを実現する必要がある大規模システムでは、トラフィックルーティングが最適です。

Amazon ElastiCache

Amazon ElastiCacheとは『完全マネージド型で、セットアップ、運用、スケーリングが用意な分散型メモリキャッシュサービス』です。

一般出来なデータベースでは、使用中のマシンのデータ等はHDDやSSDに書き込みを行っていました。

ただElastiCacheでは、データをメモリ上のキャッシュとして記録を保持するので、データの読み書きが早いのが特徴です。

注意点としてはメモリ上にデータを保存しているので、ノードをシャットダウンや再起動するとデータが消えるということです(Redisなら消えません)。

ElastiCacheには超高速な二つのエンジンが用意されています。

ElastiCacheの超高速エンジン
  • Redis
    シングルスレッドで動作し、データは永続化が可能です。
  • Memcached
    マルチスレッドで動作し、データは永続化できません。

料金体系は4つあります。

ElastiCacheの料金体系
  • オンデマンド キャッシュノード
    初期費用がなく、時間単位の従量課金制です。
  • リザーブド キャッシュノード
    1年などの期間を事前に予約することで、オンデマンドより安く使えるものです。最大70%オフとなります。
  • バックアップストレージ(Redis)
    各クラスタに対して1つのスナップショットは無料です。2つ以上のスナップショットから毎月料金が発生します。毎月 0.085 USD/GBです。
  • AZ間データ転送量
    EC2とElastiCache間でAZを超える場合は課金されます。0.01 USD/GBです。ElastiCache間の通信は無料です。

Amazon Redshift

Amazon Redshiftとは、『高速スケーラブルで費用対効果の高いデータレイク分析マネージドサービス』です。データウェアハウスにも使用されます。

簡単に言いますと、データ分析を主に得意とするデータベースということです。

RDBMSとは違い、継続的な書き込みや更新には向いていません。ただ一括でデータの書き込み分析を行ったり、大容量データを読み出すという処理には向いています。

主に「AWS DMS/SCT」や「Amazon Kinesis Data Firehose」によってオンプレから吸い出されたデータを、まずS3に保存します。

「AWS Glue」によってデータの加工・変換を行い、「Amazon Redshift」でデータの集計・分析を行うのです。

データの集計や分析のためにAmazon Redshiftを使用すると考えて頂ければ分かりやすいかと思います。

Amazon Redshift のアーキテクチャ(RA3インスタンス)の特徴としては下記が挙げられます。

Amazon Redshift のアーキテクチャの特徴
  • コンピュートとストレージを切り離し、スケーリングと支払いを独立させています。
  • データは永続ストレージとしてS3に保存されます。キャッシュとしてはローカルSSDに保存されます。
  • アクセス頻度の高いブロックについてはキャッシュに留まります。ただあまりアクセスされないブロックに関しては自動的にキャッシュアウトされます。

Amazon Aurora

Amazon Auroraとは、『MySQL, PostgreSQL と互換性のあるクラウド向けに設計されたリレーショナルデータベース管理システム』です。

もっと簡潔に書きますと、Amazon AuroraはRDSで使われる完全マネージド型サービスです。

特徴としては、一般的なMySQL と比べて 5 倍、一般的な PostgreSQL と比べて3 倍のスループットを実現します。

更に一般的なデータベースのリードレプリカは5つまでしか作成できませんが、Auroraは最大15個まで作成が可能です。

Auroraは他のデータベースのセキュリティ、可用性、信頼性を10分の1のコストで実現できます。

ストレージに関しても、データベースインスタンスごとに最大128TBまで自動で拡張してくれます。

AWS Direct Connect

AWS Direct Connectとは、『オンプレミスのデータセンタ環境とAWSを専用のネットワークで繋げるサービス』です。

オンプレミスのデータセンタ環境とAWSを繋ぐには、Direct Connect以外にもVPNと呼ばれる仮想的なプライベートネットワークで繋ぐことも可能です。

ただDirect ConnectはVPNよりも早く安全にデータを転送することが可能となります。

料金はDirect Connectの方が高いです。

Direct Connectの接続には1Gbpsと10Gbpsが選べます。

VPNの場合、一般的には4Gpbs以上のデータ転送速度は出来ないので、高速通信をする必要がある場合はDirect Connectを選択します。

AWS CloudFormation

AWS CloudFormationとは、『テンプレートなど一貫した再現可能な方法で、AWSリソースのデプロイと管理を行うことが出来るサービス』です。

設定ファイル(テンプレート)を元に、EC2やELBなどのサービスを自動的に構築管理することができます。

テンプレートの中身はJSONやYAMLなどです。

料金としてはプロビジョニングされたAWSリソース分の料金のみで、追加料金は必要ありません。

CloudFormationの機能としては、『作成』、『変更』、『削除』があります。

『作成』はテンプレートに定義した内容で自動的に作成することです。

『変更』は前回のテンプレートとの差分をスタックに適応することです。リソースの変更時は無停止変更/再起動/再作成のどれかが発生します。

『削除』は依存関係を解決しつつリソースを全削除することです。

データストアはスナップショットを習得/保持が出来ますが、手動で行った変更はCloudFormationの対象外なので気を付けましょう。

Amazon Simple Queue Service(SQS)

Amazon Simple Queue Service(SQS)とは、完全マネージド型の分散メッセージキューサービスです。

特徴としては下記が挙げられます。

Amazon Simple Queue Service(SQS)の特徴
  • セキュリティ
    ユーザが使用するアクセス制御やメッセージの暗号化が可能です。
  • スケーラビリティ
    ほぼ無制限。TPSをサポートしています。
  • 耐久性
    複数のサーバやデータセンターに全てのメッセージをコピーして保存しているので、冗長性があります。これを分散キューと呼びます。
  • フルマネージド
    サーバの管理は一切不要なので、運用負荷が軽減されます。
  • 可用性
    分散キューを使用しているので、メッセージの送信/受信の可用性が向上しています。
  • 初期費用不要
    毎月の無料利用枠 + 使用分だけの従量課金制です。

ユースケースとしては下記が挙げられます。

ユースケース
  • 一時的に大量のリクエストが発生した際に使用する。
    ユーザとAWSサービスの間にSQSを置くことにより、リクエストのスパイクにも対応可能となります。高可用性が実現可能です。
  • アプリケーション間の依存関係を低減できる。
    SQSを使用しない場合だと、アプリケーションサービスを停止すると他のアプリケーションにも影響が出ます。直接エンドユーザとアプリケーションを繋いでいるからです。
    SQSを利用するとSQSを介してアプリケーションが動くので、一つのサービスを止めても他のアプリケーションには影響が出ません。お互い任意のタイミングで処理が可能となり、サービスメンテナンス等の影響が受けにくくなります。
  • 重い処理と軽い処理を分けたい場合。
    例えば、EC2で重い処理と軽い処理があったとします。EC2だけで対応しようと考えると、重い処理も軽い処理も同じEC2で全て対応するので、軽い処理でも時間がかかる可能性があります。
    そこでSQSを使用することにより、軽い処理を行うのはこちら、重い処理を行うのかこっちと自動的に内部で振り分けてくれます。結果、処理速度が向上します。
  • 複数の処理を並列処理したい場合
    こちらの場合はAmazon SNSを利用します。これは簡単に言うと、SNSはロードバランサーと思ってください。エンドユーザから流れてきた処理を分散させている形です。
    SNSで分散された先にSQSがあり、アプリケーションに繋がっています。
    SQSとSNSを利用することにより、一つのメッセージ送信で並列化が可能となります。
    Pull型でより疎結合な構成になるのも特徴です。

Amazon SQSには二つのキューメッセージの習得方法があります。

・ショートポーリング
・ロングポーリング

詳しくは下記表をご覧ください。

引用 : https://d1.awsstatic.com/webinars/jp/pdf/services/20190717_AWS-BlackBelt_AmazonSQS.pdf

AWS Lambda

AWS Lambdaとは、『AWS内の様々なサービスで、サーバの用意や管理をすることなく、簡単にコードが実行できるサービス』です。

コストはコードが実行されている1秒ごとの課金および、コートがトリガーされた回数に対して料金が発生します。

ユースケースとしては下記が挙げられます。

ユースケース
  • データ処理
    主にS3、Kinesis、CloudWatch、SNS、DynamoDBを直接起動させたり、EFSに接続させたりすることが可能です。
  • リアルタイムファイル処理
    S3を利用しアップロードしたデータを直ぐ処理することが可能です。またEFSに直接接続することも可能で、大規模な並列共有アクセスが可能となります。
  • リアルタイムストリーム処理
    Amazon Kinesisを利用することで、「ソーシャルメディア分析」、「ログのフィルタリング」、「アプリケーションのアクティビティのトラッキング」、「クリックストリーム分析」、「注文のトランザクション処理」、「データクレンジング」、「IoT データのテレメトリ」、「メトリクスの生成」などが行えます。
  • 機械学習
    これはそのまま機械学習ができます。

Amazon Elastic File System(EFS)

Amazon Elastic File System(EFS)は、『NFSを使用したネットワーク共有分散ストレージサービス』です。

つまりNASです。NASのプロトコルはNFSの他にCIFSやSMBなどがあります。

NASの特徴は下記です。

・ファイルストレージ
・ネットワークを介してファイルを共有する。
・共有ネットワークを使用しているので、データの読み書きがSANに劣る代わりに安価。

ちなみにSANというのは、ブロックストレージでサーバ、ストレージ間を専用ネットワークで接続していることを言います。

プロトコルはiSCSIやFCなどがあります。

話がそれました。

Amazon Elastic File System(EFS)の特徴としては、フルマネージド型サービスなので、サーバやディスクなどの管理は不要です。

自動的にファイルシステムが、ファイルの追加・削除に合わせて拡張や縮小を行ってくれます。

また高耐久性・高可用性に優れていて、基本的に複数のAZに複製してデータを保存してくれます。

複数のAZにある複数のEC2インスタンスに、同時にデータの読み書きできるのも特徴です。

強い整合性があるとAWSは豪語しており、全ての読み込みは最新のデータを使用できます。

さらに既存のツールやアプリがそのまま使用でき、数秒でEFSを作成することができるのです。

料金体系もシンプルで、データ転送量やリクエスト数では料金は発生せず、使用した容量に対して課金が発生します。

EFSを利用できるリージョンは下記です。

・米国東部(バージニア北部)
・米国東部(オハイオ)
・米国西部(北カリフォルニア)
・米国西部(オレゴン)
・欧州(フランクフルト)
・欧州(アイルランド)
・アジアパシフィック(シドニー)
・アジアパシフィック(ソウル)
・アジアパシフィック(東京)

ユースケースは下記です。

引用 : https://d1.awsstatic.com/webinars/jp/pdf/services/20180704_AWS-BlackBelt_AmazonEFS.pdf

EFSは下記二つのストレージクラスを提供しています。

・標準ストレージクラス
・低頻度アクセスストレージクラス(EFS IA)

EFS IAは毎日使用しないファイルに対して、最適化されたコストパフォーマンスを発揮してくれます。

EFSライフサイクル管理を有効にすることで、選択したライフサイクルポリシーに従ってアクセス頻度の低いファイルは、自動的にEFS IAに移動してくれます。

EFS IAの料金は0.025 USD/GB-月です。

Amazon Elastic Container Service(ECS)

Amazon Elastic Container Service(ECS)とは、『コンテナを利用することが出来るサービス』です。

ECSのコンテナは下記どちらかで動かします。

・Amazon EC2
・AWS Fargate

EC2の方はそのまま、コンテナをEC2の上で動かします。そのため、リザーブドインスタンスなどを利用してコストを抑えることが出来ます。

Fargateの方は簡単に言ったらサーバレスなので、使用者が事前に準備/設定しなくても直ぐに利用が可能です。

AWS OpsWorks

AWS OpsWorksとは、『ChefやPuppetを使用してアプリケーションを構成及び運用するための構成管理サービス』です。

具体的にはChefやPuppetのコードを使用し、EC2インスタンスやオンプレミス環境でのサーバ設定、デプロイ、管理を自動がすることができます。

AWS Config

AWS Configとは、『AWSリソースのインベントリ管理、構成変更のためのフルマネージド型サービス』です。

単純にAWSサービスの設定確認・変更をするためのサービスと覚えてください。

AWS リソースの設定が継続的に記録されるため、構成変更の追跡、セキュリティ分析、トラブルシューティング、コンプライアンス準拠を容易に確認・変更することができます。

AWS Key Management Service(KMS)

AWS Key Management Service(KMS)とは、『暗号鍵の作成、管理、運用するためのサービス』です。

S3、EBS、Redshift、RDS、Snowball等のサービスと連携しており、簡単に暗号鍵を作成することが可能です。

AWS Elastic Beanstalk

AWS Elastic Beanstalkとは、『アプリケーションを簡単にデプロイできるサービス』です。

他にも自動的に負荷分散、Auto Scaling、アプリの状態を監視してくれたりもします。

AWS Systems Manager

AWS Systems Managerとは、『AWSサービスを制御、運用タスクの自動化、運用データの確認が行えるサービス』です。

Amazon Simple Notification Service(SNS)

Amazon SNSとは簡潔に言いますと、処理を振り分けるというものです。

ロードバランサーみたいなものと考えてください。もしくは受付と考えると分かりやすいかもしれません。

会社に行くと受付を通って目的の階の部屋にいきますよね。そのような感じで、一度処理をSNSで受け取って、それぞれ目的地に送っているのです。

ロードバランサーは処理を振り分けて冗長性を確保していますが、SNSは処理を振り分けていますが、あなたの目的地はここですよと示しているだけです。

管理者が管理しやすくなるためにSNSを主に利用します。

SNSには主に下記二つの機能があります。

SNSの主な機能
  • Mobile Push (プッシュ通知)
    モバイルアプリが起動していなくても通知が可能で、モバイルユーザは通知を受け取るか否かを選択できます。ユーザはSNSからの通知のよりアプリを起動してもらいます。
  • pub-sub
    Mobile Pushのように通知をすることもできますが、基本的には分散アプリケーションの結合用途に用いられます。

AWS Trusted Advisor

AWS Trusted Advisorとは、『コスト、パフォーマンス、セキュリティの最適解を提示してくれるサービス』です。

他にも耐障害性、サービスの制限も分析し、ベストプラクティスを提示してくれます。

サービスの制限については、サービスの使用量80%を超えていないかを確認してくれます。

E メールで通知したり、Amazon CloudWatchと連携することも可能です。

AWS CloudTrail

AWS CloudTrailとは、『AWSユーザの誰が何を行ったかを記録するサービス』です。

具体的には、運用監査、コンプライアンス、リスク監査などを行ってくれます。

CloudTrailが保持するデータは標準90日で、利用する際に料金は発生しません。

ユースケースとしては下記が挙げられます。

・コンプライアンスに関して
・セキュリティ分析
・データの不正な引出し
・操作上の問題点のトラブルシューティング
・異常なアクティビティの検出

AWS Storage Gateway

AWS Storage Gatewayとは、『標準的なストレージプロトコルを利用して、オンプレからAWSのクラウドストレージにアクセスすることが出来るサービス』です。

主にS3にデータを置くことが多いですが、EBSなどにもデータを置くことが出来ます。

AWS Storage Gatewayには、下記三つのゲートウェイタイプが存在します。

Gatewayタイプ
  • ファイルゲートウェイ(NFS (v3 and v4.1) インターフェース)
    オンプレミスのデータをAmazon S3 オブジェクトとして保存することが出来ます。
    ファイルストレージ。S3をバックエンドストレージとして利用することができ、NFSでバケットを共有します。またローカルキャッシュを使用しているため、低いレイテンシーを実現できます。
  • ボリュームゲートウェイ (iSCSI ブロックインターフェース)
    オンプレミスのデータをAmazon S3 および EBS に保存することが出来ます。ブロックストレージ。iSCSIでブロックストレージとして利用することができるため、堅牢性の高い大容量ストレージを実現できます。
  • テープゲートウェイ(iSCSI仮想テープライブラリ (VTL) インター フェース)
    オンプレミスのデータをAmazon S3 と Glacierに保存することが出来ます。

Storage Gateway の仮想テープライブラリを物理テープライブラリの代わりとして利用するため、堅牢性の高い外部保管バックアップストレージ が実現できます。

AWS Storage Gateway は、3拠点以上のデータセンターにデータを自動でコピーしてくれるため、耐久性が非常に高いのも特徴です。

その他にも、 Storage Gateway ではデータをローカル VM またはgatewayハードウェアアプライアンスにキャッシュするので、低レイテンシーでデータを運べます。

また全て暗号化でやり取りを行うため、安全にデータをやり取りが出来ます。

Amazon EMR

Amazon EMRとは、『Apache Spark、Apache Hive、Apache HBase、Apache Flink、Apache Hudi、Presto などを使用し、ペタバイト規模の膨大な量のデータを処理するためのサービス』です。

EMRではファイアウォールの設定が自動で行われ、コストも1秒単位の使用したインスタンスにかかる従量課金制となります。

ユースケースとしては下記が挙げられます。

・機械学習
・抽出、変換、読み込み(ETL)
・クリックストリーム分析
・リアルタイムストリーミング
・インタラクティブ分析
・ゲノミクス

Amazon Kinesis

Amazon Kinesisとは、『ストリーミングデータをリアルタイムで収集、処理、分析できるサービス』です。

Kinesisは完全マネージド型サービスなので、ユーザが準備や管理することなく使用できます。

Kinesisには下記種類が存在します。

Kinesisの種類
  • Kinesis Video Streams
    動画を安全にストリーミングすることが可能です。
  • Kinesis Data Streams
    大規模なデータを分析するためのサービスです。リアルタイムで持続的にデータを分析してくれます。収集データはミリ秒で取得が可能です。
  • Kinesis Data Firehose
    データ分析のロードに関するサービスです。利用することでストリーミングデータを、分析サービス、データレイク、データストアへ簡単にロードすることができます。セキュリティ面やストレージを最小限に抑えることができるのも特徴です。
  • Kinesis Data Analytics
    SQL や Apache Flinkでデータを変換したり分析したり出来るサービスです。サーバレスで使用した分だけの支払いだけなのが特徴です。

AWS Glue

AWS Glueとは、『分析する前のデータ準備サービス』です。

具体的に書きますとGlueは、色々なデータのメタデータを管理している、フルマネージドなETLサービスとなります。

以前まではデータ分析を始めるには数か月くらいかかったのを、Glueを使用することにより数分でデータ分析を開始できます。