本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
订阅工作流程教程第 1 部分:将 Amazon SWF 与Amazon SDK for Ruby
加入Amazon SDK for Ruby
首先,创建一个名为 utils.rb
的文件。此文件中的代码将包含或创建(如有必要)工作流程和活动代码均使用的 Amazon SWF 域,并将提供一个位置以放置所有类共用的代码。
首先,我们需要包含aws-sdk-v1
这样即可使用适用 SDK for Ruby 的开发工具包提供的功能。
require 'aws-sdk-v1'
这样可访问Amazon命名空间,它可设置与全局会话相关的值,如您的Amazon凭据和区域,还可以访问Amazon服务 API。
配置Amazon会话
我们将配置Amazon通过设置我们的会话Amazon凭据(访问所需的)Amazon服务)和Amazon要使用的区域。
有多种方法可以使用设置Amazon中的凭证AmazonSDK for Ruby:在环境变量(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
立即创建此文件,替换以下字符串替换_WIT_与您的Amazon访问密钥 ID 和私有访问密钥。有关您的信息Amazon访问密钥,请参阅如何获取安全证书?中的Amazon Web Services 常规参考.
我们还需要设置Amazon要使用的区域。因为我们将使用短信服务 (SMS)
如果您无权访问 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 Amazon 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 域名,但它们必须在您的域名中都具有唯一的名称Amazon账户和工作流程无法跨域进行交互:应用程序的所有工作流程和活动都必须在同一个域中才能彼此交互。
因为我们将在整个应用程序中使用相同的域,所以我们将在utils.rb
叫init_domain
,这将检索名为的 Amazon SWF 域SWF 样本域.
注册域后,可将其重用于多个工作流程执行。但是,尝试注册已存在的域是错误行为,因此我们的代码首先将检查是否存在该域,如果可找到这个现有的域,则将使用它。如果无法找到该域,则我们将创建它。
要在适用于 Ruby 的开发工具包中使用 Amazon SWF 域名,请使用Amazon። SimpleWorkflow .域名,它返回DomainCollection可以用来枚举和注册域名:
-
要检查以了解是否已注册了域,可查看提供的列表。Amazon። SimpleWorkflow .DOMAINS. 注册.
-
要注册新域,请使用Amazon። Simple Workflow.domains.注册.
以下是 init_domain
中 utils.rb
的代码。
# Registers the domain that the workflow will run in. def init_domain domain_name = 'SWFSampleDomain' domain = nil swf = Amazon::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 部分:实施工作流程中创建工作流程和启动程序代码。