キーペアを作成・紐づけずに作成した Windows インスタンスに RDP （リモートデスクトップ）接続する方法

## 解決したい事象

EC2 Windows インスタンスに RDP 接続したかったのですが、以下のメッセージが出力され接続できませんでした。

![get-windows-password.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/3c51a03e-4476-bf11-2bcb-4bd7f018f173.png)


なお、マネジメントコンソールの EC2 一覧から アクション > セキュリティ > Windowsパスワードを取得　でも同じでした。

![same-get-windows-password.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/0e11023e-f374-6f63-1977-ee121b7d3dc5.png)


## 解決方法
Systems Manager を使用して管理者パスワードをリセットする必要がありました。

### 補足
上記のインフォメーション画像にも記載されている様に、キーペアと関連付けされていない Windows インスタンスの管理者パスワードは取得できません。
また、キーペアは管理者パスワードを復号化するために必要です。


## やってみた
キーペアを選択せずに作成した Windows インスタンスを作成し、RDP 接続できるまでをやってみました。

### キーペアを選択しないで Windows インスタンスを作成

![keypair-login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/5fa3dd86-3b41-4bc7-9b03-a25cd206049f.png)

### 管理者パスワードを取得（RDP 接続が）できないことを確認

![get-windows-password.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/a4c203da-fa0f-6a72-7c54-0083d01d9c13.png)


### インスタンスに AWS 管理ポリシー`AmazonSSMManagedInstanceCore`を付与
Systems Manager を実行するために必要です。

![AWSSupport-RunEC2RescueForWindowsTool.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/6756fc70-26b7-ef3f-55ad-3f37f2d322f0.png)



### インスタンスに Systems Manager への許可を含む IAM ロールを付与
暗号化されたパスワードをパラメータストアに書き込むために必要です。

```diff_json
{  
  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Action": [  
        "ssm:PutParameter"  
      ],  
      "Resource": [  
        "arn:aws:ssm:*:*:parameter/EC2Rescue/Passwords/i-*"  
      ]  
    }  
  ]  
}
```

### Systems Manager > Quick Setup > 設定を作成　にてインスタンスを追加

![add-instance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/e5047ef6-524a-b1e3-78ac-7f4424f12aaa.png)


### Systems Manager > フリートマネージャー > マネージドノード　にてインスタンスが追加されたことを確認

![view-freet-manager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/d8f02022-a191-ec22-fe3f-d87bd4eaea5e.png)

:::note info
#### マネージドノードにインスタンスが追加されない場合
インスタンスが何かしらの方法でインターネットに接続出来ているかを確認してください。
私の場合、インターネットゲートウェイに紐づける必要がありました。

ちなみに、AWS のマネージド AMI からインスタンスを起動した場合、以下は有効化などが済んでいます。
- Systems Manager エージェントはインストール済み
- パブリック IP アドレスの自動割り当ては有効化されている
- TCP 3389 ポートは許可されている
:::

### AWS Systems Manager > Run Command > コマンドの実行　にて`AWSSupport-RunEC2RescueForWindowsTool`を選択

コマンドのパラメータで`ResetAccess`を選択

![SSM-Run-Command.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/9ea3351c-90f5-e12d-1be7-98f309e05698.png)

ターゲットで対象のインスタンスを選択し`実行`

### コマンドの成功を確認し、インスタンス ID をクリック

![success-run-command.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/33d02f98-b05d-fea3-590e-63312eedc0f2.png)



### Output された URL を開く

![check-url.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/088f0b63-2ecd-8b8d-b4e6-93f95f8bf4dd.png)


### `復号化された値を表示`左のバーをスライドし、復号化されたパスワードを表示

![view-reset-password.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/80cf0346-8c3b-2086-1dc2-be180f690eda.png)



### RDP の画面に以下を入力し接続
コンピューター：インスタンスの`パブリック IPv4 DNS`もしくは`パブリック IPv4 アドレス`
ユーザー名：`Administrator`
パスワード：上記で復号化したパスワード

![rdp-menu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/cb99e136-9b8a-6756-e6c6-35191240ab7f.png)


### RDP 接続を確認

![rdp-connect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/1374fe0e-7bf8-1c97-9fdc-ed119a14dadc.png)


## 参考資料

- [1] [EC2 Windows インスタンスの管理者パスワードをリセットする | AWS re:Post](https://repost.aws/ja/knowledge-center/reset-admin-password)
- [2] [Systems Manager で EC2 インスタンスがマネージドノードとして表示されない、または 「接続が失われました」というステータスが表示される | AWS re:Post](https://repost.aws/ja/knowledge-center/systems-manager-ec2-instance-not-appear)
- [3] [ステップ 1: Systems Manager にインスタンスのアクセス許可を設定する - AWS Systems Manager](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/setup-instance-permissions.html)