AWS SAM を使用して Step Functions ステートマシンを作成する - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SAM を使用して Step Functions ステートマシンを作成する

このガイドでは、AWS Step Functions ステートマシンを含むサンプル AWS SAM アプリケーションをダウンロード、ビルド、デプロイします。このアプリケーションは、事前定義されたスケジュールで実行されるモック株式取引ワークフローを作成します (スケジュールは手数料の発生を避けるためにデフォルトで無効になっています)。

以下の図は、このアプリケーションのコンポーネントを示しています。

API Gateway エンドポイントに GET リクエストを送信するときに呼び出される Lambda 関数を示す図

以下は、サンプルアプリケーションを作成するために実行するコマンドのプレビューです。各コマンドの詳細については、このページの後半のセクションを参照してください。

# Step 1 - Download a sample application. For this tutorial you # will follow the prompts to select an AWS Quick Start Template # called 'Multi-step workflow' sam init # Step 2 - Build your application cd project-directory sam build # Step 3 - Deploy your application sam deploy --guided

前提条件

このガイドは、ご使用の OS で AWS SAM CLI のインストールのステップを完了していることを前提としています。また、以下を完了していることを前提としています。

  1. AWS アカウントを作成します。

  2. IAM 許可を設定する

  3. Homebrew のインストール。注: Homebrew は、Linux と macOS の唯一の前提条件です。

  4. AWS SAM CLI のインストール。注: バージョン 0.52.0 以降を使用していることを確認してください。コマンド sam --version を実行すると、使用しているバージョンをチェックできます。

ステップ 1: サンプル AWS SAM アプリケーションをダウンロードする

実行するコマンド:

sam init

画面の指示に従って、次の項目を選択します。

  1. [Template:] (テンプレート:) AWS クイックスタートテンプレート

  2. [Language:] (言語:) Python、Ruby、NodeJS、Go、Java、または .NET

  3. [Project name:] (プロジェクト名:) (任意の名前 - デフォルトは sam-app)

  4. クイックスタートアプリケーション: マルチステップワークフロー

AWS SAM が実行する事柄:

このコマンドにより、プロジェクト名プロンプトとして指定した名前のディレクトリが作成されます (デフォルトは sam-app)。ディレクトリの特定の内容は、選択した言語によって異なります。

Python ランタイムの 1 つを選択したときのディレクトリの内容は次のとおりです。

├── README.md
├── functions
│   ├── __init__.py
│   ├── stock_buyer
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   ├── stock_checker
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   └── stock_seller
│       ├── __init__.py
│       ├── app.py
│       └── requirements.txt
├── statemachine
│   └── stock_trader.asl.json
├── template.yaml
└── tests
    └── unit
        ├── __init__.py
        ├── test_buyer.py
        ├── test_checker.py
        └── test_seller.py

表示できる 2 つの特に興味深いファイルがあります:

  • AWS: アプリケーションの AWS SAM リソースを定義する template.yaml テンプレートが含まれます。

  • statemachine/stockTrader.asl.json: アプリケーションのステートマシン定義が含まれます。この定義は、Amazon ステートメント言語 で記述されています。

template.yaml ファイル内に次のエントリが表示されます。このエントリは、ステートマシン定義ファイルを指しています。

Properties: DefinitionUri: statemachine/stock_trader.asl.json

ステートマシン定義を AWS SAM テンプレートに埋め込むのではなく、別ファイルとして保存しておくと便利です。例えば、ステートマシン定義の変更を追跡する場合は、定義をテンプレートに含めない方が簡単です。Workflow Studio を使用してステートマシン定義の作成と管理を行い、その定義をテンプレートにマージせずにコンソールから Amazon States Language 仕様ファイルに直接エクスポートできます。

サンプルアプリケーションの詳細については、プロジェクトディレクトリの README.md ファイルを参照してください。

ステップ 2: アプリケーションを構築する

実行するコマンド:

まず、プロジェクトディレクトリ (サンプルアプリケーションの template.yaml ファイルが置かれているディレクトリ。デフォルトは sam-app です) に変更してから、次のコマンドを実行します。

sam build

