当記事では、AWSのフリートマネージャを利用して、AWS EC2インスタンスに接続する方法をご紹介します。
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 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"
]
}
]
}
公式サイトの記載は以下となります。
インスタンスとエッジデバイスがSystemManagerによって管理されていることを確認
EC2インスタンスをフリートマネージャーで管理するには、対象のEC2がSystemManagerマネージドノードでなければなりません。
EC2インスタンスをSystemManagerのマネージドノードにするには、EC2をAWS Systems Manager エージェント (SSM Agent) で構成する必要があります。
公式サイトの記載は以下となります。
EC2をSystemManagerマネージドノードに設定する
フリートマネージャーで接続するためにSystemManegerを使って、対象のEC2をマネージドノードに設定します。
既存のEC2をマネージドノードに設定したかったのですが、ドキュメントを読んでも、作成済みのEC2をマネージドインスタンスに設定する方法がわかりませんでした。
代わりの方法として、「デフォルト設定として、EC2全てをマネージドノードに設定する」という設定を有効にし、新たにEC2を作成しマネージドノードのEC2を準備しました。このEC2でフリートマネージャーの動作を確認していきます。
上記の設定が完了すると、以下のメッセージが表示されます。
少し時間をおくと以下のように表示されます。
※この設定の有効前の既存のインスタンスは表示されないみたいなので、新規にEC2を作成する必要があるのかな、と思いましたが、再度確認すると表示されるようになってました。有効になるまで、それなりに時間を置かなければいけないので待ちましょう。
ノードアクションからリモートデスクトップで接続してみます。「ノードアクション」メニューから、「接続」ー「リモートデスクトップで接続」を選択します。
以下の画面が表示されるので、接続するための認証情報を入力します。
接続する方法は、ユーザ名/パスワードのほか、キーペアでも可能です。
認証に成功すると、以下のようにAWSManegementConsole上で、RDP接続しEC2インスタンスを操作することができます。
終了する時は、「セッションの終了」を選択します。
公式サイトの記載は以下となります。
最後に
AWSフリートマネージャーを利用してEC2に接続する方法のまとめ
本記事では、フリートマネージャーを使ってEC2に接続する方法を記載しました。
フリートマネージャーを利用することで、 通常のRDP接続とは違い、httpsポートができれば対象のEC2インスタンスに接続することが可能となります。また、今回は触れませんでしたが、VPCエンドポイントを設定することでパブリックIPが割り当てられていないEC2インスタンスにも接続することができます。
今後もAWSのサービスについて、実際に試し紹介していきます。
皆様の参考になりましたら幸いです。
コメント