Amazon Elastic Compute Cloud (Amazon EC2) は、AWSクラウド内でスケーラブルなコンピューティング容量を提供するウェブサービスです。EC2を使用することで、ハードウェアに事前投資する必要がなくなり、アプリケーションを迅速に開発およびデプロイすることができます。EC2は、必要な数の仮想サーバーを起動し、セキュリティやネットワーキング、ストレージを構成することができます。また、トラフィック予測の要件に合わせてスケールアップまたはスケールダウンできるため、コンピューティングリソースの使用を最適化できます。
EC2は様々なユースケースに最適化された多様なインスタンスタイプを提供しています:
インスタンスファミリー | 最適化対象 | ユースケース |
---|---|---|
汎用 (T, M) | コンピューティング、メモリ、ネットワークリソースのバランス | ウェブサーバー、コードリポジトリ、小〜中規模データベース |
コンピューティング最適化 (C) | 高性能プロセッサ | バッチ処理、メディアエンコーディング、高性能ウェブサーバー |
メモリ最適化 (R, X) | 大規模メモリ内データセット処理 | 高性能データベース、分散メモリキャッシュ、インメモリ分析 |
ストレージ最適化 (D, I) | 高いシーケンシャル読み取り/書き込みアクセス | データウェアハウス、ログ処理、分散ファイルシステム |
高速コンピューティング (P, G) | ハードウェアアクセラレータ(GPU) | 機械学習、高性能コンピューティング、計算流体力学 |
EC2インスタンスタイプは通常、ファミリー、世代、サイズの組み合わせで命名されています。例えば、「m5.large」は:
EC2インスタンスには複数の購入オプションがあり、ニーズと予算に合わせて選択できます:
購入オプション | 説明 | 適したユースケース |
---|---|---|
オンデマンドインスタンス | 使用した秒単位で支払い、長期契約なし | 短期、不規則なワークロード、初めて開発またはテストするアプリケーション |
リザーブドインスタンス | 1年または3年の期間で予約することで大幅な割引 | 安定した状態の使用量、予測可能な使用量、長期コミットメントが可能なアプリケーション |
スポットインスタンス | 未使用のEC2容量を大幅な割引で利用 | 柔軟な開始・終了時間を持つアプリケーション、非常に低いコンピューティング価格のみが実行可能なアプリケーション |
Savings Plans | 1年または3年の期間で一定の使用量を約束することで割引 | EC2、Fargate、Lambdaなど複数のコンピューティングサービスを使用するワークロード |
専有ホスト | 他のAWSアカウントと共有されない物理サーバー全体を専有 | ライセンス要件のあるソフトウェア、コンプライアンス要件のあるワークロード |
EC2は、AWS Management Console、AWS CLI、SDKs、またはインフラストラクチャ as コード(IaC)ツールを使用して利用できます。
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t2.micro \
--key-name MyKeyPair \
--security-group-ids sg-0123456789abcdef0 \
--subnet-id subnet-0123456789abcdef0 \
--count 1
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t2.micro \
--key-name MyKeyPair \
--security-group-ids sg-0123456789abcdef0 \
--subnet-id subnet-0123456789abcdef0 \
--user-data file://my-script.sh
ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
Windowsインスタンスの場合、パスワードを取得してからRDPクライアントを使用して接続します:
aws ec2 get-password-data \
--instance-id i-0123456789abcdef0 \
--priv-key-file /path/to/my-key-pair.pem
# インスタンスの停止
aws ec2 stop-instances --instance-ids i-0123456789abcdef0
# インスタンスの開始
aws ec2 start-instances --instance-ids i-0123456789abcdef0
aws ec2 terminate-instances --instance-ids i-0123456789abcdef0
EC2インスタンスには複数のストレージオプションがあります:
ストレージタイプ | 説明 | ユースケース |
---|---|---|
Amazon EBS | 永続的なブロックレベルのストレージボリューム | データベース、ファイルシステム、アプリケーションの実行に必要なデータ |
インスタンスストア | インスタンスに物理的に接続された一時的なブロックレベルのストレージ | 一時的なデータ、キャッシュ、スクラッチデータ |
Amazon EFS | 複数のEC2インスタンスからアクセス可能なスケーラブルなファイルシステム | コンテンツ管理、ウェブサービング、データ共有、Wordpress |
Amazon S3 | オブジェクトストレージサービス | 静的ウェブサイトホスティング、バックアップ、アーカイブ、ビッグデータ分析 |
EC2インスタンスのネットワーキングは主に以下のコンポーネントで構成されています:
Amazon Virtual Private Cloud (VPC) は、AWS内の論理的に分離されたネットワーク環境です。EC2インスタンスはVPC内にデプロイされ、サブネット、ルートテーブル、ネットワークACL、インターネットゲートウェイなどのネットワークリソースを使用します。
セキュリティグループは、EC2インスタンスの仮想ファイアウォールとして機能し、インバウンドおよびアウトバウンドトラフィックを制御します。セキュリティグループのルールは、許可ルールのみで構成されます(デフォルトではすべてのトラフィックが拒否されます)。
# セキュリティグループの作成
aws ec2 create-security-group \
--group-name MySecurityGroup \
--description "My security group" \
--vpc-id vpc-0123456789abcdef0
# インバウンドルールの追加(SSH)
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.0/24
Elastic IPは、動的なクラウドコンピューティングのために設計された静的なIPv4アドレスです。Elastic IPをEC2インスタンスに関連付けることで、インスタンスの停止や再起動後も同じパブリックIPアドレスを維持できます。
# Elastic IPの割り当て
aws ec2 allocate-address --domain vpc
# Elastic IPのインスタンスへの関連付け
aws ec2 associate-address \
--instance-id i-0123456789abcdef0 \
--allocation-id eipalloc-0123456789abcdef0
Amazon EC2 Auto Scalingは、アプリケーションの負荷に応じてEC2インスタンスの数を自動的に調整するサービスです。これにより、需要のピーク時には容量を増やし、需要が少ない時には容量を減らすことができます。
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name my-asg \
--launch-configuration-name my-launch-config \
--min-size 1 \
--max-size 3 \
--desired-capacity 2 \
--vpc-zone-identifier "subnet-0123456789abcdef0,subnet-0123456789abcdef1"
Elastic Load Balancing (ELB) は、複数のEC2インスタンス間でトラフィックを自動的に分散させるサービスです。ELBには、Application Load Balancer (ALB)、Network Load Balancer (NLB)、Gateway Load Balancer (GWLB)、Classic Load Balancer (CLB) の4種類があります。
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-0123456789abcdef0 subnet-0123456789abcdef1 \
--security-groups sg-0123456789abcdef0
EC2 Instance Connectは、SSHキーを管理することなく、ブラウザベースのクライアントまたはAWS CLIを使用してEC2インスタンスに安全に接続するための方法を提供します。
aws ec2-instance-connect send-ssh-public-key \
--instance-id i-0123456789abcdef0 \
--availability-zone us-west-2b \
--instance-os-user ec2-user \
--ssh-public-key file://my-key.pub
EC2インスタンスのセキュリティを確保するためのベストプラクティス:
# IAMロールの作成
aws iam create-role \
--role-name EC2S3ReadOnly \
--assume-role-policy-document file://ec2-trust-policy.json
# ポリシーのアタッチ
aws iam attach-role-policy \
--role-name EC2S3ReadOnly \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
# インスタンスプロファイルの作成
aws iam create-instance-profile \
--instance-profile-name EC2S3ReadOnly
# ロールをインスタンスプロファイルに追加
aws iam add-role-to-instance-profile \
--instance-profile-name EC2S3ReadOnly \
--role-name EC2S3ReadOnly
# インスタンスプロファイルをEC2インスタンスに関連付け
aws ec2 associate-iam-instance-profile \
--instance-id i-0123456789abcdef0 \
--iam-instance-profile Name=EC2S3ReadOnly
EC2インスタンスのパフォーマンスと健全性を監視するためのツール:
CloudWatchは、EC2インスタンスのメトリクス(CPU使用率、ネットワークトラフィック、ディスク活動など)を収集し、アラームを設定して自動アクションをトリガーすることができます。
aws cloudwatch put-metric-alarm \
--alarm-name cpu-high \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--period 300 \
--statistic Average \
--threshold 80 \
--alarm-actions arn:aws:sns:us-west-2:123456789012:my-topic \
--dimensions "Name=InstanceId,Value=i-0123456789abcdef0"
CloudTrailは、EC2 APIコールを記録し、誰が何をいつ行ったかを追跡します。これにより、セキュリティ分析、リソース変更の追跡、コンプライアンス監査が可能になります。
CloudWatch Logsを使用して、EC2インスタンスからログを収集、監視、分析することができます。
# Amazon Linux 2の場合
sudo yum install -y awslogs
sudo systemctl start awslogsd
sudo systemctl enable awslogsd
EC2は以下のようなユースケースに適しています:
EC2は他のAWSサービスと統合して、より強力なソリューションを構築できます:
サービス | 統合の利点 |
---|---|
Amazon VPC | EC2インスタンスの論理的に分離されたネットワーク環境を提供 |
Amazon EBS | EC2インスタンス用の永続的なブロックストレージを提供 |
Amazon S3 | EC2インスタンスからアクセス可能なオブジェクトストレージを提供 |
Amazon RDS | EC2インスタンスからアクセス可能なマネージドデータベースサービスを提供 |
AWS Lambda | EC2インスタンスのイベントに応じてサーバーレス関数を実行 |
Amazon CloudWatch | EC2インスタンスのモニタリングとアラート機能を提供 |
AWS Systems Manager | EC2インスタンスの管理と自動化機能を提供 |
効果的なタグ付け戦略には以下のようなタグが含まれます:
Amazon EC2は、AWSクラウド内でスケーラブルなコンピューティング容量を提供する柔軟なサービスです。多様なインスタンスタイプ、購入オプション、ストレージオプション、ネットワーキング機能を提供し、様々なユースケースに対応します。
EC2の主な利点は以下の通りです:
EC2を効果的に活用するには、ワークロードに適したインスタンスタイプの選択、コスト最適化戦略の実装、Auto Scalingの活用、セキュリティベストプラクティスの適用、適切なモニタリングの設定が重要です。また、他のAWSサービスと組み合わせることで、より強力で柔軟なクラウドソリューションを構築することができます。