問題タブ [amazon-swf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 一部のワークフロー実行を他のものより優先する
私は amazon swf のフロー フレームワークを使用しており、優先度の高いワークフローの実行と通常のワークフローの実行を実行できるようにしたいと考えています。優先度の高いタスクがある場合、アクティビティは通常の優先度のタスクより優先度の高いタスクを優先する必要があります。これを達成するための最良の方法は何ですか?
以下がうまくいくかもしれないと思っていますが、より良い/推奨されるアプローチがあるのではないかと思います。
- アクティビティ用に 2 つのアクティビティ ワーカーと 2 つのアクティビティ リストを定義します。1 つの優先リストと 1 つの通常リスト。各ワーカーは同じアクティビティ クラスを使用します。
- 両方のワーカーが同じホスト (ec2 インスタンス) で実行されます。
- ワークフローでは、startNormalWorkflow と startHighWorkflow の 2 つのメソッドを定義します。startHighWorkflow メソッドでは、ActivitySchedulingOptions を使用して、タスクを優先度の高いリストに入れることができます。
このアプローチの問題は、優先度の高いタスクが通常のタスクの前にスケジュールされるという保証がないことです。
amazon-web-services - ワークフローの一意性を確保するためのworkflowIdの使用
さまざまな cron ベースのプロセスから Amazon Simple Workflow Service に移行しています。これらの多くは、特定の時間に実行する必要がなくなり、必要なときにトリガーされるだけです。ただし、特定のワークフローでは、ワークフロー (または、ワークフロー内のすべてのアクティビティ) が並行して発生せず、常に 1 つのみが実行されることを保証する必要があります。ただし、終了したら、再度実行しても問題ありません。
ワークフロー ID の一意性に依存することは、何か問題があるのでしょうか、それとも設計が悪いのでしょうか? もしそうなら、何が問題で、特定のワークフローが開始されるべきではないときに開始されないようにするには、システムをどのように設計すればよいでしょうか。
amazon-web-services - Amazon SWF ディサイダーがアクティビティタスクの状態をチェックするための高レベル PHP ライブラリ
Amazon SWF のかなり単純なワークフローの PHP を書いています。特定のアクションが開始または完了したかどうかを確認するライブラリを書き始めていることに気付きました。基本的に、イベント リストをループして進捗状況を確認し、必要に応じて適切なアクティビティを開始します。アクティビティの種類と入力情報がすべてのイベントにあるわけではなく、ActivityTaskScheduled イベントにあるように見えるため、これは少しおかしい場合があります。途中でこの種のことを発見したので、イベント リストに関する微妙な点を見落としているのではないかと心配しています。
さまざまなアクティビティの現在の状態を見つけるために、誰かが何らかの汎用ライブラリを既に作成しているに違いないと私は思います。おそらく、SWF に関連付けられたフローチャートをコーディングするための、より宣言的な方法でさえあるでしょう。このようなものはPHPに存在しますか?
(ググっても何も出てこない)
php - アクティビティが完了するまで、実行中の Upstart + PHP + SWF アクティビティ スクリプトをアップグレードする
PHP デーモン (Upstart 経由) を使用して分散システムを作成し、SWF ディサイダーとアクティビティを実行して、多くの cron ジョブと、バックグラウンドで非同期に実行される可能性のあるプロセスを置き換えようとしています。
ただし、よくわからない点があります。
これらのスクリプトが複数のサーバーで実行されている可能性がある場合、これらのスクリプトをアップグレードする良い方法は何ですか?
スクリプトをアップグレードしてデーモンを再起動する前に、実行中のアクティビティを確実に終了するにはどうすればよいですか
私はコードベースのために PHP に固執する必要がありますが、必要に応じて他の「ラッピング」スクリプトを少し除外するわけではありません。
amazon-web-services - AWS SWFシグナル中とタイマー後の決定のベストプラクティス?
AWS SWF に適していると思われる一連のビジネスプロセスがあります。
これらのプロセスのいくつかには、1 週間から 3 か月の待機期間が含まれます。(簡潔で十分に説明されていない) 例は、「ユーザーが特定のサービスにサインアップした場合、4 か月後もまだ購読している場合は、何らかの形の報酬を送信する」という行に沿っている可能性があります。
サインアップ プロセスをワークフローから開始し、4 か月の待機期間のタイマーを設定することで、これをモデル化することを考えています。
サブスクライバーがその 4 か月の期間内にサブスクリプションをキャンセルした場合、報酬を送信したくないという事実に問題があります。
これを行うには 2 つの方法があります。キャンセル時に「キャンセル」シグナルを送信する (「スリープ」ワークフローを停止する) か、「報酬を送信する」ステップの前に (つまり、ワークフローの後) 「サブスクリプションを確認する」決定を行うかです。目覚める")。(明らかに、「ベルトとブレース」アプローチの場合、両方を行うこともできます)
ここで推奨されるベスト プラクティスはありますか? これらのさまざまなビジネス プロセスが、一度に数万、アクティブまたはスリープ状態になる可能性があります。
amazon-sqs - SQS メッセージに基づく SWF ワークフローのトリガー
プリアンブル:非常に一般的なユースケースと思われるものについて提案をまとめようとしています。目標を達成するために Amazon の SWF と SQS を使用したいと考えています。私がやろうとしていることにより適したサービスが他にもあるかもしれません。
問題:最も基本的な必要性は、クライアント (モバイル デバイス、Web サーバーなど) が、クライアントへの応答なしで非同期に処理されるメッセージを投稿することです。これは非常に基本的なことです。
意図した実装は、クライアントが事前に決定された SQS キューにメッセージをポストすることです。その時点で、クライアントは完了です。また、メッセージをキューから取得し、(何らかの操作を行った後) Dynamo DB に配置する役割を担う、定義済みの SWF ワークフローも用意します。これも、すべて非常に簡単です。
私が理解できないように見えるのは、ワークフローを開始する方法です。私が読んだことから、ワークフローは無期限のプロセスであることを意図したものではありません。始まり、中間、終わりがあります。SWF のドキュメントによると、ワークフローは 1 年以上実行できません ( SWF でのタイムアウト値の設定)。
ですから、私の質問は次のとおりです。ワークフローが 1 つのメッセージ処理フローを表していると仮定すると、メッセージが SQS に投稿されるたびにワークフローを開始するにはどうすればよいですか?
警告: SQS の代わりに SNS を使用することも検討しました。これにより、SNS をサブスクライブできるサーバーを実行し、通知が投稿されるたびにワークフローを開始できます。それは確かに1つの解決策ですが、処理されるメッセージの数に応じて管理/スケーリングする必要がある単一のWebサービス用にサーバーをセットアップすることは避けたいと思います。そもそも SQS/SWF の使用を検討している理由は、心配する必要のない自動スケーリング システムを用意するためです。
前もって感謝します。
asp.net - AWS を使用してスケジュールされたタスク
私は現在、Windows のスケジュールされたタスクを実行して .net スクリプトを実行し、日の注文を処理する Windows インスタンスを AWS に持っています。
最近、ELB を使用していくつかのインスタンスの負荷を分散しましたが、これはすべて問題ありません。
問題は、すべてのインスタンスが実行しないように、スケジュールされたタスクをどのようにセットアップするかです。AWS で OpsWorks、SimpleWorkFlow などを調査しましたが、この比較的単純なタスクでどれに焦点を当てるべきかについて非常に混乱しています。
ありがとう
amazon-swf - シンプルなワークフロー 新しいバージョンを登録する
アクティビティのタイムアウトを変更しました。aws doc には、この場合、そのタイプの新しいバージョンを登録する必要があると書かれています。しかし、実行で新しいバージョンを使用するにはどうすればよいでしょうか?