翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 Step Functions ワークショップ」の「 でデプロイする AWS SAM
で Step Functions を使用する理由 AWS SAM
で Step Functions を使用すると AWS SAM 、次のことができます。
-
AWS SAM サンプルテンプレートの使用を開始します。
-
ステートマシンをサーバーレスアプリケーションにビルドします。
-
変数置換を使用して、デプロイ時に ARN をステートマシンに置き換えます。
AWS CloudFormation は、CloudFormation テンプレートに指定した値にワークフロー定義内の動的な参照を追加できる
DefinitionSubstitutions
をサポートしています。${dollar_sign_brace}
表記を使用してワークフロー定義に代替を追加することで、動的な参照を追加できます。また、これらの動的参照は、CloudFormation テンプレートの StateMachine リソースのDefinitionSubstitutions
プロパティで定義する必要があります。これらの置換は、CloudFormation スタックの作成プロセス中に実際の値に置き換えられます。詳細については、「AWS SAM テンプレート内の DefinitionSubstitutions」を参照してください。 -
AWS SAM ポリシーテンプレートを使用してステートマシンのロールを指定します。
-
API Gateway、EventBridge イベント、または AWS SAM テンプレート内のスケジュールでステートマシンの実行を開始します。
Step Functions と AWS SAM 仕様 との統合
使用可能な AWS SAM ポリシーテンプレート を使用すると、ステートマシンにアクセス許可を追加できます。これらのアクセス許可を使用すると、Lambda 関数やその他の AWS リソースをオーケストレーションして、複雑で堅牢なワークフローを形成できます。
SAM CLI との Step Functions の統合
Step Functions は CLI AWS SAM と統合されています。これを使用して、ステートマシンをサーバーレスアプリケーションにすばやく開発します。
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。
AWS SAM テンプレート内の DefinitionSubstitutions
ステートマシンは、AWS SAM で CloudFormation テンプレートを使用して定義できます。AWS SAM では、ステートマシンをテンプレート内でインラインで定義するか、別個のファイルに定義できます。以下の AWS SAM テンプレートには、株取引のワークフローをシミュレートするステートマシンが含まれています。このステートマシンは 3 つの Lambda 関数を呼び出して、株の価格を確認し、株を売買するかを決定します。その後、この取引は Amazon DynamoDB テーブルに記録されます。次のテンプレートの Lambda 関数と DynamoDB テーブルの ARN は、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
が含まれています。例えば、Check Stock Value
タスクに静的 Lambda 関数 ARN を指定する代わりに、置換 ${StockCheckerFunctionArn}
が使用されます。この置換はテンプレートの DefinitionSubstitutions プロパティで定義されます。DefinitionSubstitutions
はステートマシンリソースのキーと値のペアのマップです。DefinitionSubstitutions
では、${StockCheckerFunctionArn} は CloudFormation 組み込み関数 !GetAtt
を使用して StockCheckerFunction
リソースの ARN にマッピングされます。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 } } }
次のステップ
AWS SAM で Step Functions を使用する方法の詳細については、次のリソースを参照してください。
-
AWS SAMを使用して Step Functions ステートマシンを作成する チュートリアルを完了して、 でステートマシンを作成します AWS SAM。
-
AWS::Serverless::StateMachine リソースを指定します。
-
使用する AWS SAM ポリシーテンプレート を検索します。
-
Step Functions と共に AWS Toolkit for Visual Studio Code を使用
-
AWS SAMで利用できる機能の詳細については「AWS SAM CLI リファレンス」を確認してください。
Infrastructure Composer の Workflow Studio などのビジュアルビルダーを使用して、Infrastructure as Code (IaC) でワークフローを設計および構築することもできます。詳細については、「Infrastructure Composer で Workflow Studio を使用して Step Functions ワークフローを構築する」を参照してください。