未提供项目描述
项目描述
fabnodes
fabnodes
是一个Python CLI应用程序,用于创建预制lambda节点。使用这些“节点预制件”,可以创建复杂分布式进程。
需求
Python需求存储在requirements.txt中。fabnodes
目前使用cfndsl
来生成CloudFormation JSON文件。安装cfndsl
的说明可通过提供的链接获取。
基本设置
安装需求
$ pip install -r requirements.txt
运行应用程序
$ python -m fabnodes --help
运行测试(待办事项)
$ pytest
预制:基本节点
基本节点(samples/basic_node/node.py
)将创建具有以下功能的最基本的节点
N
SQS输入,其中N
可以是0或更大M
SNS输出,其中M
可以是0或更大- 1个Lambda函数,可以在任何输入上触发,并可以写入任何输出
以下是一个试图说明的杰作
==========================================================================
|----------- Basic Node ----------|
.. -> SNS(SomeNode.alpha) ----\ /--> SNS(output) -> ..
---> SQS(input) -> Lambda
.. -> SNS(random topic) ---/ \--> (something)
==========================================================================
要创建此节点,您的cwd
需要与node.py
相同
fabnodes create node.py --account-arn XXXXXXXXXXXX
目前,由于安全原因,必须传递account-arn
这将调用创建上述基础设施所需的CloudFormation调用。
用例
基本节点有以下用例
- 源节点:从输入源(不是另一个预制节点)读取的节点,然后可以通过主题(
0:M
节点)转发到多个节点 - 路由器:一个节点,可以接收输入并通过命名主题(1:M节点)将其分配给专门设计的工人(其他预制节点)。
- 工人:一个监听主题、执行特定任务然后创建输出的节点(1:1节点)。
- 摄入:一个监听多个主题、消费数据并然后为非预制节点生成输出的节点(M:0节点)。
示例:node.py
以下是对提供的示例的解释。
@fablib.Distribution('jlh-dev-lambda-functions')
@fablib.Inputs([
{'name': 'Router', 'source': 'snsRouterTopicId'}])
@fablib.Outputs([
{'name': 'Alpha'}])
@fablib.Node('BasicNode', 'comRoaetFabnodeSample', 'Basic Node')
def lambda_handler(events, context):
client = boto3.client('sns')
sns_target_arn = os.environ['Alpha']
body_content = json.dumps(events)
response = client.publish(
TargetArn=sns_target_arn,
Message=json.dumps({'default': body_content}),
MessageStructure='json'
)
print(response)
lambda_handler
方法定义得和正常的 lambda 处理器完全一样- 装饰器
Distribution
:定义了将代码放入的 S3 桶Inputs
(字典列表):创建一个订阅定义的 SNS 主题的 SQS 触发器Outputs
(字典列表):创建一个可以参考的 SNS 主题,可以在os.environ
字典中使用Node
:定义了 lambda 函数的名称、堆栈的名称和堆栈的描述- 堆栈的名称可以在其他预制中用作参考以创建输入/输出连接
参考
fabnodes
是由 https://github.com/roaet/rorochip-cookies 生成的 Python CLI 应用程序
关闭
fabnodes-0.0.7.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc6f283c3a67edd84cd57e52652cb75e752f9b5942f215444160d254e0370afd |
|
MD5 | 3cbd6ccc049c224d7b0153d233007993 |
|
BLAKE2b-256 | 9a3e0f24272705c2f163db4f716518be7d09a77aa5da241aa9dea4e10bb0d893 |