翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Step Functions AWS Serverless Application Model で を使用すると、ワークフローを構築し、Lambda 関数、APIs、イベントなどの必要なインフラストラクチャをデプロイして、サーバーレスアプリケーションを作成できます。
また、 CLI AWS Serverless Application Model を と組み合わせて、 AWS Step Functions ステートマシンを構築およびデプロイするための統合エクスペリエンス AWS Toolkit for Visual Studio Code の一部として使用することもできます。 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 ワークフローを構築する」を参照してください。