Amazon EC2(クラウドコンピューティングのサーバー機能)の仮想マシンのセットアップ、スケーリング(自動的な処理能力調整)、および運用を行います。インスタンスタイプの選定(Graviton/Arm64、バースト性能対応のT型、GPU搭載機など)、起動テンプレート、オートスケーリンググループ(スケーリングポリシー、インスタンス更新、複合インスタンス、スポットインスタンス、ウォームプール、ライフサイクルフック)、IMDSv2(メタデータ取得の認証仕様)、配置グループ、固定パブリックIP、AMI(仮想マシンイメージ)のライフサイクル管理、およびシステムズマネージャーによるフロート管理(セッションマネージャー、実行コマンド、パッチ管理)に対応しています。 EC2インスタンスとフロートに関する質問、インスタンス容量の不足、CPU クレジット・サージ料金、IMDSv2の認証エラー、Pending 状態で止まったインスタンス、オートスケーリンググループが不健全なインスタンスを置き換えない問題、ステータスチェック失敗、SSH接続の拒否やタイムアウト、SSM管理ノードとして認識されないインスタンスなどに当てはまります。 単一の安全なインスタンス起動については「launching-ec2-instance-with-best-practices」スキルが適切です。インスタンスプロファイルの設定は「setting-up-ec2-instance-profiles」、Image Builder(機械イメージ作成ツール)パイプラインの構築は「creating-ec2-image-builder-pipeline」をご参照ください。 Lambda、ECS/Fargate、EKS、VPC/ALB/NLBの設計、IAMポリシーの作成には対応していません。
Provisions, scales, and operates Amazon EC2 virtual-machine workloads: instance-type selection (Graviton/Arm64, burstable T credits, GPU, instance store vs EBS), launch templates, Auto Scaling groups (scaling policies, instance refresh, mixed instances, Spot, warm pools, lifecycle hooks), IMDSv2, placement groups, Elastic IPs, AMI lifecycle, and Systems Manager fleet operations (Session Manager, Run Command, Patch Manager). Applies to EC2 instance and fleet questions, InsufficientInstanceCapacity, CPU-credit/surplus charges, IMDSv2 401s, instances stuck in Pending:Wait, ASG not replacing unhealthy instances, status-check failures, SSH refused/timed out, or instances missing as SSM managed nodes. For a single secure instance launch, the launching-ec2-instance-with-best-practices skill is more appropriate; for instance profiles, see setting-up-ec2-instance-profiles; for Image Builder, see creating-ec2-image-builder-pipeline. Does NOT cover Lambda, ECS/Fargate, EKS, VPC/ALB/NLB design, or IAM policy authoring.
AWS MCP サーバー(Amazon Web Services との連携ツール)での使用が最適です。AWS CLI(コマンドラインツール)単体でも動作しますが、どちらかに依存しなければならないわけではありません。
起動設定は廃止予定で、最新のEC2インスタンスタイプに対応していません。新規アカウントでは作成できません。新しいオートスケーリンググループには、必ず起動テンプレートを使用してください。詳細は auto-scaling.md を参照してください。
オートスケーリンググループはロードバランサーのヘルスチェックを無視します(デフォルト): オートスケーリンググループは、--health-check-type ELB を設定しない限り、EC2のステータスチェックのみを使用します。設定しないと、ロードバランサーのヘルスチェックに失敗したインスタンスは永遠に稼働し続けます。詳細は auto-scaling.md を参照してください。
IMDSv2のホップリミット制限によりコンテナが動作しません: デフォルトの HttpPutResponseHopLimit が1に設定されていると、IMDSv2トークンのPUTレスポンスがコンテナ化されたプロセスに到達できず(余分なホップがレスポンスのTTL(有効期限)を超過)、トークンリクエストがタイムアウトします。ブリッジ・awsvpc型コンテナワークロードの場合は HttpPutResponseHopLimit=2 に設定してください。(IMDSv2が「必須」の場合、その後のトークンなしGETリクエストは 401 を返します。「オプション」の場合、IMDSv1へ自動的にフォールバックします。)詳細は provisioning.md を参照してください。
T3/T3a/T4gはデフォルトで無制限モード: T2(標準)と異なり、これらのインスタンスはスロットリングなしでバースト(一時的な高性能化)しますが、24時間平均CPU使用率がベースラインを超えた場合、余剰CPUクレジットが請求される「隠れたコスト増加」が発生します。詳細は instance-selection.md を参照してください。
インスタンスストレージは一時的: インスタンスストレージボリューム上のデータは、停止・休止・終了・インスタンスタイプ変更・ホスト障害時に失われます。再起動時のみ保持されます。永続的なデータはEBS/EFS/S3に置いてください。詳細は instance-selection.md を参照してください。
| 決定内容 | ガイド |
|---|---|
| インスタンスファミリー / サイズ / Graviton / GPU / バースト型 | instance-selection.md — ワークロード→ファミリーの対応表から始めてください |
| インスタンスを一度定義して再利用する方法(起動テンプレート) | provisioning.md |
| 多数のインスタンスを自動スケーリングで実行する方法 | auto-scaling.md |
| SSHキーなしでインスタンスにアクセス・パッチ・管理する方法 | systems-manager.md |
| やりたいこと | 参照先 |
|---|---|
| インスタンスタイプを選択する、Graviton vs x86の比較、バースト用クレジット、GPU、インスタンスストレージ vs EBS | instance-selection.md |
| 起動テンプレートを作成する、ユーザーデータ、キーペア、IMDSv2、配置グループ、エラスティックIP | provisioning.md |
| オートスケーリンググループをセットアップ・修正する、スケーリングポリシー、インスタンス更新、スポットインスタンス、ライフサイクルフック | auto-scaling.md |
| SSHなしアクセスを取得する、フロートのパッチ、管理対象ノードとして表示されないインスタンスを修正 | systems-manager.md |
| AMI(マシンイメージ)を作成・共有・廃止(非推奨化・無効化・登録解除)する | ami-management.md |
| 何か問題を修正する(接続できない、ステータスチェック失敗、容量エラー、スタックしたインスタンス) | troubleshooting.md |
「オートスケール対応のWebサーバー群を構築したい」
→ 起動テンプレート(AMI、タイプ、IMDSv2)を作成し、--health-check-type ELB を指定したオートスケーリンググループとターゲット追跡スケーリングポリシーで参照します。詳細は auto-scaling.md を参照してください。パブリック入口については、以下のセキュリティに関する考慮事項と auto-scaling.md のロードバランサーに関する説明に従い、ロードバランサーを保護してください(TLS/ACM、WAF、セキュリティレスポンスヘッダー)。ロードバランサーの構築自体は aws-networking に該当します。
「新しいAMIをフロート全体にロールアウトしたい」 → 新しい起動テンプレートバージョンを作成し、インスタンス更新を実行します。ロールバック可能にするため、起動テンプレートのバージョン番号を固定してください。詳細は auto-scaling.md を参照してください。
「踏み台サーバーなしでプライベートインスタンスに接続したい」
→ インスタンスにSSM(Systems Manager)権限を付与し(AmazonSSMManagedInstanceCore を持つインスタンスプロファイル、またはアカウントレベルのDHMC)、ネットワークパスを確保した上で、Session Manager(セッション接続ツール)を使用します。詳細は systems-manager.md を参照してください。
「EC2のコストを削減したい」
→ 適正サイズ化(バースト型 vs 固定性能)、Armに対応したアプリケーションでGraviton採用、耐障害性に優れたフロートではSpotインスタンスを price-capacity-optimized で使用、未使用のエラスティックIPを削除します。詳細は instance-selection.md を参照してください。
| 症状 | 考えられる原因 | クイックフィックス |
|---|---|---|
| SSH「Connection timed out」 | ネットワークパス(セキュリティグループ/ネットワークACL/ルーティング/パブリックIP未設定) | あなたのIPからTCP 22を開く、IGWへのルートを確認、パブリックIPの存在を確認してください — troubleshooting.md 参照 |
| SSH「Connection refused」 | ホスト側: sshdが停止中またはまだ起動中 | 起動完了を待つ、Session Manager またはシリアルコンソール経由でsshdとポートを確認してください |
InsufficientInstanceCapacity |
AWS のそのタイプの容量がAZ(アベイラビリティゾーン)に不足(クォーター不足ではありません) | 別のAZ / インスタンスタイプを試す / 再試行してください。クォーター増加をリクエストしないでください |
InstanceLimitExceeded |
vCPUクォーター(使用制限)に達した | Service Quotas でインスタンスファミリーの増加をリクエストしてください |
| オートスケーリンググループが LB 不健康インスタンスを置き換えない | ヘルスチェックタイプがまだEC2に設定されている | --health-check-type ELB に設定してください |
インスタンスが Pending:Wait で停止し、約1時間後に終了 |
ライフサイクルフック(ハートビート3600秒、デフォルトABANDON)が完了しない | complete-lifecycle-action で CONTINUE を実行、またはDefaultResult を CONTINUE に設定してください |
| システムステータスチェック失敗 | AWSのホスト / ハードウェア障害 | 停止→起動で新しいハードウェアに移行してください(再起動では移行しません) |
| インスタンスステータスチェック失敗 | インスタンスOS / ネットワーク設定 | 再起動するか、OS / ネットワーク設定を修正してください |
詳細な表とその他のエラーについては troubleshooting.md を参照してください。
IMDSv2を強制実装 (HttpTokens=required) 起動テンプレートで、SSRF(セキュリティ脆弱性)による認証情報盗聴をブロックしてください。リージョンごとにアカウントレベルのデフォルトを設定すると、新規起動に適用されます。
インバウンドSSHではなくSession Managerを推奨 — ポート22を開く必要がなく、キー管理も不要で、CloudTrail(監査ログ)にセッションAPI呼び出しが記録されます。Session Manager セッションログを CloudWatch Logs / S3 に出力(デフォルトは無効)すると、セッション内のコマンドも記録されます。詳細は systems-manager.md を参照してください。
インスタンスプロファイルを使用し、認証情報を埋め込まない — ロールの権限は最小限に限定してください。
EBS/AMIを暗号化 — 暗号化されたAMIをクロスアカウント共有する場合、カスタマー管理KMS(暗号化)キーで再暗号化してください(デフォルト aws/ebs キーは共有できません)。
すべてのリージョンでCloudTrail を有効 EC2/ASG/SSM API活動を監査し、機微なアクション(セキュリティグループ変更、予期しないプリンシパルからの RunInstances / TerminateInstances)にアラームを設定して、許可されない変更を検出してください。
パブリック向けWebフロート: ロードバランサーのHTTPSリスナーにACM証明書で転送中の暗号化を実施し、AWS WAF で一般的なWeb脅威から多層的に防御してください。ロードバランサー・WAFのセットアップは aws-networking に該当します。
このガイダンス以上のセキュリティ強化については、AWS EC2 セキュリティベストプラクティスとゲストOS向けCISベンチマークを参照してください。
launching-ec2-instance-with-best-practices スキルを使用してくださいsetting-up-ec2-instance-profiles スキルを使用してくださいcreating-ec2-image-builder-pipeline スキルを使用してくださいaws-serverless、ECS/Fargate → aws-containers、EKS/Kubernetes → kubernetesaws-networking または組み込み知識aws-iam、aws-observabilityBest experience with the AWS MCP server; also works with the AWS CLI alone — no hard dependency on either.
Launch configurations are deprecated and do not support current EC2 instance types; new accounts cannot create them. Use launch templates for every new Auto Scaling group. See auto-scaling.md.
ASGs ignore ELB health checks by default: An Auto Scaling group only uses EC2 status checks unless you set --health-check-type ELB. Without it, instances failing the load balancer's health check stay in service forever. See auto-scaling.md.
IMDSv2 hop limit breaks containers: the default HttpPutResponseHopLimit of 1 makes the IMDSv2 token PUT response fail to reach a containerized process (the extra hop exceeds the response TTL), so the token request times out. Set HttpPutResponseHopLimit=2 for bridge/awsvpc container workloads. (If IMDSv2 is required, a subsequent tokenless GET returns 401; if optional, it silently falls back to IMDSv1.) See provisioning.md.
T3/T3a/T4g default to unlimited mode: Unlike T2 (standard), these burst without throttling but bill surplus CPU credits when 24h-average CPU exceeds baseline — a silent cost leak. See instance-selection.md.
Instance store is ephemeral: Data on instance store volumes is lost on stop, hibernate, terminate, instance-type change, and host failure — it survives only a reboot. Put anything durable on EBS/EFS/S3. See instance-selection.md.
| If you're deciding... | Guidance |
|---|---|
| Instance family / size / Graviton / GPU / burstable | instance-selection.md — start with the workload→family table |
| How to define instances once and reuse (launch template) | provisioning.md |
| How to run many instances that scale automatically | auto-scaling.md |
| How to access/patch/manage instances without SSH keys | systems-manager.md |
| You want to... | Go to |
|---|---|
| Pick an instance type, Graviton vs x86, burstable credits, GPU, instance store vs EBS | instance-selection.md |
| Create a launch template, user data, key pairs, IMDSv2, placement groups, Elastic IPs | provisioning.md |
| Set up or fix an Auto Scaling group, scaling policies, instance refresh, Spot, lifecycle hooks | auto-scaling.md |
| Get SSH-less access, patch a fleet, or fix an instance not showing as a managed node | systems-manager.md |
| Create, share, or retire (deprecate/disable/deregister) an AMI | ami-management.md |
| Fix something broken (can't connect, status-check fail, capacity error, stuck instances) | troubleshooting.md |
"Stand up an autoscaling web fleet" → Create a launch template (AMI, type, IMDSv2), then an ASG referencing it with --health-check-type ELB and a target-tracking policy, see auto-scaling.md. For the public entry point, secure the load balancer (TLS/ACM, WAF, security response headers) per the Security Considerations below and the load-balancer notes in auto-scaling.md — the load-balancer build itself belongs to aws-networking.
"Roll out a new AMI to my fleet" → New launch template version → instance refresh; pin a numeric launch-template version so rollback works, see auto-scaling.md.
"Connect to a private instance without a bastion" → Give the instance SSM permissions (an instance profile with AmazonSSMManagedInstanceCore, or account-level DHMC) plus a network path, then use Session Manager, see systems-manager.md.
"Cut EC2 cost" → Right-size (burstable vs fixed-performance), Graviton where the app supports Arm64, Spot with price-capacity-optimized for fault-tolerant fleets, release idle Elastic IPs, see instance-selection.md.
| Symptom | Likely cause | Quick fix |
|---|---|---|
| SSH "Connection timed out" | Network path (SG/NACL/route/no public IP) | Open TCP 22 from your IP; check route to IGW; verify public IP — see troubleshooting.md |
| SSH "Connection refused" | Host: sshd down or still booting | Wait for boot; check sshd/port via Session Manager or serial console |
InsufficientInstanceCapacity |
AWS lacks capacity of that type in the AZ (NOT a quota) | Try another AZ / instance type / retry; don't request a quota increase |
InstanceLimitExceeded |
vCPU quota reached (this IS a quota) | Request a Service Quotas increase for the instance family |
| ASG never replaces LB-unhealthy instances | Health check type still EC2 | Set --health-check-type ELB |
Instances stuck in Pending:Wait, terminated after ~1h |
Lifecycle hook never completed (heartbeat 3600s, default ABANDON) | Call complete-lifecycle-action CONTINUE, or set DefaultResult CONTINUE |
| System status check failed | AWS host/hardware | Stop/start to migrate to new hardware (reboot won't) |
| Instance status check failed | Instance OS/network config | Reboot or fix the OS/network config |
Full tables and more errors in troubleshooting.md.
HttpTokens=required) on launch templates to block SSRF-based credential theft; set the account-level default per Region (applies to new launches only).aws/ebs key can't be shared).RunInstances/TerminateInstances from unexpected principals) so unauthorized changes surface.aws-networking.launching-ec2-instance-with-best-practices skillsetting-up-ec2-instance-profiles skillcreating-ec2-image-builder-pipeline skillaws-serverless; ECS/Fargate → aws-containers; EKS/Kubernetes → kubernetesaws-networking or built-in knowledgeaws-iam, aws-observability原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。