System Manager インベントリは、SSM Agent経由でOSのメタデータを収集してきてくれるサービスです。ちょっとした資産管理ツールみたいなもの、て感じです。
収集されるメタデータ
収集されるメタデータは、以下の公式ページで紹介されています。
指定したPath上にあるファイルや、Windowsの場合レジストリ内の指定Keyの値も収集してきてくれます。
インベントリの収集
メタデータ収集設定の方法は、 AWS-GatherSoftwareInventory
ドキュメントを実行するステートマネージャの関連付けを実施するのみとなります。参考マニュアルページ。
マネージドインスタンスでインベントリを手動設定する (CLI)
具体的コマンドはこちら。
$ aws ssm create-association \ --name "AWS-GatherSoftwareInventory" \ --targets "Key=tag:SSM-Inventory,Values=sample" \ --schedule-expression "cron(0 0 23 ? * SUN *)" \ --output-location "S3Location={OutputS3BucketName=s3-bucket-sample,OutputS3KeyPrefix=inventory/}" \ --compliance-severity "MEDIUM" \ --parameters "applications=Enabled,awsComponents=Enabled,billingInfo=Enabled,customInventory=Enabled,instanceDetailedInformation=Enabled,networkConfig=Enabled,services=Enabled,windowsRoles=Enabled,windowsUpdates=Enabled"
リソースデータの同期
ステートマネージャで収集してくると、System Managerコンソールに用意されたDashboard画面にて情報が表示されるようなります。しかしながら、 Resource Data Sync
という機能を利用することで、収集してきたメタデータをS3上ファイルに同期してくれるようなり、そのファイルを利用して、さらなる詳細な分析が可能となります。
まず、メタデータの同期先となるS3BucketのBucket Policyに、以下のようなポリシーを書きます。SSMのサービスがS3Bucketにアクセス可能とするポリシーとなります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SSMBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::s3-bucket-name" }, { "Sid": "SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::s3-bucket-name/prefix-name/*/accountid=aws-account-no/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
次に create-resource-data-sync
コマンドを実行することで、現在収集されているメタデータがS3Bucket側に同期されるようになります。コマンド実行後、同期処理が始まるので、初期同期が完了するのはちょっとだけかかります。
$ aws ssm create-resource-data-sync \ --sync-name "sample-resource-data-sync" \ --s3-destination "BucketName=s3-bucket-name,Prefix=prefix-name/,Region=ap-northeast-1,SyncFormat=JsonSerDe"
aws ssm create-resource-data-sync
同期が完了してしまえば、ファイルがS3上にある訳で、後はAthenaなりQuickSightなりで好きにしてね、ということですね。