0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS学習後に消し忘れやすい課金リソース ALB・NAT Gateway・EBS確認

0
Last updated at Posted at 2026-09-09

AWS学習後に消し忘れやすい課金リソース ALB・NAT Gateway・EBS確認のアイキャッチ

はじめに

AWSの個人学習でEC2を停止しても、料金が完全に止まるとは限りません。

EC2本体のコンピューティング料金は止まっても、EBS、Elastic IP、ALB、NAT Gateway、RDSなどが残っていると、別の料金が続くことがあります。

この記事では、EC2自動停止の記事と重複しないように、 学習後に消し忘れやすい課金リソースの確認方法 に絞って整理します。

この記事で分かること

  • EC2停止後も残るリソース
  • ALBとNAT Gatewayを消し忘れやすい理由
  • EBS、Elastic IP、RDSで確認するポイント
  • AWS CLIで棚卸しする最小コマンド
  • 学習後に使える片付けチェックリスト

先に結論

個人学習用のAWS環境では、学習後に次を確認します。

最初に見るのは リージョン です。
東京リージョンだけで作業したつもりでも、バージニア北部や大阪リージョンに検証リソースが残っていることがあります。

リソース 学習後の判断
EC2 再利用するなら停止。不要なら終了
EBSボリューム 不要なら削除。必要ならサイズとアタッチ状態を確認
EBSスナップショット 不要な古いスナップショットを削除
Elastic IP 固定IPが不要なら解放
ALB 停止できないため、不要なら削除。ターゲットグループも確認
NAT Gateway 停止できないため、不要なら削除。関連するElastic IPとルートも確認
RDS 短期なら停止。長期不要ならスナップショット取得後に削除を検討

コンソールで見る場合は、まず画面右上のリージョンを切り替えながら確認します。

東京リージョン: ap-northeast-1
大阪リージョン: ap-northeast-3
バージニア北部: us-east-1

削除系の操作は元に戻せないことがあります。
本番環境や共有アカウントでは、必ず管理者、バックアップ、影響範囲を確認してから行ってください。
この記事は、自分のAWSアカウントで行うハンズオン学習を前提にしています。

前提

  • 対象読者: 自分のAWSアカウントでEC2、VPC、ALB、RDSなどを試す人
  • 使う環境: AWSマネジメントコンソール、AWS CLI
  • 仕様確認日: 2026-09-09
  • 扱う範囲: 個人学習環境の片付けと料金確認
  • 扱わない範囲: 会社の本番環境、複数アカウント統制、正確な料金計算

この記事のCLI例では、学習用リソースに Purpose=Study というタグを付けている前提にしています。
タグを付けていない場合は、フィルターなしで一覧を確認し、対象リソースを目視で判断してください。

CLIを実行する前に、学習用のプロファイル、アカウント、リージョンを確認します。

# 自分の学習用プロファイルと確認対象リージョンに置き換える
export AWS_PROFILE="study"
export AWS_REGION="ap-northeast-1"

printf 'AWS_PROFILE=%s AWS_REGION=%s\n' "$AWS_PROFILE" "$AWS_REGION"
aws sts get-caller-identity \
  --query "{Account:Account,Arn:Arn}" \
  --output table

以降のCLI例は AWS_REGION で指定した1リージョンだけを確認します。
使った可能性があるリージョンごとに値を切り替え、同じ確認を繰り返します。

用語の短い説明

用語 短い説明
タグ AWSリソースに付ける目印。Purpose=Study のように用途を書くと棚卸ししやすい
EBS EC2に接続するブロックストレージ。EC2を止めてもデータは残る
Elastic IP AWSアカウントに確保する固定のパブリックIPv4アドレス
ALB Application Load Balancer。HTTP/HTTPSの入口として使うロードバランサー
NAT Gateway private subnetからインターネットへ出るためのマネージドNAT
RDS AWSのマネージドリレーショナルデータベース

学習用リソースにはタグを付けておく

片付けを楽にするには、作る段階でタグを付けておきます。

タグキー 値の例 使い道
Purpose Study 学習用リソースだけを探す
Owner your-name 誰が作ったか分かるようにする
DeleteAfter 2026-09-30 消す目安の日付を残す

