はじめに
先日、Xでこんな投稿をしました。
EC2初心者あるある。
・public subnetにEC2を配置する
・セキュリティグループでハマる
・IAM Role作ったけど、インスタンスプロファイルを付け忘れる
・Session Managerではなく、SSHを使う。
・止めたつもりで止まってない
・インスタンスを「終了」するEC2は、意外と罠があるので気を付けよう。
EC2はシンプルに見えて、実際には以下の要素が密接に関係しています。
- ネットワーク(VPC / Subnet)
- セキュリティ(Security Group / IAM)
- 課金構造
そのため、「とりあえず動かす」ことはできても、正しく扱うには一定の理解が必要です。
この記事では、EC2入門者がやりがちなミスを
「なぜ起きるのか」と「どう改善するべきか」という観点で整理します。
1. public subnetにEC2を配置する
ミス
外部からアクセスしたいという理由で、EC2をpublic subnetに配置する
なぜ起きるか
- 外から接続できる方が便利だと考えてしまう
- VPCやサブネットの役割を十分に理解していない
問題点
- インターネットに直接公開される構成になる
- セキュリティリスクが高くなる
- 本番環境として適切ではない
改善パターン
-
EC2はprivate subnetに配置する
-
アクセスは以下のいずれかで行う
- Session Manager
- 踏み台サーバー
サーバーを直接インターネットに公開しない設計を基本とする
2. セキュリティグループでハマる
ミス
接続できない、通信できないといった問題で詰まる
なぜ起きるか
- ネットワークの基本的な理解が不足している
- セキュリティグループの動作を正しく理解していない
よくある原因
- インバウンドルールのポート未開放
- ソースIPの設定ミス
- アウトバウンドルールの制限見落とし
改善パターン
通信を以下のように分解して考える
- どこからアクセスするのか(source)
- どこへアクセスするのか(destination)
- どのポートを使うのか(port)
最初は広めに許可し、動作確認後に制限を絞る
3. IAM Roleを作っただけで満足する
ミス
IAM Roleを作成したが、EC2から利用できない
なぜ起きるか
- RoleとEC2の紐付けの仕組みを理解していない
- 作成しただけで使えると誤解している
問題点
- S3やSSMなどのサービスにアクセスできない
- 認証周りで問題が発生する
改善パターン
- EC2にIAMロールをアタッチする(インスタンスプロファイル)
- 作成時または後から付与する
確認コマンド例
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
ロールを作成することと、実際に使える状態にすることは別である
4. SSH前提で設計してしまう
ミス
SSH接続を前提に構成を組む
なぜ起きるか
- 従来のサーバー運用の延長で考えてしまう
- SSHが標準的な接続方法だと思い込んでいる
問題点
- 鍵管理が煩雑になる
- ポート開放によるセキュリティリスクがある
- 踏み台構成が必要になる場合がある
改善パターン
Session Managerを利用する
- ポート開放が不要
- IAMでアクセス制御が可能
- 操作ログを取得できる
SSHは必要な場合のみ利用し、基本はSession Managerを採用する
5. インスタンスを止めたつもりで課金される
ミス
EC2を停止したのに課金が続いている
なぜ起きるか
- EC2だけが課金対象だと誤解している
- AWSのリソース単位の課金構造を理解していない
よくある原因
- EBSボリュームが残っている
- Elastic IPが未解放
- NAT GatewayやALBが稼働している
改善パターン
- リソース単位で使用状況を確認する
- 不要なリソースは明示的に削除する
- Cost Explorerでコストを可視化する
課金はインスタンス単位ではなく、リソース単位で発生する
6. 「停止」と「終了」を混同する
ミス
誤ってインスタンスを終了してしまう
なぜ起きるか
- 用語の違いを正しく理解していない
- ローカル環境と同じ感覚で操作してしまう
問題点
- インスタンスが完全に削除される
- バックアップがない場合は復元できない
改善パターン
| 操作 | 意味 | データ |
|---|---|---|
| 停止 | 電源OFF | 残る |
| 終了 | 削除 | 消える |
検証環境であっても終了操作は慎重に扱う
まとめ
EC2入門者がハマるポイントの多くは、単なる操作ミスではありません。
- ネットワーク設計
- セキュリティ設計
- 課金構造
といった前提知識の不足によって発生しています。
EC2を扱う際は、単に動かすだけでなく、
構成全体を設計として理解することが重要です。
おわりに
EC2は触り始めのハードルは低い一方で、設計を誤るとセキュリティやコストの問題につながります。
実務で使うことを前提にする場合は、
- なぜその構成にするのか
- 他にどのような選択肢があるのか
まで考えることで、より安全で再現性のある構成を組めるようになります。