

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriel sur le flux de travail d'abonnement, partie 1 : Utilisation d'Amazon SWF avec le AWS SDK pour Ruby
<a name="swf-sns-tutorial-setup-swf"></a>

**Topics**
+ [Incluez le AWS SDK pour Ruby](#include-the-sdk-for-ruby)
+ [Configuration de la AWS session](#configuring-the-aws-session)
+ [Enregistrement d'un domaine Amazon SWF](#registering-swf-domain)
+ [Étapes suivantes](#next-steps)

## Incluez le AWS SDK pour Ruby
<a name="include-the-sdk-for-ruby"></a>

Commencez par créer un fichier nommé `utils.rb`. Le code contenu dans ce fichier permettra d'obtenir, ou de créer si nécessaire, le domaine Amazon SWF utilisé à la fois par le code du flux de travail et des activités et fournira un emplacement pour insérer le code commun à toutes nos classes.

Tout d'abord, nous devons inclure la `aws-sdk-v1` bibliothèque dans notre code afin de pouvoir utiliser les fonctionnalités fournies par le SDK pour Ruby.

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

Cela nous donne accès à l'espace de AWS noms, qui permet de définir des valeurs globales liées à la session, telles que vos AWS informations d'identification et votre région, et donne également accès au service. AWS APIs

## Configuration de la AWS session
<a name="configuring-the-aws-session"></a>

Nous allons configurer la AWS session en définissant nos AWS informations d'identification (nécessaires pour accéder aux AWS services) et la AWS région à utiliser.

Il existe plusieurs manières de [définir les AWS informations d'identification dans le AWS SDK pour](https://docs.aws.amazon.com/AWSRubySDK/latest/index.html#Basic_Configuration) Ruby : en les définissant dans des variables d'environnement AWS\_ACCESS (\_KEY\_ID AWS\_SECRET et \_ACCESS\_KEY) ou en les définissant avec. [https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method) Nous allons utiliser cette deuxième méthode de ce dernier, en les chargeant à partir d'un fichier de configuration YAML, appelé `aws-config.txt`, qui ressemble à cela.

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

Créez ce fichier maintenant en remplaçant les chaînes commençant par *REPLACE\_WITH\_* par votre identifiant de clé d'accès et votre clé AWS d'accès secrète. Pour plus d'informations sur vos clés AWS d'accès, voir [Comment obtenir des informations d'identification de sécurité ?](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html) dans le manuel *Amazon Web Services General Reference*.

Nous devons également définir la AWS région à utiliser. Comme nous utiliserons le [service de messages courts (SMS)](http://en.wikipedia.org/wiki/Short_Message_Service) pour envoyer des SMS au téléphone de l'utilisateur via Amazon SNS, nous devons nous assurer que nous utilisons une région prise en charge par Amazon SNS. Consultez la section [Régions et pays pris en charge](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html) dans le guide du développeur Amazon Simple Notification Service.

**Note**  
Si vous n'avez pas accès à **us-east-1** ou si cette fonctionnalité n'a pas d'intérêt pour vous dans le cadre de cette démonstration, vous pouvez utiliser la région que vous souhaitez. Vous pouvez supprimer la fonctionnalité SMS de l'exemple et utiliser le courrier électronique comme seul point de terminaison pour vous abonner à la rubrique Amazon SNS.  
Pour plus d'informations sur l'envoi de SMS, consultez la section [Envoyer et recevoir des notifications par SMS à l'aide d'Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/SMSMessages.html) dans le manuel du *développeur Amazon Simple Notification Service*.

Nous allons maintenant ajouter du code `utils.rb` pour charger le fichier de configuration, obtenir les informations d'identification de l'utilisateur, puis fournir à la fois les informations d'identification et la région à [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
```

## Enregistrement d'un domaine Amazon SWF
<a name="registering-swf-domain"></a>

Pour utiliser Amazon SWF, vous devez configurer un *domaine* : une entité nommée qui contiendra vos flux de travail et vos activités. De nombreux domaines Amazon SWF peuvent être enregistrés, mais ils doivent tous porter des noms uniques dans votre AWS compte, et les flux de travail ne peuvent pas interagir entre les domaines : tous les flux de travail et activités de votre application doivent se trouver dans le même domaine pour interagir les uns avec les autres.

*Comme nous utiliserons le même domaine dans l'ensemble de notre application, nous allons créer une fonction dans `utils.rb` called`init_domain`, qui récupérera le domaine Amazon SWF nommé SWFSample Domain.*

Une fois que vous avez enregistré un domaine, vous pouvez le réutiliser pour de nombreuses exécutions de flux de travail. Toutefois, *il n'est pas correct d'essayer d'enregistrer un domaine qui existe déjà*. Dès lors, notre code doit vérifiera d'abord si le domaine existe et utilisera le domaine existant, s'il le trouve. S'il ne trouve pas le domaine, nous le créerons.

Pour utiliser les domaines Amazon SWF dans le SDK pour Ruby, utilisez [AWS::SimpleWorkflow.Domains, qui renvoie un [DomainCollection](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html)qui peut être utilisé à la fois pour énumérer et enregistrer des domaines](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow.html#domains-instance_method) :
+ Pour vérifier si un domaine est déjà enregistré, vous pouvez consulter la liste fournie par [AWS::Simpleworkflow.domains.registered.](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#registered-instance_method)
+ Pour enregistrer un nouveau domaine, utilisez [AWS::Simpleworkflow.domains.register](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#register-instance_method).

Voici le code pour `init_domain` dans le fichier `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
```

## Étapes suivantes
<a name="next-steps"></a>

Vous allez ensuite créer le code du flux de travail et du démarreur dans [Deuxième partie du didacticiel sur le flux de travail d'abonnement : mise en œuvre du flux de travail](swf-sns-tutorial-implementing-workflow.md).