AWSコンソールで作成するときは、多くのサービスで Tags または タグ の入力欄があります。
CLIで作る場合も、できるだけ作成時にタグを付けます。

# 既存EC2に学習用タグを付ける。対象IDは自分のEC2に置き換える
aws ec2 create-tags \
  --resources i-0123456789abcdef0 \
  --tags Key=Purpose,Value=Study Key=DeleteAfter,Value=2026-09-30

タグは料金を止めたり、DeleteAfter の日付に自動削除したりする機能ではありません。
ただし、後から「何を消せばいいか」を探しやすくするため、個人学習でもかなり効きます。

EC2停止だけでは終わらない

EC2を停止すると、EC2インスタンス本体のコンピューティング料金は止まります。
一方で、EBSボリュームは残り、Elastic IPが関連付いている場合は料金対象になります。

AWS公式ドキュメントでも、停止したEC2ではEBSボリュームの保存料金が残ること、Elastic IPが関連付いたままだと課金されることが説明されています。

まずはEC2の状態を見ます。

コンソールでは次を開きます。

EC2
  -> Instances
# Purpose=Study のタグが付いたEC2だけを一覧にする
aws ec2 describe-instances \
  --filters "Name=tag:Purpose,Values=Study" \
  --query "Reservations[].Instances[].{Id:InstanceId,State:State.Name,Type:InstanceType,Name:Tags[?Key=='Name']|[0].Value}" \
  --output table

stopped ならEC2本体は止まっています。
ただし、次のEBSやElastic IPを続けて確認します。

EBSボリュームとスナップショットを確認する

EBSボリュームはEC2のディスクです。
EC2を停止してもデータを保持するため、不要になったものは削除します。
EBSは in-use だけでなく、プロビジョニングされた available ボリュームにも保存料金がかかります。

コンソールでは次を開きます。

EC2
  -> Volumes
# Purpose=Study のタグが付いたEBSボリュームを確認する
aws ec2 describe-volumes \
  --filters "Name=tag:Purpose,Values=Study" \
  --query "Volumes[].{Id:VolumeId,State:State,SizeGiB:Size,AttachedInstance:Attachments[0].InstanceId}" \
  --output table

見るポイントは次です。

状態 判断
in-use EC2に接続中。消す前にEC2側の必要性を確認
available 未接続。学習で不要なら削除候補

スナップショットも確認します。

EC2
  -> Snapshots
# 自分のアカウントが所有するStudyタグ付きスナップショットを確認する
aws ec2 describe-snapshots \
  --owner-ids self \
  --filters "Name=tag:Purpose,Values=Study" \
  --query "Snapshots[].{Id:SnapshotId,Started:StartTime,SizeGiB:VolumeSize,State:State}" \
  --output table

スナップショットは差分バックアップですが、保存データ量に応じた料金が発生します。
古い検証用スナップショットを残し続けないようにします。

また、EBSスナップショットは差分で管理されるため、1つ削除しても料金が期待どおり減らないことがあります。
他のスナップショットから参照されているデータは保持されるためです。
学習用に何度もスナップショットを作った場合は、古いものから機械的に消すのではなく、復元に必要なものだけを残します。

登録中のAMIが使うルートスナップショットは、AMIを登録解除するまで削除できません。
AWS Backup管理のスナップショットはAWS Backup側から削除します。
また、EBS Recycle Binのルールがあると、削除後も保持期間中は料金が発生するため確認が必要です。

Elastic IPを確認する

Elastic IPは固定のパブリックIPv4アドレスです。
AWSのElastic IP公式ドキュメントでは、Elastic IPは使用中でも未使用でも料金対象と説明されています。
また、Elastic IP以外のパブリックIPv4アドレスも料金対象になります。

つまり、EC2を止めただけでは固定IPまわりの料金確認は終わりません。

コンソールでは次を開きます。

EC2
  -> Elastic IP addresses
# Elastic IPの関連付け状態を確認する
aws ec2 describe-addresses \
  --query "Addresses[].{PublicIp:PublicIp,AllocationId:AllocationId,AssociationId:AssociationId,InstanceId:InstanceId}" \
  --output table

AssociationId が空なら、どのリソースにも関連付いていないElastic IPです。
Elastic IPは、関連付けを外しただけではAWSアカウントに確保されたままです。
不要なら解放します。

