サブスクリプションワークフローのチュートリアル: ワークフローの実行 - Amazon Simple Workflow Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サブスクリプションワークフローのチュートリアル: ワークフローの実行

ワークフロー、アクティビティ、ワークフローとアクティビティのポーラーの実装を完了したので、ワークフローを実行する準備ができました。

まだ行っていない場合は、チュートリアルのパート 1 の AWS セッションの設定 と同じく、aws-config.txt ファイルの AWS アクセスキーを提供する必要があります。

では、コマンドラインに進み、チュートリアルのソースファイルがあるディレクトリに移動します。以下のファイルが必要です。

. |-- aws-config.txt |-- basic_activity.rb |-- get_contact_activity.rb |-- send_result_activity.rb |-- subscribe_topic_activity.rb |-- swf_sns_activities.rb |-- swf_sns_workflow.rb |-- utils.rb `-- wait_for_confirmation_activity.rb

次のコマンドを使ってワークフローを開始します。

ruby swf_sns_workflow.rb

これにより、ワークフローが開始され、コピーして別のコマンドラインウィンドウに (または、チュートリアルのソースファイルをコピーしている別のコンピュータがあればそこに) 貼り付けできる行のあるメッセージが出力されます。

Amazon SWF Example ------------------ Start the activity worker, preferably in a separate command-line window, with the following command: > ruby swf_sns_activities.rb 87097e76-7c0c-41c7-817b-92527bb0ea85-activities You can copy & paste it if you like, just don't copy the '>' character. Press return when you're ready...

ワークフローコードは、別のウィンドウでアクティビティポーラーが開始するのをじっと待機します。

新しいコマンドラインウィンドウを開いて、ソースファイルがあるディレクトリに再度移動した後、swf_sns_workflow.rb によりされるコマンドを使用してアクティビティポーラーを開始します。たとえば、上記の出力を受け取った場合、以下を入力 (または貼り付け) します。

ruby swf_sns_activities.rb 87097e76-7c0c-41c7-817b-92527bb0ea85-activities

アクティビティポーラーを開始したら、アクティビティ登録についての情報の出力が開始されます。

** initialized and registered activity: get_contact_activity ** initialized and registered activity: subscribe_topic_activity ** initialized and registered activity: wait_for_confirmation_activity ** initialized and registered activity: send_result_activity

これで、元のコマンドラインのウィンドウに戻り、リターンを押してワークフロー実行を開始できます。これにより、ワークフローは登録され、最初のアクティビティがスケジュールされます。

Starting workflow execution. ** registered workflow: swf-sns-workflow ** scheduling activity task: get_contact_activity

アクティビティポーラーを実行しているもう 1 つのウィンドウに戻ります。最初に実行しているアクティビティの結果が表示され、メールまたは SMS 電話番号を入力するよう求められます。これらのデータのいずれか、または両方を入力し、入力したテキストを確認します。

activity task received: <AWS::SimpleWorkflow::ActivityTask> ** Starting activity task: get_contact_activity Please enter either an email address or SMS message (mobile phone) number to receive Amazon SNS notifications. You can also enter both to use both address types. If you enter a phone number, it must be able to receive SMS messages, and must be 11 digits (such as 12065550101 to represent the number 1-206-555-0101). Email: me@example.com Phone: 12065550101 You entered: email: me@example.com phone: 12065550101 Is this correct? (y/n): y
注記

ここにある電話番号は架空のもので、例を示すことのみを目的として使用しています。実際には自分の電話番号とメールアドレスを使用します。

この情報を入力するとすぐに、Amazon SNS からメールまたはからテキストメッセージが届き、トピックのサブスクリプションを確認するよう求められます。SMS 番号を入力した場合は、電話に次のような画面が表示されます。

このメッセージへ YES と返信すると、send_result_activity で提供したレスポンスが返されます。

このすべてが起こったときに、コマンドラインのウィンドウで何が起きているか確認しましたか? ワークフローとアクティビティポーラーは、ずっと作業し続けています。

ワークフローポーラーの出力を以下に示します。

** scheduling activity task: subscribe_topic_activity ** scheduling activity task: wait_for_confirmation_activity ** scheduling activity task: send_result_activity !! All activities complete! Sending complete_workflow_execution...

アクティビティポーラーの出力を以下に示します。これは、もう 1 つのコマンドラインウィンドウで起きていたことです。

++ Activity task completed: get_contact_activity ** Starting activity task: subscribe_topic_activity ++ Activity task completed: subscribe_topic_activity ** Starting activity task: wait_for_confirmation_activity Topic subscription still pending for (email: me@example.com) Topic subscription confirmed for (sms: 12065550101) ++ Activity task completed: wait_for_confirmation_activity ** Starting activity task: send_result_activity Thanks, you've successfully confirmed registration, and your workflow is complete! ++ Activity task completed: send_result_activity All done!

これで、ワークフロー、そしてこのチュートリアルはすべて完了しました。

タイムアウトの動作を確認するため、または、異なるデータを入力するために、ワークフローを再度実行する場合があるかもしれません。一度トピックへのサブスクライブをすると、サブスクリプションを解除するまではサブスクリプションが継続していることを忘れないで下さい。トピックへのサブスクライブを解除する前にワークフローを再度実行すると、おそらく自動的に成功します。wait_for_confirmation_activity によりサブスクリプションがすでに確認されているとみなされるからです。

Amazon SNS トピックのサブスクライブを解除する方法

  • テキストメッセージに否定の返信をします (STOP を送信)。

  • E メールで受信したサブスクリプション解除のリンクを選択します。

トピックを再度サブスクライブする準備ができました。

次のステップ

このチュートリアルでは多くの基礎を学習しましたが、AWS SDK for Ruby、Amazon SWF、または Amazon SNS について学べることはまだたくさんあります。詳細および、さらに多くの例については、以下の各項目の公式ドキュメントを参照してください。