AWSまとめ

# はじめに
**IT未経験の方が初めて見た際に、AWS全体像を理解できる**ことを想定して、
作成いたしました。
当方がIT関連記事作成が初経験であり、拙い日本語になっていることご容赦ください。
あくまで自分のアウトプット用として活用予定です。

##### コンテンツ
- AWSとは？
- EC2基本
- Linuxサーバーとは？
- AWS VPCとは？
- ネットワーク基本

# AWSとは？
##### オンプレミスとクラウドサービスの違い
AWS(Amazon Web Service)はクラウドサービスの一種で、開発に必要な様々なサービスを提供します。
従来、開発に必要なITリソース各企業がITリソースを保有し、保守運用をしていました。
しかしこの方法では、以下もケアする必要があり、企業が本来注力する内容に工数をさけません。

- サーバーの導入や撤去
- データセンターの管理、など

クラウドサービスとは、上記オンプレミスと異なり、各企業がITリソースを保有することなく、インターネット経由で利用できる仕組みのことを指します。
![スクリーンショット 2022-05-16 13.12.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/c851cef9-f01f-52d6-ffd7-8b4a0cd5a136.png)

このクラウドサービスを利用することにより、企業はITリソースの管理工数が減り、開発などに集中することができます。
さらに、工数削減のみでなく、以下のメリットもあります。
- 従量課金方式であるため、**とりあえず試しに作ってみる**のハードルが下がる
- 責任共有モデルにより、運用上の負担が削減される
- 自動拡張機能により、ビジネスチャンスを逃すことがなくなる
- エッジロケーションを利用し、エンドユーザーに低レイテンシーでサービスを提供することができる

##### AWS Wel Architected Framework
AWSは以下５つの原則に沿って設計されています。

- 運用上の優位性
    - 自動化による人為ミスの防止
    - 変更は最小限にかつ細かく実施する
    - 運用手順を定期的に見直す
    - 障害を予測する
    
- セキュリティ
    - 付与する権利は最小限にとどめる
    - 全てのレイヤーにSGなどのセキュリティを適用する
    - アクセスログをCloudWatchなどでモニタリングする
    - セキュリティイベントに備える
    
- 信頼性
    - 障害発生時のFailoverが起きる仕組みを作る
    - Autoscalingを活用し、要求されるリソースの上下に対応できるようにする
    - 単一障害点を避ける
    
- パフォーマンス効率
    - CPUやメモリなど最適なリソースを選択する
    - リソースの使用状況をモニタリングし、最適化する
    
- コスト最適化
    - 従量課金の特性を活かし、リソースの確保は需要に合わせて増減させる
    - リソースの使用状況を常時把握する
    - モニタリングの上、不要リソースを削除する
    - RDSやDynamo DBといったマネージドサービスを活用し、運用の負担及びコストを削減する
    
##### IaaS/PaaS/SaaS

AWSでは以下三つのサービス形態でクラウドサービスを提供しています。

- IaaS（ECS,VPCなど）
    - IaaSとはOSからアプリケーションまでをユーザーが管理するサービス
