使用 Step Functions Local 测试状态机(不支持) - AWS Step Functions

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Step Functions Local 测试状态机(不支持)

不支持 Step Functions Local

Step Functions Local 提供功能奇偶校验且不受支持

出于测试目的,你可以考虑使用模拟 Step Functions 的第三方解决方案。

使用 AWS Step Functions Local(Step Functions 的可下载版本),您可以使用在自己的开发环境中运行的 Step Functions 来测试应用程序。

运行 Step Functions Local 时,您可以使用以下方法之一来调用服务集成:

  • 为 AWS Lambda 和其他服务配置本地端点。

  • 直接从 Step Functi AWS ons Local 调用服务。

  • 模拟服务集成的响应。

AWS Step Functions Local 以JAR软件包或独立的 Docker 镜像的形式提供,可在微软 Windows、Linux、macOS 和其他支持 Java 或 Docker 的平台上运行。

警告

您只能使用 Step Functions Local 进行测试,切勿处理敏感信息。

在 Docker 中设置 Step Functions Local(可下载版本)

利用 Step Functions Local Docker 映像,您可以通过使用包含所有必要的依赖项的 Docker 映像,来快速开始使用 Step Functions Local。Docker 映像允许您在容器化工作版本中包含 Step Functions Local,将其作为持续集成测试的一部分。

要获取 Step Functions Local 的 Docker 镜像,请参阅 https://hub.docker.com/r/amazon/ aws-stepfunctions-local,或者输入以下 Docker 命令pull

docker pull amazon/aws-stepfunctions-local

要在 Docker 上启动 Step Functions 的可下载版本,请运行以下 Docker run命令。

docker run -p 8083:8083 amazon/aws-stepfunctions-local

要与其他支持的服务进行交互,您需要先配置您的凭据和其他配置选项。 AWS Lambda 有关更多信息,请参阅以下主题:

设置 Step Functions Local(可下载版本)- Java 版本

的可下载版本以 AWS Step Functions 可执行JAR文件和 Docker 镜像的形式提供。Java 应用程序将在 Windows、Linux、macOS 和其他支持 Java 的平台上运行。除了 Java 之外,你还需要安装 AWS Command Line Interface (AWS CLI)。有关安装和配置的信息 AWS CLI,请参阅《AWS Command Line Interface 用户指南》

在您的计算机上设置并运行 Step Functions
  1. 使用以下链接下载 Step Functions。

    下载链接 校验和
    .tar.gz .tar.gz.md5
    .zip .zip.md5
  2. 解压缩 .zip 文件。

  3. 测试下载并查看版本信息。

    $ java -jar StepFunctionsLocal.jar -v Step Function Local Version: 2.0.0 Build: 2024-05-18
  4. (可选)查看可用命令的列表。

    $ java -jar StepFunctionsLocal.jar -h
  5. 要在计算机上启动 Step Functions,请打开命令提示符,导航到您提取 StepFunctionsLocal.jar 的目录,并输入以下命令。

    java -jar StepFunctionsLocal.jar
  6. 要访问本地运行的 Step Functions,请使用 --endpoint-url 参数。例如,使用可以按如下方式指定 Step Functions 命令: AWS CLI

    aws stepfunctions --endpoint-url http://localhost:8083 command
注意

默认情况下,Step Functions Local 使用本地测试账户和凭证, AWS 区域设置为美国东部(弗吉尼亚州北部)。要将 Step Functi AWS Lambda ons Local 与其他支持的服务或其他支持的服务一起使用,您必须配置您的凭据和区域。

如果将快速工作流与 Step Functions Local 结合使用,则执行历史记录将存储在日志文件中。它未记录到 CloudWatch 日志中。日志文件路径将基于您在创建本地状态机时ARN提供的 CloudWatch 日志日志组。该日志文件将存储在 /aws/states/log-group-name/${execution_arn}.log 中,此路径相对于运行 Step Functions Local 的位置确定。例如,如果执行ARN是:

arn:aws:states:us-east-1:123456789012:express:test:example-ExpressLogGroup-wJalrXUtnFEMI

该日志文件将为:

aws/states/log-group-name/arn:aws:states:us-east-1:123456789012:express:test:example-ExpressLogGroup-wJalrXUtnFEMI.log

为 Step Functions Local 设置配置选项

使用JAR文件启动 L AWS Step Functions ocal 时,可以使用 AWS Command Line Interface (AWS CLI) 来设置配置选项,也可以将其包含在系统环境中。对于 Docker,您必须在启动 Step Functions Local 时引用的文件中指定这些选项。

配置选项

将 Step Functions Local 容器配置为使用 Lambda 端点和 Batch 端点等覆盖端点并调用该端点时,Step Functions Local 不会使用您指定的凭证。设置这些端点覆盖是可选的。

