
Step Functionsの開発がVSCodeで完結!?AWS ToolkitでStep Functionsがサポートされました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
環境
- Visual Studio Code Version … 1.43.2
 - AWS Toolkit Version … 1.8.0
 
前提
本エントリではAWS Toolkitのインストール等を割愛していますので、以下が前提となります。
やってみた
ステートマシン定義
VSCodeのコマンドパレットにてAWS: Create a new Step Functions state machineを選択します。

AWS Toolkitにて用意されたテンプレートが表示されます。ここではHello worldを選択します。

Pass、Choiceなどのステートを含んだテンプレートが作成されます。VSCode上のStep Functionsのアイコン(Render state machine graph)をクリックするとワークフローが表示できます。

定義ファイルに名前をつけて保存します。保存後はStep Functionsのアイコンが消えワークフローの表示がなくなりました。コマンドパレットにてAWS: Render state machine graphを選択すると、ワークフローの表示が可能です。

ステートマシン作成
AWS Toolkitと接続したAWSアカウントに、ステートマシンを作成してみたいと思います。コマンドパレットAWS: Publish state machine to Step Functionsを選択します。

Quick Createを選択します。

ステートマシンにアタッチするIAMロールを選択します。なお、AWS ToolkiがAWSアカウントに接続できていない場合や、StepFunctions用のIAMロールが作成されていない場合は、ロールが表示されないのでご注意ください。

任意のステートマシン名を入力し、Enterをクリックします。

ステートマシンの作成が行われ、VSCodeの出力に作成状況が表示されます。

VSCodeのターミナルより、AWS CLIを利用し作成状況を確認してみます。以下コマンドを実行します。指定するステートマシンのARNについては、作成時の出力に表示されています。
aws stepfunctions describe-state-machine --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
ステートマシンの定義が表示され、作成されている事が確認できました。

AWS Toolkitのエクスプローラー(AWS:EXPLORER)でも作成状況が確認できます。更新(Refresh AWS EXPLORER)を行うことで、作成したステートマシンを確認することができました。

ステートマシン実行
ステートマシンの実行前に、実行状況をリストしてみたいと思います。VSCodeのターミナルより、以下コマンドを実行します。
aws stepfunctions list-executions --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
まだ実行をしていませんので、想定どおり実行結果はありません。

それでは実行してみたいと思います。AWS CLIにて実行することもできますが、ここではAWS Toolkitのエクスプローラーから実行してみたいと思います。該当のステートマシンを選択し、右クリック「Staart Execution」をクリックします。

別タブが開き、実行時のインプットを指定することが可能です。

ここでは、以下のインプットを行い「Execute」をクリックします。
{
  "IsHelloWorldExample": true
}
VSCodeの出力に実行IDが表示されました。

実行状況をリストしてみたいと思います。VSCodeのターミナルより、ステートマシンのARNを指定した、以下のコマンドを実行します。
aws stepfunctions list-executions --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
実行結果よりステートマシン実行の成功が確認できました。

describe-executionコマンドでは、実行時のINPUT、OUTPUTなども確認できます。

ステートマシン更新
ステートマシンを更新してみたいと思います。更新状況が確認できるように、ワークフローを表示させておきます。

以下の定義に更新しました。
{
    "Comment": "A Hello World example demonstrating various state types of the Amazon States Language",
    "StartAt": "Pass",
    "States": {
        "Pass": {
            "Comment": "A Pass state passes its input to its output, without performing work. Pass states are useful when constructing and debugging state machines.",
            "Type": "Pass",
            "End": true
        }
    }
}
ワークフローがホットリロードされ、更新後の状態をすぐに確認できました。

変更内容をStep Functionsに反映したいと思います。コマンドパレットにてAWS: Publish state machine to Step Functionsを選択します。

Quick Updateを選択します。

更新を行うステートマシンを選択します。

VSCodeの出力より更新状況が確認できます。

VSCodeのターミナルより、以下コマンドを実行し、ステートマシンの定義を確認してみます。
aws stepfunctions describe-state-machine --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
定義が更新されていることが確認できました。

さいごに
AWSマネジメントコンソールではステートマシンの定義を都度保存して、ワークフローの確認を行う必要がありますが、AWS Toolkitでは、定義を更新しながらワークフローの確認が行えました。今回は触れませんでしたが、ステートのスニペットを利用することもできます。Step Functionsがサポートされたことにより、VSCodeを離れることなくステートマシンの作成(更新)から実行まで行え、作業が捗りそうですね!






