Primera parte del tutorial acerca del flujo de trabajo de suscripción: uso de Amazon SWF con el AWS SDK for Ruby - Amazon Simple Workflow Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Primera parte del tutorial acerca del flujo de trabajo de suscripción: uso de Amazon SWF con el AWS SDK for Ruby

Inclusión del AWS SDK for Ruby

Para empezar, cree un archivo llamado utils.rb. El código de este archivo obtendrá, o creará si es necesario, el dominio de Amazon SWF que utiliza el código tanto de las actividades como del flujo de trabajo. También permitirá almacenar el código común a todas nuestras clases.

En primer lugar, tenemos que incluir la biblioteca aws-sdk-v1 en el código, a fin de poder utilizar las características que proporciona el SDK para Ruby.

require 'aws-sdk-v1'

Esta estrategia ofrece acceso al espacio de nombres de AWS, que permite definir valores globales relativos a la sesión, como su región y sus credenciales de AWS, y también ofrece acceso a las API del servicio de AWS.

Configuración de las sesiones de AWS

Para configurar una sesión de AWS, es necesario configurar las credenciales de AWS (que son necesarias para acceder a los servicios de AWS) y la región de AWS que se va a utilizar.

Hay varias opciones para configurar las credenciales de AWS en el AWS SDK para Ruby: configurarlas en variables de entorno (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY) o mediante AWS.config. Utilizaremos el segundo método y las cargaremos a partir de un archivo de configuración YAML, llamado aws-config.txt, que tiene este aspecto.

--- :access_key_id: REPLACE_WITH_ACCESS_KEY_ID :secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY

Para crear este archivo, debe reemplazar REPLACE_WITH_ con su ID de clave de acceso y su clave de acceso secreta de AWS. Para obtener más información sobre las claves de acceso de AWS, consulte ¿Cómo puedo obtener mis credenciales de seguridad? en la Referencia general de Amazon Web Services.

También deberá configurar la región de AWS que va a utilizar. Como utilizaremos el servicio de mensajes cortos (SMS) para enviar mensajes de texto al teléfono del usuario con Amazon SNS, debemos asegurarnos de utilizar una región compatible con Amazon SNS. Consulte las regiones y los países compatibles en la guía para desarrolladores de Amazon Simple Notification Service (Amazon SNS).

nota

Si no tiene acceso a us-east-1, o si no le interesa ejecutar la demostración con la mensajería SMS habilitada, puede utilizar cualquier región que desee. Además, puede eliminar la funcionalidad SMS del ejemplo y utilizar el correo electrónico como único punto de conexión para subscribirse al tema de Amazon SNS.

Para obtener más información sobre el envío de mensajes SMS, consulte Envío y recepción de notificaciones por SMS mediante Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service.

Ahora vamos a añadir código a utils.rb para cargar el archivo de configuración, a obtener las credenciales del usuario y a proporcionar las credenciales y la región a 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 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

Registro de un dominio de Amazon SWF

Para utilizar Amazon SWF, debemos configurar un dominio: una entidad con nombre que contendrá los flujos de trabajo y las actividades. Puede tener muchos dominios de Amazon SWF registrados, pero todo ellos deberán tener nombres únicos dentro de su cuenta de AWS. Además, los flujos de trabajo no pueden interactuar entre dominios: todos los flujos de trabajo y actividades de la aplicación tienen que estar en el mismo dominio para interactuar unos con otros.

Como utilizaremos el mismo dominio en toda la aplicación, crearemos una función en utils.rb denominada init_domain, que recuperará el dominio de Amazon SWF denominado SWFSampleDomain.

Una vez que haya registrado un dominio, puede reutilizarlo en numerosas ejecuciones de flujos de trabajo. Sin embargo, es un error intentar registrar un dominio que ya existe, por eso el código comprobará en primer lugar si el dominio existe y utilizará el dominio existente, si lo encuentra. Si no encuentra el dominio, lo crearemos.

Para trabajar con dominios de Amazon SWF en el SDK para Ruby, utilice AWS::SimpleWorkflow.domains, que devuelve un valor DomainCollection que permite tanto enumerar como registrar dominios:

Este es el código para init_domain en 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

Pasos siguientes

A continuación, creará el código de iniciador y flujo de trabajo en Segunda parte del tutorial acerca del flujo de trabajo de suscripción: implementación del flujo de trabajo.