Skip to main content

Amazon EC2 とは?基本的な使い方や料金を学ぼう

Tags:

AWS でアプリケーションを動かすサーバーが必要な場合、EC2 が最初の候補になります。EC2 は設定項目が多く、何を設定すれば良いか迷うことが多いため、基本的な Amazon EC2 の使い方を説明します。

Amazon EC2 とは

EC2(Elastic Compute Cloud)は、クラウド上で仮想サーバーを起動できるサービスです。EC2 では仮想サーバーのことをインスタンスと言います。必要な時に必要なスペックのインスタンスを使用できますが、コストを抑える仕組みを使ったり、意図せず外部にインスタンスを公開しないようにする必要があります。

料金

EC2 の料金は実際に使用した分だけ発生する従量課金になります。主にどのインスタンスタイプを選択し、何時間稼働させたかで決まります。インスタンスを停止している間は、インスタンス料金は発生しませんが、ストレージ(EBS)の料金は発生します。

インスタンスタイプ

インスタンスタイプはファミリーと呼ばれる用途別のグループに分かれており、同じスペック(例: 2vCPU, 8GB)でもファミリーによって料金が大きく異なります。用途に合ったファミリーを選ぶことがコスト最適化の第一歩です。

ファミリー用途代表例料金 (東京リージョン)
t4gバースト汎用・開発環境t4g.large (2vCPU, 8GB)USD 0.0832/時間
m7i汎用・本番環境m7i.large (2vCPU, 8GB)USD 0.2016/時間
c7iコンピューティング最適化・バッチ処理c7i.large (2vCPU, 4GB)USD 0.1071/時間
r7iメモリ最適化・DB・キャッシュr7i.large (2vCPU, 16GB)USD 0.3192/時間

t4g は CPU 使用率が低い時間帯にクレジットを貯めておき、必要な時だけ高いパフォーマンスを発揮するバースト型です。開発環境や負荷が一定でないアプリケーションに向いています。本番環境で安定したパフォーマンスが必要な場合は m7i を選びましょう。

セキュリティ

EC2 のセキュリティ問題は多く、外部から不正アクセスされてしまった場合、サーバーが乗っ取られるリスクがあります。そのため、EC2 のセキュリティグループで必要な通信のみを許可し、SSH キーペアを適切に管理しましょう。なお、パスワード認証は無効にし、SSH キー認証のみを使用することをお勧めします。

セキュリティグループを使用してインスタンスへのアクセスを制限します。最小限必要なネットワークトラフィックを許可するルールを設定します。例えば、企業ネットワークのアドレス範囲からのトラフィックのみ、または HTTPS など特定のプロトコルのトラフィックのみを許可することができます。

AWS CLI で EC2 を使ってみる

AWS CLI で EC2 を使ってみましょう。実際にコマンドを実行した場合にどうなるか結果を記載します。なお、リソースは AWS CLI のプロファイルで設定されているリージョンに作成されます。

キーペアの作成

インスタンスに SSH 接続するためのキーペアを作成します。秘密鍵はローカルに保存し、所有者のみが読み取れるよう権限を設定します。

❯ aws ec2 create-key-pair --key-name exrecord-key --query 'KeyMaterial' --output text > ~/.ssh/exrecord-key.pem
chmod 400 ~/.ssh/exrecord-key.pem

キーペアが作成されたことを確認します。

❯ aws ec2 describe-key-pairs --key-name exrecord-key
{
"KeyPairs": [
{
"KeyPairId": "key-123456789012",
"KeyType": "rsa",
"Tags": [],
"CreateTime": "2026-04-13T10:14:14.561000+00:00",
"KeyName": "exrecord-key",
"KeyFingerprint": "ae:13:16:b7:01:71:11:4f:78:60:0e:75:aa:87:af:25:b1:1a:36:3b"
}
]
}

セキュリティグループの作成

セキュリティグループを作成し、自宅からのみ SSH 接続を許可します。自宅のグローバル IP アドレスは curl -4 ifconfig.me などで確認できます。自宅以外から接続する場合は、その接続元の IP アドレスを追加する必要があります。

