Amazon EC2 Systems Manager
User Guide

About Systems Manager Inventory

When you configure Systems Manager Inventory, you specify the type of metadata to collect, the instances from where the metadata should be collected, and a schedule for metadata collection. These configurations are saved with your AWS account as a State Manager association.


Inventory only collects metadata. It does not collect any personal or proprietary data.

The following table describes the different aspects of Inventory collection that you configure.

Configuration Details

Type of information to collect

You specify the type of metadata that Inventory collects from your managed instances. You can configure inventory to collect the following types of metadata:

  • Instance details: system name, OS name, OS version, last boot, DNS, domain, work group, OS architecture, etc.

  • Network configuration: IP address, MAC address, DNS, gateway, and subnet mask.

  • Application details: application names, publishers, and versions.

  • AWS component details: EC2 driver, agents, and versions.

  • Windows Server Update history.

  • Custom inventory details. Custom inventory is described in more detail later in this section.

Instances to collect information from

You can individually select instances or target groups of instances by using Amazon EC2 tags.

When to collect information

You can specify a collection interval in terms of minutes, hours, days, and weeks. The shortest collection interval is every 30 minutes.

Depending on the amount of data collected, the system can take several minutes to report the data to the output you specified. After the information is collected, the metadata is sent over a secure HTTPS channel to a plain-text AWS store that is accessible only from your AWS account. You can view the data in the Amazon S3 bucket you specified, or in the Amazon EC2 console on the Inventory tab for your managed instance. The Inventory tab includes several predefined filters to help you query the data.

To start collecting inventory on your managed instance, see Configuring Inventory Collection and Collecting Inventory by Using the AWS CLI.

Working with Custom Inventory

You can assign any metadata you want to your instances by creating custom inventory. For example, let's say you manage a large number of servers in racks in your data center, and these servers have been configured as Systems Manager managed instances. Currently, you store information about server rack location in a spreadsheet. With custom inventory, you can specify the rack location of each instance as metadata on the instance. When you collect Inventory by using Systems Manager, the metadata is collected with other Inventory metadata. You can then port all Inventory metadata to a central Amazon S3 bucket by using Resource Data Sync and query the data.

To assign custom inventory to an instance, you can either use the Systems Manager PutInventory API action, as described in Assigning Custom Inventory Metadata to an Instance. Or, you can create a custom inventory JSON file and upload it to the instance. This section describes how to create the JSON file.

{ "SchemaVersion": "1.0", "TypeName": "Custom:RackInformation", "Content": { "Location": "US-EAST-01.DC.RACK1", "InstalledTime": "2016-01-01T01:01:01Z", "vendor": "DELL", "Zone" : "BJS12", "TimeZone": "UTC-8" } }

You can also specify multiple items in the file, as shown in the following example.

{ "SchemaVersion": "1.0", "TypeName": "Custom:PuppetModuleInfo", "Content": [{ "Name": "puppetlabs/aws", "Version": "1.0" }, { "Name": "puppetlabs/dsc", "Version": "2.0" } ] }

The JSON schema for custom inventory requires SchemaVersion, TypeName, and Content sections, but you can define the information in those sections.

{ "SchemaVersion": "user_defined", "TypeName": "Custom:user_defined", "Content": { "user_defined_attribute1": "user_defined_value1", "user_defined_attribute2": "user_defined_value2", "user_defined_attribute3": "user_defined_value3", "user_defined_attribute4": "user_defined_value4" } }

TypeName is limited to 100 characters. Also, the TypeName section must start with Custom. For example, Custom:PuppetModuleInfo. Both Custom and the Data you specify must begin with a capital letter. The following examples would cause an exception: "CUSTOM:RackInformation", "custom:rackinformation".

The Content section includes attributes and data. These items are not case-sensitive. However, if you define an attribute (for example: "Vendor": "DELL"), then you must consistently reference this attribute in your custom inventory files. If you specify "Vendor": "DELL" (using a capital “V” in vendor) in one file, and then you specify "vendor": "DELL" (using a lowercase “v” in vendor) in another file, the system returns an error.


You must save the file with a .json extension.

After you create the file, you must save it on the instance. The following table shows the location where custom inventory JSON files must be stored on the instance:

Operating System Path





For an example of how to use custom inventory, see Get Disk Utilization of Your Fleet Using EC2 Systems Manager Custom Inventory Types.

Related AWS Services

Systems Manager Inventory provides a snapshot of your current inventory to help you manage software policy and improve the security posture of your entire fleet. You can extend your inventory management and migration capabilities using the following AWS services.

  • AWS Config provides a historical record of changes to your inventory, along with the ability to create rules to generate notifications when a configuration item is changed. For more information, see, Recording Amazon EC2 managed instance inventory in the AWS Config Developer Guide.

  • AWS Application Discovery Service is designed to collect inventory on OS type, application inventory, processes, connections, and server performance metrics from your on-premises VMs to support a successful migration to AWS. For more information, see the Application Discovery Service User Guide.