みなさん、こんにちは。
小林です。
早いもので、ブログを書き出してから1年が経ちました。
技術系の記事は適当なことは書けない(書きたくない)ので、元々裏どりを丁寧にする方ではありましたが、より丁寧にするようになったと実感しています。
それでは、今回のブログの内容はこちらです!!
つい先日、出先で突然、AmazonLinuxを触りたくなってしまったのです。
手持ちにはiPadがありましたがSSH接続できる環境が整っていなくて、困ってしまいました。
みなさんもそんな経験ありますよね?
そんな時に便利なのが、EC2 Instance Connectという機能です。
AWSコンソールからサーバにアクセスし、CLIにて操作することが可能になります。
今回は、EC2 Instance Connectを使用して、EC2インスタンスにアクセスできるようにするまでの手順を紹介します。
EC2 インスタンスを用意する
今回はほぼデフォルトの設定のまま、EC2インスタンスを起動させます。
リージョンは「オレゴン(us-west-2)」を使用します。
AMI
今回は、AmazonLinuxを使用したいので、AmazonLinux2用のAMIを使用します。
ちなみに、EC2 Instance Connectを使用できるOSに制限があり、以下のOSである必要があります。
- 以下に挙げた、サポートされている Linux ディストリビューションに対し、EC2 Instance Connect をインストールできます。
- Amazon Linux 2 (すべてのバージョン)
- Ubuntu 16.04 以降
参考:EC2 Instance Connect セットアップ#Limitations
インスタンスタイプ
特に希望がなければ、無料枠のt2.micro
で問題ありません。
インスタンスの詳細
ブラウザからEC2 Instance Connectを使用するためには、パブリックIPv4アドレスが必要になります。
- ユーザーがインターネット経由でインスタンスにアクセスする場合、インスタンスにパブリック IP アドレスがあり、パブリックサブネット内にある必要があります。詳細については、Amazon VPC ユーザーガイドの「インターネットアクセスを有効にする」を参照してください。
参考:EC2 Instance Connect セットアップ#タスク 1: インスタンスへのネットワークアクセスを設定する
ネットワーク関連の項目に以下を設定してください。
- サブネット:パブリックなサブネット
- デフォルトのものを使用するのであれば、どれでも可
- パブリックなサブネットに関しては、以下にて言及していますので参考までに
- 自動割り当てパブリックIP:有効
もちろん、後から設定することも可能です。
ストレージの追加、タグの追加
この項目は特に指定がないので、デフォルトのまま使用します。
セキュリティグループの設定
EC2 Instance Connectを使用するにあたり、必要な設定は後述しますので、ご自身の必要な設定にしてください。
今回はブログ用なので、新しく作成し、デフォルトで設定されているSSH用のルール(0.0.0.0/0
)も削除してしまいます。
これで、使用するインスタンスの準備は一旦完了です。
EC2 Instance Connectをインストールする
使用するインスタンスにEC2 Instance Connectをインストールする必要があります。
が、以下の条件を満たす場合、すでにインストールされているので、今回はスキップします。
それ以前のOSを使用する場合、下記のリンク先に手順が記載されていますので、そちらを参照してください。
以下に挙げる AMI は、EC2 Instance Connect に事前インストールされており、いずれかを使用してインスタンスを起動する場合には、このタスクはスキップできます。
- Amazon Linux 2 2.0.20190618 以降
- Ubuntu 20.04 以降
参考:EC2 Instance Connect セットアップ#タスク 2: (条件付き) EC2 Instance Connect をインスタンスにインストールする
EC2 Instance Connect CLIをインストールする
ブラウザを経由せず、自身のコンピュータを利用する場合には、EC2 Instance Connect CLIが必要になりますが、今回はブラウザからアクセスしたいので、スキップします。
詳細手順は、以下のリンク先を参考にしてください。
参考:EC2 Instance Connect セットアップ#タスク 3: (オプション) EC2 Instance Connect CLI をお使いのコンピューターにインストールする
セキュリティグループの設定を行う
ブラウザからアクセスする場合、EC2 Instance ConnectというサービスからのSSHでのアクセスを許可する必要があります。
(Amazon EC2 コンソールのブラウザベースのクライアント) インスタンスに関連付けられているセキュリティグループで、このサービスの IP アドレス範囲からのインバウンド SSH トラフィックが許可されていることを確認します。
参考:EC2 Instance Connect セットアップ#タスク 1: インスタンスへのネットワークアクセスを設定する
SSH接続の許可
先ほどEC2に設定したセキュリティグループを開き、インバウンドに以下の設定を追加します。
ソースに設定する値は、以下から取得することが可能です。
https://ip-ranges.amazonaws.com/ip-ranges.json
参考:AWS IPアドレスの範囲
上記にアクセスするとJSON形式で記述されていますが、全リージョン、全サービス分が記述されているため、以下の項目で絞り込みます。
- region:
us-west-2
- service:
EC2_INSTANCE_CONNECT
絞り込んだら、ip_prefix
に設定されている値をセキュリティグループのソースに設定します。
EC2 Instance Connectを利用するための許可を与える
EC2 Instance Connectを利用するには、利用したいIAMユーザに対して、許可を与える必要があります。
IAMポリシーの設定
以下のポリシーを利用させたいIAMユーザにアタッチしてください。
サービス | アクション | リソース | リクエスト条件 | 備考 |
---|---|---|---|---|
EC2 Instance Connect | SendSSHPublicKey | 対象のインスタンス |
|
リクエスト条件には、接続したいユーザ名やそのほかの条件を追加します |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:<リージョン>:<アカウントID>:instance/<インスタンスID>", "Condition": { "ForAnyValue:StringEquals": { "ec2:osuser": [ "ec2-user" ] } } } ] }
参考:EC2 Instance Connect セットアップ#タスク 4: EC2 Instance Connect の IAM アクセス許可を設定する
これで準備は万端です。早速、接続してみましょう。
EC2 Instance Connectを使用してみる
対象のEC2インスタンスを選択し、接続ボタンを押下します。
EC2 Instance Connectを選択し、ユーザ名に対象のユーザ名を指定します。
そして、接続ボタンを押下します。
あら、不思議。EC2インスタンスにブラウザ経由でアクセスできるようにになりました。
インターネットに接続さえできれば、EC2インスタンスにアクセスし操作することができるようになりました。
これで、急にAmazonLinuxを触りたくなっても問題ありません。
他にも「セッションマネージャー」や「EC2シリアルコンソール」といった機能があるので、どういった機能なのかは今後調査していきたいと思います。