❯ aws ec2 create-security-group --group-name exrecord-sg --description "exrecord security group"
{
"GroupId": "sg-0a1b2c3d4e5f67890",
"SecurityGroupArn": "arn:aws:ec2:ap-northeast-1:123456789012:security-group/sg-0a1b2c3d4e5f67890"
}
❯ aws ec2 authorize-security-group-ingress \
--group-id sg-0a1b2c3d4e5f67890 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.1/32
{
"Return": true,
"SecurityGroupRules": [
{
"SecurityGroupRuleId": "sgr-0a1b2c3d4e5f67890",
"GroupId": "sg-0a1b2c3d4e5f67890",
"GroupOwnerId": "123456789012",
"IsEgress": false,
"IpProtocol": "tcp",
"FromPort": 22,
"ToPort": 22,
"CidrIpv4": "203.0.113.1/32",
"SecurityGroupRuleArn": "arn:aws:ec2:ap-northeast-1:123456789012:security-group-rule/sgr-0a1b2c3d4e5f67890"
}
]
}

インスタンスの起動

Amazon Linux 2023 の AMI ID を取得し、インスタンスを起動します。AMI(Amazon Machine Image)とは、インスタンスの OS やソフトウェア構成のテンプレートです。特定の OS に拘りがなければ、AWS が提供・メンテナンスしている Amazon Linux 2023 を選ぶとセキュリティパッチが迅速に提供されるためおすすめです。t4g は AWS Graviton(ARM ベース)プロセッサを使用しているため、AMI のアーキテクチャとして arm64 を指定します。

❯ aws ec2 describe-images \
--owners amazon \
--filters "Name=name,Values=al2023-ami-2023*" "Name=architecture,Values=arm64" \
--query 'sort_by(Images, &CreationDate)[-1].ImageId' \
--output text
ami-0ceb31eb57b9abaa8
❯ aws ec2 run-instances \
--image-id ami-0ceb31eb57b9abaa8 \
--instance-type t4g.micro \
--key-name exrecord-key \
--security-group-ids sg-0a1b2c3d4e5f67890 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=exrecord-instance}]' \
--query 'Instances[0].InstanceId' \
--output text
i-0a1b2c3d4e5f67890

インスタンスが起動中になるまで待ちます。running になれば接続できます。

❯ aws ec2 wait instance-running --instance-ids i-0a1b2c3d4e5f67890
❯ aws ec2 describe-instances \
--instance-ids i-0a1b2c3d4e5f67890 \
--query 'Reservations[0].Instances[0].{State:State.Name,PublicIP:PublicIpAddress}' \
--output table
------------------------------
| DescribeInstances |
+----------------+-----------+
| PublicIP | State |
+----------------+-----------+
| 203.0.113.2 | running |
+----------------+-----------+

SSH 接続

取得したパブリック IP アドレスを使って SSH 接続します。Amazon Linux 2023 のデフォルトユーザーは ec2-user です。

ssh -i ~/.ssh/exrecord-key.pem ec2-user@203.0.113.2
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Mon Apr 13 15:53:13 2026 from 203.0.113.1
[ec2-user@ip-172-31-xx-xx ~]$

インスタンスの終了

不要になったインスタンスは削除しましょう。インスタンスを停止してもストレージ(EBS)の料金は発生し続けるため、使い終わったら停止ではなく削除することをおすすめします。なお、キーペアとセキュリティグループはインスタンスを削除しても残りますが、それ自体に料金は発生しません。

❯ aws ec2 terminate-instances --instance-ids i-0a1b2c3d4e5f67890
{
"TerminatingInstances": [
{
"InstanceId": "i-0a1b2c3d4e5f67890",
"CurrentState": {
"Code": 32,
"Name": "shutting-down"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}

まとめ

EC2 がどういうサービスであったり、基本的な使い方について説明しました。AWS を利用する上で EC2 はほぼ必ず使用することになるため、以下のポイントを押さえた使い方をしていきましょう。

  • セキュリティグループで必要最小限の通信のみを許可する
  • SSH キー認証を使用し、キーペアを適切に管理する
  • 用途に合わせたインスタンスタイプを選択してコストを最適化する
  • 使用しないインスタンスは停止または削除する

これらを意識することで、安全かつコスト効率の良い EC2 運用ができます。