Great question! awme (pronounced "awe me") is a scalable, restful, hot cache of your Amazon host and security group instance metadata!
awme consists of two main parts:
###amazon_metadata_collector.py Fetches host and security group instance data using the AWS api (via boto) at a configurable interval and serializes it to disk.
###restful_metadata_cache.py Loads and periodically refreshes from pre-serialized metadata on disk and serves it from memory as json from a restful api exposed via flask.
True Amazon has an API, but that API also has latency. Sometimes it's under one second. Other times it can be a minute or more for each call. You could make 1000's of calls to awme in the same amount of time. There are also hard limits on how frequently Amazon will allow you to call their api's. AwMe's only restriction is what it can physically handle. If it's not enough for your use case simply launch more instances and place them behind an ELB! :)
- Python 2.7
- Flask
On amazon linux...
- sudo yum install git gcc
- sudo pip install Flask
- sudo pip install networkx
- sudo mkdir /opt/awme
- cd /opt/awme
- sudo git clone https://github.com/xavierpayne/awme.git
Apache 2.0 Read the full license here: https://github.com/sharethis-github/awme/blob/master/LICENSE ;)
The current version allows you to cache information from all regions you specify in the config.ini file.
Like awme itself the documentation is currently a work in progress. So don't taze me bro!
Yeah, I know, right!? I'm a java guy and relatively new to Python so if you'd care to help me out with that stuff drop me a line or better create a branch and submit a pull request! :)
Primarily that would be me: Christopher Vincelette