AWS EC2（Elastic Compute Cloud）の概要　


#Amazon EC2とは
• 数分で起動し、1時間または秒単位の従量 課金で利用可能なAWSクラウド上の仮想サーバー
• サーバーの追加・削除、マシンスペック変 更も数分で可能
• 管理者権限(root / Administrator) で利用可能
• インスタンスという単位でサーバーが管理し、ボタンクリックや、CLIでインスタンスを作成可能
• EC2インスタンスはVPC内で起動するAZサービス
• OSまでは提供されているタイプを選択することで自動設定され、OSより上のレイヤーを自由に利用可能

##EC2インスタンス作成手順
1.利用するAMIイメージ（OSセッティング）を選択
2.インスタンスタイプを選択
3.ストレージを選択
4.セキュリティグループを選択
5.SSHキーペアを設定

#1. AMI (Amazon Machine Image) とは
インスタンス起動に必要なOSイメージ
<img width="1437" alt="スクリーンショット 2020-03-13 10.07.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/c00552b8-0f47-a1ca-de7d-f20de4d68d0b.png">

#2. インスタンスタイプ
インスタンスタイプの選択はCPU・メモリ、ストレージ、ネットワークキャパシティなどのサーバーリソースの選択
<img width="1429" alt="スクリーンショット 2020-03-13 11.08.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/ef818c5a-84aa-cb1c-1029-bfce576144dd.png">

<img width="1026" alt="スクリーンショット 2020-03-13 10.09.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/a203e660-67ca-9d0b-7d40-ddcd6a17b535.png">
##インスタンスファミリー
インスタンスタイプの先頭の「m」、「t」はインスタンスファミリーを表す。
コンピューティングに最適化したインスタンスは「c」から始まる。
<img width="1293" alt="スクリーンショット 2020-03-13 10.09.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/d470ce6e-85c5-d0a2-632d-8e3b9f180cda.png">
##EC2インスタンスサイズ
CPU、メモリ、ネットワークのキャパシティによって、インスタンス サイズが分類されている。アプリケーションが必要とするリソース量 に合わせて選択する。
<img width="1246" alt="スクリーンショット 2020-03-13 10.14.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/e85a75ce-ebdf-d2d2-67f7-e626d457ec83.png">

#少し特殊なインスタンスタイプ
##物理対応可能なインスタンス
###<font color="green">Amazon EC2 Bare Metal
• ハードウェアへのダイレクトアクセスを提供する新しいEC2 インスタンスのシリーズ
• AWSの各種サービスとの連携が可能で、AWSクラウドのメリットを失うことなく、OSが直接下層のハードウェアにアクセス可能

###<font color="green">Dedicated Host
- 特定のリージョンにある「実際の物理サーバ」を割り当てて、顧客はその上で1台以上のEC2インスタンスを動かすことができるというもの
- EC2インスタンス容量を完全にお客様専用として利用できる物理サーバー
- サーバーにバインドされた既存のソフトウェアライセンスを利用可能

###<font color="green"> Dedicated インスタンス(ハードウェア専有インスタンス)
- 専用HWのVPCで実行されるEC2インスタンス
- 自分専用の物理ホストに対してEC2インスタンスを起動できるもの
- ホストHWのレベルで、他のAWSアカウントに属するインスタンスから物理的に分離する
- 同じAWSアカウントのインスタンスとはHWを共有する可能性がある

＊＊<font color="red">物理ホストに対してお金を払うわけではなく、あくまでEC2インスタンスに対してお金を払う。

参考
https://blog.mosuke.tech/entry/2018/09/24/dedicated/
##バースト可能パフォーマンスインスタンス
ベースラインのCPUパフォーマンスに加えて、負荷に応じて高いレベルまでCPU性能がバー ストする機能を持ったインスタンス。T2,T3インスタンスが該当する。 バースト性能はCPUクレジットを消費することで得られる。

