订阅工作流程教程第 1 部分:将 Amazon SWF 与Amazon SDK for Ruby - Amazon Simple Workflow Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

订阅工作流程教程第 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要使用的区域。

有多种方法可setAmazon中的凭证Amazon适用于 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

立即创建此文件,替换以用 _ 替换与您的Amazon访问密钥 ID 和私有访问密钥。有关您的Amazon访问密钥,请参阅如何获取安全证书?中的Amazon Web Services 一般参考

我们还需要设置Amazon要使用的区域。因为我们将使用短信服务 (SMS)通过 Amazon SNS 向用户的手机发送短信,我们需要确保我们使用的是 Amazon SNS 支持的区域。请参阅支持的区域和国家/地区(在 Amazon Simple Notification Service 开发人员指南中。)

注意

如果您无权访问 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.rbCALDinit_domain,它将检索名为SWF 采样域

注册域后,可将其重用于多个工作流程执行。但是,尝试注册已存在的域是错误行为,因此我们的代码首先将检查是否存在该域,如果可找到这个现有的域,则将使用它。如果无法找到该域,则我们将创建它。

要在适用于 Ruby 的软件开发工具包中使用 Amazon SWF 域,请使用Amazon። 简单工作流。域,它返回一个DomainCollection,可用于枚举和注册域:

以下是 init_domainutils.rb 的代码。

# 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 部分:实施工作流程中创建工作流程和启动程序代码。