AWS EC2 インスタンスタイプを変更する

##メモリが足りない
railsアプリをAWSにデプロイしようとするとassets:precompileでエラーが出て途中で落ちるようになってしまいました。
色々調べるとメモリ不足のよう。以前からスワップ領域を作って対応していたくらいなので、ここらでAWS無料枠のt2.microインスタンスからアップグレードします。

##どのインスタンスにするか
今回は1GBだったメモリを2GBにという必要最低限のアップグレードなので、安価なtシリーズからの選択。
t2/t3/t4とある中で、数字が大きいほど新しくまた安価なのでt4を選び、その中でメモリが2GBのt4g.smallを選択します。（後からt2.microからt4に変更できないことがわかりt3.smallにしました。後述。）


##イメージを作成
万一の保険にAMIを作成しておきます。
AMIとはAmazon Machine Imageの略で、マシンの構成を記録しこれをもとにインスタンスを起動できます。[詳しくは公式を。](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html)

コンソールに入りEC2のサービスページへ移動、該当のインスタンスを選択し、アクション→イメージとテンプレート→イメージを作成をクリック
![スクリーンショット 2021-02-17 午後6.08.03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/e0f7d6ba-b2a3-64c8-7b3d-c673a404d55b.jpeg)



イメージ名と説明を記入後、右下にあるイメージを作成をクリック
![スクリーンショット 2021-02-17 午後4.43.44.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/043a7c98-4737-1e0d-1cc9-4993d88362e1.jpeg)


左メニューのイメージからAMIに移動、作成したイメージのステータスがpendingからavailableになるまでしばらく待ちます。
![スクリーンショット 2021-02-17 午後4.45.14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/4939e826-a2c7-e6c2-f350-e18c896394be.jpeg)


##インスタンスの停止
ここでインスタンスを停止させます。インスタンスのページからインスタンスの状態→インスタンスを停止
注意!!　ここでインスタンスの終了を押したらインスタンスが消えてしまうので気をつけてください。
![スクリーンショット 2021-02-17 午後5.05.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/29f70dba-07d5-ab9c-de35-22f2ee5db8a4.jpeg)

停止中になるまで待ちます。
![スクリーンショット 2021-02-17 午後5.05.46.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/e806f75f-7546-d5ef-c851-b082971ff099.jpeg)

##インスタンスタイプの変更
停止したらいよいよインスタンスタイプを変更します。
アクション→インスタンスの設定→インスタンスタイプのを変更
![スクリーンショット 2021-02-17 午後5.06.18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/210f1575-9922-b4e9-75c5-6457909a09b4.jpeg)

変更するインスタンスタイプを選択し、適用をクリック。
しかしここで問題が発生！t4.smallが選択できませんでした。
![スクリーンショット 2021-02-17 午後5.11.27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/ec022903-38a8-6277-9544-15f4e5e75314.jpeg)

調べると[現在使っている(t2.microの)CPUアーキテクチャが変更先に指定したインスタンスタイプ(t4.smallの)のCPUアーキテクチャと異なっていることが原因](https://dev.classmethod.jp/articles/tsnote-valid-instance-type-for-instance-error/)だそう。

確認すると確かに異なっている。
![スクリーンショット 2021-02-17 午後5.11.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/98e580a9-98b5-2753-1f14-c13b1ab18b7e.png)

![スクリーンショット 2021-02-17 午後5.11.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/b8b559a3-b35f-d8b0-25f4-4e97855b47f8.png)

なのでt2.microと同じCPUアーキテクチャのt3.smallを選択することにしました。
すると無事に変更完了。画面に反映されているのが確認できます。
![スクリーンショット 2021-02-17 午後5.11.59.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/5b3c9781-2a27-74ff-e5cb-53f8727cec83.jpeg)


##インスタンス起動
ここまできたらインスタンスを起動させます。
該当インスタンスを選択肢てインスタンスの状態→インスタンスを開始
実行中になれば完了です。
![スクリーンショット 2021-02-17 午後5.12.21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/f9810c4a-1068-acd0-ec64-054a0277e83c.jpeg)


##AMIの削除
実際にアクセスするなりして問題なければ最初に作成したAMIを削除しておきます。（放っておけばお金がかかる）
メニューからイメージ→AMIに移動し、アクション→登録解除
![スクリーンショット 2021-02-17 午後5.21.07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707182/13025f0f-ccb4-391c-afb4-a99f966b48fd.jpeg)

続いてメニューからElastic Block Store→スナップショット
該当スナップショットを選択し、アクション→削除（スクショ撮るの忘れました）

これで全て完了です。やってみると思ったよりも簡単でした！
どなたかの参考になれば幸いです。