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

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

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

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

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

このチュートリアルのワークフローを示す図。

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

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

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

実行するコマンド:

sam init

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

  1. テンプレート: 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 つの特に興味深いファイルがあります:

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 コマンドを使用して構築したデプロイアーティファクトを取得し、パッケージ化して CLI によって作成された Amazon S3 AWS SAM バケットにアップロードし、 を使用してアプリケーションをデプロイします 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 を使用しているということです。これを修正するには、CLI AWS SAM のバージョンを 0.33.0 以降に更新するか、 sam deploy コマンドから --guidedパラメータを省略します。

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

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

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

つまり、CLI AWS SAM が AWS サービスコールを実行できるように AWS 認証情報を設定していないということです。これを修正するには、 AWS 認証情報を設定する必要があります。詳細については、AWS 「 デベロッパーガイド」の「認証情報のセットアップ」を参照してください。 AWS Serverless Application Model

クリーンアップ

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

を使用してこのチュートリアルで作成した AWS CloudFormation スタックを削除するには AWS Management Console、次の手順に従います。

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/cloudformation で AWS 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 に移動し、左側のナビゲーションペインでスタックを選択し、検索テキストボックスの右側にあるドロップダウンで削除を選択します。削除されたスタックのリストに、スタック名 [sam-app] (または作成したスタックの名前) が表示されます。