微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用文件中定义的状态机在本地执行 AWS Step Functions?

如何解决如何使用文件中定义的状态机在本地执行 AWS Step Functions?

我已按照 AWS 文档中的步骤在本地设置和运行 AWS Step Functions:https://docs.aws.amazon.com/step-functions/latest/dg/sfn-local-lambda.html

一切正常,但在第 5 步,它说您必须创建一个状态机,当定义包含大量任务时,使用命令行执行此操作可能会很痛苦。

有没有办法开始执行本地 .asl 文件中定义的状态机?

这是我在本地定义的状态机示例(来自模板):

{
    "Comment": "A state machine that does mock stock Trading.","StartAt": "Check Stock Value","States": {
        "Check Stock Value": {
            "Type": "Task","Resource": "${StockCheckerFunctionArn}","Retry": [
                {
                    "ErrorEquals": [
                        "States.TaskFailed"
                    ],"IntervalSeconds": 15,"MaxAttempts": 5,"BackoffRate": 1.5
                }
            ],"Next": "Buy or Sell?"
        },"Buy or Sell?": {
            "Type": "Choice","Choices": [
                {
                    "Variable": "$.stock_price","NumericLessthanEquals": 50,"Next": "Buy Stock"
                }
            ],"Default": "Sell Stock"
        },"Sell Stock": {
            "Type": "Task","Resource": "${StockSellerFunctionArn}","IntervalSeconds": 2,"MaxAttempts": 3,"BackoffRate": 1
                }
            ],"Next": "Record Transaction"
        },"Buy Stock": {
            "Type": "Task","Resource": "${StockBuyerFunctionArn}","Record Transaction": {
            "Type": "Task","Resource": "${DDBPutItem}","Parameters": {
                "TableName": "${DDBTable}","Item": {
                    "Id": {
                        "S.$": "$.id"
                    },"Type": {
                        "S.$": "$.type"
                    },"Price": {
                        "N.$": "$.price"
                    },"Quantity": {
                        "N.$": "$.qty"
                    },"Timestamp": {
                        "S.$": "$.timestamp"
                    }
                }
            },"IntervalSeconds": 20,"BackoffRate": 10
                }
            ],"End": true
        }
    }
}

解决方法

您可以使用 cat 将文件读入字符串。

aws stepfunctions --endpoint http://localhost:8083 create-state-machine --definition "$(cat local.asl.json)" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。