出力例:

  
 Build Succeeded

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

 Commands you can use next
 =========================
 [*] Invoke Function: sam local invoke
 [*] Deploy: sam deploy --guided
       

AWS SAM が実行する事柄:

AWS SAM CLI には、依存関係を構築するための Lambda ランタイムの抽象化が多数含まれており、すべてのビルドアーティファクトをステージングフォルダにコピーして、すべてをパッケージ化してデプロイできるようにします。sam build コマンドは、アプリケーションが持つすべての依存関係を構築し、.aws-sam/build のフォルダにビルドアーティファクトをコピーします。

ステップ 3: アプリケーションを AWS クラウドにデプロイする

実行するコマンド:

sam deploy --guided

画面に表示されるプロンプトに従ってください。Enter で応答するだけで、インタラクティブな形式で提供されるデフォルトのオプションを受け入れることができます。

AWS SAM が実行する事柄:

このコマンドは、アプリケーションを AWS クラウドにデプロイします。sam build コマンドで構築したデプロイアーティファクトを取得し、パッケージ化して、AWS SAM CLI で作成された Amazon S3 バケットにアップロードして AWS CloudFormation を使用してアプリケーションをデプロイします。デプロイコマンドの出力では、AWS CloudFormation スタックに加えられた変更を確認できます。

Step Functions ステートマシンの例が、次のこれらのステップに従って、正常にデプロイされたことを確認できます。

  1. AWS Management Console にサインインし、https://console.aws.amazon.com/states/ で、Step Functions コンソールを開きます。

  2. 左側のナビゲーションで、[State machines] (ステートマシン) を選択します。

  3. リストから新しいステートマシンを見つけて選択します。これは、StockTradingStateMachine-<unique-hash> という名前になります。

  4. [Definition] (定義) タブを選択します。

これで、ステートマシンのビジュアル表現が表示されます。ビジュアル表現が、プロジェクトディレクトリの statemachine/stockTrader.asl.json ファイルにあるステートマシン定義と一致していることを確認できます。

トラブルシューティング

SAM CLI エラー: "no such option: --guided"

sam deploy の実行時に、以下のエラーが表示されます。

 
Error: no such option: --guided
            

これは、--guided パラメータをサポートしていない古いバージョンの AWS SAM CLI を使用していることを意味します。これを修正するには、AWS SAM CLI のバージョンを 0.33.0 以降に更新するか、--guided コマンドから sam deploy パラメータを削除します。

SAM CLI エラー: 「管理対象リソースを作成できませんでした: 認証情報を見つけることができません」

sam deploy の実行時に、以下のエラーが表示されます。

 
Error: Failed to create managed resources: Unable to locate credentials
            

これは、AWS 認証情報をセットアップして、AWS SAM CLI が AWS のサービスの呼び出せるようにしていないことを意味します。これを修正するには、AWS 認証情報をセットアップする必要があります。詳細については、AWS Serverless Application Model デベロッパーガイドコンソールを使用した AWS の設定を参照してください。

クリーンアップ

このチュートリアルを実行して作成した AWS リソースが不要になった場合は、デプロイした AWS CloudFormation スタックを削除することでそれらを削除できます。

AWS Management Console を使用してこのチュートリアルで作成した AWS CloudFormation スタックを削除するには、以下のステップを実行します。

  1. AWS Management Console にサインインし、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. 左のナビゲーションペインで [Stacks] (スタック) をクリックします。

  3. スタックのリストで、[sam-app] (または作成したスタックの名前) を選択します。

  4. [Delete] (削除) を選択します。

完了すると、スタックのステータスが DELETE_COMPLETE に変わります。

または、次の AWS CLI コマンドを実行して AWS CloudFormation スタックを削除することもできます。

aws cloudformation delete-stack --stack-name sam-app --region region

削除されたスタックを確認する

どちらの方法でも、AWS CloudFormation スタックが削除されていることを確認するには、https://console.aws.amazon.com/cloudformation にアクセスして、左側のナビゲーションペインで [Stacks] (スタック) を選択し、検索テキストボックスの右側のドロップダウンで [Deleted] (削除済み) を選択します。削除されたスタックのリストに、スタック名 [sam-app] (または作成したスタックの名前) が表示されます。