本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 Functions Local 直接呼叫 AWS 服務。
-
模擬來自服務整合的回應。
AWS Step Functions Local 以JAR套件或獨立 Docker 映像的形式提供,可在 Microsoft Windows、Linux、macOS 和其他支援 Java 或 Docker 的平台上執行。
警告
您只應使用 Step Functions Local 進行測試,絕不處理敏感資訊。
主題
在 Docker 中設定步驟函數本機 (可下載版本)
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 或其他支援的 服務互動,您需要先設定登入資料和其他組態選項。如需詳細資訊,請參閱下列主題:
設定步驟函數本機 (可下載版本) - 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
參數。例如,使用 AWS CLI,您可以指定 Step Functions 命令,如下所示:aws stepfunctions --endpoint-url http://localhost:8083
command
注意
根據預設,Step Functions Local 會使用本機測試帳戶和登入資料,並將 AWS 區域設定為美國東部 (維吉尼亞北部)。若要搭配 AWS Lambda或其他支援的 服務使用 Step Functions Local,您必須設定您的登入資料和區域。
如果您將 Express 工作流程與 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 檔案啟動 AWS Step Functions Local 時,您可以使用 AWS Command Line Interface (AWS CLI) 設定組態選項,或將其包含在系統環境中。對於 Docker,您必須在啟動 Step Functions Local 時參考的檔案中指定這些選項。
組態選項
當您將 Step Functions Local 容器設定為使用 Lambda Endpoint 和 Batch Endpoint 等覆寫端點,並呼叫該端點時,Step Functions Local 不會使用您指定的登入資料。設定這些端點覆寫是選用的。
選項 | 命令列 | 環境 |
---|---|---|
帳戶 | -帳戶、--aws-帳戶 | AWS_ACCOUNT_ID |
區域 | -region、--aws-region | AWS_DEFAULT_REGION |
等待時間調整 | -waitTimeScale, --wait-time-scale | WAIT_TIME_SCALE |
Lambda 端點 | -lambdaEndpoint、--lambda-endpoint | LAMBDA_ENDPOINT |
批次端點 | -batchEndpoint、--batch-endpoint | BATCH_ENDPOINT |
DynamoDB 端點 | -dynamoDBEndpoint、--dynamodb-endpoint | DYNAMODB_ENDPOINT |
ECS 端點 | -ecsEndpoint、--ecs-endpoint | ECS_ENDPOINT |
Glue 端點 | -glueEndpoint、--glue-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
。如需詳細資訊,請參閱 Docker Desktop for Mac 中的適用於 Mac 和 Windows 的 Docker
在電腦上本機執行步驟函數
使用 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 Resource Name (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 Local 與 AWS SAM CLI Local
您可以使用 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 和 AWS SAM CLI Local 測試工作流程。