# 不要なElastic IPを解放する。実行前にAllocationIdを必ず確認する
aws ec2 release-address \
  --allocation-id eipalloc-0123456789abcdef0

Elastic IPを解放すると、同じIPアドレスを再取得できるとは限りません。
DNS、許可リスト、外部連携で使っていないか確認してから解放します。

ALBは停止できないので削除する

ALBにはEC2のような stopped 状態がありません。
不要になった場合は削除します。

AWS公式ドキュメントでは、ロードバランサーの稼働中は1時間または1時間未満の単位で課金され、削除するとALBの課金が止まると説明されています。
ただし、削除保護が有効なALBは削除できません。
また、ALBを削除しても、登録先のEC2やターゲットグループは自動では削除されません。

コンソールでは次を開きます。

EC2
  -> Load Balancers
# ALB/NLBなどのロードバランサーを一覧にする
aws elbv2 describe-load-balancers \
  --query "LoadBalancers[].{Name:LoadBalancerName,Type:Type,State:State.Code,Arn:LoadBalancerArn}" \
  --output table

削除する場合は、先にDNSの向き先を切り替え、TTLが切れるまで待ってから、ターゲットグループへの影響も確認します。

# 不要なロードバランサーを削除する。ARNは一覧で確認した値へ置き換える
aws elbv2 delete-load-balancer \
  --load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:loadbalancer/app/study-alb/0123456789abcdef

ALBを消したあとも、学習用のターゲットグループが残っていないか確認します。

# ターゲットグループを一覧にする
aws elbv2 describe-target-groups \
  --query "TargetGroups[].{Name:TargetGroupName,Protocol:Protocol,Port:Port,Arn:TargetGroupArn}" \
  --output table

使い終わったターゲットグループは、登録先やCloudFormation/Terraformの管理有無を確認してから削除します。

CloudFormationやTerraformで作った場合は、個別削除よりスタックや構成管理ツール側で削除する方が安全です。

# Terraformで作った学習環境なら、削除前に差分を確認する
terraform plan -destroy

# 確認後、学習環境をまとめて削除する
terraform destroy

CloudFormationなら次の流れです。

# 削除対象のスタックを確認する
aws cloudformation describe-stacks \
  --stack-name study-network \
  --query "Stacks[0].{Name:StackName,Status:StackStatus}"

# 学習用スタックを削除する
aws cloudformation delete-stack \
  --stack-name study-network

NAT Gatewayは特に消し忘れに注意する

個人学習で意外と効きやすいのがNAT Gatewayです。

NAT Gatewayは、作成されている時間と処理したデータ量に応じて課金されます。
EC2を停止しても、NAT Gatewayが available のままなら時間料金が続きます。
AWSサービスへの通信が多い検証では、VPCエンドポイントを使うとNAT Gatewayのデータ処理料金を減らせる場合があります。

現在のNAT Gatewayには、1つのAvailability Zoneで動く従来のゾーン型と、ワークロードに合わせて複数AZへ展開・縮小するRegional NAT Gatewayがあります。
Regional NAT Gatewayは展開中のAZごとに時間料金が発生します。
本節のElastic IPとサブネットの説明は、主にゾーン型のPublic NAT Gatewayを対象にしています。RegionalのAutomatic modeではAWSがIPアドレスを管理します。

コンソールでは次を開きます。

VPC
  -> NAT Gateways
# 利用中または作成中のNAT Gatewayを確認する
aws ec2 describe-nat-gateways \
  --filter "Name=state,Values=available,pending" \
  --query "NatGateways[].{Id:NatGatewayId,State:State,SubnetId:SubnetId,VpcId:VpcId}" \
  --output table

不要なら削除します。

# 不要なNAT Gatewayを削除する。ルートテーブルへの影響も確認する
aws ec2 delete-nat-gateway \
  --nat-gateway-id nat-0123456789abcdef0

削除後も、NAT Gatewayを向いていたルートは自動削除されず blackhole になります。関連するルートテーブルを削除または更新します。

# NAT Gatewayを向いているルートを探す
aws ec2 describe-route-tables \
  --filters "Name=route.nat-gateway-id,Values=nat-0123456789abcdef0" \
  --query "RouteTables[].{RouteTableId:RouteTableId,Routes:Routes[?NatGatewayId=='nat-0123456789abcdef0']}" \
  --output json

