AWSアップデート_VSCodeでStep Functions Workflow Studioを用いた開発
導入
- 2025年3月のアップデートにより、VSCodeの拡張機能であるAWS Toolkit for Visual Studio Code(以降、AWS Toolkitと表記)でStep FunctionsのWorkflow Studioを利用できるようになり、開発機能が強化されました。
- アップデートされたAWS Toolkitを実際に動かし、GUIでのワークフロー定義・テスト・AWS環境へのデプロイといった、Step Functions開発の流れを試してみます。
AWS ToolkitでのStep Functions開発
事前準備
- バージョン
3.49.0以上のAWS ToolkitがVSCodeに導入されていることを、確認してください。 - テスト実行用IAMロールを作成しておきます。AWS公式ドキュメントを参考に、必要なアクセス許可を設定しましょう。(Lambda呼び出しテスト向けに、Lambda実行権限も追加しています。)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CallTestStateAPI ",
"Effect": "Allow",
"Action": [
"iam:PassRole",
"states:RevealSecrets",
"states:TestState"
],
"Resource": "*"
},
{
"Sid": "InvokeLambda",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:ap-northeast-1:<your-account-id>:function:<your-function-name>"
}
]
}
- Step Functionsから呼び出すためのLambda関数を作成しておきます。検証用のため、現在時刻出力処理のみを実装します。
import json
import datetime
def lambda_handler(event, context):
jst = datetime.timezone(datetime.timedelta(hours=9))
current_time = datetime.datetime.now(jst).isoformat()
print(f"Current Time (JST): {current_time}")
return {
"statusCode": 200,
"body": json.dumps({"current_time": current_time})
}
Workflow StudioでのStep Functions開発
Workflow Studioを用いた、VSCode上でのStep Functions開発を開始していきましょう。
まずは、空のtest.asl.jsonを作成します。VSCodeでtest.asl.jsonを開くと、自動的にWorkflow studioが表示されます。

実際に、ParallelステートでLambdaを並列実行するStep Functionsを作成してみましょう。アクションやフローをドラッグすることで、ワークフローを定義することができました。

設定>関数名 に事前準備で作成済みのLambda関数のArnを入力したうえで、Save Fileボタンをクリックしてください。
テスト
VSCode上で、個別のステートに対するテストを実施することも可能です。
Lambda Invoke ステートを選択したうえで、テスト状態ボタンをクリックすることで、テスト実施することができます。

AWS環境へのデプロイ
デフォルトエディタに戻る ボタンをクリックすると、jsonのエディタ画面に切り替わります。
Publish to Step Functionsをクリックし、VSCodeの表示内容に沿ってQuick Createすることで、新規ステートマシンが作成されます。


AWSコンソールにアクセスし、ステートマシンが作成されていることを確認できました。

AWSコンソールからステートマシンを実行したところ、無事実行に成功しました。

所感
直感的なGUIを活用し、VSCode上で開発からデプロイまで完結できる点は、開発者体験の向上に大きく貢献していると感じました。
(Step Functionsに限らず、全AWSサービスに言えることですが)インフラエンジニアだけでなくアプリケーションエンジニアがStep Functionsの開発に関わる機会が増えている印象です。AWS Toolkitを活用することで、開発効率・体験をさらに向上させられると感じました。
参考
注意事項
- 本記事は万全を期して作成していますが、お気づきの点がありましたら、ご連絡よろしくお願いします。
- なお、本記事の内容を利用した結果及び影響について、筆者は一切の責任を負いませんので、予めご了承ください。
Discussion