- Paas(Lamda,RDSなど）
    - PaaSとはアプリケーションとデータのみユーザーが管理するサービス
- Saas(S3,CloudWatchなど）
    - Saasとは全レイヤーをAWSが管理するサービス

AWSどのサービスを利用するかは、その企業にポリシーに依存しますが、AWSが管理する領域が増えれば増えるほど、企業の工数は削減されます。

# EC2基本
EC2(Elastic Compute Cloud）は、その名の通り、ユーザの希望通り伸縮することが出来るコンピューティングサービスです。
物理サーバと異なり、スペックの選定から導入まで膨大な費用がかかることなく、かつAuto Scaling Groupと組み合わせることでコストの最適化が可能です。
インスタンスIDや、インスタンスのパブリックIPアドレスはメタデータと呼ばれ、以下から取得することができます。
http://169.254.169.254/latest/meta-data/

ユースケースによって以のようなインスタンスタイプの使用が推奨されます。
※こちら引用元の公式ドキュメントとなります。
https://aws.amazon.com/jp/ec2/instance-types/

- **汎用**
バランスの取れたコンピューティング、メモリ、ネットワークのリソースを提供し、多様なワークロードに使用できます。ユースケースは、マイクロサービス、低レイテンシーのインタラクティブアプリケーション、小規模/中規模のデータベース、仮想デスクトップ、開発環境、コードリポジトリ、およびビジネスクリティカルなアプリケーションなどです。

- **メモリ最適化**
メモリ最適化インスタンスは、メモリ内の大きいデータセットを処理するワークロードに対して高速なパフォーマンスを実現するように設計されています。ユースケースはオープンソースデータベース、インメモリキャッシュ、リアルタイムビッグデータ分析などのメモリ集約型アプリケーションなどです。

- **コンピューティング最適化**
コンピューティング最適化インスタンスは、高パフォーマンスプロセッサの恩恵を受けるコンピューティングバウンドなアプリケーションに最適です。このファミリーに属するインスタンスは、バッチ処理ワークロード、メディアトランスコード、高性能ウェブサーバー、ハイパフォーマンスウェブサーバー、ハイパフォーマンスコンピューティング (HPC)、科学モデリング、専用ゲームサーバーおよび広告サーバーエンジン、機械学習推論などのコンピューティング集約型アプリケーションに最適です。

- **ストレージング最適化**
ストレージ最適化インスタンスは、ローカルストレージの大規模データセットに対する高いシーケンシャル読み取りおよび書き込みアクセスを必要とするワークロード用に設計されています。ストレージ最適化インスタンスは、数万 IOPS もの低レイテンシーなランダム I/O オペレーションをアプリケーションに提供するように最適化されています。


# Linuxサーバとは？
本来Linuxとは、OSの中止にあるLinuxカーネルを指す言葉ですが、RedHat系などのLinuxディストリビューションが、Linuxサーバと呼称されているのが実情です。

ディストリビューションの一例として
- Ubuntu
- redhat
- CentOS

などがあります。

# AWS VPCとは？
VPC(Virtual Public Cloud）とは、仮想ネットワークサービスであり、AWSリソースを使用する上での土台になります。

以下の図では、VPC内に一つのAZの中に10.0.0.0/24のPublicサブネットがあり、VPC以外への送信先は全てインターネットゲートウェイにルーティングされています。

![スクリーンショット 2022-05-21 16.41.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/35bd043b-b5b9-ce16-564e-419999d16631.png)

仮にPrivateサブネットからインターネットにアクセスする必要がある際には、PublicサブネットにあるNAT Gatewayを経由する必要があります。

![スクリーンショット 2022-05-21 16.58.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/b59182ed-b222-b709-e842-7df20c002fd2.png)

- **セキュリティグループ（SG）とは**
セキュリティグループとは、インバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイヤーウォールのことです。後述のネットワークACLとは異なり、ENI（マネジメントコンソール上で追加できるNIC）にアタッチされます。
セキュリティグループはステートフルであるため行きの通信さえ保存されていれば帰りの通信を保存する必要はありません。
デフォルトで作成させているものは全ての通信を拒否するように設定されており、自分で作成するものについては、通したい通信を開ける必要があります。

![スクリーンショット 2022-06-07 16.15.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/de767666-0fa1-385a-85d6-6cc7ff452b61.png)


- **ネットワークACLとは**
ENIに適用されるSGと異なり、サブネット単位で設定されるファイアウォールも存在します。
ネットワークACLは、１つ以上のインバウンドトラフィックとアウトバウンドトラフィックを制御し、デフォルトでは全ての通信は許可されています。
カスタムネットワークACLを作成した場合は、全ての通信が拒否されている状態です。作成されたルールは低い番号から評価されます。

![スクリーンショット 2022-06-07 16.13.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/09e9ebd7-3e98-37f7-f9d9-e9be0d1a38b1.png)

- **VPCエンドポイントとは？**
通常下記の図のようなEC2からVPCの外にあるAWSサービス（S3など）にアクセスする場合は、インターネットを経由します。しかし、VPCエンドポイントを使用すれば、VPCの外にあるAWSサービスにインターネット経由せずに接続することができます。
VPCエンドポイントでは、**ゲートウェイエンドポイント**と**インターフェイスエンドポイント**の2つの機能が提供されています。
ゲートウェイエンドポイントはVPCにゲートウェイを設置することで、VPC内外の通信を実現します。
追加料金なしで使用することができますが、指定できるサービスはS3とDynamoDBの2種類のみとなります。
対して、インターフェイスエンドポイント（AWS Private link)は時間単位で課金され、仮にMulti AZ構成で冗長化している場合、その分追加料金がかかります。

![スクリーンショット 2022-06-07 16.51.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/df9bf715-0ae2-002e-ec45-2073c86b2c64.png)

- **VPC flow logsとは？**
サーバの安定稼働や、ビジネスチャンス拡大のため、ネットワークを流れるパケットを収集することには意義があります。VPC flow logsというサービスによって特別な機器を導入することなく、上記ログの収集を実施することができます。
flow longsの設定はVPC,サブネット,ENI単位で設定でき、収集されたログは、CloudwatchかS3に保存されます。
Cloudwatchに保存されたlogはCloudwatch上でフィルタリングなど活用できますが、S３に保存されたlogはAmazon Athenaと呼ばれるサービスを利用しSQLクエリで検索する必要があります。
![スクリーンショット 2022-06-12 13.38.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/bfc881eb-d099-f324-68ba-96f5160b585f.png)

- **オンプレミス環境とAWSクラウド環境をつなぐには?**
オンプレ環境とAWSクラウド環境をつなぐにはVPN(Virtual Private Network)を使用し、通信を暗号化する必要があります。AWSとしては主に2種類のサービスを提供しており、**AWS Client VPN**と**AWS site-to-site VPN**と呼ばれています。
AWS Client VPNを使用する場合、以下の図のようにクライアント側でVPNソフトウェアをインストールし、ルートテーブル上で該当のVPCのIPレンジを宛先に指定し、送信先をEndpointに設定することで、安全な通信が実現できます。

![スクリーンショット 2022-06-16 14.59.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/b08256d3-1784-874f-2e17-3111191e1d5f.png)

AWS site-to-siteを使用する場合は、以下の図のような構成となります。
オンプレミス側のVPCに向く通信は、カスタマーゲートウエイにルーティングされ、逆のVPC側からの通信はVGWにルーティングされるように設定される必要があります。
また、オンプレミス側で準備する必要があるカスタマーゲートウエイは、Cisocoなどの物理ルータである場合が多いです。

![スクリーンショット 2022-06-16 15.17.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/a0b2db0a-1f21-6acf-6a53-daae151aa604.png)

- **Direct Connect（DX)とは？**
AWS client VPNやAWS site to siteVPNと異なり,オンプレミスとAWSの環境を物理的に接続する選択肢もあります。
**AWS Direct connect**は以下の図のように、Direcr connectロケーションと呼ばれる物理的なデータセンターを経由してインターネットなしに両者を専用線接続します。
これにより、オンプレミスの環境からVPCだけでなく、S３などのAWSサービスに接続することができます。
Direct connect ロケーション内はユーザー側とAWS側でそれぞれルーターを管理しており、これらが接続されることにより、AWSルーターからAWSサービスの利用が可能になります。
上記物理的なコネクションの中に、論理インターフェイスをひく必要があり、これを**VIF(Virtual Interface)**と呼び、以下の３種類に分類されます。
・Public VIF
・Private VIF
・Transit VIF

**Public VIF**とは、






![スクリーンショット 2022-06-24 14.00.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/1c4bd3b8-cbbe-0dd0-818e-2ab03c6c9c84.png)


# 参考
- クラウドエンジニア(AWS)ロードマップ2021
https://qiita.com/KurokawaKouhei/items/4e9aa3b526f3f233bf85



# おわりに
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com