AWSフリートマネージャーを利用してEC2に接続する

awsアプリケーション開発

当記事では、AWSのフリートマネージャを利用して、AWS EC2インスタンスに接続する方法をご紹介します。

Z-A-K-I
Z-A-K-I

EC2に接続するのにRDP接続したくないなー

AWSでいいサービスないかなー

と、思ってる方におすすめです。

この記事では、以下のことを紹介してます。

  • AWS フリートマネージャーの紹介
  • AWS フリートマネージャーでEC2インスタンスに接続する方法

今回はAWSのフリートマネージャーという機能を使って、EC2インスタンスに接続する方法を、手順を追って紹介していきます。

AWS フリートマネージャーとは

「AWS Systems Manager」というサービスの機能のひとつです。

正式には「AWS Systems Manager Fleet Manager」といいます。

フリートマネージャーの説明の前に、AWS Systems Managerを簡単に説明します。

AWS Systems Managerとは

AWSアプリケーションおよび、リソースのオペレーションハブで管理用サービスです。

今回は、フリートマネージャーにフォーカスした記事のため、SystemsManagerの内容は割愛します。SystemsManagerについて知りたい方はAWS公式の以下サイトを参照ください。

AWS Systems Manager とは? - AWS Systems Manager
AWS Systems Manager は、AWS クラウド で実行されるアプリケーションとインフラストラクチャの管理に役立つ一連の機能です。

AWS Systems Manager Fleet Managerとは

公式サイトを見ると、

フリートマネージャーとは、マネージドノードにアクセスして、管理および設定する

とのことです。

AWSまたはオンプレミスで実行されているノードをリモート管理することができます。

簡単にいいますとリモートデスクトップでEC2インスタンスへ接続することが可能となります。

一般的なRDP接続との違いとして、ブラウザ上で操作することができるため、httpsの443ポートが開いていれば接続することが可能です。

AWSフリートマネージャーを利用するための二つのステップ

フリートマネージャーを利用するには二つの準備が必要となります。

FleetManagerのアクセス許可を持つIAMポリシーを作成する

IAMユーザ、またはロールにフリートマネージャーサービスを利用できるポリシーを設定します。

公式サイトに記載の以下ポリシーを設定します。一部利用者で置き換えが必要な箇所があります。以下の注記がその内容です。

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"EC2",
         "Effect":"Allow",
         "Action":[
            "ec2:CreateTags",
            "ec2:DeleteTags",
            "ec2:DescribeInstances",
            "ec2:DescribeTags"
         ],
         "Resource":"*"
      },
      {
         "Sid":"General",
         "Effect":"Allow",
         "Action":[
            "ssm:AddTagsToResource",
            "ssm:DescribeInstanceAssociationsStatus",
            "ssm:DescribeInstancePatches",
            "ssm:DescribeInstancePatchStates",
            "ssm:DescribeInstanceProperties",
            "ssm:GetCommandInvocation",
            "ssm:GetServiceSetting",
            "ssm:GetInventorySchema",
            "ssm:ListComplianceItems",
            "ssm:ListInventoryEntries",
            "ssm:ListTagsForResource",
            "ssm:ListCommandInvocations",
            "ssm:ListAssociations",
            "ssm:RemoveTagsFromResource"
         ],
         "Resource":"*"
      },
      {
         "Sid":"SendCommand",
         "Effect":"Allow",
         "Action":[
            "ssm:GetDocument",
            "ssm:SendCommand",
            "ssm:StartSession"
         ],
         "Resource":[
            "arn:aws:ec2:*:account-id:instance/*",
            "arn:aws:ssm:*:account-id:managed-instance/*",
            "arn:aws:ssm:*:account-id:document/SSM-SessionManagerRunShell",
            "arn:aws:ssm:*:*:document/AWS-PasswordReset",
            "arn:aws:ssm:*:*:document/AWSFleetManager-AddUsersToGroups",
            "arn:aws:ssm:*:*:document/AWSFleetManager-CopyFileSystemItem",
            "arn:aws:ssm:*:*:document/AWSFleetManager-CreateDirectory",
            "arn:aws:ssm:*:*:document/AWSFleetManager-CreateGroup",
            "arn:aws:ssm:*:*:document/AWSFleetManager-CreateUser",
            "arn:aws:ssm:*:*:document/AWSFleetManager-CreateUserInteractive",
            "arn:aws:ssm:*:*:document/AWSFleetManager-CreateWindowsRegistryKey",
            "arn:aws:ssm:*:*:document/AWSFleetManager-DeleteFileSystemItem",
            "arn:aws:ssm:*:*:document/AWSFleetManager-DeleteGroup",
            "arn:aws:ssm:*:*:document/AWSFleetManager-DeleteUser",
            "arn:aws:ssm:*:*:document/AWSFleetManager-DeleteWindowsRegistryKey",
            "arn:aws:ssm:*:*:document/AWSFleetManager-DeleteWindowsRegistryValue",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetFileContent",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetFileSystemContent",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetGroups",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetPerformanceCounters",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetProcessDetails",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetUsers",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetWindowsEvents",
            "arn:aws:ssm:*:*:document/AWSFleetManager-GetWindowsRegistryContent",
            "arn:aws:ssm:*:*:document/AWSFleetManager-MoveFileSystemItem",
            "arn:aws:ssm:*:*:document/AWSFleetManager-RemoveUsersFromGroups",
            "arn:aws:ssm:*:*:document/AWSFleetManager-RenameFileSystemItem",
            "arn:aws:ssm:*:*:document/AWSFleetManager-SetWindowsRegistryValue",
            "arn:aws:ssm:*:*:document/AWSFleetManager-StartProcess",
            "arn:aws:ssm:*:*:document/AWSFleetManager-TerminateProcess"
         ],
         "Condition":{
            "BoolIfExists":{
               "ssm:SessionDocumentAccessCheck":"true"
            }
         }
      },
      {
         "Sid":"TerminateSession",
         "Effect":"Allow",
         "Action":[
            "ssm:TerminateSession"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "ssm:resourceTag/aws:ssmmessages:session-id":[
                  "${aws:userid}"
               ]
            }
         }
      },
      {
         "Sid":"KMS",
         "Effect":"Allow",
         "Action":[
            "kms:GenerateDataKey"
         ],
         "Resource":[
            "arn:aws:kms:region:account-id:key/key-name"
         ]
      }
   ]
}

