開発日誌
更新日 (2022/02/10)
GUIでシステム構築~AWS Step Functions~

はじめに

今回はGUIでシステムを構築できる楽しげなAWSサービス「AWS Step Functions」を使ってみました。
その使用感などをお伝えできればと思います。

目次

  • AWS Step Functionsとは
  • 実際に試してみた
  • 料金体系
  • まとめ

AWS Step Functionsとは

Step FunctionsはGUIでワークフローを定義することで簡単にシステム作成することができるAWSサービスです。
プログラムやインフラを用意せず、システムを作れてしまうので、ちょっとした問題であれば爆速で解決することができてしまいます!
また、AWSサービスを直接呼び出すことができるので、他のサービスへの統合がとても簡単なところも良いところですね。
今回はそんなStep Functionsを試しに使ってみました。

参考:AWS Step Functions とは

実際に試してみた

今回はStep Functionsで解決したい課題を「定時になったらインスタンスを停止する」に設定しました。
Step Functionsではステートマシン単位で実行していきます。
ステートマシンはワークフローとIAMロールなどの設定がまとまったものと考えてください。
Step Functionsのステートマシンの起動にはEventBridgeを使用し、毎日20時にステートマシンを起動するようにします。

  1. 新規ステートマシンの作成

    AWS Step Functionsを開き、「ステートマシン」> 「ステートマシンの作成」を選択します。
    今回はデフォルト設定で進んでいきます。 StepFunctions作成方法選択
  2. ワークフローの作成

    1. Step Functionsではこのワークフローをキャンバスに、視覚的に操作するだけで簡単にシステム構築することができます。
      まず初めにワークフローのタイムアウトを設定しましょう。 StepFunctionsワークフロー作成
    2. タイムアウトは初期画面の右側「TimeoutSeconds」にて設定可能です。
      今回の処理は時間がそこまでかからないので60秒で設定しています。
      ここはシステムの処理に合わせて設定してください。
      また、タイムアウトの設定画面は背景をクリックすることで表示されます。
      StepFunctionsタイムアウト
    3. 次にワークフローにアクションを追加していきます。
      今回のシステムはインスタンスを停止させることが目的なので、インスタンスを停止するアクション「StopInstances」を追加します。

      「ec2 stop」でアクションを検索すると「StopInstances」がヒットします。
      この「StopInstances」をワークフローの真ん中までドラッグするだけで、アクションを追加することができます。
      StepFunctions_stop_action
    4. 次にアクションのパラメータを設定していきます。
      アクションのパラメータをJSON形式で設定します。
      「StopInstances」はインスタンスを停止するアクションなので停止するEC2のインスタンスIDを設定する必要があります。
      アクションごとに何を設定するべきかは公式ドキュメントに記載されているので確認してください。
      StepFunctions_acction_setting ※公式ドキュメントのリンクがない場合もあります。その場合はアクション名などで調べてください。

  3. ワークフローの確認

    アクションの準備が整ったので、画面右上の「次に」を押下し、作成したステートマシンを確認します。
    画面左側にて先ほど視覚的に作成したワークフローがスニペットで表記されていることが確認できます。
    コードでも管理できるのはとても良い点ですね。
    確認が終わったら「次へ」を押下します。 StepFunctions_確認画面
  4. ステートマシンの各種設定

    次にステートマシンの名前などを設定していきます。
    今回は項目「ステートマシン名」に任意の名前(StepFunctions_test)を入力し、 「ステートマシンの作成」を押下します。

  5. ロールの設定

    今回はEC2の操作を行うため、ロール設定が必要になります。
    IAM ロール ARNを押下し、ロールに必要なポリシーを追加しましょう。
    今回は「AmazonEC2FullAccess」をアタッチしていますが、必要に応じて適切なポリシーをアタッチしてください。 StepFunctions_role設定
  6. 実行

    あとは「実行の開始」を押下して実行してください。 StepFunctions_実行 実行完了したらそれぞれのアクションが緑色になります。 StepFunctions_実行完了 実際に対象のインスタンスを確認すると、インスタンスが停止していることが確認できます。 StepFunctions_インスタンス停止 これでステートマシンの作成は完了しました。

  7. EventBridgeとの連携

    インスタンスを停止するステートマシンが完了したので、次は毎日定時になったらステートマシンを動かすよう、EventBridgeと連携します。
    今回は下記のようにEventBridgeのルールを作成しました。
    cronはタイムゾーンはUTCであることに注意してください。
    ターゲットには先ほど作成したステートマシンを選択してください。
    StepFunctions_EventBridge_設定 StepFunctions_EventBridge_設定2
以上で「定時になったらインスタンスを停止する」システムの作成が完了しました。

時間になったらちゃんとインスタンスが停止しているか確認してみてください。

料金

AWS Step Functionsの料金は安く、気軽に取り入れることができます。

料金はワークフローのステップが実行される際に発生する状態遷移の回数を元に計算されます。
無料枠は1カ月の状態遷移の回数が4000回/月まで用意されています。
無料枠を超えた分に関しましては、1000回毎に0.025USD加算されていきます。

1日数回程度、実行するバッチのようなものであれば無料枠で抑えられるのがとても良いですね!

今回作成したワークフローの場合、ステップが1つだけ(StopInstancesのみ)なので月あたり4000回まで無料で動かせます笑

AWS Step Functions の料金

まとめ

今回はStep Functionsで簡単にシステムを作ることができました。

ワークフローでの構築は楽しく・すぐに完成するので大変良いですね!
ちょっと難しい処理がある場合はlambdaを入れてしまえば解決も難しくないというのもポイント高いです。

今回はインスタンスの停止でしたが、同じように「定時になったらインスタンスを起動する」システムを作ることで、
「勤務時間の間だけ開発環境を稼働させる」といった課題を解決できてしまいます。
これだけでも開発費が大幅に削減できますね。
他にも「Slackなどのチャットツールからデプロイを行う」や「月末にS3にある請求書から売上をまとめる」なんて課題も面白そうです。

みなさんも是非、日頃の小さな課題などをStep Functionsで解決してみてください!


サーバ運用とWebサイト運用・システム運用などが業者が別々で問題解決が困難、もしくは業務をワンストップでお願いしたいなどございましたら遠慮なくご相談ください。
サーバの設計や構築のみなどミニマムな業務からも承ってますので是非コムデへご相談ください。