使用aws stepfunctions的python库和dsl

heaviside的Python项目详细描述


重型

heaviside是一种领域特定语言(dsl)和python编译器/支持 用于处理AWS StepFunctions的库。

为什么

stepfunctions dsl的原因是state machine language,而 灵活,难以编写和维护。dsl为 编写阶跃函数状态机及常用流量控制服务器 声明。

DSL

StepFunctionDSL文档描述了heaviside dsl。

开始

在本文档中,.hsd将用于表示用 赫维赛德DSL。扩展名.sfn将用于表示stepFunction 在aws state machine language中写入的文件。

安装

pip install heaviside

cli脚本

heaviside包安装名为heaviside的脚本,该脚本提供一个cli 去图书馆。不带参数或使用--help运行命令 -h标志将提供详细帮助。

美国焊接学会证书

所有子命令(除了compile)都连接到aws以操作stepfunction。 有多种方法可以定义aws凭据,按以下顺序列出 优先。

  • 显式地将值作为命令行参数或环境变量传递
  • 将文件路径传递给带有参数的json文件
  • 让Boto3尝试解析密钥/访问密钥
  • 查看当前AWS区域的EC2元数据
  • 查看AWS帐户ID的当前IAM用户

compile子命令不连接到aws,但使用区域和 解析任务ARN时的帐户ID值。如果heaviside dsl文件已满 任务arns或编译后的文件不会上载到aws这些值可以 空白。

注意:由于compile没有连接到aws,因此 以上列表对于传递区域和帐户ID值有效。

编译

要将heaviside文件编译成aws stepfunction文件,请使用compile 副司令部。

$ heaviside compile state_machine.hsd -o state_machine.sfn 

创建StepFunction

heaviside脚本可以编译结果文件并将其上载到aws。

$ heaviside create state_machine.hsd AwsIamStepFunctionRole

参数:

  • AwsIamStepFunctionRole:stepfunction将使用的aws iam角色 执行时。最常见的情况是 控制哪些lambda和活动 StepFunction具有执行权限。

删除StepFunction

^ {}子命令可用于删除现有的步进函数

$ heaviside delete state_machine

执行stepFunction

可以使用start子命令开始执行stepfunction。

$ heaviside start --json "{}" state_machine

note:默认情况下,start子命令将等到 执行已完成,并将打印StepFunction的输出。

python库

heaviside包安装python库heaviside。有三个 库的组件。

  • heaviside.compile:用于将heaviside dsl文件编译为 aws步进函数。
  • heaviside.StateMachine:用于创建和执行步骤函数的类。
  • heaviside.activities:包含几个helper类的子模块 运行StepFunction活动的框架。 有关详细信息,请参见Activities document

相容性

目前,heaviside只在python 2.7和3.5中进行过测试。

相关项目

  • statelint:一个验证aws stepfunction定义文件的ruby项目。 包括确保所有状态都是可访问的检查。 有助于开发新的StepFunction以确保 是正确的。它将抓住结构问题 不检查。

法律

在满足以下条件的情况下,允许使用或重新分发源和/或二进制形式的boss系统,无论是否进行修改:

  1. 重新分配源代码或二进制格式必须遵守任何适用软件的条款和条件许可证。
  2. 最终用户文件或通知,无论是作为再分配的一部分,还是作为法律或科学披露(如出版物)或广告的一部分分发,都必须包括以下确认:BOSS软件系统是由约翰霍普金斯大学应用物理实验室(JHU/APL)设计和开发的。
  3. 未经事先书面许可,不得使用“BOSS”、“JHU/APL”、“约翰霍普金斯大学”、“应用物理实验室”、“Microns”或“IARPA”等名称为本软件的产品背书或促销。如需书面许可,请联系BossAdmin@jhuapl.edu
  4. 这个源代码和库的发布是希望它会有用,但它的提供没有任何形式的保证。

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

推荐PyPI第三方库


热门话题
java linkedlist字符串排序算法   枚举类上出现maven错误的java ProGuard   java如何将ActionBar徽标设置为文本(TextView)?   swing当剪贴板内容在java之外发生更改时,是否可以得到通知   javascript从网络摄像头拍摄照片并保存到服务器上   java如何使用流将列表中的选定元素复制到另一个列表   使用eBay API获取产品详细信息的java   java ANTLR树中的子级数未知   java Selenium:访问'file:///C://Users//DELL//Desktop//Project%20UI//FastHome.html“剧本被拒绝了   如何在Java web项目中抛出一个无法捕获并结束执行的异常?   java有人能解释强引用、软引用、弱引用和虚引用之间的区别以及它们的用法吗?   java根据父级Android Studio的维度设置宽度和高度   包含对象数组列表的java序列化对象   返回奇怪字符的java libimobiledevice   java数据库无法以html格式存储   java Google play服务查找我的位置很慢   GCC原生Java编译器作为典型开源Java项目的平台有多实用?   java如何将从Web服务接收的二进制64格式的图像转换为实际图像?   java访问Tomcat 8上的属性文件