翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SAM を使用して Step Functions ワークフローを構築する
Step Functions AWS Serverless Application Model で を使用すると、ワークフローを構築し、Lambda 関数APIsやイベントを含む必要なインフラストラクチャをデプロイして、サーバーレスアプリケーションを作成できます。
統合エクスペリエンス AWS Toolkit for Visual Studio Code の一部として と を組み合わせて、 AWS Serverless Application Model CLI AWS Step Functions ステートマシンを構築およびデプロイすることもできます。を使用してサーバーレスアプリケーションを構築し AWS SAM、VS Code にステートマシンを構築できますIDE。その後、リソースを検証、パッケージ化、デプロイできます。
ヒント
を使用して Step Functions ワークフローを開始するサンプルサーバーレスアプリケーションを AWS SAM にデプロイするには AWS アカウント、 AWS Step Functions 「ワークショップ」の「モジュール 11 - でデプロイ AWS SAM
で Step Functions を使用する理由 AWS SAM
で Step Functions を使用すると AWS SAM 、次のことができます。
-
AWS SAM サンプルテンプレートの使用を開始します。
-
ステートマシンをサーバーレスアプリケーションにビルドします。
-
可変置換を使用して、デプロイ時にステートマシンARNsに置換します。
AWS CloudFormation
DefinitionSubstitutions
は、ワークフロー定義で動的参照を で指定した値に追加できる をサポートします。CloudFormation テンプレート。${dollar_sign_brace}
表記を使用してワークフロー定義に代替を追加することで、動的な参照を追加できます。また、 の StateMachine リソースのDefinitionSubstitutions
プロパティでこれらの動的参照を定義する必要があります。CloudFormation テンプレート。これらの置換は、 中に実際の値に置き換えられます。CloudFormation スタックの作成プロセス。詳細については、「DefinitionSubstitutions の AWS SAM テンプレート」を参照してください。 -
AWS SAM ポリシーテンプレートを使用してステートマシンのロールを指定します。
-
API ゲートウェイ、 EventBridge イベント、または AWS SAM テンプレート内のスケジュールでステートマシンの実行を開始します。
Step Functions と AWS SAM 仕様 との統合
使用可能な AWS SAM ポリシーテンプレート を使用すると、ステートマシンにアクセス許可を追加できます。これらのアクセス許可により、Lambda 関数やその他の AWS リソースをオーケストレーションして、複雑で堅牢なワークフローを形成できます。
Step Functions と の統合 SAM CLI
Step Functions は と統合されています AWS SAM CLI。これを使用して、ステートマシンをサーバーレスアプリケーションにすばやく開発します。
AWS SAMを使用して Step Functions ステートマシンを作成する チュートリアルを試して、 AWS SAM を使用してステートマシンを作成する方法について説明します。
サポートされている AWS SAM CLI関数は次のとおりです。
CLI コマンド | 説明 |
---|---|
sam init |
AWS SAM テンプレートを使用してサーバーレスアプリケーションを初期化します。Step Functions の SAM テンプレートで使用できます。 |
sam validate | AWS SAM テンプレートを検証します。 |
sam package |
AWS SAM アプリケーションをパッケージ化します。コードと依存関係のZIPファイルを作成し、Amazon S3 にアップロードします。次に、 AWS SAM テンプレートのコピーを返し、ローカルのアーティファクトへの参照を、コマンドがアーティファクトをアップロードした Amazon S3 の場所に置き換えます。 |
sam deploy | AWS SAM アプリケーションをデプロイします。 |
sam publish |
AWS SAM アプリケーションを に発行します AWS Serverless Application Repository。このコマンドはパッケージ化された AWS SAM テンプレートを取得し、アプリケーションを指定されたリージョンに発行します。 |
注記
local を使用する場合は AWS SAM 、Lambda と API Gateway をローカルでエミュレートできます。ただし、 を使用して Step Functions をローカルでエミュレートすることはできません AWS SAM。
DefinitionSubstitutions の AWS SAM テンプレート
ステートマシンは、 を使用して定義できます。CloudFormation を使用した テンプレート AWS SAM。 の使用 AWS SAMでは、ステートマシンをテンプレートまたは別のファイルでインラインで定義できます。以下のようになります AWS SAM テンプレートには、株式取引ワークフローをシミュレートするステートマシンが含まれています。このステートマシンは 3 つの を呼び出します。Lambda は、株式の価格をチェックし、株式を売買するかどうかを決定する機能を備えています。その後、このトランザクションは に記録されます。Amazon DynamoDB テーブル。ARNs の の Lambda 関数と DynamoDB 次のテンプレートの テーブルは、 を使用して指定しますDefinitionSubstitutions
。
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: | step-functions-stock-trader Sample SAM Template for step-functions-stock-trader Resources: StockTradingStateMachine: Type: AWS::Serverless::StateMachine Properties: DefinitionSubstitutions: StockCheckerFunctionArn: !GetAtt StockCheckerFunction.Arn StockSellerFunctionArn: !GetAtt StockSellerFunction.Arn StockBuyerFunctionArn: !GetAtt StockBuyerFunction.Arn DDBPutItem: !Sub arn:${AWS::Partition}:states:::dynamodb:putItem DDBTable: !Ref TransactionTable Policies: - DynamoDBWritePolicy: TableName: !Ref TransactionTable - LambdaInvokePolicy: FunctionName: !Ref StockCheckerFunction - LambdaInvokePolicy: FunctionName: !Ref StockBuyerFunction - LambdaInvokePolicy: FunctionName: !Ref StockSellerFunction DefinitionUri: statemachine/stock_trader.asl.json StockCheckerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-checker/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockSellerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-seller/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockBuyerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-buyer/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 TransactionTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S
以下のコードは、AWS SAMを使用して Step Functions ステートマシンを作成する チュートリアルで使用する、stock_trader.asl.json
ファイルのステートマシン定義です。このステートマシン定義には、${dollar_sign_brace}
表記で示される複数の DefinitionSubstitutions
が含まれています。例えば、静的 を指定する代わりに Lambda Check Stock Value
はタスクARNの 関数で、置換${StockCheckerFunctionArn}
が使用されます。この置換はテンプレートの DefinitionSubstitutions プロパティで定義されます。DefinitionSubstitutions
はステートマシンリソースのキーと値のペアのマップです。ではDefinitionSubstitutions
、${StockCheckerFunctionArn} は を使用してStockCheckerFunction
リソースARNの にマッピングされます。CloudFormation 組み込み関数 !GetAtt
。をデプロイするとき AWS SAM テンプレート。テンプレートDefinitionSubstitutions
の は実際の値に置き換えられます。
{ "Comment": "A state machine that does mock stock trading.", "StartAt": "Check Stock Value", "States": { "Check Stock Value": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockCheckerFunctionArn}" }, "Next": "Buy or Sell?" }, "Buy or Sell?": { "Type": "Choice", "Choices": [ { "Variable": "$.stock_price", "NumericLessThanEquals": 50, "Next": "Buy Stock" } ], "Default": "Sell Stock" }, "Buy Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockBuyerFunctionArn}" }, "Retry": [ { "ErrorEquals": [ "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException", "Lambda.TooManyRequestsException" ], "IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2 } ], "Next": "Record Transaction" }, "Sell Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockSellerFunctionArn}" }, "Next": "Record Transaction" }, "Record Transaction": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:putItem", "Parameters": { "TableName": "${DDBTable}", "Item": { "Id": { "S.$": "$.id" }, "Type": { "S.$": "$.type" }, "Price": { "N.$": "$.price" }, "Quantity": { "N.$": "$.qty" }, "Timestamp": { "S.$": "$.timestamp" } } }, "End": true } } }
次のステップ
で Step Functions を使用する方法の詳細については、 AWS SAM 次のリソースを参照してください。
-
AWS SAMを使用して Step Functions ステートマシンを作成する チュートリアルを完了して、 でステートマシンを作成します AWS SAM。
-
AWS::Serverless::StateMachine リソースを指定します。
-
使用する AWS SAM ポリシーテンプレート を検索します。
-
Step Functions と共に AWS Toolkit for Visual Studio Code を使用
-
AWS SAM CLI リファレンスを確認して、 で使用できる機能の詳細を確認してください AWS SAM。
の Workflow Studio などのビジュアルビルダーを使用して、Infrastructure as Code (IaC ) でワークフローを設計および構築することもできます。Infrastructure Composer。 詳細については、「」を参照してくださいでの Workflow Studio の使用 Infrastructure Composer Step Functions ワークフローを構築するには。