Step Functionsの開発がVSCodeで完結!?AWS ToolkitでStep Functionsがサポートされました

Visual Studio CodeのAWS Toolkitにて、AWS Step Functionsがサポートされました!これにより、VSCodeを離れることなくステートマシン作成や視覚化、実行ができるようになったので試してみたいと思います。
2020.04.03

環境

  • Visual Studio Code Version … 1.43.2
  • AWS Toolkit Version … 1.8.0

前提

本エントリではAWS Toolkitのインストール等を割愛していますので、以下が前提となります。

やってみた

ステートマシン定義

VSCodeのコマンドパレットにてAWS: Create a new Step Functions state machineを選択します。

01

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

02

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

03 25

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

04 26

ステートマシン作成

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

05

Quick Createを選択します。

06

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

07

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

08

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

09

VSCodeのターミナルより、AWS CLIを利用し作成状況を確認してみます。以下コマンドを実行します。指定するステートマシンのARNについては、作成時の出力に表示されています。

aws stepfunctions describe-state-machine --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine

ステートマシンの定義が表示され、作成されている事が確認できました。

12

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

10

ステートマシン実行

ステートマシンの実行前に、実行状況をリストしてみたいと思います。VSCodeのターミナルより、以下コマンドを実行します。

aws stepfunctions list-executions --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine

まだ実行をしていませんので、想定どおり実行結果はありません。

11

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

13

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

14

ここでは、以下のインプットを行い「Execute」をクリックします。

{
  "IsHelloWorldExample": true
}

VSCodeの出力に実行IDが表示されました。

15

実行状況をリストしてみたいと思います。VSCodeのターミナルより、ステートマシンのARNを指定した、以下のコマンドを実行します。

aws stepfunctions list-executions --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine

実行結果よりステートマシン実行の成功が確認できました。

16

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

17

ステートマシン更新

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

18

以下の定義に更新しました。

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

ワークフローがホットリロードされ、更新後の状態をすぐに確認できました。

19

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

20

Quick Updateを選択します。

21

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

22

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

23

VSCodeのターミナルより、以下コマンドを実行し、ステートマシンの定義を確認してみます。

aws stepfunctions describe-state-machine --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine

定義が更新されていることが確認できました。

24

さいごに

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

参考