PR

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

記事内に広告が含まれています。
SNSフォローボタン
z_a_k_iをフォローする

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

こんな悩みをお持ちの方にオススメ!
  • EC2インスタンスへ接続するための踏み台サーバーを用意したくない
  • EC2インスタンスに接続するのに接続パソコンへRDPポートを解放したくない
  • AWSでEC2インスタンスに接続できるいいサービスないかなー

EC2インスタンスを管理するためだけに、EC2管理用のパソコン(踏み台サーバー)を用意したくないですよね。

AWSのフリートマネージャーという機能を使うことで、踏み台サーバーを準備せずにEC2インスタンスに接続することができます。

本記事では、フリートマネージャーでEC2インスタンスに接続する方法を、手順を追って順番に解説します。

ぜひ最後までご覧ください。

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

AWS Systems Managerの機能の一つ

フリートマネージャーは、AWSが提供している「AWS Systems Manager」というサービスの機能のひとつです。

正式には「AWS Systems Manager Fleet Manager」といいます。(この記事では「フリートマネージャー」と記載)

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

AWS Systems Managerとは

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

対象のインスタンスにSSMエージェントをインストールすることで、サーバなどのリソースを効率的に運用管理することができます。

今回は、フリートマネージャーにフォーカスした記事のため、詳しくは知りたい方はAWS公式サイトを参照ください。

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

フリートマネージャーは、AWS上のEC2インスタンスやオンプレミスのサーバーを一括で管理することができる機能です。

AWS マネジメントコンソールから、EC2インスタンスへ接続を行い操作することができます。

ブラウザ上でEC2インスタンスに接続できるため、httpsのポート(443)が開いていればEC2に接続することが可能です。

踏み台サーバなどが不要で、ファイアウォールにRDP用のポートも開ける必要がありません。

AWSフリートマネージャーを利用するための二つの準備

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

利用のための準備
  • 準備1
    フリートマネージャーへアクセス許可したIAMポリシーの作成する

  • 準備2
    対象のEC2インスタンスをSystemManagerマネージドノードに設定する

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

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

ポリシーはAWS公式サイトに記載のポリシーを設定します。一部利用者で置き換えが必要なところがありますが、こちらポリシーを設定することでフリートマネージャーが利用できます。

{
   "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"
         ]
      }
   ]
}
利用者で書き換えが必要な部分

公式サイトの記載はこちら

EC2インスタンスをSystemManagerマネージドノードに設定する

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

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

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

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

追記

この設定の有効前、既存のインスタンスは表示されなかったので、「新規にEC2を作成する必要があるのかな」と思ってましたが、再度確認すると既存のEC2インスタンスも表示されるようになってました。

時間を置けば表示されるのかもしれません。

フリートマネージャーの機能で「デフォルト設定として、EC2全てをマネージドノードに設定する」を有効にします。

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

少し時間をおくと以下のように表示されます。

ノードアクションからリモートデスクトップで接続してみます。

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

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

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

認証が成功すると、以下のようにブラウザ上でRDP接続できます。

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

公式サイトの記載はこちらです。

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

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

フリートマネージャーを利用することで、 通常のRDP接続とは違い、httpsポート(443)があいていれば対象のEC2インスタンスに接続することが可能です。

接続用の踏み台サーバーの準備もいらず、EC2インスタンスを操作できるので便利ですね。

今回は触れませんでしたが、VPCエンドポイントを設定することでパブリックIPが割り当てられていないEC2インスタンスにも接続することもできます

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

関連記事:【AWS】Lambdaから別アカウントのDynamoDBにクロスアカウントアクセスする具体的な方法の紹介!

参考書籍

コメント