ゾーン型のPublic NAT GatewayではElastic IPを使います。
NAT Gatewayを削除してもElastic IPは関連付けが外れるだけで、AWSアカウントからは解放されません。不要なElastic IPを別途解放します。

private subnetのEC2やLambdaが外部へ通信する構成では、NAT Gatewayを削除すると通信できなくなることがあります。
学習後の削除は問題なくても、検証を続ける場合はルートテーブルと通信要件を確認します。

RDSは停止しても7日後に自動起動する

RDSは一時的に停止できます。
ただし、通常のRDS DBインスタンスは停止できる期間に上限があり、7日間停止したままだと自動的に起動します。

また、停止中はDBインスタンス時間の料金はかかりませんが、プロビジョニング済みストレージ、Provisioned IOPS、保存対象のバックアップには課金されます。パブリックアクセス可能なDBでは、パブリックIPv4アドレスの料金も続きます。
停止にかかる時間は構成や状態によって変わります。再開にはインスタンス復旧が必要なため、AWS公式のRDS停止ドキュメントでは数分から数時間かかる場合があると説明されています。

さらに、すべての構成で停止できるわけではありません。
たとえば、リードレプリカ、リードレプリカを持つDBインスタンス、RDS for SQL ServerのMulti-AZ構成などは停止に制限があります。

コンソールでは次を開きます。

RDS
  -> Databases
# RDS DBインスタンスの状態を確認する
aws rds describe-db-instances \
  --query "DBInstances[].{Id:DBInstanceIdentifier,Status:DBInstanceStatus,Engine:Engine,Public:PubliclyAccessible}" \
  --output table

短期間の学習なら停止、長期間使わないならスナップショットを取得して削除を検討します。

# 検証用RDSを一時停止する
aws rds stop-db-instance \
  --db-instance-identifier study-db

本当に不要なら、先にスナップショット要否を判断します。
削除コマンドは取り返しがつきにくいため、ここでは流れだけに留めます。

1. アプリから接続していないことを確認する
2. 必要なら最終スナップショットを取得する
3. DBインスタンスを削除する
4. 翌日以降、BillsまたはCost Explorerで料金が止まったか確認する

Cost Explorerは少なくとも24時間に1回データを更新しますが、24時間より遅れるデータもあります。
削除直後の表示だけで判断せず、日をまたいでサービス別、リージョン別に確認します。

学習後の片付けチェックリスト

  • EC2が stopped または不要なら terminated になっている
  • EBSの available ボリュームを確認した
  • 不要なEBSスナップショットを確認した
  • Elastic IPの未関連付けを確認した
  • ALBを使い終わったら削除した
  • ALB削除後に不要なターゲットグループを確認した
  • NAT Gatewayが available のまま残っていない
  • NAT Gateway削除後にElastic IPとルートテーブルを確認した
  • RDSの停止期間とストレージ料金を確認した
  • RDSが停止できる構成か、7日後の自動起動を確認した
  • 使ったリージョンをすべて確認した
  • 翌日以降にBillsまたはCost Explorerを確認した

試験で意識する観点

AWS認定試験では、サービスの停止と課金停止を同じ意味で覚えない方が安全です。

観点 覚え方
EC2 停止するとインスタンス料金は止まるが、EBSやElastic IPは別
ALB 停止ではなく削除で止める
NAT Gateway 時間料金とデータ処理料金を見る
RDS 停止中もストレージやバックアップは残る。7日後の自動起動に注意
Cost Explorer 実績確認の画面として使う

関連記事

参考・確認先

まとめ

  • EC2停止だけでは、AWS学習環境の料金確認は終わらない
  • ALBとNAT Gatewayは停止ではなく削除を考える
  • EBS、Elastic IP、RDS、スナップショットは残りやすい
  • 最後はBillsまたはCost Explorerで、サービス別、リージョン別に見る

おわりに

AWS学習環境は、作る手順と同じくらい片付け手順が大事です。
Wealthy Designでは、クラウド構成やWebシステムを小さく検証し、運用まで見据えて改善する開発に取り組んでいます。

会社の取り組みは、会社サイトにまとめています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?