

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Step Functions Local を使用したステートマシンのテスト (非サポート)
<a name="sfn-local"></a>

**Step Functions Local はサポートされていません**  
Step Functions Local はクラウド版と同等の機能を**提供しておらず**、**サポートされていません**。  
テスト目的で Step Functions をエミュレートするサードパーティーソリューションを検討することもできます。  
Step Functions Local の代わりに、TestState API を使用して、 AWS アカウントにデプロイする前にステートマシンロジックをユニットテストできます。詳細については、[「TestState API を使用したステートマシン](https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html)のテスト」を参照してください。

 AWS Step Functions のダウンロード可能なバージョンである Step Functions Local を使用すると、独自の開発環境で実行されている 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 はテスト目的のみに使用し、機密情報の処理には決して使用しないでください。

**Topics**
+ [Step Functions Local と Docker のセットアップ](#sfn-local-docker)
+ [Step Functions Local のセットアップ - Java バージョン](#sfn-local-jar)
+ [Step Functions Local のオプションの設定](#sfn-local-config-options)
+ [Step Functions Local の実行](#sfn-local-computer)
+ [チュートリアル: Step Functions と CLI Local AWS SAM を使用したテスト](sfn-local-lambda.md)
+ [モックサービス統合を使用したテスト](sfn-local-test-sm-exec.md)

## Docker での Step Functions Local (ダウンロード可能バージョン) のセットアップ
<a name="sfn-local-docker"></a>

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](https://hub.docker.com/r/amazon/aws-stepfunctions-local) を参照するか、次の Docker `pull` コマンドを入力します。

```
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 の設定オプションを指定する](#sfn-local-config-options)
+ [Docker の認証情報と設定](#docker-credentials)

## Step Functions Local (ダウンロード可能バージョン) - Java バージョンのセットアップ
<a name="sfn-local-jar"></a>

ダウンロード可能なバージョンの AWS Step Functions は、実行可能 JAR ファイルおよび Docker イメージとして提供されます。Java アプリケーションは、Windows、Linux、macOS、および Java をサポートする他のプラットフォームで動作します。Java に加えて、 AWS Command Line Interface () をインストールする必要がありますAWS CLI。のインストールと設定の詳細については AWS CLI、[AWS Command Line Interface 「 ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/)」を参照してください。

**コンピュータで Step Functions をセットアップして実行するには**

1. 次のリンクを使用して Step Functions をダウンロードします。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/sfn-local.html)

1. `.zip` ファイルを抽出します。

1. ダウンロードをテストし、バージョン情報を表示します。

   ```
   $ java -jar StepFunctionsLocal.jar -v
   Step Function Local
   Version: 2.0.0
   Build: 2024-05-18
   ```

1. (オプション) 使用可能なコマンドのリストを表示します。

   ```
   $ java -jar StepFunctionsLocal.jar -h
   ```

1. コンピュータで Step Functions をスタートするには、コマンドプロンプトを開き、`StepFunctionsLocal.jar` を展開したディレクトリに移動して、次のコマンドを入力します。

   ```
   java -jar StepFunctionsLocal.jar
   ```

1. ローカルで実行中の Step Functions にアクセスするには、`--endpoint-url` パラメータを使用します。たとえば、 を使用して AWS CLI、次のように Step Functions コマンドを指定します。

   ```
   aws stepfunctions --endpoint-url http://localhost:8083 {{command}}
   ```

**注記**  
デフォルトでは、Step Functions Local はローカルテストアカウントと認証情報を使用し、 AWS リージョンは米国東部 (バージニア北部) に設定されます。Step Functions Local を AWS Lambdaまたは他のサポートされているサービスで使用するには、認証情報とリージョンを設定する必要があります。  
Express ワークフローを Step Functions Local で使用すると、実行履歴はログファイルに保存されます。これは CloudWatch ログには記録されません。ログファイルのパスは、ローカルステートマシンの作成時に指定された CloudWatch Logs ロググループ ARN に基づきます。ログファイルは、Step Functions Local を実行しているロケーションに相対的な `/aws/states/log-group-name/{{${execution_arn}}}.log` に保存されます。例えば、実行 ARN が以下であるとします。  

```
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 の設定オプションを指定する
<a name="sfn-local-config-options"></a>

JAR ファイルを使用して AWS Step Functions Local を起動する場合、 AWS Command Line Interface (AWS CLI) を使用するか、システム環境に含めて設定オプションを設定できます。Docker の場合、Step Functions Local を起動するときに、リファレンスにするファイルでこれらのオプションを指定する必要があります。

### 設定オプション
<a name="sfn-local-config-options-table"></a>

Lambda エンドポイントや Batch エンドポイントなどのオーバーライドエンドポイントを使用するよう Step Functions Local コンテナを設定して、そのエンドポイントを呼び出す場合、Step Functions Local では、指定した[認証情報](#docker-credentials)は使用されません。これらのエンドポイントオーバーライドの設定は任意です。


| オプション | コマンドライン | 環境 | 
| --- | --- | --- | 
| アカウント | -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 の認証情報と設定
<a name="docker-credentials"></a>

Step Functions Local for Docker を設定するには、次のファイル `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
```

**注記**  
 ホストが使用する内部 IP アドレス (`http://host.docker.internal:8000` など) に対応する特別な DNS 名、`host.docker.internal` を使用することをお勧めします。詳細については、[Networking features in Docker Desktop for Mac](https://docs.docker.com/desktop/mac/networking/#use-cases-and-workaround) および [Networking features in Docker Desktop for Windows](https://docs.docker.com/desktop/windows/networking/) で、Mac 用と Windows 用の Docker ドキュメンテーションをそれぞれ参照してください。

## Step Functions Local を自分のコンピュータで実行する
<a name="sfn-local-computer"></a>

ローカルバージョンの Step Functions を使用して、コンピュータでステートマシンを設定、開発、およびテストします。

### HelloWorld ステートマシンをローカルで実行する
<a name="sfn-local-heloworld"></a>

 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:{{region}}:{{account-id}}:stateMachine:HelloWorld"
   }
   ```

1. 作成したステートマシンの ARN を使用して実行を開始します。

   ```
   aws stepfunctions --endpoint-url http://localhost:8083 start-execution --state-machine-arn arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld
   ```

### CLI Local AWS SAM を使用した Step Functions Local
<a name="with-lambda-local"></a>

ローカルバージョンの AWS Lambdaを、ローカルバージョンの Step Functions で使用できます。これを設定するには、 AWS SAMをインストールして設定する必要があります。

の設定と実行の詳細については AWS SAM、以下を参照してください。
+ [セットアップ AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html)
+ [CLI Local AWS SAM を起動する](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-local-start-lambda.html)

ローカルシステムで 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}}
```

で Step Functions Local を実行する方法の詳細については AWS Lambda、「」を参照してください[チュートリアル: Step Functions と CLI Local AWS SAM を使用したワークフローのテスト](sfn-local-lambda.md)。