AWS EC2について



#EC2（Amazon Elastic Compute Cloud）

・仮想サーバーを提供するコンピューティングサービスです。
・利用する単位をインスタンスと呼び、任意のAZにインスタンスを立ち上げてサーバーとして利用する。
・webサーバーやバッチサーバーなど様々な役割を担うため、それに応じて最適な設計をする必要がある。
・サーバーの個数や性能を柔軟に変更ができ、コスト削減と時間の短縮ができる。

###・役割
仮想サーバーを立ち上げると下記はがEC２としての役割を決めれます。
OS         →AMI
CPU、Memory →インスタンスタイプ
SSD        →EBS
NIC        →EMI

###・インスタンスタイプ
例 t2.micro　tはファミリー名、数字は世代番号、microはインスタンスのサイズ
　t系はテスト向け
　m系は汎用向け
　c系はコンピューティング最適化、処理の多いウェブサーバー、機械学習/深層学習の推論
　r系はメモリ最適化、パフォーマンスのデータベース
　p系は高速コンピューティング最適化、GPUがついている。
　h系はディスクスループット、ストレージ最適化


#AMI
**EC2インスタンスのAMIを取得して、別リージョンにコピーすることで、同じ内容のEC2インスタンスを別リージョンに複製できます。実行中または停止したインスタンスのいずれかを使用して、Amazon Machine Image (AMI) を作成することができます。** 

###AMI には次が含まれている。
**・1つまたは複数のEBSスナップショット、または、instance-store-backed AMI、インスタンスのルートボリュームのテンプレート (オペレーティングシステム、アプリケーションサーバー、アプリケーションなど)
 ・起動許可 (AMI を使用してインスタンスを起動する権限を特定の AWS アカウントに与える)
 ・インスタンスの起動時にインスタンスにアタッチするボリュームを指定するブロックデバイスマッピング**
Amazon マシンイメージ (AMI) は、AWS マネジメントコンソール、AWS Command Line Interface または SDK、または Amazon EC2 API (すべて CopyImage アクションをサポート) を使用して、AWS リージョン内または AWS リージョン間でコピーできます。それにより、別リージョンに定期的にAMIをコピーしてバックアップ体制を整備することが可能です。

#EC2のコスト
・EC2のコスト面、インスタンスがRunning状態だった時間
・Running状態だったインスタンスのインスタンスタイプ、AMI、起動リージョン（インスタンスを停止してもEBSの費用がかかる）
・東京リージョンでAmazonLinuxの金額の場合　
インスタンスタイプ（USD/時間）✖️（使用時間）✖️（インスタンスの数）

##EC2のコスト割引
###・スポットインスタンス
入札形式で安く利用でき、一時的に利用したい場合（開発や機械学習など）、軌道に通常よりも少し時間がかかる。予備用のため途中で先叙される可能性がある。

###・リザーブドインスタンス
1年間もしくは３年間での割引になる。
利用期間を長期指定して利用する形式で、オンデマンドに比較して最大７５％割安になる。
**【オプション：コンバーティブル】では、インスタンスファミリー/OS/テナンシー/支払オプション変更可否が対応可能。柔軟性があるため割引率も低い。**

###・Saving Plan
１年間または３年間の期間にいていの使用量を守ことによりAmzon EC2コストの削減をする。
Fargate,Lambdaに適用可能。


#オンプレミス　物理対応可能なインスタンス
物理サーバーにインスタンスを起動して制御が可能なタイプのインスタンスが下記の３つになる。

###・ハードウェア専有インスタンス
専有HWのVPCで実行されるEC2インスタンス。ホストHWのレベルで、AWSアカウントに属するインスタンスから物理的に分離する。同じAWSアカウントのインアスタンスとはHWを共有する可能性がある。

###・Dedicated Host
EC２インスタンス容量を完全にお客様専用として利用できる物理サーバー。サーバーにバインドされて既存のソフトウェアライセンスを利用可能。ユーザーはライセンス条項の範囲で、ソケット単位、コア単位、または VM ソフトウェア単位の既存のライセンスを利用できます。IAMユーザーやIAMグループが同じAWSアカウントに属していたとしても、権限が異なる別のIAMユーザーやIAMグループとは物理サーバーを共有しません。

###・Bare Metal
アプリケーションが基盤となるサーバーのプロセッサーとメモリーに直接アクセス可能なインスタンス。AWSの各種サービスとの連携が可能でOSが直接仮想のハードウェアにアクセス可能。

##EC2のバックアップは重要
EC2インスタンスは定期的にバックアップすることが重要
ー定期的にバックアップをとる
ー定期的にリカバリプロセスを確認する
ー複数のAZに重要なアプリケーショnをデプロイする
ーフェイルオーバー対応を準備すること
ーイベントをモニタリングして対応できるようにする
ーインスタンス起動時に動的IPアドレス処理の設定を行うこと

