Amazon Elastic Compute Cloud (Amazon EC2) インスタンスがインターネットにアクセスできません。インスタンスの管理に AWS Systems Manager を使用したいです。
解決策
インターネットにアクセスせずに EC2 インスタンスを管理するには、Systems Manager を設定し、AWS PrivateLink の Amazon Virtual Private Cloud (Amazon VPC) のインターフェイスエンドポイントを使用するようにします。
Systems Manager 用の IAM インスタンスプロファイルを作成する
次の手順を実行します。
- インスタンスに AWS Systems Manager Agent (SSM Agent) がインストールされていることを確認します。
- AWS Identity and Access Management (IAM) インスタンスプロファイルを作成します。ロールについては、新しいロールを作成することも、既存のロールに必要なアクセス許可を追加することもできます。
- インスタンスに IAM ロールをアタッチします。
- Amazon EC2 コンソールを開き、該当するインスタンスを選択します。
- [説明] タブを選択し、[VPC ID] と [サブネット ID] を書き留めておきます。
注: デフォルトのホスト管理設定を使用してインスタンスを管理する場合は、インスタンスを管理するために IAM インスタンスプロファイルを作成する必要はありません。
セキュリティグループを作成または変更する
セキュリティグループを作成するか、既存のセキュリティグループを変更します。セキュリティグループをインスタンスにアタッチします。セキュリティグループは、VPC エンドポイントへのアウトバウンドトラフィックをポート 443 で許可する必要があります。さらに、セキュリティグループを VPC エンドポイントにアタッチします。セキュリティグループは、サービスと通信する VPC のリソースからのインバウンド HTTPS (ポート 443) トラフィックを許可する必要があります。詳細については、「さまざまなユースケース用のセキュリティグループのルール」を参照してください。
注: インバウンドルールとアウトバウンドルール用にセキュリティグループを 1 つ作成し、インスタンスと VPC エンドポイントにアタッチします。
VPC エンドポイント用のセキュリティグループを設定するには、次の手順を実行します。
- Amazon VPC コンソールを開きます。
- [セキュリティグループ] を選択し、新しいセキュリティグループを選択します。
- [インバウンドルール] タブで **[インバウンドルールを編集]**を選択します。
- 次の詳細を含め、ルールを追加します。
[タイプ] で **[HTTPS]**を選択します。
[ソース] で VPC の CIDR を選択します。
詳細設定では、VPC 内の特定のサブネットの CIDR または、インスタンスが使用するセキュリティグループを許可します。
- 他のエンドポイントで使用するために、セキュリティグループ ID を書き留めておきます。
- **[ルールを保存]**を選択します。
Systems Manager 用の VPC エンドポイントを作成、設定する
注: VPC エンドポイントは特定のサブネットにマッピングされます。VPC エンドポイントの作成時に複数のサブネットを選択した場合、選択したサブネットごとに 1 つのエンドポイントが作成されます。料金はエンドポイントごとに発生するため、請求コストが増加します。
次の手順を実行します。
- VPC エンドポイントを作成します。
- [サービス名] で com.amazonaws.[region].ssm を選択します。AWS リージョンコードのリストについては、「利用可能なリージョン」を参照してください。
- [VPC] でインスタンスの VPC ID を選択します。
- [サブネット] で、該当する VPC のサブネット ID を選択します。
高可用性を実現するには、リージョン内の別々のアベイラビリティーゾーンからサブネットを 2 つ以上選択します。
注: 同じアベイラビリティーゾーンに複数のサブネットがある場合、追加のサブネット用に VPC エンドポイントを作成する必要はありません。同じアベイラビリティーゾーン内の他のサブネットは、インターフェイスにアクセスして使用できます。
- [セキュリティグループ] で該当するセキュリティグループを選択します。
- (オプション) 詳細設定を行うには、Systems Manager 用のインターフェイス VPC エンドポイントポリシーを作成します。
注: VPC エンドポイントには AWS が提供する DNS (VPC CIDR+2) が必要です。カスタム DNS を使用する場合は、Amazon Route 53 Resolver を使用して正しい名前解決を行います。
- 次の変更を加えて手順 2 ~ 6 を繰り返します。
Session Manager のエンドポイントでは、サービス名に com.amazonaws.[region].ssmmessages を選択します。
EC2 メッセージのエンドポイントでは、サービス名に com.amazonaws.[region].ec2messages を選択します。
注: SSM Agent バージョン 3.3.40.0 以降では、Systems Manager は ssmmessages:* エンドポイントが使用可能な場合は、ec2messages:* エンドポイントよりも優先して使用します。詳細については、「Agent に関連する API操作 (ssmmessages と ec2messages エンドポイント)」のエンドポイント接続の優先順位セクションを参照してください。
インスタンスがマネージドインスタンスで登録されていることを確認するには、次の手順を実行します。
- Systems Manager コンソールを開きます。
- ナビゲーションペインで [フリートマネージャー] を選択します。
- インスタンス ID が [ノード ID] に表示されており、そのノードが Running 状態であることを確認します。
注: 設定を完了した後、インスタンスがマネージドインスタンスとして登録されるまでに数分かかる場合があります。SSM Agent をすぐに接続させるには、インスタンスで SSM Agent を再起動するか、インスタンスを再起動します。
デフォルトのセッション設定を使用しない場合は、次の VPC エンドポイントを作成し、AWS Systems Manager の機能である Session Manager を使用します。
- Systems Manager の機能である Run Command で Amazon Simple Storage Service (Amazon S3) ログ機能を使用する場合は、com.amazonaws.region.s3 ゲートウェイエンドポイントを作成します。
- Session Manager で AWS Key Management Service (AWS KMS) 暗号化を使用する場合は、com.amazonaws.region.kms エンドポイントを作成します。
- Run Command で Amazon CloudWatch Logs を使用する場合は、お使いのリージョン用のサービスエンドポイントを作成します。
インスタンスを Session Manager に接続するには、VPC エンドポイントは必要ありません。VPC エンドポイントは、Windows Volume Shadow Copy Service (VSS) ベースのスナップショットを作成する場合に必要です。
関連情報
AWS Systems Manager endpoints and quotas
AWS Systems Manager を設定する