0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Step Functions Workflow Studio for the VS Code IDEを試してみた

Last updated at Posted at 2025-03-29

背景・目的

先日、VSCode でStep Functions Workflow Studioが利用できると発表がありました。
実際に試してみます。
なお、VSCodeの発表ですが、私はCursorを使用しているので、Cursorで試してみます。

まとめ

  • VSCode(Cursor)でStep Functions Workflow Studioが利用できるようになった
  • TestState APIを使用してテストが可能

概要

関連した内容を整理します。

TestState API

下記を基に整理します。

TestState API は 1 つのステートの定義を受け入れ、それを実行します。ステートマシンを作成したり、既存のステートマシンを更新したりしなくても、ステートをテストできます。

  • 1つのStateの定義を受け入れて実行する
  • ステートマシンを作成したり、既存のステートマシンを更新しなくても良い

TestState API を使用する場合は、次の考慮事項に留意してください。

  • TestState API には以下のサポートは含まれていません。
    • 以下のリソースタイプを使用する Task ワークフロー状態 ステート:
      • アクティビティ
      • .sync または .waitForTaskToken のサービス統合パターン
    • Parallel ワークフローの状態 ステート
    • Map 状態のワークフロー ステート
  • テストは最大 5 分間実行できます。テストがこの期間を超えると、States.Timeout エラーで失敗します。
  • テストは最大 5 分間実行可能。超えるとタイムアウトエラーになる

Amazon States Language

下記を基に整理します。

Amazon ステートメント言語は JSON ベースの構造化言語で、ステートマシンおよび作業を実行できる状態のコレクション (Task 状態) の定義、次に移行する状態の決定 (Choice 状態)、エラーによる実行の停止 (Fail 状態) などに使用されます。

  • ASLは、Amazon States Languageの略
  • JSONベースの構造化言語
  • 下記ができる
    • ステートマシン、作業を実行できる状態のコレクションの定義
    • 次に移行する状態の決定(Choice)
    • エラーによる実行の停止など

State Machine 構造

下記を基に整理します。

項目 必須/オプション 説明
QueryLanguage オプション ステートマシンで使用されるクエリ言語の名前。
指定できる値は JSONPath と JSONata
デフォルト値は JSONPath
Comment オプション 説明
StartAt 必須 いずれかの状態オブジェクトの名前と完全に一致する必要がある
TimeoutSeconds オプション ステートマシンを実行できる最大秒数。指定された時間より長く実行されると、States.Timeoutで実行が失敗する
Version オプション ステートマシンで使用される のバージョン
デフォルトは1.0
States 必須 オブジェクトには、コンマで区切られた一連の状態

実践

VSCodeではなく、Cusrsorを使用しています

下記を参考に試してみます。

前提

  • OS:MacOS
  • エディタ:Cursor
  • 言語:Python

下記の構成とします

環境準備

GitHubリポジトリの作成

  1. リポジトリを作成します

    % gh repo create sample-step-functions --public --clone
    ✓ Created repository XXXXXX/sample-step-functions on GitHub
      https://github.com/XXXXXX/sample-step-functions
    % 
    
  2. できました

    % gh repo view XXXX/sample-step-functions 
    XXXX/sample-step-functions
    No description provided
    
    This repository does not have a README
    
    View this repository on GitHub: https://github.com/XXXX/sample-step-functions
    % 
    

AWS Tookit のインストールと接続

  1. Cursorを開きます

  2. 拡張機能タブを開きます

  3. 「AWS Toolkit for Visual Studio Code」を入力し、インストールボタンをクリックします
    image.png

  4. インストールされました
    image.png

  5. 次に接続します。まずは事前にSSOでサインインします(私はSSOを使用していますが、credentialsをローカルに保存されているようでしたら、不要です)

    aws sso login --sso-session XXXXXXX
    
  6. Explorerで「Select a connection...」をクリックします
    image.png

  7. Switch Connectionに自身のAWS profileを指定します

  8. AWSのオブジェクトが見えました!
    image.png

ワークスペースを追加

  1. Cusrorのワークスペースの追加をクリックし、上記で作成したリポジトリを指定します

コード

Amazon States Language

  1. 「statemachines」ディレクトリを作成します

  2. 「hello-world.asl.json」ファイルを作成します。この時点で表示されました!
    image.png

  3. 折角なのでGUIで実装してみます。検索ウィンドウにpass入力し、ドラック&ドロップしてみます

    image.png

  4. ①「設定」タブをクリックし下記を指定します

    • ②:状態名を「Pass」
    • ③:次の状態を「最後に移動」
      image.png
  5. ①「出力」タブをクリックし、②「出力」に文字列を指定します
    image.png

  6. コードを見ると下記のように作られていました

    {
      "Comment": "A description of my state machine",
      "StartAt": "Pass",
      "States": {
        "Pass": {
          "Type": "Pass",
          "End": true,
          "Output": {
            "result": "Hello"
          }
        }
      },
      "QueryLanguage": "JSONata"
    }
    
  7. 「テスト状態」をクリックします
    image.png

  8. 「テストを開始」をクリックします
    image.png

  9. テストが成功しました(当然ですが)
    image.png

考察

今回は、Step Functions ASLを使って、ローカルでステートマシンの作成と単体ステートのテスト実行を試しました。
Cursor(VSCode)とAWS Toolkitを併用することで、開発がスムーズに進みそうと感じました。
一方で、ステートマシンから実際のLambda関数を呼び出すためには、事前にAWS上にデプロイしておく必要があるなど、ASLのテストが「完全にローカルで完結するわけではない」点がわかりました。

今後は、下記を試してみたいと思います。

  • Lambda以外のサービス(SQSやBatchなど)との連携
  • CloudFormationを使ったASLの本番環境へのデプロイまでの一連の開発

まとめ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?