EC2への接続はSSHで接続してましたが、セッションマネージャーを使えばIAMベース簡単に接続できた。
セッションマネージャーの利点
- IAMで管理可能
- 22番ポートを開けなくて良い
- privateなEC2インスタンスにも接続可能
- 踏み台がいらないんじゃない?
- これはDBインスタンスへの接続する場合は踏み台が必要でした
- その時もセッションマネージャーを通しての踏み台が可能
IAM1本で管理できるようになるので、SGで22番ポートにIPアドレス制限かけたりとかも気にしなくて良く、セキュリティ的にも安心。
これはやらない手はない。それではやってみよう。
AWS CLIのインストール・設定からEC2へ接続をするまで
AWS CLI v2のインストール
接続にはAWS CLIが必要となるので、ドキュメントの通りインストールを行います。なお、今回は最新のAWS CLI v2をインストールします。
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /
which aws
/usr/local/bin/aws
であればOK
aws --version
aws-cli/2.X.XX
であればOK
Session Manager plugin のインストール
cd /tmp curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip" unzip sessionmanager-bundle.zip sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
session-manager-plugin
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
のように表示されればOK
aws configure でIAMユーザの設定情報をセット
$ aws configure AWS Access Key ID [None]: AKIXXXXXXXXXXXXXXXXX AWS Secret Access Key [None]: KO8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: json
ここまでで設定は完了
EC2接続確認
EC2インスタンスのインスタンスID(i-XXXXXXXXXXXXXXXXX)を指定して接続する
aws ssm start-session --target i-XXXXXXXXXXXXXXXXX
ssmユーザーでログインします。(ススムくんと命名)
このままだと、bashrcが読まれないので気になるようだったら自分で読み込む必要がある。
Starting session with SessionId: XXXXXXXXXX sh-4.2$ source ~/.bashrc [ssm-user@ip-xx-xx-xx-xx bin]$ cd [ssm-user@ip-xx-xx-xx-xx ~]$
これでec2-userで繋いだ時と同様な使い方ができるようになった。
2021/08/11 追記
これを使用するためには、EC2側にあらかじめSSM Agentのインストールが必要ですが、AmazonLinux2にはデフォルトでインストールされてるとのこと。
また、[AmazonSSMManagedInstanceCore]がアタッチされたiam roleを対象のEC2heアタッチする必要があります。