Cloud9とSAMでStep Functionsを試す(part1_環境準備)

記事タイトルとURLをコピーする

はじめに

SRE1課の石井です。

現在多数のEC2(主にLinux)が稼働しているプロジェクトに参加しています。 プロジェクトで発生する業務を何かしらの仕組みで自動化して工数を減らしたいと考えてます。 メンテ面を考えると凝った作りのshellscriptやpythonで自動化スクリプトは組みたくありません。

そのためjenkinsのようなジョブを組み合わせてグラフィカルにジョブ操作できる仕組みで実装したいと思って調査をしました。 結果、Step Functionsというサービスを使えば実現できそうな印象を受けました。

今回、複数回に分け、以下の構成でStep Functionsの検証技術記事を記載します。

  1. part1_環境準備
  2. part2_コード編集
  3. part3_自動化シナリオ実践

各章は下記の内容を記載します。

  • part1:環境準備の方法
  • part2:Step FunctionsやSAMテンプレートの内容
  • part3:私が業務でStep Functionsを用いて自動化したシナリオ

本記事では環境準備にフォーカスした内容となります。 最終的にCloud9上でsam initで取得したStateMachineのサンプルをAWS上にデプロイする所まで行います。

対象者

  1. Cloud9やSAMを使ったことがない方
  2. SAMの概要を知りたい方
  3. StateMachineのサンプルをデプロイしたい方

前提と環境準備の内容

それではマネジメントコンソールから自動化の仕組みを作るため、「Step Functions」で検索して・・・と書きたい所ですが、今回作る仕組みはgitでコード管理する前提で作業します。 そのため、WebIDEのマネージドのサービス「Cloud9」からSAMを使い、CLIベースで編集からデプロイまで行います。 SAMは本記事の後半で概要や使い方を記載しますが 下記の要素は次回の投稿で概要と使い方を記載します。

  • StateMachine,ASLファイル
  • SAMテンプレート

Cloud9について

まずはCloud9について軽く触れておきます。

Cloud9概要:

Cloud9はAWSが提供するWebIDEのサービスです。

LinuxがインストールされたEC2インスタンスを自動で作成、動作させて サインインしているAWS IAMアカウントの権限で動作します。

メリット:

  • 自動作成されたEC2はDockerやPythonなどがインストールされている
  • ブラウザからもEC2のターミナルを制御でき、任意のコマンドを実行可能
  • 各々の開発者が使うエディタを統一できる

下記の図が動作イメージとなります。 ※Cloud9の構築と利用に関する権限は以下となります。 環境構築:AWSCloud9Administratorポリシー 環境利用:AWSCloud9ポリシー

参考:AWS Cloud9 での Identity and Access Management

Cloud9の環境準備

概要をある程度掴んだところで、早速手を動かしましょう。 マネジメントコンソールからCloud9を検索してください。

(手持ちのエディタから自身のAWS環境へ接続する方、またはローカルで開発する方は本項目を読み飛ばしてください。)

①「Create enviromnment」をクリックします。

②ここも特に迷うこともないはず。下記項目を入力して「Next step」をクリックします。

Name: Cloud9上の表示名

Description: 説明

③色々入力する要素が出ました。ですがここも深くは考えず各種パラメータはデフォルトで入力のまま「Next step」をクリックします。

各種パラメータについて:

Environment type

EC2環境の種類を選択します。

  • Create a new EC2 instance for environment (direct access) コード編集するEC2の環境を新規で作ります。Cloud9からEC2へSSH接続して作業する一番シンプルな方式。

  • Create a new no-ingress EC2 instance for environment (access via Systems Manager) Cloud9からEC2へのアクセスをSSM経由してアクセスします。

  • Create and run in remote server (SSH connection) CLoud9がすでに構築済みのEC2サーバにSSHで接続します。常時起動し続けてるEC2があればこちらの方が料金的にお得だと思います。

Instance type 作成するインスタンスタイプです。最も安価な「t2.micro」を選択しています。

Platform 特にこだわりはないので、推奨されている「AmazonLinux2」を選択しています。

Cost-saving settings 自動的に停止状態にするための設定です。デフォルトの「After 30 minutes」を選択しています。 操作しない状態が30分続くとEC2が停止し、料金を抑えることができます。

