funasaki memo

このブログ上の投稿は個人のものであり、所属する企業を代表する投稿ではありません。所属:AWSのSolutions Architect

AWS Systems Managerでインベントリを実行して、/home/ec2-user以下にある*.txtファイルを確認、さらにカスタムインベントリで独自メタデータも登録・確認してみる。

事前にEC2インスタンスにSSM(Systems Manager)エージェントをインストール済みとします。

まずはAWS Systems Managerのマネージメントコンソールにて、Inventoryを選択して、セットアップインベントリを選択します。
f:id:kenjifunasaki:20180427192524p:plain

インスタンスの手動選択」にて、該当するインスタンスを選択します。スケジュールはCronスケジュールビルダーを選んで、今回は30分ごとの実行とします。
f:id:kenjifunasaki:20180427192914p:plain

同じ画面のパラメータにて、デフォルト設定のままで、ファイルの部分のパスに/home/ec2-userを、パターンに*.txtを、再帰的にチェックを入れて「セットアップインベントリ」を選択します。
f:id:kenjifunasaki:20180427194151p:plain

Managed Instancesを選択して、先ほど指定したインスタンスを選択します。
f:id:kenjifunasaki:20180427194001p:plain

インベントリタブを選択して、インベントリタイプにてAWS:Fileを選択します。
f:id:kenjifunasaki:20180427194357p:plain

最初は何もFile情報が表示されませんが、少し時間がたってから確認すると、以下のようにファイルがあることが確認できます。
f:id:kenjifunasaki:20180427200023p:plain

カスタムインベントリを実行してみる

続いて、こちら にあるCustom Inventoryの方法を用いて、独自のメタデータインスタンスに割り当ててみます。

独自のメタデータインスタンスに割り当てる方法として、AWS CLIを使う方法が紹介されていたので、こちらでやってみます。

AWS CLIでコマンドを実行するのに必要な権限を割り当てた上で以下コマンドを実行します。

https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-walk-custom.html

State Managerを選択して、関連づけ(AWS-GatherSoftwareInventory)を選択して「関連付けの編集」を選択します。

aws ssm put-inventory --instance-id "xxxx" --items '[{"CaptureTime": "2018-04-30T10:01:01Z", "TypeName": "Custom:RackInfo", "Content":[{"RackLocation": "Bay B/Row C/Rack D/Shelf E"}], "SchemaVersion": "1.0"}]'

実行後に、そのメタデータが取得できるようになっているかを以下コマンドで確認します。

aws ssm list-inventory-entries --instance-id xxx --type-name "Custom:RackInfo"

結果は以下のように出力され、正しくメタデータが登録されていることがわかりました。

{
    "InstanceId": "i-005991248a5f30bc2",
    "TypeName": "Custom:RackInfo",
    "Entries": [
        {
            "RackLocation": "Bay B/Row C/Rack D/Shelf E"
        }
    ],
    "SchemaVersion": "1.0",[f:id:kenjifunasaki:20180430210852p:plain]
    "CaptureTime": "2018-04-30T10:01:01Z"
}

Management Console上でも以下のようにカスタムインベントリ情報を選択ができ、
f:id:kenjifunasaki:20180430210819p:plain

登録したメタデータも確認ができました。
f:id:kenjifunasaki:20180430210852p:plain

これで、デフォルトのインベントリ以外でも任意のメタデータをマネージドインスタンスごとに登録・取得できますね。

注意事項

一つのマネージドインスタンスに複数のインベントリを関連づけることはできません。すでに別のインベントリが関連付けされていると、別のインベントリの実行が失敗しますので、ご注意ください。