选项 命令行 环境
账户 -account, --aws-account AWS_ACCOUNT_ID
Region -region, --aws-region AWS_DEFAULT_REGION
等待时间比例 -waitTimeScale, --wait-time-scale WAIT_TIME_SCALE
Lambda 端点 -lambdaEndpoint,--lambda-端点 LAMBDA_ENDPOINT
Batch 端点 -batchEndpoint,--batch-endpoint BATCH_ENDPOINT
DynamoDB 端点 -dynamoDBEndpoint,--dynamodb端点 DYNAMODB_ENDPOINT
ECS 终端节点 -ecsEndpoint,--ecs-endpoint ECS_ENDPOINT
Glue 端点 -glueEndpoint,--lue-endpoint GLUE_ENDPOINT
SageMaker 端点 -sageMakerEndpoint,--sagemaker-endpoint SAGE_MAKER_ENDPOINT
SQS 终端节点 -sqsEndpoint,--sqs-endpoint SQS_ENDPOINT
SNS 终端节点 -snsEndpoint,--sns-endpoint SNS_ENDPOINT
Step Functions 端点 -stepFunctionsEndpoint, --step-functions-endpoint STEP_FUNCTIONS_ENDPOINT

Docker 的凭证和配置

要为 Docker 配置 Step Functions Local,请创建以下文件:aws-stepfunctions-local-credentials.txt

此文件包含您的凭证以及其他配置选项。创建 aws-stepfunctions-local-credentials.txt 文件时,以下内容可用作模板。

AWS_DEFAULT_REGION=AWS_REGION_OF_YOUR_AWS_RESOURCES AWS_ACCESS_KEY_ID=YOUR_AWS_ACCESS_KEY AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_KEY WAIT_TIME_SCALE=VALUE LAMBDA_ENDPOINT=VALUE BATCH_ENDPOINT=VALUE DYNAMODB_ENDPOINT=VALUE ECS_ENDPOINT=VALUE GLUE_ENDPOINT=VALUE SAGE_MAKER_ENDPOINT=VALUE SQS_ENDPOINT=VALUE SNS_ENDPOINT=VALUE STEP_FUNCTIONS_ENDPOINT=VALUE

aws-stepfunctions-local-credentials.txt 中配置您的凭证和配置选项后,使用以下命令启动 Step Functions。

docker run -p 8083:8083 --env-file aws-stepfunctions-local-credentials.txt amazon/aws-stepfunctions-local
注意

建议使用特殊DNS名称host.docker.internal,该名称可解析为主机使用的内部 IP 地址,例如http://host.docker.internal:8000。有关更多信息,请分别参阅 Mac 版 Docker 文档和 Windows 版 Docker 文档:Networking features in Docker Desktop for MacNetworking features in Docker Desktop for Windows

在计算机上运行 Step Functions Local

使用 Step Functions 的本地版本配置、开发和测试计算机上的状态机。

在本地运行 HelloWorld 状态机

使用 AWS Command Line Interface (AWS CLI) 在本地运行 Step Functions 后,就可以开始执行状态机了。

  1. AWS CLI 通过逃避状态机定义来从中创建状态机。

    aws stepfunctions --endpoint-url http://localhost:8083 create-state-machine --definition "{\ \"Comment\": \"A Hello World example of the Amazon States Language using a Pass state\",\ \"StartAt\": \"HelloWorld\",\ \"States\": {\ \"HelloWorld\": {\ \"Type\": \"Pass\",\ \"End\": true\ }\ }}" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"
    注意

    role-arn 不用于 Step Functions Local,但您必须使用正确的语法包含它。您可以使用上一个示例中的 Amazon 资源名称 (ARN)。

    如果您成功创建了状态机,Step Functions 会以创建日期和状态机作为响应ARN。

    { "creationDate": 1548454198.202, "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }
  2. 使用您创建ARN的状态机开始执行。

    aws stepfunctions --endpoint-url http://localhost:8083 start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld

Step Functions AWS SAM CLI 本地与本地

您可以将 Step Functions 的本地版本与 AWS Lambda的本地版本结合使用。要对此进行配置,您必须安装和配置 AWS SAM。

有关配置和运行的信息 AWS SAM,请参阅以下内容:

在您的本地系统上运行 Lambda 后,您可以启动 Step Functions Local。从您提取 Step Functions 本地JAR文件的目录中,启动 Step Functions Local,然后使用--lambda-endpoint参数配置本地 Lambda 终端节点。

java -jar StepFunctionsLocal.jar --lambda-endpoint http://127.0.0.1:3001 command

有关使用运行 Step Functions Local 的更多信息 AWS Lambda,请参阅教程:使用 Step Functions 和 L AWS SAM CLI ocal 测试工作流程