aws gate-aws ssm会话管理器客户端cli

aws-gate的Python项目详细描述


AWS门

Build StatuscodecovCodacy BadgePyPI version

AWS SSM会话管理器客户端

动机

我经常使用aws,我厌倦了处理堡垒主机带来的所有问题(另外一个实例必须维护、分发ssh密钥(共享ssh密钥对我来说不是一个选项),将ssh暴露给网络)。不久前,亚马逊发布了一个服务来修复这个-AWS Systems Manager Session Manager。但是,会话管理器的cli用户体验有限,并且缺少一些功能:

  • 能够通过其他方式(如dns、ip、tag、instance name、autoscaling group)连接到实例,因为aws cli只支持通过实例id连接
  • 通过会话管理器存储连接信息的配置文件支持

aws gate试图解决这些问题。

开始

这些说明将为您在本地计算机上启动和运行项目的副本,以便进行开发和测试。有关如何在实时系统上部署项目的说明,请参阅部署。

先决条件

  • python 3.5+(早期的python3版本也应该可以工作)
  • session-plugin-manager来自aws
  • SSM代理版本2.3.68.0或更高版本必须安装在我们要连接到的EC2实例上
  • 实例配置文件的适当IAM权限

安装

pip install aws-gate

或通过自制

brew tap xen0l/homebrew-taps
brew install aws-gate

功能

配置和配置支持

您可以存储有关连接到实例的信息(名称、区域和配置文件),并且aws gate将为您提供一切服务。配置文件存储在~/.aws gate/config中,并具有以下yaml语法:

hosts:
  - alias: backend-pre
    name: backend
    profile: preproduction
    region: eu-west-1
  - alias: backend-pro
    name: backend
    profile: production
    region: eu-west-1

defaults:
  profile: development
  region: eu-west-1

其中hosts存储连接信息和defaults要使用的默认配置设置。要连接到实例backend pre,请执行:

aws-gate session backend-pre

您可以在~/.aws gate/config.d中放置其他配置文件。当您正在处理不同的项目或需要在您的团队中共享配置时,这是理想的选择。

通过不同的实例标识符查询实例

aws gate支持查询具有以下标识符的实例:

  • 实例ID
aws-gate session i-0772e4c1dcdd763b6
  • DNS名称
aws-gate session ec2-34-245-174-132.eu-west-1.compute.amazonaws.com
  • 专用DNS名称
aws-gate session ip-172-31-35-113.eu-west-1.compute.internal
  • IP地址
aws-gate session 34.245.174.13
  • 专用IP地址
aws-gate sssion 172.31.35.113
  • 标签
aws-gate session Name:SSM-test
  • 名称(在引擎盖下使用标签标识符)
aws-gate session SSM-tes

调试模式

如果遇到问题,可以通过设置gate\u debug获取详细的调试日志环境变量:

export GATE_DEBUG=1

设置环境变量后,将自动启用调试模式:

% aws-gate session test
2019-05-26 01:18:23,535 - aws_gate.config  - DEBUG - Located config file: /Users/xenol/.aws-gate/config
2019-05-26 01:18:23,538 - aws_gate.utils   - DEBUG - Obtaining boto3 session object
2019-05-26 01:18:23,549 - aws_gate.utils   - DEBUG - Obtained configured AWS profiles: default development preproduction production
2019-05-26 01:18:23,550 - aws_gate.utils   - DEBUG - Obtaining boto3 session object
2019-05-26 01:18:23,560 - aws_gate.utils   - DEBUG - Obtained configured AWS profiles: default development preproduction production
2019-05-26 01:18:23,560 - aws_gate.utils   - DEBUG - Obtaining boto3 session object
2019-05-26 01:18:23,574 - aws_gate.utils   - DEBUG - Obtaining ssm client
2019-05-26 01:18:23,608 - aws_gate.utils   - DEBUG - Obtaining boto3 session object
2019-05-26 01:18:23,636 - aws_gate.utils   - DEBUG - Obtaining ec2 boto3 resource
2019-05-26 01:18:23,694 - aws_gate.query   - DEBUG - Querying EC2 API for instance identifier: SSM-test
2019-05-26 01:18:24,029 - aws_gate.query   - DEBUG - Found 1 maching instances
2019-05-26 01:18:24,030 - aws_gate.query   - DEBUG - Matching instance: i-0772e4c1dcdd763b6
2019-05-26 01:18:24,030 - aws_gate.session - INFO  - Opening session on instance i-0772e4c1dcdd763b6 (eu-west-1) via profile default
2019-05-26 01:18:24,030 - aws_gate.session - DEBUG - Creating a new session on instance: i-0772e4c1dcdd763b6 (eu-west-1)
...

调试模式还允许在出现崩溃或其他问题时打印python堆栈跟踪。

许可证

此项目在bsd许可下获得许可-有关详细信息,请参见LICENSE.md文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法访问远程pentaho biserver   带有级联类型的OneToMany上的java Hibernate TransientObject异常。如果我们在保存之前调用迭代器()就可以了   java如果用户输入的“数字”超过了用于解释该数字的内存大小,那么正确的测试方法是什么?   java错误400错误请求JqGrid   java如何防止修改类中的私有字段?   java从一个Bean创建两个JPA表?   在Java中生成一个在JVM关闭后仍能生存的进程   java将字符反向复制到字符数组   使用opencv的java人脸检测不起作用   java差异代码覆盖率   robohelp如何使用Java链接Robo帮助中的URL?   java解码自定义加密文件   设计模式:减少java中几乎相同的两种方法的重复代码   java如何在数组中查找最大整数?   java Mockito spy:尝试在spy类方法中使用doReturn,但使用的是原始方法   java JButton在JTable中选择行时不重新启用   java当我尝试git推heroku时,我得到一个错误   java为什么组织。阿帕奇。薛西斯。解析器。SAXParser在utf8编码的xml中不跳过BOM?   selenium Java。jar文件大小