aws(学习笔记第二十三课)
- 开发
step functions状态机的应用程序
学习内容:
step functions状态机的概念- 开发简单的
step functions状态机
1. step functions状态机概念
- 官方说明文档和实例程序
AWS的官方给出了学习的链接和实例程序。使用SAM创建step functions
借助AWS Step Functions,可以创建工作流(也称为)状态机,以构建分布式应用程序、实现流程自动化、协调微服务以及创建数据和机器学习管道。
下图是一个step functions的实例,也就是说,可以编排工作流程,实现自动的批处理。同时,状态机的各种Action里面能够方便的调用AWS的各种服务。
-
状态的类型
state type 说明 Task 执行单一处理 Wait 一定时间上的停止等待⌛️ Pass 输入到输出的原样输出 Parallel 实行并行处理 Choice 进行选择条件处理 Fail 失败退出 Success 成功退出 -
状态机中一般的操作

-
2. 开发简单的step functions状态机
-
从
lambda函数执行开始

-
作成一个
lambda函数 (step-functions-lambda)
还是先作成一个lambda函数,step functions状态机只调用lambda函数。

-
lambda函数的代码export const handler = async (event) => { const response = { statusCode: 200, body: JSON.stringify('Hello from ' + event.who), }; return response; };注意,这里参数
event是调用step functions的设定的参数,之后调用的时候会设定。
为了确认role,lambda和step functions指定的时候,都默认使用AWS作成一个新的role,看看AWS自动生成的role的,策略和信任关系。 -
设定
lambda的role(采用默认作成一个新的)

查看自动作成的lambda函数的role

- 权限策略为以下。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "arn:aws:logs:ap-northeast-1:081353481087:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:ap-northeast-1:081353481087:log-group:/aws/lambda/step-functions-lambda:*" ] } ] } - 信任关系为以下。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 权限策略为以下。
-
-
接着使用
lambda函数创建step functions- 创建
step functions

注意,这里region必须选用和lambda函数同样的,否则AWS不能选择lambda

- 默认让
AWS创建新的role,来设定step functions的权限
为了方便观察step functions的权限设定,使用AWS自动提供的设定一个新的role

- 默认让
AWS创建新的role,来设定step functions的权限
- 查看自动生成的
role的策略设定

看出这里,已经自动赋予LambdaInvoke的策略(第一个)。 - 查看
信任关系
当然,这里会给信任关系里面加上states.amazonaws.com,即状态机{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "states.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 查看自动生成的
- 创建
-
执行创建的
step functions- 准备参数

- 查看执行结果
绿色表示执行成功。

- 查看
cloudwatch
和lambda函数执行不一样,这里不会产生cloudwatch的log组。

- 使用
SAM来创建step functions
AWS的官方给出了学习的链接和实例程序。使用SAM创建step functions
下节课使用SAM (amazon Serverless Application Model)。目前还是不懂的状态,加油!
- 准备参数



















