本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
訂閲工作流程教學第 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」中的登入資料AWS適用於 Ruby 的 開發套件:在環境變數 (AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_ACCESS_KEY) 中加以設定,或使用AWS.config
。我們會使用第二種方法,從名為 aws-config.txt
的 YAML 組態檔案將其載入,如下所示。
--- :access_key_id: REPLACE_WITH_ACCESS_KEY_ID :secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY
立即創建此文件,替換以用 _ 替換和您的AWS存取金鑰 ID 和私密存取金鑰。如需您的AWS訪問密鑰,請參閲如何取得安全登入資料?中的Amazon Web Services 一般參考。
我們也需要設定AWS要使用的區域。因為我們將使用短訊服務
注意
如果您無法存取 us-east-1,或不在意能否執行啟用簡訊的示範,請隨意使用任一區域。您可從範例移除簡訊功能,並使用電子郵件作為訂 Amazon SNS 主題的唯一端點。
如需關於傳送 SMS 消息的詳細資訊,請參使用 Amazon SNS 傳送和接收 SMS 通知中的Amazon Simple Notification Service 開發人員指南。
我們現在將一些代碼添加到utils.rb
加載配置文件,取得用户的登入資料,然後將登入資料和區域提供給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.rb
呼叫init_domain
,它將檢索名為SWF 樣本域。
當您一註冊網域後,就可以重複使用它處理許多工作流程執行。但是,「嘗試註冊已存在的網域會發生錯誤」,所以我們的程式碼會先檢查網域是否存在,若可找到現有網域,就會予以使用。如果找不到網域,就會予以建立。
要在適用於 Ruby 的軟件開發工具包中使用 Amazon SWF 域,請使用AWS:: 簡單工作流程。域,它返回一個DomainCollection,可用於枚舉和註冊域:
-
若要檢查是否已註冊網域,您可查看 AWS::Simpleworkflow.domains.registered 提供的清單。
-
若要註冊新的網域,請使用 AWS::Simpleworkflow.domains.register。
以下為 utils.rb
中的 init_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 部分:實作工作流程」中建立工作流程和啟動者程式碼。