AWS SAM を使用して Step Functions ステートマシンを作成する
このガイドでは、AWS SAM ステートマシンを含むサンプル AWS Step Functions アプリケーションをダウンロード、ビルド、デプロイします。このアプリケーションは、事前定義されたスケジュールで実行されるモック株式取引ワークフローを作成します (スケジュールは手数料の発生を避けるためにデフォルトで無効になっています)。
以下の図は、このアプリケーションのコンポーネントを示しています。
以下は、サンプルアプリケーションを作成するために実行するコマンドのプレビューです。各コマンドの詳細については、このページの後半のセクションを参照してください。
# 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 applicationcdproject-directorysam build# Step 3 - Deploy your applicationsam deploy --guided
前提条件
このガイドは、ご使用の OS で AWS SAM CLI のインストールのステップを完了していることを前提としています。また、以下を完了していることを前提としています。
-
AWS アカウントを作成します。
-
IAM 許可を設定する
-
Homebrew のインストール。注: Homebrew は、Linux と macOS の唯一の前提条件です。
-
AWS SAM CLI のインストール。注: バージョン 0.52.0 以降を使用していることを確認してください。コマンド
sam --versionを実行すると、使用しているバージョンをチェックできます。
ステップ 1: サンプル AWS SAM アプリケーションをダウンロードする
実行するコマンド:
sam init
画面の指示に従って、次の項目を選択します。
-
[Template:] (テンプレート:) AWS クイックスタートテンプレート
-
[Language:] (言語:) Python、Ruby、NodeJS、Go、Java、または .NET
-
[Project name:] (プロジェクト名:) (任意の名前 - デフォルトは
sam-app) -
クイックスタートアプリケーション: マルチステップワークフロー
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 States Language を使用して Step Functions ワークフローを定義する
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 バケットにアップロードして CloudFormation を使用してアプリケーションをデプロイします。デプロイコマンドの出力では、CloudFormation スタックに加えられた変更を確認できます。
Step Functions ステートマシンの例が、次のこれらのステップに従って、正常にデプロイされたことを確認できます。
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/states/
で、Step Functions コンソールを開きます。 -
左側のナビゲーションで、[State machines] (ステートマシン) を選択します。
-
リストから新しいステートマシンを見つけて選択します。これは、StockTradingStateMachine-
<unique-hash>という名前になります。 -
[Definition] (定義) タブを選択します。
これで、ステートマシンのビジュアル表現が表示されます。ビジュアル表現が、プロジェクトディレクトリの statemachine/stockTrader.asl.json ファイルにあるステートマシン定義と一致していることを確認できます。
トラブルシューティング
SAM CLI エラー: "no such option: --guided"
sam deploy の実行時に、以下のエラーが表示されます。
Error: no such option: --guided
これは、AWS SAM パラメータをサポートしていない古いバージョンの --guided 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 リソースが不要になった場合は、デプロイした CloudFormation スタックを削除することでそれらを削除できます。
CloudFormation を使用してこのチュートリアルで作成した AWS マネジメントコンソール スタックを削除するには、以下のステップを実行します。
AWS マネジメントコンソール にサインインし、CloudFormation コンソール (https://console.aws.amazon.com/cloudformation
) を開きます。 -
左のナビゲーションペインで [Stacks] (スタック) をクリックします。
-
スタックのリストで、[sam-app] (または作成したスタックの名前) を選択します。
-
[Delete] (削除) を選択します。
完了すると、スタックのステータスが DELETE_COMPLETE に変わります。
または、次の CloudFormation コマンドを実行して AWS CLI スタックを削除することもできます。
aws cloudformation delete-stack --stack-namesam-app--regionregion
削除されたスタックを確認する
どちらの方法で CloudFormation スタックを削除した場合でも、https://console.aws.amazon.com/cloudformation