

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tutorial do fluxo de trabalho de assinatura, parte 1: Usando o Amazon SWF com o AWS SDK para Ruby
<a name="swf-sns-tutorial-setup-swf"></a>

**Topics**
+ [Inclua o AWS SDK para Ruby](#include-the-sdk-for-ruby)
+ [Configurando a sessão AWS](#configuring-the-aws-session)
+ [Registrar um domínio Amazon SWF](#registering-swf-domain)
+ [Próximas etapas](#next-steps)

## Inclua o AWS SDK para Ruby
<a name="include-the-sdk-for-ruby"></a>

Comece criando um arquivo chamado `utils.rb`. O código nesse arquivo obterá ou criará, se necessário, o domínio Amazon SWF usado pelo fluxo de trabalho e pelo código de atividades e fornecerá um local para colocar o código que é comum a todas as nossas classes.

Primeiro, precisamos incluir a biblioteca `aws-sdk-v1` em nosso código, para que possamos usar os recursos fornecidos pelo SDK para Ruby.

```
require 'aws-sdk-v1'
```

Isso nos dá acesso ao AWS namespace, que fornece a capacidade de definir valores globais relacionados à sessão, como suas AWS credenciais e região, e também fornece acesso ao serviço. AWS APIs

## Configurando a sessão AWS
<a name="configuring-the-aws-session"></a>

Configuraremos a AWS sessão definindo nossas AWS credenciais (que são necessárias para acessar os AWS serviços) e a AWS região a ser usada.

Há várias maneiras de [definir AWS credenciais no AWS SDK para Ruby: definindo-as em](https://docs.aws.amazon.com/AWSRubySDK/latest/index.html#Basic_Configuration) variáveis de ambiente (\_KEY\_ID AWS\_SECRET e \_ACCESS\_KEYAWS\_ACCESS) ou definindo-as com. [https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method) Usaremos o último método, carregando-os a partir de um arquivo de configuração YAML, `aws-config.txt`, que tem a seguinte aparência.

```
---
:access_key_id: REPLACE_WITH_ACCESS_KEY_ID
:secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY
```

Crie esse arquivo agora, substituindo as sequências que começam com *REPLACE\_WITH\_* pelo ID da chave de acesso e pela chave de AWS acesso secreta. Para obter informações sobre suas chaves de AWS acesso, consulte [Como faço para obter credenciais de segurança](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html)? na *Referência geral da Amazon Web Services*.

Também precisamos definir a AWS região a ser usada. Como usaremos o [Short Message Service (SMS)](http://en.wikipedia.org/wiki/Short_Message_Service) para enviar mensagens de texto para o telefone do usuário com o Amazon SNS, precisamos ter certeza de que estamos usando a região atendida pelo Amazon SNS. Consulte [as regiões e os países compatíveis](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html) no Guia do desenvolvedor do Amazon Simple Notification Service.

**nota**  
Se você não tiver acesso a **us-east-1**, ou não se importar em executar a demonstração com mensagens SMS habilitadas, fique à vontade para usar qualquer região desejada. É possível remover a funcionalidade de SMS da amostra e usar o e-mail como o único endpoint para assinar o tópico do Amazon SNS.  
Para obter mais informações sobre o envio de mensagens SMS, consulte [Envio e recebimento de notificações SMS usando o Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/SMSMessages.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.

Agora, adicionaremos algum código ao `utils.rb` para carregar o arquivo de configuração, obter as credenciais do usuário e, em seguida, fornecer as credenciais e a região à [https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method).

```
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
```

## Registrar um domínio Amazon SWF
<a name="registering-swf-domain"></a>

Para usar o Amazon SWF, você precisa configurar um *domínio*: uma entidade nomeada que manterá seus fluxos de trabalho e atividades. Você pode ter vários domínios do Amazon SWF registrados, mas todos eles devem ter nomes exclusivos em sua AWS conta, e os fluxos de trabalho não podem interagir entre domínios: todos os fluxos de trabalho e atividades do seu aplicativo devem estar no mesmo domínio para interagir uns com os outros.

*Como usaremos o mesmo domínio em todo o nosso aplicativo, criaremos uma função em call`init_domain`, que recuperará o domínio Amazon SWF `utils.rb` chamado DomainSWFSample.*

Depois de ter registrado um domínio, você poderá reutilizá-lo para muitas execuções de fluxo de trabalho. No entanto, *é um erro tentar registrar um domínio que já existe* e, portanto, nosso código primeiro verificará se o domínio existe e usará o domínio existente se ele for encontrado. Se o domínio não puder ser encontrado, nós o criaremos.

Para trabalhar com domínios Amazon SWF no SDK para Ruby, [AWS::Simpleuse](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow.html#domains-instance_method) Workflow.domains, que retorna [DomainCollection](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html)um que pode ser usado tanto para enumerar quanto para registrar domínios:
+ Para verificar se um domínio já está registrado, consulte a lista fornecida por [AWS::Simpleworkflow.domains.registered](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#registered-instance_method).
+ Para registrar um novo domínio, use [AWS::Simpleworkflow.domains.register](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#register-instance_method).

Aqui está o código para `init_domain` em `utils.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
```

## Próximas etapas
<a name="next-steps"></a>

Em seguida, você criará o fluxo de trabalho e o código do iniciador em [Tutorial de fluxo de trabalho de inscrição - Parte 2: Implementar o fluxo de trabalho](swf-sns-tutorial-implementing-workflow.md).