IAM role Cloud9実行時に必要なサービスリンクロールを作成します。 EC2の作成、削除、一時停止やAWSリソースの操作など、必要な権限が付与されています。 規定のまま設定しておけば適切に作成されるので、このままにします。

Network settings (advanced) 作成するEC2をどのVPCに接続するか、という選択肢です。 Cloud9から生成したEC2にアクセスにはインターネット経由となります。*1 インターネットから到達可能なVPCのサブネットは初期状態であればデフォルトVPCが対応しています。

追記:記事書いた後にプライベートの環境でCloud9が出来ないか調査したのですが、既に技術1課の加藤さんが投稿済みでした。 AWS Cloud9をプライベート環境で利用できるようになりました

④設定確認画面が出ます。そのまま「Create environment」をクリックします。

⑤作成中の画面に遷移後、下記のVisual Studio Codeのような画面が出たら構築完了です。 Cloud9のEC2はシャットダウンの概念はなく、操作がなければ勝手に終了します。(デフォルトは30分) 力尽きたらブラウザのバツボタンをクリックして終了できるのが手軽でいいですね。

⑥Cloud9用のEC2ができた所で、SAM CLIのバージョンが古いためアップグレードをします。 公式のSAMインストール手順を参考に下記コマンドを実行します。

$ wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip
$ unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
$ sudo ./sam-installation/install --update

SAMについて

Cloud9のEC2はなんと最初からgitコマンド、dockerコマンドやsam-cliが使えます。 そのためすぐにでもsam initを実行したい所ですが、SAMについて軽く触れておきます。 公式の概要の説明は下記です。

AWS サーバーレスアプリケーションモデル (SAM、Serverless Application Model) は、サーバーレスアプリケーション構築用のオープンソースフレームワークです。迅速に記述可能な構文で関数、API、データベース、イベントソースマッピングを表現できます。リソースごとにわずか数行で、任意のアプリケーションを定義して YAML を使用してモデリングできます。デプロイ中、SAM が SAM 構文を AWS CloudFormation 構文に変換および拡張することで、サーバーレスアプリケーションの構築を高速化することができます。

Serverless Application Modelの略という事と、これを使えば構築が楽になりそう・・・という感じが読めますが、一言で言えばCloudFormationを拡張したサーバレスアプリケーションの開発環境です。 SAMの実体は「AWS SAM CLI」と呼ばれるコマンドラインツールです。 AWS SAM CLIのコマンドで「AWS SAM テンプレート」の記載内容に従い、作成予定のリソースを自動でAWS環境上に作成します。

AWS SAM テンプレート

AWS SAM テンプレート(以下SAMテンプレート)ではデプロイ予定リソースの各種設定を記述します。 この各種設定とは、「作成するLambda関数の名前、イベントソースの設定、VPCの結び付、Lambdaランタイムのメモリ量、タイムアウト時間」などです。

これらの要素をSAMテンプレートに記載しておきSAMコマンドの「sam build」「sam deploy」コマンドを実行するとCloudFormationへ自動でデータを流し、CloudFormationでリソースのデプロイを行います。

図で表すと上記のようなイメージとなります。 LambdaやStep Functionsの量が多くなれば、GUIベースでのデプロイが億劫になりますが、SAMだと一発で終わるため楽ですね。

まとめると下記となります。

SAM要約:
  • Serverless Application Modelの略
  • CloudFormationを拡張したサーバレスアプリケーションの開発環境
  • SAMテンプレートに実装予定のリソースを記載、記載内容を元にSAMがCloudFormationでデプロイ
メリット:
  • 大量にLambdaを作成や変更をデプロイしたいとき、SAMテンプレートとLambdaを編集すればデプロイ作業はSAMが肩代わりしてくれる
  • CloudFormationでのデプロイになり、手動デプロイによる作業ミスが発生しない
  • 手動デプロイの作業工数が減る

プロジェクト開始

SAMが便利だとなんとなく理解したところで、Step Functions開発を始めましょう。 ※ここからはSAMコマンドベースにSAMの挙動を確認していきます。 SAMは開発の雛形となるデータを「Serverless Application Repository」というリポジトリからsam initコマンドにより取得できます。 ※マネジメントコンソールからLambdaを作成する時、「設計図の使用」ボタン押すと出てくるサンプルはこのリポジトリを参照しています。 作業の流れイメージ

