サブスクリプションワークフローのチュートリアルのパート 1: ​Amazon SWF を ​AWS SDK for Ruby と共に使用する - Amazon Simple Workflow Service

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

サブスクリプションワークフローのチュートリアルのパート 1: ​Amazon SWF を ​AWS SDK for Ruby と共に使用する

AWS SDK for Ruby​ を含む

utils.rb というファイルを作成して開始します。このファイルのコードは、ワークフローコードとアクティビティコードの両方で使用される Amazon SWF ドメインを取得または作成し、すべてのクラスに共通のコードを配置する場所を提供します。

最初に、aws-sdk-v1 ライブラリをコードに含める必要があります。これにより、SDK for Ruby が提供する機能を使用できるようになります。

require 'aws-sdk-v1'

これにより、AWS の名前空間にアクセスできます。これは、AWS の認証情報やリージョンなどのグローバルなセッション関連の値を設定する機能を提供し、AWS のサービス API へのアクセスも提供します。

AWS セッションの設定

AWS セッションを設定するには、(AWS のサービスにアクセスするために必要な) AWS 認証情報と、使用する AWS リージョンを設定します。

AWS SDK for Ruby で AWS クレデンシャルを設定するには、環境変数 (AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY) で設定するか、AWS.config で設定する方法があります。後者の方法を使用して、aws-config.txt という YAML 設定ファイルからロードします。これは次のようになります。

--- :access_key_id: REPLACE_WITH_ACCESS_KEY_ID :secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY

このファイルを作成し、REPLACE_WITH_ で始まる文字列を AWS アクセスキー ID とシークレットアクセスキーに置き換えます。AWS アクセスキーに関する情報については、Amazon Web Services 全般リファレンス の「セキュリティ認証情報の取得方法は?」を参照してください。

また、使用する AWS リージョンを設定する必要があります。Short Message Service (SMS) を使用して Amazon SNS でユーザーの電話にテキストメッセージを送信するため、Amazon SNS でサポートされているリージョンを使用していることを確認する必要があります。「Amazon Simple Notification Service 開発者ガイド」の「サポートされているリージョンと国」を参照してください。

注記

us-east-1 にアクセスできない場合、または SMS メッセージを有効にしてデモを実行しない場合は、希望するリージョンを自由に使用してください。サンプルから SMS 機能を削除し、Amazon SNS トピックに登録する唯一のエンドポイントとして E メールを使用することができます。

SMS メッセージの送信の詳細については、Amazon 「Simple Notification Service 開発者ガイド」の「Amazon Simple Notification Service Developer Guide」 (Amazon SNS を使用した SMS 通知の送受信) を参照してください。

utils.rb にいくつかのコードを追加して Config ファイルをロードし、ユーザーの認証情報を取得し、認証情報とリージョンの両方を AWS.config に提供します。

require 'yaml' # Load the user's credentials from a file, if it exists. begin config_file = File.open('aws-config.txt') { |f| f.read } rescue puts "No config file! Hope you set your AWS credentials in the environment..." end if config_file.nil? options = { } else options = YAML.load(config_file) end # SMS Messaging (which can be used by Amazon SNS) is available only in the # `us-east-1` region. $SMS_REGION = 'us-east-1' options[:region] = $SMS_REGION # Now, set the options AWS.config = options

Amazon SWF ドメインの登録

Amazon SWF を使用するには、ワークフローとアクティビティを保持する名前の付いたエンティティである ドメイン を設定する必要があります。多数の Amazon SWF ドメインを登録できますが、すべてが AWS アカウント内で一意の名前を持つ必要があり、ワークフローはドメイン間でやりとりすることはできません。アプリケーションのワークフローおよびアクティビティすべては相互に通信するために同じドメインにある必要があります。

アプリケーション全体で同じドメインを使用するため、utils.rbinit_domain という関数を作成し、SWFSampleDomain という名前の Amazon SWF ドメインを取得します。

ドメインを登録したら、それを多くのワークフローの実行に再利用できます。ただし、すでに存在するドメインを登録しようとするとエラーになるので、コードはまずドメインが存在するかどうかを確認し、見つかった場合は既存のドメインを使用します。ドメインが見つからない場合は作成します。

SDK forRuby で Amazon SWF ドメインを操作するには、AWS::SimpleWorkflow.domains を使用します。これにより、ドメインの列挙と登録の両方に使用できる DomainCollection が返されます。

utils.rbinit_domain のコードは以下のとおりです。

# Registers the domain that the workflow will run in. def init_domain domain_name = 'SWFSampleDomain' domain = nil swf = AWS::SimpleWorkflow.new # First, check to see if the domain already exists and is registered. swf.domains.registered.each do | d | if(d.name == domain_name) domain = d break end end if domain.nil? # Register the domain for one day. domain = swf.domains.create( domain_name, 1, { :description => "#{domain_name} domain" }) end return domain end

次のステップ

次に、サブスクリプションワークフローのチュートリアルのパート 2: ワークフローの実装 でワークフローとスターターコードを作成します。