翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform を使用して Step Functions でステートマシンをデプロイする
Terraform
Terraform に精通していれば、Terraform でステートマシンを作成してデプロイするためのモデルとして、このトピックで説明する開発ライフサイクルをたどることができます。Terraform に慣れていない場合は、まず「AWS Introduction to Terraform on
ヒント
Terraform を使用して構築されたステートマシンの例を AWS アカウント にデプロイするには、「AWS Step Functions ワークショップ」の「コードとしてのインフラストラクチャによるステートマシンの管理」モジュールを参照してください。
前提条件
開始するには、以下の前提条件を満たしていることを確認する必要があります。
-
Terraform をマシンにインストールします。Terraform のインストールについて詳しくは、「Terraform をインストールする
」を参照してください。 -
マシンに Step Functions Local をインストールします。Step Functions Local を使用するには、Step Functions Local の Docker イメージをインストールすることをお勧めします。詳細については、「Step Functions Local を使用したステートマシンのテスト (サポートされていません)」を参照してください。
-
AWS SAM CLI をインストールします。インストールの情報については、「AWS Serverless Application Model デベロッパーガイド」の「AWS SAM SDK for JavaScript のインストール」を参照してください。
-
AWS Toolkit for Visual Studio Code をインストールすると、ステートマシンのワークフロー図が表示されます。インストールの情報については、「AWS Toolkit for Visual Studio Code ユーザーガイド」の「AWS Toolkit for Visual Studio Code のインストール」を参照してください。
Terraform を使用したステートマシンの開発ライフサイクル
以下の手順では、Step Functions コンソールの Workflow Studio を使用してビルドしたステートマシンプロトタイプを、Terraform と AWS Toolkit for Visual Studio Code によるローカル開発の開始点として使用する方法について説明します。
Terraform を使ったステートマシン開発について説明してベストプラクティスの詳細を示す完全な例を見るには、「Best Practices for Writing Step Functions Terraform Projects
Terraform を使ってステートマシンの開発ライフサイクルを開始するには
-
次のコマンドを使用して、新しい Terraform プロジェクトをブートストラップします。
terraform init
-
Step Functions コンソール
を開き、ステートマシンのプロトタイプを作成します。 -
Workflow Studio で、以下を実行します。
-
ワークフロープロトタイプを作成します。
-
ワークフローの Amazon States Language (ASL) 定義をエクスポートします。これを行うには、[インポート / エクスポート] ドロップダウンリストを選択して、[JSON 定義をエクスポート] を選択します。
-
-
エクスポートした ASL 定義をプロジェクトディレクトリに保存します。
エクスポートした ASL 定義を、
templatefile
関数を使用する aws_sfn_state_machine
Terraform リソースに入力パラメータとして渡します。この関数は、エクスポートされた ASL 定義と変数置換を渡す定義フィールド内で使用されます。 ヒント
ASL 定義ファイルには長いテキストブロックが含まれることがあるため、インライン EOF メソッドを避けることをお勧めします。これにより、ステートマシン定義へのパラメータ代入が容易になります。
-
(オプション) IDE 内の ASL 定義を更新し、AWS Toolkit for Visual Studio Code を使用して変更内容を視覚化します。
定義を継続的にエクスポートしてプロジェクトにリファクタリングすることを避けるために、IDE でローカルに更新を行い、その更新を Git
で追跡することをお勧めします。 -
Step Functions Local を使用してワークフローをテストします。
ヒント
AWS SAM CLI Local を使用して、ステートマシンで Lambda 関数および API Gateway API とのサービス統合をローカルでテストすることもできます。
-
ステートマシンをデプロイする前に、ステートマシンやその他の AWS リソースをプレビューしてください。これを行うには、以下のコマンドを実行します。
terraform plan
-
以下のコマンドを使用して、ローカル環境または CI/CD パイプライン
からステートマシンをデプロイします。 terraform apply
-
(オプション) 以下のコマンドを使用して、リソースをクリーンアップし、ステートマシンを削除します。
terraform destroy
ステートマシンの IAM ロールとポリシー
Terraform サービス統合ポリシー
IAM ポリシーの以下の例では、
という Lambda 関数を呼び出すためのアクセス権をステートマシンに付与します。myFunction
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:
myFunction
" } ] }
Terraform でステートマシンの IAM ポリシーを定義するときにもこの aws_iam_policy_document
IAM ポリシーの以下の例では、aws_iam_policy_document
データソースを使用して、
という Lambda 関数を呼び出すためのアクセス権をステートマシンに付与します。myFunction
data "aws_iam_policy_document" "state_machine_role_policy" { statement { effect = "Allow" actions = [ "lambda:InvokeFunction" ] resources = ["${aws_lambda_function.
[[myFunction]]
.arn}:*"] } }
ヒント
Terraform でデプロイされた、より高度な AWS アーキテクチャパターンを表示するには、「Terraform examples at Serverless Land Workflows Collection