翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Simple Workflow Service リソース
この章では、Amazon SWF を使用してワークフローを開発する場合に有効なその他のリソースおよびリファレンス情報を提供します。
トピック
Amazon SWF タイムアウトの種類
ワークフロー実行を正しく行うため、Amazon SWF では異なる種類のタイムアウトを設定できます。一部のタイムアウトでは、ワークフローが完全に実行できる時間を指定します。その他のタイムアウトでは、ワーカーに割り当てる前にアクティビティタスクを実行できる時間と、スケジュールされてから完了までにかけることができる時間を指定します。Amazon SWF API のすべてのタイムアウトは秒単位で指定されます。Amazon SWF は、タイムアウト値として文字列 NONE
もサポートしています。これは、タイムアウトがないことを示します。
決定タスクとアクティビティタスクに関連するタイムアウトの場合、Amazon SWF はワークフロー実行履歴にイベントを追加します。イベントの属性により、発生したタイムアウトの種類と、影響を受けた決定タスクまたはアクティビティタスクに関する情報が提供されます。Amazon SWF は決定タスクもスケジュールします。ディサイダーが新しい決定タスクを受信すると、タイムアウトイベントが履歴に表示され、 アクションを呼び出して適切なRespondDecisionTaskCompletedアクションを実行します。
タスクは、スケジュールされてからクローズされるまではオープン状態と見なされます。したがって、ワーカーの処理中はタスクはオープン状態と報告されます。タスクは、ワーカーによって完了済み、キャンセル済み、または失敗と報告されるとクローズされます。タスクは、タイムアウトの結果として Amazon SWF によってクローズされる場合もあります。
ワークフローと決定タスクのタイムアウト
次の図は、ワークフローと決定のタイムアウトがワークフローの有効期間にどのように関係するかを示しています。
ワークフローと決定タスクに関連して 2 つのタイムアウトの種類があります。
-
ワークフローのスタートからクローズ (
timeoutType: START_TO_CLOSE
) - タイムアウトは、ワークフロー実行の完了までにかかる最大時間を指定します。これはワークフローの登録中にデフォルトとして設定されますが、ワークフローのスタート時に別の値でオーバーライドできます。このタイムアウトを超えると、Amazon SWF はワークフロー実行を終了し、タイプ のイベントWorkflowExecutionTimedOutをワークフロー実行履歴に追加します。イベント属性は、timeoutType
に加えて、このワークフロー実行に対して有効であるchildPolicy
を指定します。子ポリシーでは、親ワークフロー実行の回数がタイムアウトするか、それ以外に終了した場合に、子ワークフロー実行を処理する方法を指定します。たとえば、childPolicy
が TERMINATE に設定された場合、子ワークフロー実行は終了します。ワークフロー実行がタイムアウトすると、表示の呼び出し以外にこれに対してアクションを実行することはできません。 -
決定タスクのスタートからクローズ (
timeoutType: START_TO_CLOSE
) - このタイムアウトにより、対応するディサイダーが決定タスクを完了するまでにかかる最大時間を指定します。これはワークフロータイプの登録中に設定されます。このタイムアウトを超えると、タスクはワークフロー実行履歴でタイムアウトとしてマークされ、Amazon SWF はワークフロー履歴DecisionTaskTimedOutに タイプのイベントを追加します。イベントの属性には、この決定タスクがスケジュールされた日時 (scheduledEventId
) およびスタートされた日時 (startedEventId
) に対応するイベントの ID が含まれます。イベントの追加に加えて、Amazon SWF はこの決定タスクがタイムアウトしたことをディサイダーにアラートする新しい決定タスクをスケジュールします。このタイムアウトの発生後は、RespondDecisionTaskCompleted
を使用してタイムアウトした決定タスクを完了する試みは失敗します。
アクティビティタスクのタイムアウト
次の図は、タイムアウトがアクティビティタスクの有効期間にどのように関係するかを示します。
アクティビティタスクに関連して 4 つのタイムアウトの種類があります。
-
アクティビティタスクのスタートからクローズ (
timeoutType: START_TO_CLOSE
) – このタイムアウトは、ワーカーがタスクを受け取った後でアクティビティワーカーがタスクを処理するためにかかる最大時間を指定します。RespondActivityTaskCanceled、、RespondActivityTaskCompletedおよび を使用してタイムアウトしたアクティビティタスクを閉じようとすると失敗RespondActivityTaskFailedします。 -
アクティビティタスクのハートビート (
timeoutType: HEARTBEAT
) – このタイムアウトは、RecordActivityTaskHeartbeat
アクションを通じて進捗状況を提供する前にタスクが実行できる最大時間を指定します。 -
アクティビティタスクのスケジュールからスタート (
timeoutType: SCHEDULE_TO_START
) – このタイムアウトは、タスクを実行するワーカーを利用できない場合に、Amazon SWF がアクティビティタスクをタイムアウトするまでに待機する時間を指定します。タイムアウトした期限切れのタスクは、別のワーカーに割り当てられません。 -
アクティビティタスクのスケジュールからクローズ (
timeoutType: SCHEDULE_TO_CLOSE
) – このタイムアウトは、タスクがスケジュールされてから完了するまでにかかる時間を指定します。ベストプラクティスとして、この値はタスクタイムアウトとタスク schedule-to-start タイムアウトの合計より大きくすることはできません start-to-close 。
注記
タイムアウトの種類ごとにデフォルト値があり、通常は NONE
(無限) に設定されます。ただし、すべてのアクティビティの実行の最大時間は 1 年に制限されます。
アクティビティの種類を登録するときにこれらのデフォルト値を設定しますが、アクティビティタスクをスケジュールするときに新しい値でオーバーライドできます。これらのタイムアウトのいずれかが発生すると、Amazon SWF はワークフロー履歴ActivityTaskTimedOutに タイプのイベントを追加します。このイベントの timeoutType
値属性では、これらのタイムアウトがいつ発生するかを指定します。それぞれのタイムアウトで、timeoutType
の値は括弧内に示されます。イベントの属性には、アクティビティタスクがスケジュールされた日時 (scheduledEventId
) およびスタートされた日時 (startedEventId
) に対応するイベントの ID も含まれます。Amazon SWF は、イベントの追加に加えて、このタイムアウトが発生したことをディサイダーにアラートする新しい決定タスクをスケジュールします。
Amazon Simple Workflow Service エンドポイント
最新の Amazon SWF リージョンとエンドポイントのリストは、他のサービスのエンドポイントとともに「Amazon Web Services 全般のリファレンス」に記載されています。
Amazon SWF ドメインと関連するすべてのワークフローおよびアクティビティは、相互に通信するために同じリージョン内に存在している必要があります。さらに、リージョン内の登録済みのドメイン、ワークフロー、およびアクティビティは、他のリージョンには存在しません。例えば、us-east-1 と us-west-2 の両方にMySample「Domain」という名前のドメインを作成すると、それらは別々のドメインとして存在します。ドメインに関連付けられたワークフロー、タスクリスト、アクティビティ、またはデータはリージョン間で共有されません。
Amazon EC2 インスタンスなど、ワークフローで他の AWS リソースを使用する場合は、Amazon SWF リソースと同じリージョンにも存在する必要があります。この唯一の例外は、Amazon S3 や IAM など、複数のリージョンにまたがるサービスです。このようなサービスには、それをサポートするリージョンに存在するワークフローからアクセスできます。
Amazon Simple Workflow Service のその他のドキュメント
このデベロッパーガイドに加えて、以下のドキュメントが参考になります。
Amazon Simple Workflow Service API Reference (Amazon Simple Workflow Service API リファレンス)
Amazon Simple Workflow Service API Reference (Amazon Simple Workflow Service API リファレンス) は、アクション、リクエスト、およびレスポンスの構造とエラーコードを含め、Amazon SWF HTTP API に関する詳細情報を提供します。
AWS Flow Framework ドキュメント
AWS Flow Framework
各 は、設計されている言語で一意に動作する AWS Flow Framework ように設計されているため、選択した言語と自然に連携して、Amazon SWF のすべての利点を備えたワークフローを実装できます。
Java 用の AWS フローフレームワークがあります。AWS Flow Framework for Java デベロッパーガイドには、 AWS Flow Framework for Java を取得、セットアップ、使用する方法に関する情報が記載されています。
AWS SDK ドキュメント
AWS Software Development Kits (SDKsは、さまざまなプログラミング言語で Amazon SWF へのアクセスを提供します。SDK は HTTP API に非常によく似ていますが、一部の Amazon SWF 機能に対して言語固有のプログラミングインターフェイスも提供します。各 SDK の詳細については、以下のリンクを参照してください。
注記
執筆時点で Amazon SWF をサポートしている SDK のみを以下に示します。利用可能な AWS SDKs「Amazon Web Services のツール
- Java
-
AWS SDK for Java は、 AWS インフラストラクチャサービス用の Java API を提供します。
使用できるドキュメントを表示するには、「AWS SDK for Java Documentation
」(ドキュメント) のページを参照してください。また、以下のリンクに従って SDK リファレンスの Amazon SWF セクションに直接移動することもできます。 - JavaScript
-
AWS SDK for JavaScript を使用すると、デベロッパーは、ブラウザまたはサーバー上の Node.js アプリケーション内の両方で利用できるシンプルな easy-to-use API を使用して、 サービスを利用する AWS ライブラリまたはアプリケーションを構築できます。
使用できるドキュメントを表示するには、「AWS SDK for JavaScript Documentation
」(ドキュメント) のページを参照してください。また、以下のリンクに従って SDK リファレンスの Amazon SWF セクションに直接移動することもできます。 - .NET
-
AWS SDK for .NET は、Visual Studio プロジェクトテンプレート、 AWS .NET ライブラリ、C# コードサンプル、およびドキュメントを含む単一のダウンロード可能なパッケージです。 AWS SDK for .NET を使用すると、Windows デベロッパーは Amazon SWF やその他の のサービス用の .NET アプリケーションを簡単に構築できます。
使用できるドキュメントを表示するには、「AWS SDK for .NET Documentation
」(ドキュメント) のページを参照してください。また、以下のリンクに従って SDK リファレンスの Amazon SWF セクションに直接移動することもできます。 - PHP
-
AWS SDK for PHP は、Amazon SWF への PHP プログラミングインターフェイスを提供します。
使用できるドキュメントを表示するには、「AWS SDK for PHP Documentation
」(ドキュメント) のページを参照してください。また、以下のリンクに従って SDK リファレンスの Amazon SWF セクションに直接移動することもできます。 - Python
-
AWS SDK for Python (Boto) は、Amazon SWF への Python プログラミングインターフェイスを提供します。
利用可能なドキュメントを表示するには、「boto: A Python interface to Amazon Web Services
」(boto:Amazon Web Services への Python インターフェイス) ページを参照してください。また、以下のリンクに従ってドキュメントの Amazon SWF セクションに直接移動することもできます。 -
Amazon SWF Tutorial
(Amazon SWF のチュートリアル) -
Amazon SWF Reference
(Amazon SWF リファレンス)
-
- Ruby
-
AWS SDK for Ruby は、Amazon SWF への Ruby プログラミングインターフェイスを提供します。
使用できるドキュメントを表示するには、「AWS SDK for Ruby Documentation
」(ドキュメント) のページを参照してください。また、以下のリンクに従って SDK リファレンスの Amazon SWF セクションに直接移動することもできます。
AWS CLI ドキュメント
AWS Command Line Interface (AWS CLI) は、 AWS のサービスを管理するための統合ツールです。ダウンロードと設定を行うツールが 1 つしかないので、コマンドラインから複数の AWS サービスを制御したり、スクリプトで自動化したりできます。
の詳細については、 AWS CLIAWS Command Line Interface
Amazon SWF で使用できるコマンドの概要については、「AWS CLI コマンドリファレンス」の「swf」を参照してください。
Amazon Simple Workflow Service のウエブリソース
Amazon SWF の詳細を学習したり、このサービスを使用してワークフローを開発したりするために、数多くのウェブリソースがあります。
Amazon SWF フォーラム
Amazon SWF フォーラムは、Amazon の他の Amazon SWF 開発者や Amazon SWF 開発チームのメンバーとやり取りし、質問をしたり答えを得たりするための場所です。
このフォーラムには、フォーラム: Amazon Simple WorkflowService
Amazon SWF のよくある質問
Amazon SWF のよくある質問では、一般的ユースケース、Amazon SWF 間の違い、その他のサービスなどの概要を含む、Amazon SWF に関してよくある質問の回答を提供しています。
このよくある質問には、「Amazon SWF FAQ
Amazon SWF のビデオ
の YouTube Amazon Web Services
Ruby Flow の移行オプション
Ruby AWS Flow Framework 用 は、現在アクティブな開発が行われていません。既存のコードは今後も機能し続けますが、新しい機能またはバージョンはありません。このトピックは、Amazon SWF を使用し続けるための使用および移行オプション、および Step Functions への移行方法について説明します。
オプション | 説明 |
---|---|
現状、Ruby Flow Framework は機能しています。何もしないでいると、コードは引き続きそのまま機能し続けます。近い将来、 AWS Flow Framework for Ruby から移行する予定です。 |
|
Java Flow Framework は現在も開発中であり、今後も新しい機能や更新がリリースされます。 |
|
Step Functions は、ステートマシンと呼ばれる視覚的なワークフローを使用して、分散アプリケーションのコンポーネントを調整する方法を提供します。 |
|
Flow Framework を使用せずに SWF API を直接使用する | Ruby を使用し続け、Ruby Flow Framework の代わりに SWF API を直接使用できます。 |
Ruby であっても Java であっても、Flow Framework が提供する利点は、ワークフローロジックに専念できることです。フレームワークが細かい通信と調整の多くを処理し、複雑性の一部が抽象化されます。Java Flow Framework に移行することで同レベルの抽象化を維持できます。または Amazon SWF SDK を直接操作することもできます。
Ruby Flow Framework を使用し続ける
AWS Flow Framework for Ruby は、短期的には引き続き機能します。 AWS Flow Framework for Ruby にワークフローが書き込まれている場合、これらは引き続き機能します。更新、サポート、セキュリティの修正がないため、近い将来 AWS Flow Framework for Ruby から移行するしっかりとした計画を立てることをお勧めします。
Java Flow Framework に移行する
AWS Flow Framework for Java はアクティブな開発のままになります。概念的には、 AWS Flow Framework for Java は AWS Flow Framework for Ruby に似ています。ワークフローロジックに集中でき、フレームワークはディサイダーロジックの管理に役立ち、Amazon SWF の他の側面の管理を容易にします。
Step Functions に移行する
AWS Step Functions は、Amazon SWF に似ていますが、ワークフローロジックがステートマシンによって制御されるサービスを提供します。視覚的なワークフローを使用して、分散アプリケーションとマイクロサービスのコンポーネントを調整するには、Step Functions を使用します。それぞれ別個の関数 (タスク) を実行する個々のコンポーネントからアプリケーションを構築することで、簡単にアプリケーションをスケールおよび変更できます。Step Functions を使えば、安心してコンポーネントを調整し、アプリケーションの関数を配置できます。グラフィカルコンソールは、アプリケーションのコンポーネントを一連のステップとして可視化する手段を提供します。各ステップが自動的にトリガーおよび追跡され、エラーが発生した場合は再試行されるため、アプリケーションが毎回意図したとおりの順序で実行されます。また、Step Functions では各ステップの状態がログに記録されるため、問題が発生した場合は、問題を簡単に診断およびデバッグできます。
Step Functions では、Amazon States Language を使用して定義された宣言型 JSON で記述されたステートマシンを使用して、タスクの調整を管理します。ステートマシンを使用することで、アプリケーションロジックを制御するディサイダープログラムを作成および維持する必要がなくなります。Step Functions は、視覚的なワークフローを使用してアプリケーションコンポーネントを調整する直感的、効率的、迅速なアプローチを提供します。すべての新しいアプリケーション AWS Step Functions に を使用することを検討する必要があります。Step Functions は、 AWS Flow Framework for Ruby で現在実装しているワークフローの に移行するための優れたプラットフォームを提供します。
Ruby 言語のスキルを引き続き活用しながらタスクを Step Functions に移行するために、Step Functions には Ruby アクティビティワーカーのサンプルが用意されています。このサンプルはアクティビティワーカーを実装するベストプラクティスを使用しており、Step Functions にタスクロジックを移行するためのテンプレートとして使用できます。詳細については、「AWS Step Functions デベロッパーガイド」の「Ruby でのアクティビティワーカーの例」トピックを参照してください。
注記
多くのお客様にとって、 for AWS Flow Framework Ruby から Step Functions への移行が最適なオプションです。ただし、シグナルがプロセスに介入する必要がある場合、または結果を親に返す子プロセスを起動する必要がある場合は、Amazon SWF API を直接使用するか、 AWS Flow Framework for Java への移行を検討してください。
の詳細については AWS Step Functions、以下を参照してください。
Amazon SWF API を直接使用する
AWS Flow Framework for Ruby は Amazon SWF の複雑さの一部を管理しますが、Amazon SWF API を直接使用することもできます。API を直接使用することで、タスクの実装と調整を完全に制御するワークフローを構築できます。進行状況を追跡してその状態情報を維持するといった、内部的に複雑な処理を行う必要はありません。
-
Amazon Simple Workflow Service Developer Guide (Amazon Simple Workflow Service デベロッパーガイド)
-
Amazon Simple Workflow Service API Reference (Amazon Simple Workflow Service API リファレンス)