概要
SystemsManagerの中でインスタンス状態の管理を行えるInventoryを使ってインスタンスの管理手順をまとめました。
Inventoryの管理できるようにすることでアプリケーションのインストールなども行えるようになります。
EC2への確認
- EC2へは以下のコマンドでインストールを行います
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
PCの確認
-
WindowsPCの管理にSkyseaなどを使って行うことが多いかと思いますが、AWSのSystemsManagerの機能を使って確認することもできるのでやってみます。
-
Windowsを管理対象にするためにマルチアクティベーションの設定を行います。
- AWS Workspacesに対しても同様に管理することが行えます。
-
以下のようにSystemsManagerのアクティベーションをまず行います。
-
以下で発行されるコード、IDをメモします。後続のコマンドで使用します。
-
以下のコマンドを管理下に置きたい端末で実行します。PowerShellを管理者モードで実行します。
$code = "eicDJtfJ97HSxIfdI3Mz"
$id = "30acfca1-0c4e-4b0a-a2db-66e4d8caa4ef"
$region = "ap-northeast-1"
$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force
cd $dir
(New-Object System.Net.WebClient).DownloadFile("https://amazon-ssm-$region.s3.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe")
Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log", "CODE=$code", "ID=$id", "REGION=$region") -Wait
Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration")
Get-Service -Name "AmazonSSMAgent"
- 管理者の確認のウィンドウが起動するので応答を行います。
アプリの監視
-
インベントリをセットアップします。
-
登録すると以下のようにインベントリの画面からアプリケーションが確認できます。
-
EC2
-
windows
-
カスタムインベントリを設定することで各インスタンスにjson形式で記載した内容を取得できます。
- 設定する場所は以下のようになります。詳細は参考資料を参照してください。
- Linux
/var/lib/amazon/ssm/node-id/inventory/custom
- windows
%SystemDrive%\ProgramData\Amazon\SSM\InstanceData\node-id\inventory\custom
- Linux
- 設定する場所は以下のようになります。詳細は参考資料を参照してください。
{
"SchemaVersion": "1.0",
"TypeName": "Custom:TestData",
"Content": {
"Case1": "red",
"Case2": "blue"
}
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SSMBucketPermissionsCheck",
"Effect": "Allow",
"Principal": {
"Service": "ssm.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::{バケット名}"
},
{
"Sid": " SSMBucketDelivery",
"Effect": "Allow",
"Principal": {
"Service": "ssm.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::{バケット名}/*/accountid={アカウントID}/*",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "{アカウントID}",
"s3:x-amz-acl": "bucket-owner-full-control"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:ssm:*:{アカウントID}:resource-data-sync/*"
}
}
}
]
}
一覧を画面で見たいときの設定
-
S3の作成
- Athena用、Glue用にバケットを作成します。
-
Glueの設定
- Glueを使ってインベントリの情報を出力しているS3バケットから情報を集約します。
-
Cralerを実行するとインベントリの情報を収集します
-
Athenaでクエリを実行することでsqlのように結果を確認することができます。CSVも出力できるので管理などを行いたいときに活用できます
参考資料
- https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-SystemsManager-Inventory_0630_v1.pdf
-
https://dev.classmethod.jp/art![008_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/5168a1a2-1c93-90bb-16b3-5cc8cd04adca.png)
icles/aws-systems-manager-on-premise-windows-2019/ - https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-inventory-custom.html
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-inventory-datasync.html