公式サイトの記載は以下となります。

ステップ 1: Fleet Managerのアクセス許可を持つ IAM ポリシーを作成する - AWS Systems Manager
すべての Fleet Manager 機能へのアクセス権を提供する IAM ポリシーを作成するか、選択した機能へのアクセス権を付与するようにポリシーを変更します。
インスタンスとエッジデバイスがSystemManagerによって管理されていることを確認

EC2インスタンスをフリートマネージャーで管理するには、対象のEC2がSystemManagerマネージドノードでなければなりません。

EC2インスタンスをSystemManagerのマネージドノードにするには、EC2をAWS Systems Manager エージェント (SSM Agent) で構成する必要があります。

公式サイトの記載は以下となります。

AWS Systems Manager Fleet Manager - AWS Systems Manager
一般的なトラブルシューティングと管理タスクを実行するためのデータをリモートで管理して収集し、マネージドノードの正常性とパフォーマンスステータスを表示します。
EC2をSystemManagerマネージドノードに設定する

フリートマネージャーで接続するためにSystemManegerを使って、対象のEC2をマネージドノードに設定します。

既存のEC2をマネージドノードに設定したかったのですが、ドキュメントを読んでも、作成済みのEC2をマネージドインスタンスに設定する方法がわかりませんでした。

代わりの方法として、「デフォルト設定として、EC2全てをマネージドノードに設定する」という設定を有効にし、新たにEC2を作成しマネージドノードのEC2を準備しました。このEC2でフリートマネージャーの動作を確認していきます。

上記の設定が完了すると、以下のメッセージが表示されます。

少し時間をおくと以下のように表示されます。
※この設定の有効前の既存のインスタンスは表示されないみたいなので、新規にEC2を作成する必要があるのかな、と思いましたが、再度確認すると表示されるようになってました。有効になるまで、それなりに時間を置かなければいけないので待ちましょう。

ノードアクションからリモートデスクトップで接続してみます。「ノードアクション」メニューから、「接続」ー「リモートデスクトップで接続」を選択します。

以下の画面が表示されるので、接続するための認証情報を入力します。

接続する方法は、ユーザ名/パスワードのほか、キーペアでも可能です。

認証に成功すると、以下のようにAWSManegementConsole上で、RDP接続しEC2インスタンスを操作することができます。

終了する時は、「セッションの終了」を選択します。

公式サイトの記載は以下となります。

Amazon EC2 ホスト管理 - AWS Systems Manager
Quick Setup を利用すると、Amazon EC2 インスタンスでセキュリティロールと Systems Manager 機能をすばやく設定できます。

最後に

AWSフリートマネージャーを利用してEC2に接続する方法のまとめ

本記事では、フリートマネージャーを使ってEC2に接続する方法を記載しました。

フリートマネージャーを利用することで、 通常のRDP接続とは違い、httpsポートができれば対象のEC2インスタンスに接続することが可能となります。また、今回は触れませんでしたが、VPCエンドポイントを設定することでパブリックIPが割り当てられていないEC2インスタンスにも接続することができます。

今後もAWSのサービスについて、実際に試し紹介していきます。

皆様の参考になりましたら幸いです。

この記事を書いた人
z_a_k_i

z_a_k_iと申します。

富山でITエンジニアとして働いています。
0歳児と3歳児を持つ30代メンズです。

このブログでは、以下の内容を紹介しています。

 ⚫︎アプリケーション開発
 ⚫︎富山県の情報発信

皆様に役立つ内容を紹介できるよう精進していきますので、
どうぞよろしくお願いします。

z_a_k_iをフォローする
awsアプリケーション開発

コメント