amazon状态的python对象模型

py-asl的Python项目详细描述


py asl

amazon状态语言的python对象模型

此包提供了用于创建步骤函数的对象模型

示例

简单的hello world示例

importpy_asldefhello_world():state_machine=py_asl.StateMachine(Comment="A simple minimal example of the States language",StartAt="Hello World")state=py_asl.TaskState("Hello World",Resource="arn:aws:lambda:us-east-1:123456789012:function:HelloWorld",End=True)state_machine.States.append(state)hw=state_machine.dumps(indent=2)returnhwprint(hello_world())

创建并行任务的示例

importpy_asldefparallel_states():state1=py_asl.TaskState("Hello World",Resource="arn:aws:lambda:us-east-1:123456789012:function:HelloWorld",End=True)state2=py_asl.TaskState("Goodbye World",Resource="arn:aws:lambda:us-east-1:123456789012:function:GoodbyeWorld",End=True)parallel_state=state_model.ParallelState("Hello Goodbye",Branches=[state1,state2],Next="Foo")ps=parallel_state.dumps(indent=2)returnpsprint(parallel_states())

数组和生成的模板

模板变量,数组的占位符很棘手,所以我实现了 一个可能不适合所有情况的解决方法…让我们这么说吧 您必须部署一个步骤函数,该函数有一个调用ecs/fargate的任务 任务,需要指定vpc配置。在这种情况下你需要 提供包含子网列表和安全组列表的参数。

您的代码可能如下所示:

importpy_aslParameters={"Cluster":"${cluster_arn}","TaskDefinition":"${task_definition_arn}","LaunchType":"FARGATE","NetworkConfiguration":{"AwsvpcConfiguration":{"SecurityGroups":"[${security_groups}]","Subnets":"[${subnets}]"}}}task=py_asl.TaskState("Run Fargate",Resource="arn:aws:states:::ecs:runTask.sync",End=True,Parameters=Parameters)state_machine=py_asl.StateMachine(Comment="Step Function to Test Invoking ECS/Fargate Task",StartAt="Run Fargate",States=[task])if__name__=='__main__':print(state_machine.dumps(indent=2))

注意:安全组的数组将转换为:

{"Comment":"Step Function to Test Invoking ECS/Fargate Task","StartAt":"Run Fargate","States":{"Run Fargate":{"Resource":"arn:aws:states:::ecs:runTask.sync","End":true,"Parameters":{"Cluster":"${cluster_arn}","TaskDefinition":"${task_definition_arn}","LaunchType":"FARGATE","NetworkConfiguration":{"AwsvpcConfiguration":{"SecurityGroups":${security_groups},"Subnets":${subnets}}}},"Type":"Task"}}}

预计你的地形代码提供和数组。例如,

variable "security_groups" {
    type = "list"
    default = ["ab-12345", "bc-56788"]
}

variable "subnets" {
    type = "list"
    default = ["itsy", "bitsy"]
}

替换模板中的值时,可以使用:

data "template_file" "step_function" {
    template = "${file("${path.module}/step-function.json.tpl")}"
    vars = {
        ...
        security_groups = "${jsonencode(var.cluster_security_groups)}"
        subnets = "${jsonencode(var.cluster_subnets)}"
    }
}

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

推荐PyPI第三方库


热门话题
java对网页中的信息进行排序   单击特定按钮打开特定图像的java(Android)   java如何从存储过程返回多行?   java JAXB混合版本?未定义的“必需”属性   java如何在EclipseIDE中打开一个类型的所有子类?   在java中使用Jtidy和Itext将html转换为pdf时未应用样式   应用程序加载失败时的java Spring事件/通知   java如何以相同的顺序在另一个列表中断言一个列表   java在5秒后加载新活动   线程“main”java中出现异常。lang.unsatifiedLinkError:java中没有数学。图书馆路径   java在节点上添加标签会忽略属于JavaFX中节点的MouseListener   javaxstream与继承