こんにちは!イーゴリです。
今日はとても便利な機能をご紹介したいと思います。
背景
以前の記事では、プライベートな環境でSSMを使える方法を紹介しました。
しかし、上記の方法だと、下記のデメリットがあります。
- すべての対象EC2インスタンスに対して、IAMロールを作る必要があります
結構大変ですよね。
今回の方法はSystems Manager の DHMC (Default Host Management Configuration)を使うことでIAMロール作成/EC2へのアタッチの手間がなくなります。さらに一回だけ設定すればよいです。
イメージ図

EC2前提条件
- IMDSv2が必要(メータデータオプションの設定が「V1及びV2 (トークンはオプション)」であってもIMDSv2が利用できるため、問題ない)
- SSM Agent (3.2.582.0バージョン以降)が必要
なお、Default Host Management Configurationの有効化によって、自動的に下記の事象が起きますので、ご承知おきください。
- SSM Agent が最新の状態に保たれる
- Session Manager、Patch Manager、Inventoryが有効になる
有効にする方法
Systems Manager > フリートマネージャー > アカウント管理 > 「デフォルトのホスト管理設定」を設定するをクリックする。

「デフォルトのホスト管理設定」画面で「デフォルトのホスト管理設定を有効にする」をクリックする。
「IAM ロール」欄でロールの一覧から「AWSSystemsManagerDefaultEC2InstanceManagementRole を作成(推奨)」を選択します。

AWSSystemsManagerDefaultEC2InstanceManagementRoleの内容:
- AmazonSSMManagedEC2InstanceDefaultPolicy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeAssociation",
"ssm:GetDeployablePatchSnapshotForInstance",
"ssm:GetDocument",
"ssm:DescribeDocument",
"ssm:GetManifest",
"ssm:ListAssociations",
"ssm:ListInstanceAssociations",
"ssm:PutInventory",
"ssm:PutComplianceItems",
"ssm:PutConfigurePackageResult",
"ssm:UpdateAssociationStatus",
"ssm:UpdateInstanceAssociationStatus",
"ssm:UpdateInstanceInformation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2messages:AcknowledgeMessage",
"ec2messages:DeleteMessage",
"ec2messages:FailMessage",
"ec2messages:GetEndpoint",
"ec2messages:GetMessages",
"ec2messages:SendReply"
],
"Resource": "*"
}
]
}
「設定」をクリックします。

完了しましたら、「フリートマネージャー」画面で対象EC2が表示されるようになります。

以上、御一読ありがとうございました。