[小ネタ] プライベートサブネットのインスタンスにAWS Systems Manager セッションマネージャーでSSHしてみたくなって

2019.07.22

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

おはようございます、もきゅりんです。

発端はこちらの記事でした。

AWS Systems Manager セッションマネージャーでSSH・SCPできるようになりました

プライベートサブネットでやってみたいゾ、と思ったところ、思わぬところでコケたので、、万が一同じような方が現れた場合に備えて、まとめておきます。

コケた理由としては、下記記事タイトルのまんまなのですが、そういうことでした。

学習しました。。

[AWS] VPC Endpoint で S3 にアクセスするときはリージョン指定に注意が必要な件

もう理解した方は、大丈夫です、話は既に済んだも同然です!!

どゆこと??という方はお進み下さい。

目次

1 Systems Manager 用 VPC エンドポイントを作成する

VPCからエンドポイントを作成していきます。

Systems Manager 用 VPC エンドポイントを作成する

setup endpoint

今回は以下4つを作成します。

  • com.amazonaws.region.ssm
  • com.amazonaws.region.ec2messages
  • com.amazonaws.region.ssmmessages
  • com.amazonaws.region.s3

endpoint

とりあえず設定してみているけど、InterfaceとGatewayって何なんでしたっけ?って方(僕ですね)は、VPC EndpointのInterfaceとGatewayについて分かりやすく書かれている記事はこちら。

PrivateLinkがリリースし新たにEC2, Systems Manager, ELB, Kinesis, Service CatalogがVPCエンドポイントに対応しました

プライベートサブネットを選んで、APIへのアクセスで通常のエンドポイント名を使用するためEnable for this endpointにチェックを入れます。今回、セキュリティグループはデフォルトです。

setup endpoint

S3のポリシーはとりあえずデフォルトで、プライベートサブネットのルートテーブルに追加します。

setup s3 endpoint

2 プライベートサブネットにインスタンスを起動する

東京のリージョンからssm-agentを最新にしたいので、下記コマンドをユーザーデータに入力します。IAMロールにはSSMに必要なロール(e.g. AmazonEC2RoleForSSMのポリシー)を付与します。

特定のリージョンから SSM エージェント をダウンロードする

#!/bin/bash
sudo yum -y install http://s3-ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm

最初は特に何も考えず、下記コマンドで対応していて最新バージョンにできず、しばらく面食らいました、というのが冒頭の話です。

sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

ちゃんとSSMの画面からインスタンスが表示されています。

ssm instance

バージョンも最新(2019/7/22時点)だ!

ssm instance2

3 クライアントの準備する

こちらは、冒頭の

AWS Systems Manager セッションマネージャーでSSH・SCPできるようになりました

の「クライアントの準備」をご参照下さいませ!

4. 接続してみる

$ ssh -i ~/path/to/.pem ec2-user@i-12345
...

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|
...

Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-10-152 ~]$

で、できた。。

踏み台もなく、プライベートサブネットのインスタンスにSSHすることができました。

ああ、巨人の肩に乗りっぱなしジャーマンです。

いつかは、肩を貸せるくらいにはなりたい年頃。

以上です、どなたかのお役に立てば幸いです。

参考

AWS Systems Manager セッションマネージャーでSSH・SCPできるようになりました

PrivateLinkがリリースし新たにEC2, Systems Manager, ELB, Kinesis, Service CatalogがVPCエンドポイントに対応しました

プライベートサブネットに配置したEC2にAWS Systems Manager Session Managerを使ってアクセスする