【问题标题】:Is there a way of running AWS Step Functions locally when defined by CDK?由 CDK 定义时,是否可以在本地运行 AWS Step Functions?
【发布时间】:2020-11-30 13:44:45
【问题描述】:

AWS Step Functions 可以使用 Step Functions Local Docker 在本地 Docker 环境中运行。但是,需要使用基于 JSON 的Amazon States Language 定义步进函数。如果您的 AWS 基础设施(Step Functions 和 lambdas)是使用 AWS CDK/CloudFormation 定义的,这一点都不方便。

有没有办法从 CDK 或 CloudFormation 输出创建状态机的 Amazon 状态语言定义,以便可以在本地运行步进函数?

我的开发周期目前需要 30 分钟来在 AWS 中构建/部署/运行基于 Lambda 的步进函数,以便对其进行测试,而且肯定有比这更好/更快的测试方法。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-cdk aws-step-functions


    【解决方案1】:

    我们已经能够通过以下方式实现这一目标:

    下载:

    https://docs.aws.amazon.com/step-functions/latest/dg/sfn-local.html

    要在本地运行阶跃函数,请在您提取本地阶跃函数文件的目录中运行:

    java -jar StepFunctionsLocal.jar --lambda-endpoint http://localhost:3003

    要创建状态机,您需要一个 json 定义(它可以从生成的模板中提取,也可以为 Vs 代码获取 toolkit plug in,键入步骤函数,从模板中选择,这可以是您的入门。可以也可以从 AWS 控制台的 step 函数的定义选项卡中获取它。

    在定义json的同一目录下运行此命令:

    aws stepfunctions --endpoint http://localhost:8083 create-state-machine --definition "cat step-function.json" --name "local-state-machine" --role-arn "arn:aws:iam: :012345678901:role/DummyRole"

    你现在应该可以打SF了(希望如此):)

    【讨论】:

      【解决方案2】:

      您可以使用 cdk watch--hotswap 选项来部署更新后的状态机或 Lambda 函数,而无需部署 CloudFormation。

      https://aws.amazon.com/blogs/developer/increasing-development-speed-with-cdk-watch/

      如果您想在本地使用 Step Functions 进行测试,cdk synth 会生成包含状态机的 ASL JSON 定义的 CloudFormation 代码。如果您得到它并替换 CloudFormation 引用和内部函数,则可以使用它在 Step Functions Local 中创建和执行状态机。

      有些人是如何实现自动化的:

      【讨论】:

        猜你喜欢
        • 2022-09-23
        • 2020-02-27
        • 2020-09-05
        • 2021-06-06
        • 2020-02-11
        • 1970-01-01
        • 1970-01-01
        • 2018-08-25
        • 2021-08-27
        相关资源
        最近更新 更多