Step Functions and AWS SAM CLI Local - AWS Step Functions

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Step Functions and AWS SAM CLI Local

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

詳細については、以下を参照してください。

Step 1: Set Up AWS SAM

AWS サーバーレスアプリケーションモデル (AWS SAM) CLI Local では、AWS Command Line Interface、AWS SAM、および Docker をインストールする必要があります。

  1. のインストール AWS SAM CLI(CLI).

    注記

    AWS SAM CLI をインストールする前に、AWS CLI および Docker をインストールする必要があります。AWS SAM CLI をインストールするための前提条件を参照してください。

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

    これにより、 sam-app PythonベースのHello Worldを含む環境を構築します。 Lambdaf対決。

Step 2: Test AWS SAM CLI 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 を終了します。

Step 3: Start AWS SAM CLI Local

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

sam local start-lambda

これにより、AWS SAM CLI 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)

Step 4: Start Step Functions Local

JAR File

Step Functions Local の .jar ファイルバージョンを使用している場合は、Lambda エンドポイントを指定して Step Functions を起動します。.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 ローカル、ローンチ Step Functions 次のコマンドを使用します。

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

Docker バージョンの Step Functions のインストールについては、「Step Functions (Downloadable Version) and Docker」を参照してください。

注記

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

Step 5: Create a State Machine That References Your AWS SAM CLI Local Function

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

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" }

Step 6: Start an Execution of Your Local State Machine

ステートマシンを作成した後、エンドポイントとステートマシン ARN を参照して実行を開始します。

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

これにより、HelloWorld ステートマシンの実行が開始され、test という名前を付けられます。

{ "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": "{}" }