EC2

## 1.EC2とは

Amazon Elastic Compute Cloud は、アマゾンが提供する計算資源を用いてアプリケーションを実行する、Amazon Web Services の商用ウェブサービスです。

アンマネージド型で提供されている代表的なサービスです。すなわち、EC2インスタンスはユーザー側でソフトウェアのインストールや管理を実施することが必要です。



コンピュータ将棋のCPUとしてもしばしば使われています。

## 2.AMI

EC2インスタンスはAMI(アミ、Amazon Machine Image)から起動します。インスタンスのイメージ（AMI）を取得せずにインスタンスを削除すると、インスタンスのデータが失われます。AMIのゴールデンイメージによって、同じ構成のEC2インスタンスを複製して展開することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359600/47344698-7fdf-b722-d7e6-b941da29b710.png)


### 2.1.LaunchPermissionプロパティ
複数のアカウント間でAMIを共有するには、AMIを別のアカウントと共有するための許可設定が必要となります。そのためには、AMIを第三者のAWSアカウントとのみ共有できるようにAMIのLaunchPermissionプロパティを変更することが必要です。

### 2.2.BCP対策
EC2の災害復旧ソリューションのベストプラクティスとして、EC2インスタンスのAMI作成と、別のリージョンへのコピーがあります。

## [3.インスタンスタイプ](https://aws.amazon.com/jp/ec2/instance-types/)

ワークロードに必要となるCPU、RAM、ネットワーク、ストレージサイズ、およびI / Oに応じて、適切なインスタンスタイプを選択します。

先頭の「m」や「p」はインスタンスファミリーを表し、何に最適化しているインスタンスタイプかを意味します。
例えば、ファミリー記号がMかTなら一般向け(汎用)となります。
その次の数字はインスタンス世代、ドットの後がインスタンスサイズを表します。

無料枠で使えるのはt2.micro。





![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359600/594df624-121b-f5f3-6d72-74baa60884b3.png)





- リサーブドインスタンスのコンバーティブルでは、インスタンスのファミリーを変更できる。スタンダードでは変更できません。

### 3.1.汎用インスタンス
T2インスタンスなど。ATMと覚えます。M5 インスタンスは、さまざまなワークロード向けに、コンピューティング、メモリ、ネットワーキングリソースをバランスよく提供しています。M5のようなプレイスメントグループの設定は先にプレイスメントグループを構成した上で、その中でインスタンスタイプとインスタンス数を設定することが必要です。

### 3.2.コンピューティング最適化インスタンス
分かりやく、Cで始まります。

### 3.3.メモリ最適化インスタンス
RXZ

### 3.4.ストレージ最適化インスタンス
ローカルストレージ上の非常に大きなデータセットへの高負荷な読込処理および書込処理を必要とするワークロード用に設計されています。
HDIで覚えます。


#### 3.4.1.I3enタイプ
I3enインスタンスは、I/O集約型のワークロードに特化して設計されたインスタンスファミリーです。高性能なローカルNVMe SSDストレージを提供し、高いディスクスループットとIOPSを実現します。

#### 3.4.2.H1インスタンス
HDDベース。

#### 3.4.3.D2 インスタンス
HDDベース。

### 3.5.高速コンピューティングインスタンス
F1(FPGA)など。

## 4.キーペア(公開鍵と秘密鍵)

Amazon EC2インスタンスにPC端末から接続する際に必要となる、認証キー。**pemファイル形式**。


## 5.IPアドレス

EC2には、

- パブリックIPアドレス

- Elastic IP アドレス

- プライベートIPアドレス

