轻松创建、运行和管理aws step功能
sfini的Python项目详细描述
斯菲尼
轻松创建、运行和管理AWS步骤功能发音为“sfin ee”。
这个包旨在提供一个用户友好的界面来定义和
运行步骤功能您可以在sfini
中执行的与AWS步骤交互的操作
功能:
- 实施和注册活动
- 定义和注册状态机
- 开始、跟踪和停止执行
- 为活动安排工人
- 获取注册活动和状态机的信息
- 注销状态机和活动
注意:这不是一个将python代码转换为step函数状态的工具 机器。为此,请参见pyawssfn
开始
先决条件
安装
pip install sfini
用法
文件
检查documentation或使用 内置帮助:
pydoc sfini
importsfinihelp(sfini)
aws阶跃函数
AWS Step Functions(sfn)是 工作流管理服务,提供在 直截了当的时尚。进一步的文档可以在 AWS documentation。
step函数的使用包括两种类型:状态机和活动。 状态机是定义 应用程序,由多种类型的“状态”或 工作流程。活动处理对输出的输入,并用于处理 状态机中的任务“状态”(多个任务状态可以具有相同的 分配给它的活动
一旦定义并注册了状态机(以及使用的
在不同的输入上运行状态机的执行
运行工作流sfini
允许您启动、停止并获取
这些处决。
状态机支持条件分支(因此也支持循环),重试 (有条件和无条件)、异常捕获、外部aws服务 支持运行任务、并行执行和输入输出处理。 外部服务包括aws lambda,因此您不必部署自己的 活动跑步者
一旦定义并注册了状态机和活动,就可以查看和 在the SFN web console中更新他们的详细信息
角色学习
每个状态机都需要一个角色arn(amazon资源名)。这是AWS IAM 允许状态机处理状态执行的角色arn。见AWS 步骤功能文档了解更多信息。
示例
找到了更多的例子in the documentation。
importsfini# Define activitiesactivities=sfini.ActivityRegistration(prefix="test")@activities.activity("addActivity")defadd_activity(data):returndata["a"]+data["b"]# Define state-machineadd=sfini.Task("add",add_activity)sm=sfini.construct_state_machine("testAdding",add)# Register state-machine and activitiesactivities.register()sm.register()# Start activity workerworker=sfini.Worker(add_activity)worker.start()# Start executionexecution=sm.start_execution(execution_input={"a":3,"b":42})print(execution.name)# testAdding_2019-05-13T19-07_0354d790# Wait for execution and print outputexecution.wait()print(execution.output)# 45print(execution.format_history())# ExecutionStarted [1] @ 2019-06-23 20:03:52.817000+10:00# TaskStateEntered [2] @ 2019-06-23 20:03:52.840000+10:00:# name: add# ActivityScheduled [3] @ 2019-06-23 20:03:52.840000+10:00:# resource: arn:aws:states:us-west-2:ACCID:activity:testaddActivity# ActivityStarted [4] @ 2019-06-23 20:03:53.954000+10:00:# worker: hostname-3a4fb480# ActivitySucceeded [5] @ 2019-06-23 20:03:55.028000+10:00# TaskStateExited [6] @ 2019-06-23 20:03:55.028000+10:00:# name: add# ExecutionSucceeded [7] @ 2019-06-23 20:03:55.028000+10:00# Output: 45# Stop activity workersworker.end()worker.join()# Deregister state-machine and activitiesactivities.deregister()sm.deregister()