devops-israel / aws-inventory

AWS Inventory in a single HTML file using JS AWS-SDK & Bootstrap
MIT License
390 stars 121 forks source link
aws aws-sdk-js

AWS Inventory

A single-file that shows the whole inventory of your AWS services on a single page.

Usage

How it looks

screenshot

How it works

The AWS Inventory is using the AWS JavaScript SDK and a sprinkle of Bootstrap, this allows to show results in pretty tables from any AWS API.

The syntax to describe table headers and a pointer to the relevant array in the results is using JMESPath syntax (jmespath.org).

Example of the EC2 listing:

{ service: "EC2",
  api: "describeInstances",
  title: "EC2 Instances",
  id: "ec2-instances",
  jmespath: "Reservations[].Instances",
  headings: ["InstanceId", "InstanceType", "ImageId", "LaunchTime", "KeyName", "State.Name"]
}

This specifies that it should use the AWS.EC2() APIs, and call the describeInstances method. Then create HTML elements that include the id ec2-instances and a button with the title EC2 Instances.

The returned results, as documented in callback section for describeInstances in the official documentation, are searched for Reservations[].Instances for an array of relevant data to be put into a table.

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeInstances-property

The table will include the headers described in headings, which also use JMESPath, like in the example for State.Name so that nested elements can be references.

Notes

The AWS JavaScript SDK does not support all the AWS services when used in a browser, because not all services have CORS enabled.

The list of CORS supported services is available at https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md

Contributing

We follow the "fork-and-pull" Git workflow.

Copyright and Licensing

MIT License, as described in the LICENSE file

Copyright 2018 © Devops Israel, Evgeny Zislis and contributors