Step Functions Local を使用したステートマシンのテスト (非サポート)
Step Functions Local はサポートされていません
Step Functions Local はクラウド版と同等の機能を提供しておらず、サポートされていません。
テスト目的で Step Functions をエミュレートするサードパーティーソリューションを検討することもできます。
Step Functions Local は Step Functions のダウンロード可能なバージョンです。Step Functions Local を使用すると、ローカルの開発環境で AWS Step Functions を実行してアプリケーションをテストできます。
Step Functions Local を実行している間は、次のいずれかの方法でサービス統合を呼び出すことができます。
-
AWS Lambda およびその他のサービスのローカルエンドポイントを設定します。
-
Step Functions Local から AWS サービスを直接呼び出します。
-
サービス統合からのレスポンスをモックします。
AWS Step Functions Local は、Microsoft Windows、Linux、macOS、および、Java または Docker をサポートするその他のプラットフォームで動作する JAR パッケージまたは自己完結型の 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
ダウンロード可能なバージョンの Step Functions を Docker で起動するには、次の 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パラメータを使用します。例えば、AWS CLI を使用して Step Functions コマンドを次のように指定します。aws stepfunctions --endpoint-url http://localhost:8083command
注記
デフォルトでは、Step Functions Local はローカルテストアカウントと認証情報を使用し、AWS リージョンは米国東部 (バージニア北部) に設定されます。AWS Lambda と共に Step Functions Local を使用またはその他のサポートされているサービスで使用するには、認証情報とリージョンを設定する必要があります。
Express ワークフローを Step Functions Local で使用すると、実行履歴はログファイルに保存されます。これは CloudWatch ログには記録されません。ログファイルのパスは、ローカルステートマシンの作成時に指定された CloudWatch Logs ロググループ ARN に基づきます。ログファイルは、Step Functions Local を実行しているロケーションに相対的な /aws/states/log-group-name/ に保存されます。例えば、実行 ARN が以下であるとします。${execution_arn}.log
arn:aws:states:region:account-id:express:test:example-ExpressLogGroup-wJalrXUtnFEMI
ログファイルは以下のようになります。
aws/states/log-group-name/arn:aws:states:region:account-id:express:test:example-ExpressLogGroup-wJalrXUtnFEMI.log
Step Functions Local の設定オプションを指定する
JAR ファイルを使って AWS Step Functions Local を起動すると、AWS Command Line Interface (AWS CLI) を使用するかオプションをシステム環境に含めることにより設定オプションを指定できます。Docker の場合、Step Functions Local を起動するときに、リファレンスにするファイルでこれらのオプションを指定する必要があります。
設定オプション
Lambda エンドポイントや Batch エンドポイントなどのオーバーライドエンドポイントを使用するよう Step Functions Local コンテナを設定して、そのエンドポイントを呼び出す場合、Step Functions Local では、指定した認証情報は使用されません。これらのエンドポイントオーバーライドの設定は任意です。
| オプション | コマンドライン | 環境 |
|---|---|---|
| アカウント | -account, --aws-account | 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 の認証情報と設定
Step Functions Local for Docker を設定するには、次のファイル aws-stepfunctions-local-credentials.txt を作成します。
このファイルには、認証情報および他の設定オプションが含まれています。aws-stepfunctions-local-credentials.txt ファイル作成時のテンプレートとして、以下を使用できます。
AWS_DEFAULT_REGION=AWS_REGION_OF_YOUR_AWS_RESOURCESAWS_ACCESS_KEY_ID=YOUR_AWS_ACCESS_KEYAWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_KEYWAIT_TIME_SCALE=VALUELAMBDA_ENDPOINT=VALUEBATCH_ENDPOINT=VALUEDYNAMODB_ENDPOINT=VALUEECS_ENDPOINT=VALUEGLUE_ENDPOINT=VALUESAGE_MAKER_ENDPOINT=VALUESQS_ENDPOINT=VALUESNS_ENDPOINT=VALUESTEP_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
注記
ホストが使用する内部 IP アドレス (http://host.docker.internal:8000 など) に対応する特別な DNS 名、host.docker.internal を使用することをお勧めします。詳細については、Networking features in Docker Desktop for Mac
Step Functions Local を自分のコンピュータで実行する
ローカルバージョンの Step Functions を使用して、コンピュータでステートマシンを設定、開発、およびテストします。
HelloWorld ステートマシンをローカルで実行する
Step Functions を AWS Command Line Interface (AWS CLI) でローカルに実行したら、ステートマシンの実行をスタートできます。
-
ステートマシン定義をエスケープして、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:region:account-id:stateMachine:HelloWorld" } -
作成したステートマシンの ARN を使用して実行を開始します。
aws stepfunctions --endpoint-url http://localhost:8083 start-execution --state-machine-arn arn:aws:states:region:account-id:stateMachine:HelloWorld
AWS SAM CLI Local 付きStep Functions
ローカルバージョンの AWS Lambda を、ローカルバージョンの Step Functions で使用できます。これを設定するには、AWS SAM をインストールして設定する必要があります。
AWS SAM の設定と実行の詳細については、以下を参照してください。
ローカルシステムで Lambda が実行されたら、Step Functions Local をスタートできます。Step Functions Local の JAR ファイルを展開したディレクトリから Step Functions Local を起動し、--lambda-endpoint パラメータを使用してローカルの Lambda エンドポイントを設定します。
java -jar StepFunctionsLocal.jar --lambda-endpoint http://127.0.0.1:3001 command
AWS Lambda との Step Functions Local の実行の詳細については、チュートリアル: Step Functions と AWS SAM CLI Local を使用したワークフローのテスト を参照してください。