概要
AWSのサービスはコンピューティング系のサービスだけでも種類が多く、覚えづらいので各サービスごとに主な特徴や用途をまとめました。
AWS CLFを受験しようとしている方、AWS初学者の方のご参考になれば幸いです。
目次
- Amazon EC2
- Amazon Lightsail
- AWS Lambda
- AWS Elastic Beanstalk
- Amazon ECS
- Amazon EKS
- AWS Fargate
- Amazon ECR
- まとめ
Amazon EC2 (Amazon Elastic Compute Cloud)
ソフトウェアをインストールするなど、カスタマイズが自由に行える仮想サーバ(IaaS)。
オンプレミスと同等の機能を持つサーバを低コストで導入できる。
特徴
①CPU・メモリ・ストレージ・ネットワーク性能を選択可能(インスタンスタイプ)。
②任意のOS(Linux、Windowsなど)を選択できる。
③起動・停止・再起動をユーザーが制御。
④長時間稼働や独自構成に向く。
⑤無料利用枠がある
EC2がおすすめな人
・サーバの設定やOSを細かく制御したい
・アプリやシステムがコンテナやサーバレスに向いていない
・長時間稼働するシステムを運用したい
・高度なネットワークやセキュリティ設定を適用したい
Amazon Lightsail
初心者向けの簡易サーバ構築サービス。
WebサイトやWebアプリケーションを動作させるために最低限必要な機能のパッケージを月額固定料金で利用できる。
特徴
①料金が固定で分かりやすい。
②WordPress、LAMPなどのプリセットあり。
③EC2ほど細かい設定はできないが、シンプルで使いやすい。
Amazon Lightsailがおすすめな人
・AWSを初めて使う
・小規模なWebサイトやアプリを運用したい
・コストを分かりやすくしたい
・ネットワークやセキュリティを簡単にしたい
・大規模なAWS機能を使う予定がない(EC2への移行が比較的容易)
AWS Lambda(サーバレスコンピューティング)
サーバを意識せずにコードを実行できるサービス。
特徴
①イベント駆動型で、必要なときだけ起動。
②課金は実行時間とリソース消費に応じて発生(EC2のように常時起動不要)。
③サーバの運用・管理はAWS側が行う
AWS Lambdaがおすすめな人
・サーバ管理をしたくない(コードだけ書きたい)
・イベント駆動の処理が多い
・スケーリングを自動化したい
・短時間で終わる処理を頻繁に実行する(Lambdaは1回の実行で最長15分)
※長時間バッチには不向き
AWS Elastic Beanstalk
アプリケーションが動作する環境のデプロイを自動化してくれるサービス。
特徴
①アプリケーションコードをアップロードすると、自動でEC2やロードバランサなどを構築。
②サーバやOSの設定はAWSに任せられる。
※ただし、EC2やRDSを裏で起動するのでコストは高めになる
AWS Elastic Beanstalkがおすすめな人
・インフラ管理は最小限にしたいが、完全サーバレスは避けたい
・WebアプリやAPIを簡単にデプロイしたい
・自動スケーリングとロードバランサーを簡単に使いたい
・本番環境と開発環境を簡単に分けたい
・ミドルウェアやOSを自分で構築したくない
コンテナサービス
コンテナとは
アプリケーションとその実行に必要なライブラリ・設定・依存関係を軽量なパッケージ(コンテナイメージ)としてまとめ、どこでも同じ環境で実行できる仕組みのこと。
VM(仮想マシン)との大きな違いとして、VMがOSごと仮想化しているので起動が重い・時間がかかるのに対し、コンテナは基本的にホストOSを共有し、必要なアプリだけ分離しているので、軽量で起動が速いという利点があります。
VM(仮想マシン)とコンテナの違い
| 項目 | 仮想マシン(VM / EC2) | コンテナサービス(ECS / EKS / Fargate) |
|---|---|---|
| 実行単位 | OSごとの仮想マシン | アプリ+ライブラリ+設定の軽量コンテナ |
| OSの管理 | 必須(アップデート、パッチ適用など) | 不要(Fargateなどサーバレスでは特に不要) |
| 起動時間 | 数分かかることもある | 秒単位で起動可能 |
| リソース効率 | 低め(OSごとにリソースを消費) | 高め(ホストOSを共有) |
| スケーリング | 手動またはAuto Scalingを設定 | 自動スケーリングが容易(タスク単位で管理) |
| 移植性 | OSや環境依存がある | 高い(どこでも同じコンテナイメージで動作) |
| 用途例 | Webサーバ、DB、レガシーアプリ | マイクロサービス、API、バッチ処理、イベント駆動アプリ |
| 課金方式 | インスタンス時間に応じた従量課金 | コンテナ実行時間やリソース単位で課金(Fargateはサーバ管理不要) |
| 運用負荷 | 高い(OS、ミドルウェア、セキュリティ管理) | 低い(特にFargateはインフラ管理不要) |
Dockerとは
アプリケーションをコンテナとしてパッケージ化・配布・実行できるプラットフォーム。
重要な点として、Docker自体はコンテナサービスではなく、「コンテナを作る・管理するためのプラットフォーム」であることを覚えておきましょう。
Amazon ECS(Amazon Elastic Container Service)
AWSが提供するDockerコンテナのオーケストレーションサービス。
オーケストレーションとは、複数のシステムやサービスを連携させて動かし、複雑なタスクや業務の流れ(ワークフロー)を自動化する仕組みのことです。
Amazon ECSを使うことで、コンテナを効率的に管理・スケーリングし、EC2やFargate上で動かすことができます。
特徴
①Dockerコンテナに対応しており、Dockerイメージを登録・実行可能
②複数のEC2インスタンスやFargateタスクをまとめて管理できる
③柔軟な実行環境を提供する
④Kubernetesほど複雑ではなく、AWSネイティブでシンプル
Amazon ECSがおすすめな人
・コンテナを使ったアプリをAWS上で運用したい
・Kubernetesほど複雑な管理は不要だが、コンテナを複数まとめて管理したい
・自動スケーリングや可用性を簡単に確保したい
Amazon EKS(Elastic Kubernetes Service)
AWSが提供するマネージド型のKubernetesサービス。
Kubernetesとは、コンテナを大規模に管理・運用するためのプラットフォームのことで、簡単に言うと、「大量のコンテナを効率よく配置・スケール・監視するための自動管理システム」です。
Amazon EKSを使うことで、Kubernetesの複雑なクラスタ管理をAWSが代行してくれるので、ユーザーはアプリケーションのデプロイやスケーリングに集中できます。
特徴
①Kubernetesと互換性があり、標準的なKubernetes APIをそのまま利用可能
②ECSよりも運用が複雑
③マスターコンポーネント(APIサーバ、コントローラマネージャなど)はAWSが管理
④マルチAZで制御プレーンを冗長化、ワーカーノードも複数AZに分散可能
⑤IAM、ALB、CloudWatch、VPCなどのAWSネイティブサービスと簡単に連携できる
⑥Cluster AutoscalerやHorizontal Pod Autoscalerで自動スケール可能
Amazon EKSがおすすめな人
・Kubernetesを使いたい
・大規模なコンテナ・マイクロサービスを運用したい
・Kubernetesの複雑な管理をAWSに任せたい
・マルチクラウドやハイブリッド環境を想定している(Kubernetesは他環境への移行が比較的容易)
・AWSで高度な設定を行う
AWS Fargate
AWSが提供するサーバレスコンテナ実行サービス。
ECSやEKSと連携して、サーバやクラスタの管理なしでコンテナを動かすことができます。
特徴
①サーバレス(EC2の管理やプロビジョニング・インフラ管理が不要)
②ECSタスクやEKSのPodをそのままFargateで実行可能
※ECS/EKSのタスク/Podを動かす実行環境の一つであり、単独では使えない
③タスク単位で自動スケール、負荷に応じて自動でコンテナ起動
④AWSのマルチAZ上で自動的に冗長化される
AWS Fargateがおすすめな人
・サーバ管理を避けたい
・短時間・断続的な処理を実行したい
・自動スケーリングを簡単に使いたい
・ECS/EKSをそのまま使いたい
Amazon ECR(Elastic Container Registry)
AWSが提供するDockerコンテナイメージ用のプライベートレジストリ。
コンテナイメージとは、アプリケーションを実行するために必要なものをすべてまとめた「設計図」のようなファイルです。
このイメージをもとにコンテナを作成(起動)することで、どこでも同じ環境でアプリを動かせます。
Amazon ECRを使うことで、コンテナイメージの保存や管理、配布をAWS上で安全に行うことができます。
特徴
①DockerイメージやOCIイメージを保存・管理可能
②ECS、EKS、Fargateと連携して簡単にデプロイ可能
③IAMでアクセス制御、暗号化(KMS)対応
④AWSのマルチAZで冗長化、耐障害性が高い
⑤タグ付けによりイメージのバージョン管理が可能
⑥プライベートだけでなくパブリックレジストリもサポート
Amazon ECRがおすすめな人
・ECS、EKS、Fargateでコンテナイメージを簡単にデプロイしたい
・機密データを含むコンテナを安全に保存したい
・自動スケーリングを簡単に使いたい
・Docker Hubや他のレジストリを使わずAWS内で完結させたい
各コンピューティングサービスの違いまとめ
| サービス名 | 主な特徴 | 主な用途 |
|---|---|---|
| Amazon EC2 | 仮想サーバーを柔軟に構築可能。OSやミドルウェアの選択が自由。従量課金制。 | Webサーバー、アプリサーバー、DBサーバーなど、カスタマイズ性が必要なシステム |
| Amazon Lightsail | EC2より簡単なUIでVPS感覚。月額料金プランあり。 | 小規模Webサイト、ブログ、個人開発アプリ |
| AWS Lambda | サーバーレスでコード実行。イベント駆動。インフラ管理不要。 | バックエンドAPI、バッチ処理、サーバレスアプリ、IoT処理 |
| AWS Elastic Beanstalk | アプリケーションを自動デプロイ&スケーリング。PaaSに近い。 | Webアプリ、APIサーバーを簡単デプロイ |
| Amazon ECS | Dockerコンテナをオーケストレーション。AWS独自の仕組み。 | コンテナ化アプリの管理・運用 |
| Amazon EKS | Kubernetesマネージドサービス。ECSよりKubernetes標準に準拠。 | Kubernetesでの大規模コンテナ運用 |
| AWS Fargate | ECSやEKSのコンテナをサーバーレスで実行。EC2管理不要。 | サーバレスでのコンテナ運用 |
| Amazon ECR | Dockerイメージのプライベートレジストリ。 | コンテナイメージの保存・管理 |
まとめ
「どんな時にどのサービスを使うのか」を意識すると、個人的には覚えやすいように思います。
ご参考になれば幸いです。