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第三方库


热门话题
在Eclipse中使用多个调用在一行上打印java   javajackson序列化问题。只有同一实体的第一个对象可以很好地序列化   Java中Deflate函数的等价充气   使用customlitview的java Android actionbar搜索   java“<T>T get()”是什么意思?(它有用吗?)   目标c使用CommonCrypto使用AES256加密,使用OpenSSL或Java解密   java在运行时更新资源文件   fileinputstream在java中访问并将数据写入现有文件   带集群的java Android Mapbox我希望每个功能都有不同的标记图像   java JDK8>JDK10:PKIX路径生成失败:SunCertPathBuilderException:找不到请求目标的有效证书路径   java使用Hk2生成具有指定构造函数参数的实例   为什么这个系统。出来Java中的println()打印到控制台?   java目录和文件名连接不起作用   使用mockito和通配符绘图的java