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