当記事では、AWSのフリートマネージャーを利用して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インスタンスへ接続を行い操作することができます。
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全てをマネージドノードに設定する」を有効にします。
上記の設定が完了すると、以下のメッセージが表示されます。
少し時間をおくと以下のように表示されます。
ノードアクションからリモートデスクトップで接続してみます。
「ノードアクション」メニューから、「接続」ー「リモートデスクトップで接続」を選択します。
以下の画面が表示されるので、接続するための認証情報を入力します。
接続する方法は、ユーザ名/パスワードのほか、キーペアでも可能です。
認証が成功すると、以下のようにブラウザ上でRDP接続できます。
終了する時は、「セッションの終了」を選択。
公式サイトの記載はこちらです。
AWSフリートマネージャーを利用してEC2に接続する方法のまとめ
本記事では、フリートマネージャーを使ってEC2インスタンスに接続する方法を紹介しました。
フリートマネージャーを利用することで、 通常のRDP接続とは違い、httpsポート(443)があいていれば対象のEC2インスタンスに接続することが可能です。
接続用の踏み台サーバーの準備もいらず、EC2インスタンスを操作できるので便利ですね。
今回は触れませんでしたが、VPCエンドポイントを設定することでパブリックIPが割り当てられていないEC2インスタンスにも接続することもできます。
本記事が皆様の参考になりましたら幸いです。
コメント