sam init

それでは、Cloud9のターミナルでsam initを実行して作業を行いましょう。 ※Cloud9のターミナルが表示されていない場合はALT + Tで表示させてください。

①テンプレートの選択。1を選択して AWSのテンプレートから作成します。

administrator:~/environment $ sam init

You can preselect a particular runtime or package type when using the `sam init` experience.
Call `sam init --help` to learn more.

Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1

②アプリケーションテンプレートの選択。2を選択してStep Functionsの雛形を取得します。

Choose an AWS Quick Start application template
        1 - Hello World Example
        2 - Multi-step workflow
        3 - Serverless API
        4 - Scheduled task
        5 - Standalone function
        6 - Data processing
        7 - Infrastructure event management
        8 - Machine Learning
Template: 2

③ランタイムの選択。10を選択してpython3.9で行います。

Which runtime would you like to use?
        1 - dotnet6
        2 - dotnetcore3.1
        3 - go1.x
        4 - java11
        5 - java8.al2
        6 - java8
        7 - nodejs16.x
        8 - nodejs14.x
        9 - nodejs12.x
        10 - python3.9
        11 - python3.8
        12 - python3.7
        13 - python3.6
        14 - ruby2.7
Runtime: 10
Based on your selections, the only Package type available is Zip.
We will proceed to selecting the Package type as Zip.

Based on your selections, the only dependency manager available is pip.
We will proceed copying the template using pip.

④X-Rayトレーシングを有効にするか聞かれています。Nを選択します。 ※そもそもX-Rayトレーシングを使ったことないので、どこかで検証試してみたい..

Would you like to enable X-Ray tracing on the function(s) in your application?  [y/N]: N

⑤最後にプロジェクト名を入力して完了です。

Project name [sam-app]: sample-sam

Cloning from https://github.com/aws/aws-sam-cli-app-templates (process may take a moment)

    -----------------------
    Generating application:
    -----------------------
    Name: sample-sam
    Runtime: python3.9
    Architectures: x86_64
    Dependency Manager: pip
    Application Template: step-functions-sample-app
    Output Directory: .
    
    Next steps can be found in the README file at ./sample-sam/README.md
        

    Commands you can use next
    =========================
    [*] Create pipeline: cd sample-sam && sam pipeline init --bootstrap
    [*] Validate SAM template: sam validate
    [*] Test Function in the Cloud: sam sync --stack-name {stack-name} --watch
    
administrator:~/environment $ 

これでサンプルとなる雛形はダウンロードできました。

sam build

ここから自動化を実現したい内容を編集していくのですが、一旦このまま取得したサンプルをビルド&デプロイしてAWS上で動かしてみたいと思います。

ビルドには「sam build -u」コマンドを使います。 -uのオプションは「--use-container」の短縮系です。 このオプションを指定することで、作業中のマシンにランタイムがなくてもpython3.9のランタイムを持ったコンテナが起動してビルドされます。 逆に-uがなければ実行中のマシンにpython3.9が入っていないとビルドできません。 コンテナが動かせない環境、といった条件でなければ基本的に-uをつけてビルドした方が良さそうです。

ではCloud9のプロジェクトのディレクトリに移動してビルドしてみましょう。

administrator:~/environment $ cd sample-sam/
administrator:~/environment/sample-sam $ sam build -u
Starting Build inside a container
〜中略〜
RuntimeError: Container does not exist. Cannot get logs for this container
[32187] Failed to execute script __main__

サンプルをビルドしたいだけなのに・・・/(^o^)\ エラーメッセージで調べるとCloud9の容量不足のようです。 公式のページから容量の増やし方を見るとスクリプトをコピペして実行するだけなので、早速65Gまで増やして再度実行してみました。

administrator:~/environment/sample-sam $ sam build -u
Starting Build inside a container
〜中略〜
Build Succeeded

Built Artifacts  : .aws-sam/build
Built Template   : .aws-sam/build/template.yaml

Commands you can use next
=========================
[*] Validate SAM template: sam validate
[*] Invoke Function: sam local invoke
[*] Test Function in the Cloud: sam sync --stack-name {stack-name} --watch
[*] Deploy: sam deploy --guided
        
