PrivateSubnetのEC2にSessionManager(NATゲートウェイ経由)で接続してみた

2021.08.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

吉川@広島です。

最近、VPC周りの苦手意識を克服するために自習しています。今回はプライベートサブネットのEC2インスタンスに対して、パブリックサブネットの踏み台インスタンス無しで接続できるようになるSessionManagerを動かしてみました。

やっぱり説明を読むだけではなかなかわからないですね。手を動かしたおかげでだいぶイメージできるようになった気がします。

やりたいこと

  • PrivateSubnetのEC2からSessionManagerにアクセスする
  • 経路は、PrivateSubnetのEC2→PublicSubnetのNATゲートウェイ→インターネット→SessionManager

もしかしたら理解が怪しいかも知れませんが、今回やっていることは上記と認識しています。

NATゲートウェイ用のEIP割り当て

NATゲートウェイ用のEIPを先に作っておきます。

  1. 「Elastic IP アドレス」
  2. 「Elastic IP アドレスの割り当て」
  3. デフォルト設定のまま「割り当て」を押下

で作成します。

VPC作成

今回は手順を省力化するためにVPCウィザードから作成します。

  1. 「VPCダッシュボード」
  2. 「VPCウィザードから起動」
  3. 「パブリックとプライベート サブネットを持つ VPC」を押下し「選択」

  • VPC名: 「my-vpc」(命名は任意)
  • Elastic IP 割り当て ID: 今作成したEIPを選択

として作成します。

この操作により、

  • VPC
  • PublicSubnet + NATゲートウェイ
  • PrivateSubnet

などのリソースが作成されます。

EC2用のIAMロールを作成

EC2に当てるIAMロールを作成します。これはEC2がSessinManagerにアクセスするために必要になります。

  1. 「IAM」「ロール」を開く
  2. 「ロールを作成」
  3. 「一般的なユースケース」「EC2」を選択し、次へ進む

そして、アタッチするポリシーを選択します。「ポリシーのフィルタ」の検索欄に「ssm」を入力して検索します。

「AmazonEC2RoleforSSM」を選択し、ロールを作成します。ロールの名前は「ec2-session-manager-role」とします(命名は任意)。

PrivateSubnetにEC2作成

EC2インスタンスを作成します。

  1. 「EC2インスタンスを起動」を押下
  2. 「AMIの選択」: デフォルトのAmazon Linux2を選択
  3. 「インスタンスタイプの選択」: micro(任意)

として、「インスタンスの設定」に進みます。

  • ネットワーク: 作成した「my-vpc」を選択
  • サブネット: PrivateSubnetを選択
  • IAMロール: 作成した「ec2-session-manager-role」を選択

と設定します。

続いて、

  1. 「ストレージの追加」: デフォルトのまま
  2. 「タグの追加」: デフォルトのまま

として、「セキュリティグループの設定」に進みます。

  • 「新しいセキュリティグループを作成する」を選択
  • 「セキュリティグループ名」: 「my-vpc-private-subnet-sg」(命名は任意)
  • 「説明」: デフォルトのまま
  • ルール: インバウンドルール無しにする(デフォルトのインバウンドルールが1つあるが、☓ボタンを押して削除する)

と設定し、「確認と作成」に進みます。

下記のように警告が出ますが、今回は問題ないので「次へ」を押します。

最後に、キーペアについてダイアログが出てきます。「キーペアなしで続行」を選択し、下のチェックボックスにチェックを入れて、「インスタンスの作成」を押します。

SessionManagerでEC2に接続

  1. 「EC2」「インスタンス」を開く
  2. 作成したEC2インスタンスを選択する
  3. 「接続」を押下する

下記のようなダイアログが出てくるので、「セッションマネージャ」を選択し、接続します。

下記の画面が表示され、シェルコマンドを入力することができます。

このようにSessionManagerでPrivateSubnetのEC2に接続できました。

参考