##64bit ARMアーキテクチャ A1インスタンス
• AWSカスタムのサーバー向けARM Neoverseコア のCPU “AWS Gravitonプロセッサ” 2.3GHzを搭 載
• 他ファミリと比較して最大45%のコスト削減を期 待できる
• マイクロサービスや、ウェブサーバ、キャッシュ サーバなど、多数の小規模インスタンスを使う用 途に最適
• Amazon Linux 2, RHEL 7.6以降, Ubuntu 16.04以降 (いずれも64bit Arm版) などのAMIが利用可能
• バージニア、オレゴン、アイルランド、オハイオ の各リージョンで利用可
     
#費用で考えるEC2
EC2インスタンスを使った分だけ課金される従来課金型のサービス。

- インスタンスがRunning状態だった期間
- Running状態だったインスタンスのインスタンスタイプ、AMI、起動リージョン

通常は**オンデマンドインスタンス**という利用形態であるが、その他に***スポットインスタンス***と***リザーブドインスタンス***という利用オプションがある！

##<font color="green">スポットインスタンス
AWSが<font color="red">余らせているEC2リソース(予備のコンピューティング容量)</font>を入札形式で安く利用する方式
予備用のため途中で削除される可能性がある
<img width="1166" alt="スクリーンショット 2020-03-13 11.14.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/fed06355-eb0d-d89e-dfaf-27f3ba91707c.png">


###ユースケース
開発用の環境や機械学習のデータ学習のために**一時的に**高スペックのインスタンスを使用する場合

##<font color="green">リザーブドインスタンス
利用期間を<font color="red">長期指定して利用する形式</font>で、オンデマンドに比較して割引を受けられるオプション(最大75％割安になる)

###ユースケース
- 一定した状態または使用量が予測可能なワークロード
- 災害対策などキャパシティ予約が可能なアプリケーション

#3. EC2のストレージ
###<font color="green">Amazon EC2 インスタンスストア
- ホストコンピュータに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ
- 性能・容量はインスタンスタイプごとに規定
- <font color="red">EC2の一時的なデータが保持（揮発性）され、EC2の停止・終了と共にクリアされる
- 無料

###<font color="green">Amazon Elastic Block Store (EBS)
- ネットワークで接続されたブロックレベルのストレージでEC2とは独立して管理される
- <font color="red">EC2をTerminateしてもEBSは保持可能で、SnapshotをS3に保持可能
- <font color="red">EC2インスタンスをStop/TerminateしてもEBSは保持可能（不揮発性）
- Volumeごとに性能・容量を定義可能
- 別途EBS料金が必要


#4. EC2の通信とセキュリティ
##Key Pair(キーペア)
EC2インスタンス上のOSに対する安全な認証を提供する機能
キーペアを利用して自身がダウンロードした秘密鍵とマッチした公開鍵を有するインスタンスにアクセスする
<img width="742" alt="スクリーンショット 2020-03-13 11.12.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/b3d87ef7-a5ad-c68f-df8c-c69430b48942.png">

• 鍵認証は、ユーザ名・パスワードの認証よりも安全な認証方式
• AWSでは公開鍵のみ保持し、起動時に公開鍵をコピーする
• 秘密鍵は、ユーザにて適切に管理・保管する

##Security Group(セキュリティグループ)
インスタンスへのトラフィックのアクセス可否を設定するファイアーウォール機能
<img width="1432" alt="スクリーンショット 2020-03-13 11.27.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/3a518ab4-0b7e-9179-7d7d-a160643d6759.png">

• デフォルトでは<font color="red">全トラフィックが閉じた状態</font>
• 必要な受信アクセスに対してアクセスルールを定義する
• プロトコル( TCP/UDP)
• 宛先ポート
• アクセス元IP / Security Group
• ルールをひとまとめにした テンプレートをSecurity Groupと呼ぶ
<img width="649" alt="スクリーンショット 2020-03-13 11.19.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/e79b5d70-2977-2db0-2deb-1f511d001136.png">

#最後に
参考
AWS EC2
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/