Running PythonPipBuilder:ResolveDependencies
Running PythonPipBuilder:CopySource
administrator:~/environment/sample-sam $ 

無事ビルドできました。 ビルドした内容は.aws-samというディレクトリに配置されます。 ※Cloud9の場合隠しディレクトリはデフォルトだと表示されますが、ビルドした内容が気になる方は、歯車ボタンから表示させてみましょう。

sam deploy

初回はデプロイ先がSAMに設定されていないため、「--guided」オプションを付与して対話形式でデプロイ先の設定を行いましょう。

また、以降のデプロイでIAMに対して変更を行うデプロイを行うと「"FAILED" Status: FAILED. Reason: Requires capabilities : [CAPABILITY_***]」というエラーが発生します。 公式ページを見ると「IAMリソースの作成を明示的に許可する」というオプションを付与する必要があるようです。そのため「--capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND」というオプションを最初から付与しておきます。

それでは早速デプロイしてみます。

※対話モードでの質問はsam deployコマンドに説明があります。各種オプションを組み合わせればguidedオプションがなくても、一発で通るコマンドを作ることもできると思います。

①スタック名を聞かれています。CloudStackに登録される名称のため、任意で構いません。

administrator:~/environment/sample-sam $ sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND          

Configuring SAM deploy
======================

        Looking for config file [samconfig.toml] :  Not found

        Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [sam-app]: sample-sam-stack    

②リージョン先です。東京リージョンなのでそのままEnterを押しています。

        AWS Region [ap-northeast-1]: 
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy

③すでにデプロイされたものを変更しても良いか、という質問です。yを入力します。

        Confirm changes before deploy [y/N]: y
        #SAM needs permission to be able to create roles to connect to the resources in your template

④SAMによってIAMロールが作られても良いか、という質問です。yを入力していますが スタックを消した際、ここで作成したIAMロールも一緒に消えてしまいます。 すでに作成済みのIAMロールでデプロイを行う場合はN を入力してください。

        Allow SAM CLI IAM role creation [Y/n]: y
        #Preserves the state of previously provisioned resources when an operation fails

⑤デプロイ中にエラーが発生した場合、CloudFormation スタックをロールバックするかどうかを聞かれています。yを入力します。

        Disable rollback [y/N]: y

⑥これまでの設定内容の保存を行うかを聞かれています。yを入力します。 さらにその保存先や環境も聞かれています。 保存先はデフォルトだとプロジェクトの直下に「samconfig.toml」の名前で保存されます。 そのままで良いのでEnterを押します。

        Save arguments to configuration file [Y/n]: y
        SAM configuration file [samconfig.toml]: 
        SAM configuration environment [default]: 

        Looking for resources needed for deployment:
         Managed S3 bucket: aws-sam-cli-managed-default-samclisourcebucket-e1z84vowoqt4
         A different default S3 bucket can be set in samconfig.toml

        Saved arguments to config file
        Running 'sam deploy' for future deployments will use the parameters saved above.
        The above parameters can be changed by modifying samconfig.toml
        Learn more about samconfig.toml syntax at 
        https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html

Uploading to sample-sam-stack/45bd9a8dff25082b8f6d078abb1b3581  2839 / 2839  (100.00%)
Uploading to sample-sam-stack/aad5d642e567643ee3234b1638caa40d  671 / 671  (100.00%)
Uploading to sample-sam-stack/e7a567f676ae4056e7adbd4e84881e50  913 / 913  (100.00%)
Uploading to sample-sam-stack/992cd4f12a9f3b4c5c38e305bb4d821d  912 / 912  (100.00%)

変更セットの作成が始まります。※変更セットとはCloudFormationでアップデートを実行する前にどのような変更が加えられるかを確認する機能です。

        Deploying with following values
        ===============================
        Stack name                   : sample-sam-stack
        Region                       : ap-northeast-1
        Confirm changeset            : True
        Disable rollback             : True
        Deployment s3 bucket         : aws-sam-cli-managed-default-samclisourcebucket-e1z84vowoqt4
        Capabilities                 : ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]
        Parameter overrides          : {}
        Signing Profiles             : {}

Initiating deployment
=====================
Uploading to sample-sam-stack/09ec4053824e35a4ea2bfc23c0f57aaf.template  3240 / 3240  (100.00%)

