Step Functions テストとAWS SAMCLI Local - AWS Step Functions

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

Step Functions テストとAWS SAMCLI Local

ローカルマシンで AWS Step Functions および AWS Lambda の両方が実行されている状態で、コードを AWS にデプロイすることなく、ステートマシンと Lambda 関数をテストできます。

詳細については、以下を参照してください。トピック:

ステップ 1: AWS SAM のセットアップ

AWS Serverless Application Model (AWS SAM) CLI Local では、AWS Command Line Interface、AWS SAM、および Docker をインストールする必要があります。

  1. AWS SAM CLI をインストールします

    注記

    AWS SAM CLI をインストールする前に、AWS CLI および Docker をインストールする必要があります。AWS SAM CLI インストールについては、[Prerequisites] (前提条件) を参照。

  2. AWS SAM クイックスタートドキュメントをひととおり確認してください。必ず、以下のステップに従います。

    これにより、sam-app ディレクトリが作成され、Python ベースの Hello World Lambda 関数を含む環境が構築されます。

ステップ 2: TestAWS SAMCLI Local

これで、がインストールされました。AWS SAMおよび Hello World Lambda 関数を作成し、以下の操作を実行できます。テスト関数。左sam-appディレクトリで、次のように入力します。コマンド:

sam local start-api

これにより、Lambda 関数のローカルインスタンスが起動されます。により、以下のような出力が表示されます。

2019-01-31 16:40:27 Found credentials in shared credentials file: ~/.aws/credentials 2019-01-31 16:40:27 Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET] 2019-01-31 16:40:27 You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template 2019-01-31 16:40:27 * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

ブラウザを開き、次のように入力します。:

http://127.0.0.1:3000/hello

これにより、次のようなレスポンスが出力されます。

{"message": "hello world", "location": "72.21.198.66"}

Ctrl+C キーを押して、Lambda API を終了します。

ステップ 3: を起動AWS SAMCLI Local

関数が機能することをテストしたので、AWS SAM CLI Local を起動します。左sam-appディレクトリで、次のように入力します。コマンド:

sam local start-lambda

これが始まるAWS SAMCLI Local を使用して、使用するエンドポイントを提供します。により、以下のような出力が生成されます。:

2019-01-29 15:33:32 Found credentials in shared credentials file: ~/.aws/credentials 2019-01-29 15:33:32 Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2019-01-29 15:33:32 * Running on http://127.0.0.1:3001/ (Press CTRL+C to quit)

ステップ 4: Step Functions

JAR ファイル

使用している API.jarファイルバージョンのStep Functions ローカル、開始Step Functionsと指定します。Lambda エンドポイント。を抽出したディレクトリで.jarファイルで、次のように入力します。コマンド:

java -jar StepFunctionsLocal.jar --lambda-endpoint http://localhost:3001

Step Functions Local がスタートすると、環境に続いて、~/.aws/credentials ファイルで設定した認証情報がチェックされます。デフォルトでは、を使用して起動します。架空のユーザー ID、としてリスト表示されます。region us-east-1

2019-01-29 15:38:06.324: Failed to load credentials from environment because Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)) 2019-01-29 15:38:06.326: Loaded credentials from profile: default 2019-01-29 15:38:06.326: Starting server on port 8083 with account 123456789012, region us-east-1

Docker

Docker バージョンの Step Functions Local を使用している場合、次のコマンドを使用して Step Functions を起動します。:

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

Docker バージョンの Step Functions のインストールについては、Step Functions Local (ダウンロード可能なバージョン) と Docker のセットアップ を参照してください。

注記

または .jar ファイルから Step Functions を起動する場合は環境変数を設定することで、コマンドラインを通じて、エンドポイントを指定できます。Docker バージョンの場合は、エンドポイントと認証情報をテキストファイルに指定する必要があります。Step Functions コンフィギュレーションオプションのローカル設定 を参照してください。

ステップ 5: を参照するステートマシンを作成するAWS SAMCLI Local 関数

Step Functions Local が実行されたら、を参照するステートマシンを作成します。HelloWorldFunction で初期化したことステップ 1: AWS SAM のセットアップ

aws stepfunctions --endpoint http://localhost:8083 create-state-machine --definition "{\ \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Local function\",\ \"StartAt\": \"HelloWorld\",\ \"States\": {\ \"HelloWorld\": {\ \"Type\": \"Task\",\ \"Resource\": \"arn:aws:lambda:us-east-1:123456789012:function:HelloWorldFunction\",\ \"End\": true\ }\ }\ }\ }}" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"

これによりステートマシンが作成され、実行をスタートするために使用できる Amazon リソースネーム (ARN) が提供されます。

{ "creationDate": 1548805711.403, "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

ステップ 6: ローカルステートマシンの実行を開始する

ステートマシンを作成した後、実行をスタートします。。以下を使用する場合は、エンドポイントとステートマシン ARN を参照する必要があります。aws stepfunctionsコマンド:

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

これにより、実行が開始されます。名前付きtestHelloWorldステートマシン。

{ "startDate": 1548810641.52, "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test" }

これで Step Functions がローカルに実行されたので、AWS CLI を使用して操作することができます。たとえば、この実行に関する情報を取得するには、以下を使用します。コマンド:

aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test

呼び出しdescribe-execution実行のためにより完全な詳細が提供されます。により、以下のような出力が生成されます。

{ "status": "SUCCEEDED", "startDate": 1549056334.073, "name": "test", "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "stopDate": 1549056351.276, "output": "{\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\", \\\"location\\\": \\\"72.21.198.64\\\"}\"}", "input": "{}" }