aws的混沌工具包扩展

chaostoolkit-aws的Python项目详细描述


AWS混沌工具包扩展

构建状态>

>>/p/p>

本项目是一个收集了操作探测的集合,作为 混沌工具箱的扩展

安装

这个包需要python 3.5+

要从实验中使用,此包必须安装在python中 已经存在的环境。

$ pip install -U chaostoolkit-aws

用法

要使用此包中的探测和操作,请将以下内容添加到 实验文件:

{"name":"stop-an-ec2-instance","provider":{"type":"python","module":"chaosaws.ec2.actions","func":"stop_instance","arguments":{"instance_id":"i-123456"}}},{"name":"create-a-new-policy","provider":{"type":"python","module":"chaosaws.iam.actions","func":"create_policy","arguments":{"name":"mypolicy","path":"user/Jane","policy":{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:ListAllMyBuckets","s3:GetBucketLocation"],"Resource":"arn:aws:s3:::*"}]}}}}

或者从az中随机选择一个:

{"name":"stop-an-ec2-instance-in-az-at-random","provider":{"type":"python","module":"chaosaws.ec2.actions","func":"stop_instance","arguments":{"az":"us-west-1"}}}

就这样!

请浏览代码以查看现有的探测和操作。

配置

凭证

此扩展使用引擎盖下的boto3库。此库期望 您已经正确配置了连接和 使用AWS服务进行身份验证。

一般来说,有两种方法可以做到这一点:

  • 您已经配置了运行 从用户范围内的凭证源进行实验(任何 做)。您还可以提供一个配置文件名,以便承担角色

    {"configuration":{"aws_profile_name":"dev"}}
  • 你明确地把正确的环境变量传递给实验 定义如下:

    {"secrets":{"aws":{"aws_access_key_id":"your key","aws_secret_access_key":"access key","aws_session_token":"token",}}}

    请注意,令牌是可选的。 然后,按如下方式使用:

    {"name":"stop-an-ec2-instance","provider":{"type":"python","module":"chaosaws.ec2.actions","func":"stop_instance","secrets":["aws"],"arguments":{"instance_id":"i-123456"}}}

其他AWS设置

除了身份验证凭据之外,还可以配置区域 你想用来对付的。在实验的顶层,添加:

{"configuration":{"aws_region":"us-east-1"}}

您还可以指定要承担的aws角色arn。这对aws很有帮助 具有多个帐户的系统,并在这些帐户上运行实验。 为了使用它,您最初使用的aws配置文件必须具有 承担给定角色的权限。如果满足了这些条件, boto3将发出对sts assempt撸role函数的调用。这个罐头 单独使用,或与"aws_profile_name"一起使用,如下所示:

{"configuration":{"aws_profile_name":"dev","aws_assume_role_arn":"arn"}}

贡献

如果您希望为这个包贡献更多的功能,那么 欢迎这么做。请,派生此项目,按照 常规PEP 8代码样式,喷洒测试并提交PR 复习< < /P>

混沌工具包项目要求所有贡献者必须签署 每个通信上的开发者原产地证书如果他们想合并 进入存储库的主分支。请确保你能遵守 提交PR前DCO的规则。

开发

如果您希望在此项目上进行开发,请确保安装开发 依赖关系。但首先,创建一个虚拟环境,然后安装 这些依赖关系。

$ pip install -r requirements-dev.txt -r requirements.txt 

然后,将您的环境指向此目录:

$ pip install -U chaostoolkit-aws
0

现在,您可以编辑这些文件,您的 环境,即使在本地从chaos命令运行时也是如此。

测试

要运行项目的测试,请执行以下操作:

$ pip install -U chaostoolkit-aws
1

添加新的AWS API支持

一旦设置了环境,就可以开始添加新的 通过添加新操作、探测和整个子包,aws api支持 对于那些。

BOTO支持的服务

这个包依赖于boto3将api调用包装成一个流畅的python 应用程序编程接口。一些较新的aws服务在boto3中还不可用,在这种情况下, 你应该读下一节。

假设您希望支持ec2子包中的新操作。

首先在ec2/actions.py中创建一个新函数:

$ pip install -U chaostoolkit-aws
2

如您所见,实际的代码很简单。你首先创建一个 ec2客户端并在该客户端上调用适当的方法 用期望的参数。我们按原样返回动作 由chaostoolkit记录,甚至用作稳态的一部分 假设探测(如果这是探测,而不是实际行动)。

您可以决定进行多个aws api调用,但最好保留 它很简单,所以从实验中作文更容易。尽管如此, 你也可以将它们直接组合成一个单独的动作 用例。

请参阅Chaos工具包文档以了解有关 配置机密对象。

一旦实现了该操作,就必须至少创建一个单元测试 在tests/ec2/test\u ec2\u actions.py测试模块中。例如:

$ pip install -U chaostoolkit-aws
3

通过使用内置的python模块来模拟对象,我们可以模拟 ec2 client和assert we edo确实调用了正确的方法 论据。我们鼓励您为不同的 条件。

最后,如果您选择完全添加对新aws api资源的支持, 您应该创建相应的子包。

BOTO不支持的服务(新的AWS功能)

如果您想要提供的支持是针对一个新的aws服务,而这个服务在boto中可以执行 尚不支持,这需要通过 请求包。假设我们有一个新的服务,boto3还不支持它

$ pip install -U chaostoolkit-aws
4

下面是一个关于现有api调用的示例(作为一个更具体的片段):

$ pip install -U chaostoolkit-aws
5

当使用signed_api_call时,您需要负责 传递参数。基本上,查看每个 API调用。

警告:应该注意的是,每当BOTO3实现API时, 包应该相应地更新,因为boto3是更多的版本阿蒂尔和 固体。

使您的新子包可被发现

最后,如果您已经完全创建了一个新的子包,则需要将其 混沌工具箱可以发现的能力。只需修改发现 函数的函数。例如,假设一个新的eks 子包,带有操作和探针:

$ pip install -U chaostoolkit-aws
6

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

推荐PyPI第三方库


热门话题
图像处理Java 8 ImageIO在Linux中无法正确读取JPEG   spring如何用Java 1.4兼容版本替换@Resource注释   java Http请求参数类型传播   在web浏览器中看不到Java Maven Tomcatplugin web应用程序   jvm在Java中使用直接内存的目的是什么?   如何从列表转换为字符串java   java setAdapter gridview发送上下文   SwingJava。方法上的lang.NullPointerException   java什么是shell脚本、makefile和ant文件   当使用getGraphics()方法时,java JPanel图形会闪烁   java如何将迭代转换为递归?   java为什么我的抽屉菜单在同一个XML上有ConstraintLayout时没有响应?   java如何在图像上画一个圆?   Android studio:Rabbitmq:Error:java。lang.ClassNotFoundException:类io。千分尺。果心仪器找不到仪表注册表