翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform を使用して Step Functions にステートマシンをデプロイする
Terraform
Terraform に精通していれば、Terraform でステートマシンを作成してデプロイするためのモデルとして、このトピックで説明する開発ライフサイクルをたどることができます。Terraform に慣れていない場合は、まず「AWS Introduction to Terraform on
ヒント
Terraform を使用して構築されたステートマシンの例を にデプロイするには AWS アカウント、「ワークショップ」の「Infrastructure as Code を使用したステートマシンの管理
前提条件
開始するには、以下の前提条件を満たしていることを確認する必要があります。
-
Terraform をマシンにインストールします。Terraform のインストールについて詳しくは、「Terraform をインストールする
」を参照してください。 -
マシンに Step Functions Local をインストールします。Step Functions Local を使用するには、Step Functions Local の Docker イメージをインストールすることをお勧めします。詳細については、「Step Functions でステートマシンをローカルでテストする」を参照してください。
-
をインストールします AWS SAM CLI。インストールの詳細については、「 AWS Serverless Application Model デベロッパーガイド」の AWS SAM CLI「 のインストール」を参照してください。
-
をインストール 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メソッドは避けることをお勧めします。これにより、ステートマシン定義へのパラメータ代入が容易になります。
-
(オプション) 内のASL定義を更新IDEし、 を使用して変更を視覚化します AWS Toolkit for Visual Studio Code。
定義を継続的にエクスポートしてプロジェクトにリファクタリングしないように、ローカルで更新を行い、Git
でこれらの更新IDEを追跡することをお勧めします。 -
Step Functions Local を使用してワークフローをテストします。
ヒント
ローカル を使用して、ステートマシン内の Lambda 関数とAPIゲートウェイとのサービス統合をAWS SAM CLIローカルAPIsでテストすることもできます。
-
ステートマシンをデプロイする前に、ステートマシンやその他の 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 の例