AWS Private SubnetのEC2インスタンスへのアクセス

  • 2019.09.26
  • AWS
AWS Private SubnetのEC2インスタンスへのアクセス

はじめに

前回、Public SubnetとPrivate Subnetの環境を構築してEC2インスタンスをそれぞれ作成しました。ですが、Private SubnetにあるEC2インスタンスにはアクセスできない状態のままでした。

今回は、Private Subnet にあるEC2インスタンスにアクセスできるようにしてみたいと思います。

PrivateなEC2インスタンスへアクセスする方法

これまではこのようなPrivateなSubnetにあるEC2インスタンスにアクセスするためには、VPNを作ったり、Bastion ホスト(踏み台)を作ったりする必要がありましたが、最近ではAWS Systems Manager セッションマネージャーによる接続ができるようになったようです。

今回は、このAWS Systems Manager セッションマネージャーによる接続を試してみたいと思います。

SSMエージェントについて

セッションマネージャーでログインするには、ログインされる側にSSMエージェントをインストールする必要があるようですが、現在使用しているEC2 インスタンスはAmazon Linux2 AMI で、デフォルトでSSMエージェントがインストールされているようです。

そのため、今回はSSMエージェントのインストールは省きます。

AWS Systems Manager セッションマネージャーによるログイン方法

AWS Systems Manager セッションマネージャーによるログイン方法は2通りあって、一つはAWSマネジメントコンソールから行う方法と、AWS CLIを使う方法です。
AWS CLIについては、もう少し慣れてから使っていきたいと思っているので、ここではAWS マネジメントコンソールを使った接続方法を試してみたいと思います。

IAMロールの設定

AWS Systems Manager セッションマネージャーで接続するには、IAMロールの設定が必要です。

AWSマネジメントコンソールより、IAMを検索してロールを開きます。

[ロールの作成] をクリックし、EC2 を選択します。

ポリシーからssmと検索し、AmazonEC2RoleforSSMを選択します。

分かりやすい名前をつけてロールを作成します。

次にEC2コンソールを開きます。

AWS Systems Manager セッションマネージャーで接続したい、EC2インスタンスを選択した状態で、[アクション] – [インスタンスの設定] – [IAM ロールの割り当て/置換] を開きます。

先ほど作成したIAMロールを割り当てます。

VPCエンドポイントの作成

インターネットに接続されているEC2インスタンスならVPCエンドポイントを作成する必要はありませんが、インターネットに接続されていないEC2インスタンスに接続する場合は次のようにVPCエンドポイントを作成する必要があります。

AWSマネジメントコンソールよりVPCを開き、エンドポイントを開きます。

インターフェースの作成

まずは、ここで次の3つのインターフェースを作成します。

  • com.aws.リージョン名.ssm
  • com.aws.リージョン名.ssmmessage
  • com.aws.リージョン名.ec2message

[エンドポイントの作成] をクリックしてください。

サービス名を選択します。

EC2インスタンスがあるVPCを選択し、EC2インスタンスにアクセスできるサブネットを選択します。

ここでは新しいセキュリティグループを作成します。

作成したセキュリティグループに対して次のインバウンドルールを追加します。

作成したセキュリティグループを選択し、[エンドポイントの作成] をクリックします。

同様にして残り2つのセキュリティグループも作成します。

ゲートウェイの作成

作成するゲートウェイは1つです。エンドポイントの作成と基本は同じですが、若干設定する箇所が違います。ここでは次のゲートウェイを作成します。

  • com.aws.リージョン名.s3

[エンドポイントの作成] をクリックします。

EC2インスタンスがあるVPCとサブネットを選択します。

ポリシーはフルアクセスにして、[エンドポイントの作成] をクリックします。

AWS Systems Manager セッション マネージャーからセッションの開始

AWSマネジメントコンソールからSystems Managerを開きます。

セッションを開きます。

[セッションの開始] をクリックします。

対象のEC2インスタンスが表示されたら、対象のEC2インスタンスを選択し、[セッションの開始] をクリックします。

ここでなかなか表示されない場合は、EC2インスタンスを一度再起動してみてください。

アクセスできました。

ただ、どうもSafariだとキー入力を受け付けてくれないようでした。Chromeでやったら問題ありませんでした。