Lambda调用Step Functions

本节依赖上一节,请先完成DynamoDB实验

本节我们将使用Lambda来触发Step Functions的执行

创建Lambda

进行Lambda页面,创建新的函数,命名为step-function-invoker:

image-20220408195122438

由于Lambda要执行Step Functions,所以它的role里必须有访问Step Function的权限。编辑它的Role:

image-20220408195202021

添加Policy:

image-20220408195250002

添加AWSStepFunctionsFullAccess这条policy:

image-20220408195305653


回到Step Functions页面,将上一节创建的State machine的ARN复制下来:

image-20220408195403868

更新lambda代码,并进行部署。stateMachineArn替换为刚获取的ARN:

import json
import boto3
import uuid

client = boto3.client('stepfunctions')


def lambda_handler(event, context):
    # TODO implement
    transaction_id = str(uuid.uuid1())

    input = {"TransactionId": transaction_id}

    response = client.start_execution(
        stateMachineArn='arn:aws:states:us-east-1:145197526627:stateMachine:dynamodb-test',
        name=transaction_id,
        input=json.dumps(input)
    )

测试

部署Lambda完成后。创建测试事件:

image-20220408195442383

image-20220408195502915

保存测试事件。执行几次测试,此时Lambda成功的调用Step Functions,并往DynamoDB里插入了数据。

回到DynamoDB服务,表里面查询到Lambda调用Step Functions后插入的几条数据:

image-20220408195541171