初めての EC2 インスタンスを起動する
起動ウィザードに沿って操作し、AMI とインスタンスタイプを選択し、キーペアを設定して SSH で接続します。
「初めての EC2 インスタンスを起動する」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
Amazon EC2とは
Amazon Elastic Compute Cloud(EC2)は、インスタンスと呼ばれる、サイズ変更可能なクラウド上の仮想マシンを提供します。オペレーティングシステム、CPU、メモリ、ストレージ、ネットワーク容量を選択できます。EC2はAWSの基盤となるコンピューティングサービスです。永続的でステートフルなコンピューティングを必要とするほぼすべてのアーキテクチャが、EC2を直接利用するか、EC2上に構築されたサービス(ECS、EKS、EMR)を介して利用しています。インスタンスはVPC内で実行され、必要に応じて開始、停止、再起動、終了できます。
Amazon Machine Images(AMI)
Amazon Machine Image(AMI)は、EC2インスタンスのオペレーティングシステム、ソフトウェア、設定を定義するテンプレートです。AWSは多数のAMI(Amazon Linux 2023、Ubuntu、Windows Server)を提供しており、Marketplaceのベンダーはソフトウェアを事前設定したAMIを公開しています。また、実行中のインスタンスをキャプチャして独自のカスタムAMIを作成することもできます。インスタンスの起動時にAMIを選択すると、ルートボリュームの内容とアーキテクチャ(x86_64またはARM)が決まります。
# Find latest Amazon Linux 2023 AMI in us-east-1
aws ec2 describe-images \
--owners amazon \
--filters 'Name=name,Values=al2023-ami-*-x86_64' \
--query 'sort_by(Images, &CreationDate)[-1].ImageId' \
--output textEC2起動ウィザード:ステップごとの手順
コンソールのEC2起動ウィザードでは、次の手順に沿って設定します。1) 名前とタグ、2) AMIの選択、3) インスタンスタイプ(CPUとメモリの組み合わせ)、4) SSHアクセス用のキーペア、5) ネットワーク設定(VPC、サブネット、セキュリティグループ)、6) ストレージ(ルートEBSボリュームのサイズと種類)、7) 詳細設定(IAMロール、ユーザーデータスクリプト、メタデータオプション)。各ステップを理解しておくと、設定に関する試験問題にも自信を持って答えられます。
# Equivalent CLI launch
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t3.micro \
--key-name MyKeyPair \
--security-group-ids sg-12345678 \
--subnet-id subnet-12345678 \
--iam-instance-profile Name=MyEC2Role \
--user-data file://user-data.shSSH認証用のキーペア
キーペアは、公開鍵(AWSが保存)と秘密鍵(利用者がダウンロードする。ダウンロードできるのは1回のみ)で構成されます。EC2インスタンスを起動すると、AWSはデフォルトユーザーの ~/.ssh/authorized_keys ファイルに公開鍵を挿入します(Amazon Linuxでは ec2-user、Ubuntuでは ubuntu など)。秘密鍵を使って、ssh -i my-key.pem ec2-user@<public-ip> のように接続します。秘密鍵を失うと、代替手段としてSystems Manager Session Managerを使用しない限り、インスタンスにSSH接続できません。
# Generate a new key pair and save the private key
aws ec2 create-key-pair \
--key-name MyKeyPair \
--query 'KeyMaterial' \
--output text > MyKeyPair.pem
chmod 400 MyKeyPair.pem
# Connect to the instance
ssh -i MyKeyPair.pem ec2-user@54.123.45.67インスタンスのライフサイクル状態
EC2インスタンスはいくつかの状態を順に遷移します。Pending:インスタンスの起動中(課金なし)。Running:インスタンスが稼働中(秒単位または時間単位で課金)。Stopping:停止への移行中(EBS-backedインスタンスのみ)。Stopped:インスタンスが停止中(アタッチされたEBSストレージに対してのみ課金)。Terminated:完全に削除済み(再起動不可)。これらの状態を理解することは、課金(On-Demand料金はRunning中にのみ発生)とアーキテクチャ(SpotインスタンスはStoppedを経由せずに終了)を考えるうえで重要です。
# Stop and start an instance
aws ec2 stop-instances --instance-ids i-0abcdef1234567890
aws ec2 start-instances --instance-ids i-0abcdef1234567890
# Terminate permanently
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890EC2のパブリックIPアドレスとプライベートIPアドレス
デフォルトでは、パブリックサブネット内のインスタンスにパブリックIPv4アドレス(動的で、停止と開始の間に変わる)とプライベートIPv4アドレス(VPC内では停止と開始の間も維持される)が割り当てられます。永続的なパブリックIPが必要な場合はElastic IP(EIP)を割り当てます。これは、解放するまで自分が保有できる静的なパブリックIPv4アドレスです。EIPは実行中のインスタンスにアタッチしている間は無料ですが、未アタッチの場合や、実行中のインスタンス1台あたり1つを超えて使用している場合は課金されます。
# Allocate an Elastic IP and associate it with an instance
aws ec2 allocate-address --domain vpc
aws ec2 associate-address \
--instance-id i-0abcdef1234567890 \
--allocation-id eipalloc-12345678ユーザーデータ:ブートストラップスクリプト
ユーザーデータは、インスタンスを初めて起動したときに1回実行されるシェルスクリプト(またはcloud-init設定)です。パッケージのインストール、ソフトウェアの設定、S3からのアプリケーションコードの取得などに使用します。ユーザーデータはrootとして実行され、デフォルトでは再起動時に再実行されません。起動設定を通じて、Base64エンコードされたテキストとして渡されます。ユーザーデータを短く保ち、複雑なセットアップには事前に構成したAMIを利用すると、Auto Scalingの起動時間を短縮できます。
#!/bin/bash
# user-data.sh — runs on first boot
yum update -y
yum install -y httpd
echo '<h1>Hello from EC2</h1>' > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd接続方法:SSHとSystems Managerの比較
EC2インスタンスにアクセスする主な方法は2つあります。SSH:セキュリティグループでポート22を開き、秘密鍵ファイルを用意する必要があります。AWS Systems Manager Session Manager:ポートを開くこともキーペアを使うこともなく、ブラウザまたはCLIからシェルにアクセスできます。また、CloudTrailによる完全な監査証跡も利用できます。Session ManagerにはSSMエージェント(Amazon LinuxおよびWindows ServerのAMIには事前インストール済み)と、AmazonSSMManagedInstanceCoreポリシーを持つIAMロールが必要です。本番インスタンスでは、Session Managerが推奨されるアクセス方法です。
# Start a Session Manager session (no SSH needed)
aws ssm start-session --target i-0abcdef1234567890EC2インスタンスメタデータ
EC2 Instance Metadata Service(IMDS)は、169.254.169.254 にある、インスタンス内部からのみアクセス可能なHTTPエンドポイントです。インスタンスID、AMI ID、パブリックIP、IAMロールの認証情報、アベイラビリティーゾーンなど、実行時の情報を提供します。IMDSv2(現在のベストプラクティス)ではセッション指向のトークンが必要です。これにより、脆弱なアプリケーションを介してサーバーサイドリクエストフォージェリ(SSRF)攻撃者がメタデータを読み取ることを防ぎます。インスタンスでは必ずIMDSv2を必須に設定してください。
# Get instance ID using IMDSv2
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
-H 'X-aws-ec2-metadata-token-ttl-seconds: 21600' -s)
curl -H "X-aws-ec2-metadata-token: $TOKEN" -s \
http://169.254.169.254/latest/meta-data/instance-idプレイスメントグループ
プレイスメントグループは、基盤となるハードウェア上でのインスタンスの配置方法を制御します。Cluster:1つのAZ内でインスタンスを近接配置し、非常に低いネットワークレイテンシーと高い帯域幅を実現します。HPCに適しています。Spread:インスタンスごとに異なるハードウェアへ配置し、障害の同時発生リスクを低減します。少数の重要なインスタンス群に適しています(1つのAZあたり最大7台)。Partition:インスタンスを別々のラック上の論理パーティションに分割します。ラック認識が重要なHadoopやCassandraなど、大規模な分散システムに適しています。
# Create a cluster placement group
aws ec2 create-placement-group \
--group-name HighPerfCluster \
--strategy clusterEC2の終了保護
終了保護を有効にすると、コンソール、CLI、APIからインスタンスが誤って終了されるのを防げます。重要なインスタンスの起動時には有効にしてください。ただし、終了保護を有効にしていても、Auto Scaling Groupsはスケールイン時にインスタンスを終了できます。これを防ぐには、別途インスタンス保護を設定する必要があります。ルートEBSボリュームのDeleteOnTermination属性は、インスタンスの終了時にボリュームを自動削除するかどうかを制御します。ベストプラクティスは、ルートボリュームでは true、保持したいデータボリュームでは false にすることです。
# Enable termination protection
aws ec2 modify-instance-attribute \
--instance-id i-0abcdef1234567890 \
--disable-api-terminationクイックチェック
このレッスンで学んだAWS Solutions Architect(SAA-C03)の概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、EC2インスタンスは、選択したインスタンスタイプ、キーペア、セキュリティグループ、必要に応じてユーザーデータを指定してAMIから起動すること、Elastic IPは永続的なパブリックアドレスを提供する一方、通常のパブリックIPは停止と開始の間に変わること、そして本番インスタンスではSSHよりSystems Manager Session Managerが推奨されるアクセス方法であることを学びました。次は、インスタンスタイプと料金モデルを比較します。
よくある質問
「初めての EC2 インスタンスを起動する」レッスンは無料ですか?
はい。「初めての EC2 インスタンスを起動する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「初めての EC2 インスタンスを起動する」で何を学びますか?
起動ウィザードに沿って操作し、AMI とインスタンスタイプを選択し、キーペアを設定して SSH で接続します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「初めての EC2 インスタンスを起動する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 初めての EC2 インスタンスを起動する
- インスタンスタイプと料金モデル
- セキュリティグループとキーペア
- EC2 ストレージ:インスタンスストアと EBS