##EC2インスタンス同士を低レイテンシーを保つ
###・プレイスメントグループ
単一のアベイラビリティーゾーン内のインスタンスを論理的にグループ化したものです。プレイスメントグループを設定すると、グループで設定されたインスタンス間のネットワーク遅延を最小限に抑えることができます。設定は同じリージョン内のVPCにまたがって設定することができます。

####グループの種類は３つ
#####クラスタープレイメントグループ
低いネットワークレイテンシー、高いネットワークスループットを実現するアプリケーション向けの構成
#####パーティションプレイメントグループ
Amazon EC2 は各グループをパーティションと呼ばれる論理的なセグメントに分割した構成
#####スプレッドプレイメントグループ
それぞれに独自のネットワークおよび電源がある異なるラックに別々に配置できるイ ンスタンスのグループ

##Trusted Advisor
**Trusted Advisorを利用することで、使用率の高い全てのEC2インスタンスを検出することができます。**Trusted Advisor は AWS で利用している EC2 や RDS などのサービスを「コスト」「セキュリティ」「パフォーマンス」「耐障害性」「サービスの制限」について、ベストプラクティスに基づいたアドバイスを自動的に行なってくれるサービスです。

##スティッキーセッション
スティッキーセッションは、同じユーザの同じセッションのアクセスを全て、
同じEC2インスタンスに送信する機能です。

##EC2を作成・複製する際に
###・ブートストラップ（Bashシェルスクリプトの利用）
Amazon EC2インスタンスやAmazon Relational Database（Amazon RDS）DBインスタンスなどのAWSリソースを起動するとき、Bashシェルスクリプトを利用して自動で設定を反映することができます。
###・ゴールデンイメージ
Amazon EC2インスタンス、Amazon RDS DBインスタンス、Amazon Elastic Block Store（Amazon EBS）ボリュームなどの特定のAWSリソースタイプは、ゴールデンイメージ（既存のリソースのスナップショット）から複製できます。 ブートストラップアプローチと比較すると、ゴールデンイメージは起動時間を短縮し、構成サービスまたはサードパーティのリポジトリへの依存関係を削除します。これは、需要の変化への応答として追加のリソースを迅速かつ確実に起動できるようにする自動スケーリング環境で重要です。

##IAMデータベース認証
**EC２インスタンスがIAMデータベース認証を利用してDBインスタンスにアクセスが可能です。この認証方法では、DB インスタンスに接続するときにパスワードではなく、認証トークンを使用します。**認証トークンはAmazon RDS がリクエストに応じて生成する一意の文字列であり、AWS 署名バージョン 4 を使用して生成されます。各トークンには 15 分の有効期間があります。認証トークンは IAM を使用して外部的に管理されるため、ユーザー認証情報をデータベースに保存する必要はありません。

##DeleteOnTermination 
インスタンスを終了すると、EC2 は接続されていた各 EBS ボリュームの DeleteOnTermination 属性 を使用して、ボリュームを存続させるべきか、削除すべきかを判断します。デフォルトでは、インスタンスのルートボリュームの DeleteOnTermination 属性が有効化されており、EC２インスタンスの削除とともにEBSも削除されてしますが、その他のボリュームタイプではDeleteOnTermination 属性は非有効化されています。**インスタンスが停止してもルートボリュームを維持したい場合は、ルートボリュームの DeleteOnTermination 属性を非有効化することが必要です。それによって、インスタンス削除後にデータを存続させることが可能です。**

##DisableApiTermination
**Amazon EC2 を使用してインスタンスを誤って終了できないようにするには、インスタンスの削除保護を有効にできます。**
デフォルトでは、Amazon EC2 コンソール、コマンドラインインターフェイス、または API を使用して、インスタンスを終了できます。Amazon EC2 を使用してインスタンスを誤って終了できないようにするには、インスタンスの削除保護を有効にできます。DisableApiTermination 属性は、インスタンスがコンソール、CLI、または API を使用して終了できるかどうかを制御します。デフォルトでは、インスタンスの削除保護は無効になっています。インスタンスが実行中またはインスタンスが停止中に、インスタンスを起動する際に、この属性の値を設定できます

##AutoScalingを設定する場合、
**最初に起動テンプレートを設定し、そのあとにAutoScalingグループを設定するという手順になります。さらに起動テンプレートの設定にはAMIが準備されている必要があります。**
起動テンプレートの設定では、Amazon EC2 Auto Scaling によって作成される EC2 インスタンスのタイプを指定します。これには使用する Amazon マシンイメージ (AMI) の ID、インスタンスタイプ、キーペア、セキュリティグループ、ブロックデバイスマッピングなどの情報を含めます。したがって、起動テンプレートを設定するためにはAMIが必要となりなります。