本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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-localpull
。
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
-
使用以下链接下载 Step Functions。
下载链接 校验和 .tar.gz .tar.gz.md5 .zip .zip.md5 -
解压缩
.zip
文件。 -
测试下载并查看版本信息。
$ java -jar StepFunctionsLocal.jar -v Step Function Local Version: 2.0.0 Build: 2024-05-18
-
(可选)查看可用命令的列表。
$ java -jar StepFunctionsLocal.jar -h
-
要在计算机上启动 Step Functions,请打开命令提示符,导航到您提取
StepFunctionsLocal.jar
的目录,并输入以下命令。java -jar StepFunctionsLocal.jar
-
要访问本地运行的 Step Functions,请使用
--endpoint-url
参数。例如,使用可以按如下方式指定 Step Functions 命令: AWS CLIaws 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/
中,此路径相对于运行 Step Functions Local 的位置确定。例如,如果执行ARN是:${execution_arn}
.log
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 Mac
在计算机上运行 Step Functions Local
使用 Step Functions 的本地版本配置、开发和测试计算机上的状态机。
在本地运行 HelloWorld 状态机
使用 AWS Command Line Interface (AWS CLI) 在本地运行 Step Functions 后,就可以开始执行状态机了。
-
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" }
-
使用您创建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 测试工作流程。