翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 applicationcd
project-directory
sam 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 バケットにアップロードして AWS CloudFormation を使用してアプリケーションをデプロイします。デプロイコマンドの出力では、AWS CloudFormation スタックに加えられた変更を確認できます。
Step Functions ステートマシンの例が、次のこれらのステップに従って、正常にデプロイされたことを確認できます。
AWS Management Console にサインインし、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
これは、--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 スタックを削除するには、以下のステップを実行します。
AWS Management Console にサインインし、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation
) を開きます。 -
左のナビゲーションペインで [Stacks] (スタック) をクリックします。
-
スタックのリストで、[sam-app] (または作成したスタックの名前) を選択します。
-
[Delete] (削除) を選択します。
完了すると、スタックのステータスが DELETE_COMPLETE に変わります。
または、次の AWS CLI コマンドを実行して AWS CloudFormation スタックを削除することもできます。
aws cloudformation delete-stack --stack-name
sam-app
--regionregion
削除されたスタックを確認する
どちらの方法でも、AWS CloudFormation スタックが削除されていることを確認するには、https://console.aws.amazon.com/cloudformation