という3種類のIPアドレスが存在します。重要な相違点は、EC2インスタンスが再起動した際に各IPアドレスが維持されるかどうかです。
[インターネットにアクセスするためには、パブリックIPアドレスまたはElastic IPアドレスが必要です。](https://qiita.com/naoya_ok/items/0c8760a1f3200df4108c)





## [6.インスタンス購入オプション](https://qiita.com/naoya_ok/items/6ecf4c9743cc6bddd31a)







## 7.インスタンスストア

EC2インスタンスの一時的なデータを保持するストレージ。
データの永続化は必要ないが、とにかく高いI/Oパフォーマンスが必要といった要件には、このインスタンスストアの利用が適しています。











## 8.CloudWatchによるログ情報の取得
EC2インスタンスのデフォルトメトリクス以外の詳細なログ情報を取得するためには、CloudWatchの２つのサービスを利用する必要があります。

１つ目は**CloudWatchエージェント**です。このエージェントを対象のEC２インスタンスにインストールすることで、CloudWatchによりサーバー内部の詳細なログが取得できるようになります。

２つ目のサービスは**CloudWatch Logs**です。CloudWatch LogsはEC2インスタンスなどから取得したログを集約して、ログを保存したり、可視化したりする機能を提供します。





## [9.EC2にターミナルソフトから接続する](https://qiita.com/naoya_ok/items/6f19b21ff0cbcea63af0)





## 10.停止
停止中のAmazon EC2インスタンスはその利用料金は無料となりますが、インスタンスにアタッチされたEBSボリュームの利用料金は発生します。完全に課金を止めるためには、EBSのスナップショットを取得した上で、シャットダウンするなどの対応が必要です。
ユーザが停止ボタンを押したタイミングで課金が止まります。

## 11.可用性の向上方法

[API Gateway](https://qiita.com/naoya_ok/items/093d1ce3a0cada951e10)とLambdaのサーバーレスアーキテクチャに変更することで、EC2より可用性を向上させることができます。



## 12.Amazon EC2 Instance Connect(EIC)

Secure Shell (SSH) を使用して Linux インスタンスに接続するシンプルで安全な方法を提供します。
EICエンドポイントはVPC→Endpoints→EC2 Instance Connect Endpointから作成します。

## 13.リンクローカルアドレス

インスタンスメタデータを取得する唯一の方法は、リンクローカルアドレス (169.254.169.254) を使用することです。
※リンクローカルアドレス（link local address）とは、ネットワーク上で用いられるアドレスの一種で、その機器が物理的に直接通信できる範囲でのみ有効なもの。「169.254.」で始まる特殊なIPアドレスを指すことが多いです。





## 14.RDSインスタンス

EC２インスタンスなどのAWSリソースはIAM ユーザーまたはIAMロールの認証情報と認証トークンを使用して、RDS DB インスタンスまたはクラスターに接続することができます。これはRDSインスタンスの作成時にEnable IAM DB Authentication(IAMのDB認証）を有効化することで利用できます。


## 15.EC2フリート

AWS EC2インスタンスを起動する方法の一つでスポットインスタンスとオンデマンドインスタンスを組み合わせて定義できるもの。フリート（fleet）とは「 艦隊」を意味し、EC2もインスタンスの構成を行うことでコスト最適化ができます。

## 16.「IPをフローティング」とは

「EC2インスタンスが停止した場合に、IPをフローティングする」とは「もし一つのEC2インスタンスが停止（故障）した場合、そのインスタンスが使っていたIPアドレスを別のインスタンスに移す」という意味。

## 17.起動設定と起動テンプレート

起動設定は以前の設定方法で、変更は許可されていないものであり、毎回再作成する必要がありました。起動テンプレートではEC2の最新機能を使用できるようになります。

## 18.使用しているユーザーの特定

### 18.1. AWS CloudTrailを使用する
AWS CloudTrailは、AWSアカウントのAPIコールとそれに関連するイベントを記録するサービスです。CloudTrailログを使用して、EC2インスタンスを起動、停止、または管理しているユーザーを特定できます。

### 18.2. AWS Configを使用する
AWS Configは、AWSリソースの構成変更を監視および記録するサービスです。これを使用して、EC2インスタンスの変更を追跡し、変更を行ったユーザーを特定できます。

### 18.3.タグ付けとコスト配分レポートを使用する
EC2インスタンスにタグを付けて管理し、AWS Cost Explorerやコスト配分レポートを使用して、誰がどのインスタンスを使用しているかを特定します。


## 19.プレイスメントグループ

プレイスメントグループは、複数のEC2インスタンスを論理的にグループ化し、インスタンス間での低遅延な通信や、ハードウェア障害による影響を軽減できる機能です。

### 19.1.クラスタープレイスメントグループ
プレイスメントグループのうち「クラスタープレイスメントグループ」は、グループ内のEC2インスタンスを単一AZ内の物理的に近い距離に配置するので、各EC2インスタンス同士の通信は遅延が発生しにくくなります。

クラスタープレイスメントグループに所属するインスタンスは単一AZである必要があります。

### 19.2.スプレッドプレイスメントグループ

スプレッドプレイスメントグループは、グループ内のEC2インスタンスを異なるハードウェア（ラック）に配置します。スプレッドプレイスメントグループ内の各EC2インスタンスはハードウェアを共有しないので、ハードウェア障害による影響を軽減します。スプレッドプレイスメントグループは異なるAZにEC2インスタンスを配置することもできます。

## 19.3.パーティションプレイスメントグループ

グループ内のEC2インスタンスが同一のラックを共有することがあります。

## 20.参照

- [AWS Black Belt Online Seminar Amazon Elastic Compute Cloud](https://d1.awsstatic.com/webinars/jp/pdf/services/20190305_AWS-Blackbelt-EC2.pdf)