Waiting for changeset to be created..
CloudFormation stack changeset
---------------------------------------------------------------------------------------------------------------------
Operation                     LogicalResourceId             ResourceType                  Replacement                 
---------------------------------------------------------------------------------------------------------------------
+ Add                         StockBuyerFunctionRole        AWS::IAM::Role                N/A                         
+ Add                         StockBuyerFunction            AWS::Lambda::Function         N/A                         
+ Add                         StockCheckerFunctionRole      AWS::IAM::Role                N/A                         
+ Add                         StockCheckerFunction          AWS::Lambda::Function         N/A                         
+ Add                         StockSellerFunctionRole       AWS::IAM::Role                N/A                         
+ Add                         StockSellerFunction           AWS::Lambda::Function         N/A                         
+ Add                         StockTradingStateMachineHou   AWS::IAM::Role                N/A                         
                              rlyTradingScheduleRole                                                                  
+ Add                         StockTradingStateMachineHou   AWS::Events::Rule             N/A                         
                              rlyTradingSchedule                                                                      
+ Add                         StockTradingStateMachineRol   AWS::IAM::Role                N/A                         
                              e                                                                                       
+ Add                         StockTradingStateMachine      AWS::StepFunctions::StateMa   N/A                         
                                                            chine                                                     
+ Add                         TransactionTable              AWS::DynamoDB::Table          N/A                         
---------------------------------------------------------------------------------------------------------------------

Changeset created successfully. arn:aws:cloudformation:ap-northeast-1:968841012693:changeSet/samcli-deploy1656134565/f781ba5a-9058-4c98-b41f-8cef77c113dd


Previewing CloudFormation changeset before deployment
======================================================

②この変更セットでデプロイしても良いか、という質問です。yを入力します。

Deploy this changeset? [y/N]: y

2022-06-25 05:23:02 - Waiting for stack create/update to complete

CloudFormation events from stack operations (refresh every 0.5 seconds)
---------------------------------------------------------------------------------------------------------------------
ResourceStatus                ResourceType                  LogicalResourceId             ResourceStatusReason        
---------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS            AWS::IAM::Role                StockSellerFunctionRole       -                           
CREATE_IN_PROGRESS            AWS::IAM::Role                StockBuyerFunctionRole        -                           
CREATE_IN_PROGRESS            AWS::IAM::Role                StockCheckerFunctionRole      -                           
CREATE_IN_PROGRESS            AWS::DynamoDB::Table          TransactionTable              -                           
CREATE_IN_PROGRESS            AWS::DynamoDB::Table          TransactionTable              Resource creation Initiated 
CREATE_IN_PROGRESS            AWS::IAM::Role                StockSellerFunctionRole       Resource creation Initiated 
CREATE_IN_PROGRESS            AWS::IAM::Role                StockBuyerFunctionRole        Resource creation Initiated 
CREATE_IN_PROGRESS            AWS::IAM::Role                StockCheckerFunctionRole      Resource creation Initiated 
CREATE_COMPLETE               AWS::IAM::Role                StockSellerFunctionRole       -                           
CREATE_COMPLETE               AWS::IAM::Role                StockBuyerFunctionRole        -                           
CREATE_COMPLETE               AWS::IAM::Role                StockCheckerFunctionRole      -                           
CREATE_IN_PROGRESS            AWS::Lambda::Function         StockSellerFunction           -                           
CREATE_IN_PROGRESS            AWS::Lambda::Function         StockBuyerFunction            -                           
CREATE_IN_PROGRESS            AWS::Lambda::Function         StockCheckerFunction          -                           
CREATE_COMPLETE               AWS::DynamoDB::Table          TransactionTable              -                           
CREATE_IN_PROGRESS            AWS::Lambda::Function         StockBuyerFunction            Resource creation Initiated 
CREATE_IN_PROGRESS            AWS::Lambda::Function         StockCheckerFunction          Resource creation Initiated 
CREATE_IN_PROGRESS            AWS::Lambda::Function         StockSellerFunction           Resource creation Initiated 
CREATE_COMPLETE               AWS::Lambda::Function         StockSellerFunction           -                           
CREATE_COMPLETE               AWS::Lambda::Function         StockCheckerFunction          -                           
CREATE_COMPLETE               AWS::Lambda::Function         StockBuyerFunction            -                           
CREATE_IN_PROGRESS            AWS::IAM::Role                StockTradingStateMachineRol   -                           
                                                            e                                                         
