タイトル通り。
2年前くらいはこれなかったと思うのですが、いつから出来るようになったんだろ。
Azureはブラウザからサーバコンソールをちょろっと触れたり出来たので、AWSも出来ないかなーと思ってたところ、今見たら出来そうだったのでお試し。ちょっとはまった。
流れ。
- セキュリティポリシーの変更
- EC2 Instance Connectをサーバ側にインストール
- EC2 Instance Connect の IAM アクセス許可を設定する
セキュリティポリシーの変更
今回はまったのがここ。動かない時は下記のエラーメッセージ出る。
We were unable to connect to your instance. Make sure that your instance’s network settings are configured correctly for EC2 Instance Connect.
普通に制限してるアクセス先のみのIP設定だけでよいと勘違いしてた。どうもそうじゃないらしい。AWSが公開してるリージョンのIPを解放しないとダメな模様。何かを経由してアクセスしてるのかしら?
東京リージョンなら、3.112.23.0/29。(2021/2/2時点)
こんな感じで追加。
EC2 Instance Connectをサーバ側にインストール
最近はデフォで入ってるらしい。入ってない場合は公式のドキュメントに書かれてる感じでインストール。
IAM アクセス許可を設定する
AWS CLI入ってる端末ならどこでも。
公式通りですが、こんな感じで設定。
例えばmy-policy.jsonで↓のような内容でファイル作る。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": [ "arn:aws:ec2:region:account-id:instance/i-1234567890abcdef0" ], "Condition": { "StringEquals": { "ec2:osuser": "ami-username" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }
regionは東京リージョンなら、「ap-northeast-1」
account-idは対象IAMユーザのアカウントID。712345678901みたいなやつ。
/i-1234567890abcdef0のところは対象のEC2のインスタンスID。
ami-usernameはインスタンスへのログインユーザ名。デフォならec2-user
ファイル作ったら下記コマンド
aws iam create-policy --policy-name my-hogehoge-policy --policy-document file://my-policy.json
policy-nameは適切につけた方がよさげ。
aws iam attach-user-policy --policy-arn arn:aws:iam::account-id:policy/my-hogehoge-policy --user-name IAMユーザのAWSへのログインユーザ名
my-hogehoge-policyは一つ前のコマンドで指定したポリシー名。
これでブラウザからコンソールいじれるという寸法です。
2021/2/11追記
このブラウザ上のコンソール、タイムアウトが結構早い。10分くらい。
これ伸ばせないのかしら?設定的なものが見つからない。。。
電話とか来ると再接続メンドウ。