

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial sul flusso di lavoro degli abbonamenti Parte 1: Utilizzo di Amazon SWF con AWS SDK per Ruby
<a name="swf-sns-tutorial-setup-swf"></a>

**Topics**
+ [Includi il AWS SDK per Ruby](#include-the-sdk-for-ruby)
+ [Configurazione della sessione AWS](#configuring-the-aws-session)
+ [Registrazione di un dominio Amazon SWF](#registering-swf-domain)
+ [Fasi successive](#next-steps)

## Includi il AWS SDK per Ruby
<a name="include-the-sdk-for-ruby"></a>

Per cominciare, creiamo un file denominato `utils.rb`. Il codice contenuto in questo file otterrà, o creerà se necessario, il dominio Amazon SWF utilizzato sia dal codice del flusso di lavoro che dal codice delle attività e fornirà una posizione in cui inserire il codice comune a tutte le nostre classi.

Innanzitutto, dobbiamo includere la `aws-sdk-v1` libreria nel nostro codice, in modo da poter utilizzare le funzionalità fornite dall'SDK for Ruby.

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

Questo ci dà accesso allo spazio dei AWS nomi, che offre la possibilità di impostare valori globali relativi alla sessione, come AWS le credenziali e la regione, e fornisce anche l'accesso al servizio. AWS APIs

## Configurazione della sessione AWS
<a name="configuring-the-aws-session"></a>

Configureremo la AWS sessione impostando AWS le nostre credenziali (necessarie per accedere ai AWS servizi) e la AWS regione da utilizzare.

Esistono diversi modi per [impostare AWS le credenziali nell' AWS SDK per](https://docs.aws.amazon.com/AWSRubySDK/latest/index.html#Basic_Configuration) Ruby: impostandole nelle variabili di ambiente AWS\_ACCESS (\_KEY\_ID AWS\_SECRET e \_ACCESS\_KEY) o impostandole con. [https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method) In questo tutorial, utilizzeremo il secondo metodo, caricandole da un file di configurazione YAML denominato `aws-config.txt`, come illustrato di seguito.

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

Crea subito questo file, sostituendo le stringhe che iniziano con *REPLACE\_WITH\_* con l'ID della chiave di accesso e la chiave di accesso segreta. AWS Per informazioni sulle tue chiavi di AWS accesso, vedi [Come posso](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html) ottenere le credenziali di sicurezza? nel *riferimento generale di Amazon Web Services*.

Dobbiamo anche impostare la AWS regione da utilizzare. Poiché utilizzeremo lo [Short Message Service (SMS)](http://en.wikipedia.org/wiki/Short_Message_Service) per inviare messaggi di testo al telefono dell'utente con Amazon SNS, dobbiamo assicurarci di utilizzare la regione supportata da Amazon SNS. Consulta [le regioni e i Paesi supportati](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html) nella Guida per gli sviluppatori di Amazon Simple Notification Service.

**Nota**  
Se non hai accesso a **us-east-1** o non sei interessato a eseguire la demo con la messaggistica SMS attivata, imposta la regione che desideri. Puoi rimuovere la funzionalità SMS dall'esempio e utilizzare l'e-mail come unico endpoint per iscriverti all'argomento Amazon SNS.  
Per ulteriori informazioni sull'invio di messaggi SMS, consulta [Invio e ricezione di notifiche SMS con Amazon SNS nella Amazon Simple](https://docs.aws.amazon.com/sns/latest/dg/SMSMessages.html) *Notification Service Developer Guide*.

Ora aggiungeremo del codice `utils.rb` per caricare il file di configurazione, ottenere le credenziali dell'utente e fornire sia le credenziali che la regione. [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
```

## Registrazione di un dominio Amazon SWF
<a name="registering-swf-domain"></a>

Per utilizzare Amazon SWF, devi configurare un *dominio*: un'entità denominata che conterrà i tuoi flussi di lavoro e le tue attività. Puoi avere molti domini Amazon SWF registrati, ma tutti devono avere nomi univoci all'interno del tuo AWS account e i flussi di lavoro non possono interagire tra domini: tutti i flussi di lavoro e le attività della tua applicazione devono trovarsi nello stesso dominio per interagire tra loro.

*Poiché utilizzeremo lo stesso dominio in tutta la nostra applicazione, creeremo una funzione in named che recupererà il dominio SWFSample Amazon SWF `utils.rb` denominato `init_domain` Domain.*

Dopo aver registrato un dominio, puoi riutilizzarlo per un gran numero di esecuzioni di flusso di lavoro. Tuttavia, *è un errore cercare di registrare un dominio esistente*, di conseguenza il nostro codice dapprima verificherà se esiste e se è così, lo utilizzerà. In caso contrario, lo dovremo creare.

Per lavorare con i domini Amazon SWF nell'SDK per Ruby, [AWS::Simpleusa](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow.html#domains-instance_method) Workflow.domains, che restituisce [DomainCollection](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html)un file che può essere utilizzato sia per enumerare che per registrare domini:
+ [Per verificare se un dominio è già registrato, puoi consultare l'elenco fornito da .domains.registered. AWS::Simpleworkflow](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#registered-instance_method)
+ [Per registrare un nuovo dominio, usa .domains.register. AWS::Simpleworkflow](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#register-instance_method)

Di seguito è illustrato il codice per `init_domain` in `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
```

## Fasi successive
<a name="next-steps"></a>

Successivamente, creeremo il codice del flusso di lavoro e dello starter come descritto in [Seconda parte del tutorial sul flusso di lavoro di sottoscrizione: implementazione del flusso di lavoro](swf-sns-tutorial-implementing-workflow.md).