CREATE_IN_PROGRESS            AWS::IAM::Role                StockTradingStateMachineRol   Resource creation Initiated 
                                                            e                                                         
CREATE_COMPLETE               AWS::IAM::Role                StockTradingStateMachineRol   -                           
                                                            e                                                         
CREATE_IN_PROGRESS            AWS::StepFunctions::StateMa   StockTradingStateMachine      -                           
                              chine                                                                                   
CREATE_IN_PROGRESS            AWS::StepFunctions::StateMa   StockTradingStateMachine      Resource creation Initiated 
                              chine                                                                                   
CREATE_COMPLETE               AWS::StepFunctions::StateMa   StockTradingStateMachine      -                           
                              chine                                                                                   
CREATE_IN_PROGRESS            AWS::IAM::Role                StockTradingStateMachineHou   -                           
                                                            rlyTradingScheduleRole                                    
CREATE_IN_PROGRESS            AWS::IAM::Role                StockTradingStateMachineHou   Resource creation Initiated 
                                                            rlyTradingScheduleRole                                    
CREATE_COMPLETE               AWS::IAM::Role                StockTradingStateMachineHou   -                           
                                                            rlyTradingScheduleRole                                    
CREATE_IN_PROGRESS            AWS::Events::Rule             StockTradingStateMachineHou   -                           
                                                            rlyTradingSchedule                                        
CREATE_IN_PROGRESS            AWS::Events::Rule             StockTradingStateMachineHou   Resource creation Initiated 
                                                            rlyTradingSchedule                                        
CREATE_COMPLETE               AWS::Events::Rule             StockTradingStateMachineHou   -                           
                                                            rlyTradingSchedule                                        
CREATE_COMPLETE               AWS::CloudFormation::Stack    sample-sam-stack              -                           
---------------------------------------------------------------------------------------------------------------------
CloudFormation outputs from deployed stack
------------------------------------------------------------------------------------------------------------------------
Outputs                                                                                                                
------------------------------------------------------------------------------------------------------------------------
Key                 StockTradingStateMachineArn                                                                        
Description         Stock Trading State machine ARN                                                                    
Value               arn:aws:states:ap-northeast-1:968841012693:stateMachine:StockTradingStateMachine-TkwwKZY4KKnB      

Key                 StockTradingStateMachineRoleArn                                                                    
Description         IAM Role created for Stock Trading State machine based on the specified SAM Policy Templates       
Value               arn:aws:iam::968841012693:role/sample-sam-stack-StockTradingStateMachineRole-1W2K914UIZAYE         
------------------------------------------------------------------------------------------------------------------------

Successfully created/updated stack - sample-sam-stack in ap-northeast-1

administrator:~/environment/sample-sam $ 

無事デプロイできたようです。早速CloudFormationでスタックができている確認してみましょう。

ちゃんとsam deployでAWSにデプロイできているようです。

では肝心のStep FunctionsとLambdaはというと・・・ Step FunctionsはStockTradingStateMachine-*** という名前でデプロイされており、 Lambdaはsample-sam-stack-Stock***の名前でデプロイされていることが確認できました。 これでサンプル自体はデプロイできていることが確認できたので、Step Functionsを動かしてみます。

StateMachineの実行

しばしばStateMachineという言葉が出てきましたが、Step Functionsで実装したワークフローは「StateMachine」という単位で管理されます。※ジョブに相当するものと解釈して問題ありません。 それではマネジメントコンソールから先程デプロイしたStep Functionsを開き、「実行の開始」をクリックします。 実行の開始画面でjson形式の入力を求められますが、動かすサンプルは入力を必須とする作りではないので、そのままで問題ありません。 ※実際の作成物には、実行時のjsonにインスタンスIDなどを入力させる運用に出来そうです。 動作させると、サンプルの細かい挙動はともかく、StateMachineが動作しました。

これでこのサンプルをベースにどんどん開発できそうです。 今回は環境構築で完了し、次の投稿で具体的にサンプルの内容を読み解き、StateMachineの作り込みとLambdaの作成したいと思います。

参考文献

*1:プライベート環境での作成は追記の項目を参照してください