Summoner is a lightweight, VDI-client-like solution for AWS EC2 using AWS SSM. It consists of a simple UI which allows:
- Stopping, starting or restarting Instances
- Initiating connections to Instances over RDP, SSH, or VNC
- This can be extended to support other protocols
As provided, Summoner is both a complete python package and a set of modules you can use in your own projects.
- Summoner (package) - Install with your choice of package manager and start using Summoner right away.
- Summoner (class) - The full Summoner UI.
- Evocation (class) - An extension of the SSMPlugin class. Handles starting/stopping the plugin and running a function to establish a connection to the Instance.
- SSMPlugin (class) - Runs the Session Manager Plugin.
See install instructions here.
See install instructions here.
The SSM agent is pre-installed on almost all AWS Marketplace AMIs. If you are using a custom AMI, see install instructions here.
AWS SSM can be enabled at the account level or on individual Instances using an IAM Instance Profile.
See instructions here.
See instructions here.
- To use Evocation or the SSMPlugin modules, users will need the permissions described here.
- To use the full Summoner UI, users will also need permissions to start and stop Instances.
One of the main benefits of AWS SSM is that it requires no inbound access. The Instances' Security Groups do not need any inbound rules in order for Summoner to work.
For added security, use a VPC Endpoint for AWS SSM See instructions here.
Summoner supports most AWS authentication options. Credential expiry will cause any connection to end abrupty, so using long-lived or refreshable credentials is recommended. Summoner supports any credential handler that supports Credential Provider. Examples include saml2aws, aws-azure-login, and aws-vault.
Summoner has several usage modes. In any mode, Summoner will start the Instance if a connection is initiated while it is stopped.
Use config files for simplified access to a set of Instances using the same AWS Profile/Role. In Config mode, users are presented with a menu from which they can manage their Instances, connect to them, or make changes to the config file.
Select from a list of Instances in a specified region. On connection end, Summoner will ask if the Instance can be stopped.
Provide details of an Instance to connect to. On connection end, Summoner will stop the Instance if it started it. Else, it will exit immediately.
When using Summoner (class) in your own project, you can add other connection types.
This begins with writing a new connector. See the connectors module for examples.
- Connectors must accept
**kwargs
. - Connectors will be passed the Evocation.
Once a connector has been written, use Summoner.add_connection_type() to add menu options, and config file support.