AWSに戻る

Amazon EC2 (Elastic Compute Cloud)

Amazon EC2とは

Amazon Elastic Compute Cloud (Amazon EC2) は、AWSクラウド内でスケーラブルなコンピューティング容量を提供するウェブサービスです。EC2を使用することで、ハードウェアに事前投資する必要がなくなり、アプリケーションを迅速に開発およびデプロイすることができます。EC2は、必要な数の仮想サーバーを起動し、セキュリティやネットワーキング、ストレージを構成することができます。また、トラフィック予測の要件に合わせてスケールアップまたはスケールダウンできるため、コンピューティングリソースの使用を最適化できます。

Amazon EC2の主な特徴

Amazon EC2のインスタンスタイプ

EC2は様々なユースケースに最適化された多様なインスタンスタイプを提供しています:

インスタンスファミリー 最適化対象 ユースケース
汎用 (T, M) コンピューティング、メモリ、ネットワークリソースのバランス ウェブサーバー、コードリポジトリ、小〜中規模データベース
コンピューティング最適化 (C) 高性能プロセッサ バッチ処理、メディアエンコーディング、高性能ウェブサーバー
メモリ最適化 (R, X) 大規模メモリ内データセット処理 高性能データベース、分散メモリキャッシュ、インメモリ分析
ストレージ最適化 (D, I) 高いシーケンシャル読み取り/書き込みアクセス データウェアハウス、ログ処理、分散ファイルシステム
高速コンピューティング (P, G) ハードウェアアクセラレータ(GPU) 機械学習、高性能コンピューティング、計算流体力学

インスタンスタイプの命名規則

EC2インスタンスタイプは通常、ファミリー、世代、サイズの組み合わせで命名されています。例えば、「m5.large」は:

Amazon EC2の購入オプション

EC2インスタンスには複数の購入オプションがあり、ニーズと予算に合わせて選択できます:

購入オプション 説明 適したユースケース
オンデマンドインスタンス 使用した秒単位で支払い、長期契約なし 短期、不規則なワークロード、初めて開発またはテストするアプリケーション
リザーブドインスタンス 1年または3年の期間で予約することで大幅な割引 安定した状態の使用量、予測可能な使用量、長期コミットメントが可能なアプリケーション
スポットインスタンス 未使用のEC2容量を大幅な割引で利用 柔軟な開始・終了時間を持つアプリケーション、非常に低いコンピューティング価格のみが実行可能なアプリケーション
Savings Plans 1年または3年の期間で一定の使用量を約束することで割引 EC2、Fargate、Lambdaなど複数のコンピューティングサービスを使用するワークロード
専有ホスト 他のAWSアカウントと共有されない物理サーバー全体を専有 ライセンス要件のあるソフトウェア、コンプライアンス要件のあるワークロード

Amazon EC2の使用方法

EC2は、AWS Management Console、AWS CLI、SDKs、またはインフラストラクチャ as コード(IaC)ツールを使用して利用できます。

EC2インスタンスの起動

AWS CLIを使用したEC2インスタンスの起動

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を使用したLinuxインスタンスへの接続

ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

RDPを使用したWindowsインスタンスへの接続

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

Amazon EC2のストレージオプション

EC2インスタンスには複数のストレージオプションがあります:

ストレージタイプ 説明 ユースケース
Amazon EBS 永続的なブロックレベルのストレージボリューム データベース、ファイルシステム、アプリケーションの実行に必要なデータ
インスタンスストア インスタンスに物理的に接続された一時的なブロックレベルのストレージ 一時的なデータ、キャッシュ、スクラッチデータ
Amazon EFS 複数のEC2インスタンスからアクセス可能なスケーラブルなファイルシステム コンテンツ管理、ウェブサービング、データ共有、Wordpress
Amazon S3 オブジェクトストレージサービス 静的ウェブサイトホスティング、バックアップ、アーカイブ、ビッグデータ分析

Amazon EC2のネットワーキング

EC2インスタンスのネットワーキングは主に以下のコンポーネントで構成されています:

Amazon VPC

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

Elastic IPは、動的なクラウドコンピューティングのために設計された静的なIPv4アドレスです。Elastic IPをEC2インスタンスに関連付けることで、インスタンスの停止や再起動後も同じパブリックIPアドレスを維持できます。

Elastic 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

Amazon EC2 Auto Scalingは、アプリケーションの負荷に応じてEC2インスタンスの数を自動的に調整するサービスです。これにより、需要のピーク時には容量を増やし、需要が少ない時には容量を減らすことができます。

Auto Scalingグループの作成

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

Elastic Load Balancing (ELB) は、複数のEC2インスタンス間でトラフィックを自動的に分散させるサービスです。ELBには、Application Load Balancer (ALB)、Network Load Balancer (NLB)、Gateway Load Balancer (GWLB)、Classic Load Balancer (CLB) の4種類があります。

Application Load Balancerの作成

aws elbv2 create-load-balancer \
    --name my-alb \
    --subnets subnet-0123456789abcdef0 subnet-0123456789abcdef1 \
    --security-groups sg-0123456789abcdef0

Amazon EC2 Instance Connect

EC2 Instance Connectは、SSHキーを管理することなく、ブラウザベースのクライアントまたはAWS CLIを使用してEC2インスタンスに安全に接続するための方法を提供します。

EC2 Instance Connectを使用した接続

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

Amazon EC2のセキュリティ

EC2インスタンスのセキュリティを確保するためのベストプラクティス:

IAMロールの使用

EC2インスタンス用のIAMロールの作成と関連付け

# 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

Amazon EC2のモニタリングと可観測性

EC2インスタンスのパフォーマンスと健全性を監視するためのツール:

Amazon CloudWatch

CloudWatchは、EC2インスタンスのメトリクス(CPU使用率、ネットワークトラフィック、ディスク活動など)を収集し、アラームを設定して自動アクションをトリガーすることができます。

CloudWatchアラームの作成

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"

AWS CloudTrail

CloudTrailは、EC2 APIコールを記録し、誰が何をいつ行ったかを追跡します。これにより、セキュリティ分析、リソース変更の追跡、コンプライアンス監査が可能になります。

Amazon CloudWatch Logs

CloudWatch Logsを使用して、EC2インスタンスからログを収集、監視、分析することができます。

CloudWatch Logsエージェントのインストール

# Amazon Linux 2の場合
sudo yum install -y awslogs
sudo systemctl start awslogsd
sudo systemctl enable awslogsd

Amazon EC2のユースケース

EC2は以下のようなユースケースに適しています:

Amazon 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のベストプラクティス

EC2インスタンスのタグ付けのベストプラクティス

効果的なタグ付け戦略には以下のようなタグが含まれます:

まとめ

Amazon EC2は、AWSクラウド内でスケーラブルなコンピューティング容量を提供する柔軟なサービスです。多様なインスタンスタイプ、購入オプション、ストレージオプション、ネットワーキング機能を提供し、様々なユースケースに対応します。

EC2の主な利点は以下の通りです:

EC2を効果的に活用するには、ワークロードに適したインスタンスタイプの選択、コスト最適化戦略の実装、Auto Scalingの活用、セキュリティベストプラクティスの適用、適切なモニタリングの設定が重要です。また、他のAWSサービスと組み合わせることで、より強力で柔軟なクラウドソリューションを構築することができます。