

Amazon Monitron ya no está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener información sobre funciones similares a las de Amazon Monitron, consulte nuestra [entrada de blog](https://aws.amazon.com/blogs/machine-learning/maintain-access-and-consider-alternatives-for-amazon-monitron).

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.

# Acceso a sus datos de Amazon Monitron
<a name="access-data"></a>

Existen dos formas de acceder a sus datos sin procesar de Amazon Monitron fuera de Amazon Monitron.

Es posible que desee acceder a sus datos de forma continua a fin de poder utilizarlos en otro lugar. En ese caso, puede configurar Amazon Monitron para que [añada sus datos a un flujo de Kinesis](/Monitron/latest/user-guide/monitron-kinesis-export.html) de forma automática. Desde ahí, puede portarlo a diversos destinos, incluyendo Amazon S3 y Lambda. Este proceso requiere configuración, y esa configuración requiere comprensión de los flujos de datos de Kinesis. Sin embargo, una vez que tenga todos los elementos dispuestos a su satisfacción, puede mantener su flujo de datos de forma automática.

O bien, es posible que desee acceder a sus datos de vez en cuando, solo para obtener una comprensión clara de qué tipo de datos está almacenando y analizando en AWS. En ese caso, puede solicitar a AWS Support que [copie manualmente sus datos a Amazon S3](data-download-monitron.md). Este proceso requiere menos configuración, pero no se puede automatizar. Solo le proporciona los datos que Amazon Monitron ha acumulado hasta el momento, en un único fragmento.

**Topics**
+ [Exportación de sus datos de Amazon Monitron a Amazon S3](data-download-monitron.md)
+ [Exportación de datos de Amazon Monitron con Kinesis v1](monitron-kinesis-export.md)
+ [Exportación de datos de Amazon Monitron con Kinesis v2](monitron-kinesis-export-v2.md)

# Exportación de sus datos de Amazon Monitron a Amazon S3
<a name="data-download-monitron"></a>

Es posible que a veces desee acceder a los datos sin procesar que Amazon Monitron almacena para mantenerse informado sobre el tipo exacto de datos que almacena de forma segura con AWS.

Puede obtener sus datos sin procesar presentando un ticket de soporte y dando permiso a Amazon Monitron para que le entregue sus datos. AWS

Para obtener datos operativos en tiempo real de los recursos de Amazon Monitron que puedan consumirse mediante programación, considere la posibilidad de exportar los datos mediante transmisiones de Kinesis. Para obtener más información, consulte [Amazon Monitron Kinesis data export v2](https://docs.aws.amazon.com/Monitron/latest/user-guide/monitron-kinesis-export-v2.html).

**Topics**
+ [Requisitos previos](exporting-data-procedure.md)
+ [Exportar sus datos con CloudFormation (opción recomendada)](onetime-download-cflink.md)
+ [Exportación de sus datos con la consola](onetime-download-console.md)
+ [Exportar sus datos con CloudShell](export-shell.md)

# Requisitos previos
<a name="exporting-data-procedure"></a>

Para exportar con éxito sus datos de Amazon Monitron, se debe satisfacer los siguientes requisitos previos.
+ No puede tener en ejecución otra exportación (de datos de Amazon Monitron) en la misma región.
+ No puede haber ejecutado otra exportación en la misma región en las últimas 24 horas.

# Exportar sus datos con CloudFormation (opción recomendada)
<a name="onetime-download-cflink"></a>

**Topics**
+ [Paso 1: Cree su bucket de Amazon S3, rol de IAM y políticas de IAM.](#gdpr-cloudfront-makestack)
+ [Paso 2: Anote sus recursos](#gdpr-cloudfront-resources)
+ [Paso 3: Cree el caso de soporte](#gdpr-cloudfront-case)

## Paso 1: Cree su bucket de Amazon S3, rol de IAM y políticas de IAM.
<a name="gdpr-cloudfront-makestack"></a>

1. Inicia sesión en tu AWS cuenta.

1. Abra una nueva pestaña del navegador con el siguiente URL.

   ```
   https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create/review?templateURL=https://s3.us-east-1.amazonaws.com/monitron-cloudformation-templates-us-east-1/monitron_manual_download.yaml&stackName=monitronexport
   ```

1. En la CloudFormation página que se abre, en la esquina superior derecha, seleccione la región en la que utiliza Amazon Monitron.

1. Seleccione **Creación de pila**.  
![\[CloudFormation quick create stack interface with template URL, stack name, and IAM role options.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-1.png)

1. En la página siguiente, elija el icono de actualización tantas veces como desee hasta que el estado de la pila (monitronexport) sea CREATE\$1COMPLETE.  
![\[CloudFormation stack details page showing monitronexport stack in CREATE_IN_PROGRESS state.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-2.png)

## Paso 2: Anote sus recursos
<a name="gdpr-cloudfront-resources"></a>

1. Elija la pestaña **Salidas**.

1. Tome nota del valor de la clave `MonRoleArn`.

1. Tome nota del valor de la clave `S3BucketArn`.

1. Tome nota del ID de cuenta que figura en la esquina superior derecha de la página).

1. Tome nota de la región que eligió en el paso 1. Ahora también aparece en la parte superior de la página, a la izquierda de su ID de cuenta.  
![\[CloudFormation stack outputs page showing MonRoleArn and S3BucketArn with descriptions.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-3.png)

## Paso 3: Cree el caso de soporte
<a name="gdpr-cloudfront-case"></a>

1.  Desde la AWS consola, selecciona el icono del signo de interrogación situado en la esquina superior derecha de cualquier página y, a continuación, selecciona **Support Center**.   
![\[AWS console interface showing IAM dashboard with Soporte Center dropdown menu highlighted.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-support-question-mark.png)

1.  En la página siguiente, elija **Crear caso**.   
![\[Soporte Center interface with Quick solutions, Active cases, and Create case button.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-4.png)

1. En la **sección ¿Cómo podemos ayudar?** haga lo siguiente:

   1.  Elija **Soporte de cuentas y facturación** 

   1. En **Servicio**, selecciona **Cuenta**. 

   1. En **Categoría**, elija **Cumplimiento y acreditaciones**. 

   1. Elija **Gravedad**, si esa opción está disponible en función de su suscripción de soporte. 

   1. Elija **Siguiente paso: información adicional**.   
![\[Soporte case form with Account and billing selected, and service details specified.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-5.png)

1. En **Información adicional**, haga lo siguiente:

   1. En **Asunto**, introduzca **Amazon Monitron data export request**. 

   1. En el campo **Descripción**, introduzca:

      1. su ID de cuenta

      1. la región del bucket que ha creado

      1. el ARN del bucket que ha creado (por ejemplo: “arn:aws:s3:::bucketname”)

      1. el ARN del rol que ha creado (por ejemplo: «arn:aws:iam: :273771705212:role/ «) role-for-monitron  
![\[Form for Amazon Monitron data export request with fields for account and bucket details.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-6.png)

   1. Elija **Siguiente paso: Resuelva ahora o póngase en contacto con nosotros**.

1. **En Solve now** o ponte en contacto con nosotros, haz lo siguiente:

   1. En **Resolver ahora**, selecciona **Siguiente**.   
![\[Soporte options interface with "Solve now" and "Contact us" buttons, and recommendations.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-7.png)

   1. En **Póngase en contacto con nosotros**, elija el **idioma de contacto preferido** y el método de contacto que prefiera.

   1. Seleccione **Enviar**. Aparecerá una pantalla de confirmación con el identificador de tu caso y los detalles.  
![\[Contact options with language selection and choices for Web, Phone, or Chat communication.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-8.png)

 Un especialista en atención AWS al cliente se pondrá en contacto contigo lo antes posible. Si surgiera algún problema con los pasos indicados, el especialista podría pedirle más información. Si se ha proporcionado toda la información necesaria, el especialista le avisará en cuanto sus datos se hayan copiado en el bucket de Amazon S3 que creó anteriormente. 

# Exportación de sus datos con la consola
<a name="onetime-download-console"></a>

**Topics**
+ [Paso 1: Configurar su bucket de Amazon S3](#gdpr-console-s3)
+ [Paso 2: Dar permiso a Amazon Monitron para que acceda a Amazon S3](#gdpr-console-set-policy)
+ [Paso 3: Crear el rol](#gdpr-console-create-role)
+ [Paso 4: Crear la política de confianza](#gdpr-console-trust-policy)
+ [Paso 5: Crear el caso de soporte](#gdpr-console-case)

## Paso 1: Configurar su bucket de Amazon S3
<a name="gdpr-console-s3"></a>

1. Abra la [consola de Amazon S3](https://console.aws.amazon.com/s3/).

1. Elija **Crear bucket**.  
![\[Amazon S3 console interface showing Buckets section with Create bucket button highlighted.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-create-bucket.png)

1. Asigne un nombre a su bucket y seleccione una región apropiada. A continuación, en la parte inferior de la página, elija **Crear bucket**.
**importante**  
En este momento, Amazon Monitron solo se admite en tres regiones:  
Este de EE. UU. (Norte de Virginia) us-east-1
UE (Irlanda) eu-west-1
 Asia-Pacífico (Sídney) ap-south-east -2
Por lo tanto, su bucket de Amazon S3 debe encontrarse en una de esas regiones.

   También debe ser la misma región en la que utilice el servicio de Amazon Monitron.  
![\[Create bucket interface showing bucket name "monitron-export-example" and Región de AWS "US East (N. Virginia)".\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-create-bucket-2.png)

1. Revise el resto de las opciones de la página y tome las decisiones apropiadas, en función de sus necesidades y políticas de seguridad.
**importante**  
Usted es el responsable de tomar las medidas apropiadas para proteger sus datos. Le recomendamos encarecidamente que utilice el cifrado del lado del servidor y que bloquee el acceso público a su bucket.

1. Mediante el cuadro de búsqueda, encuentre el bucket que acaba de crear y selecciónelo.  
![\[AWS S3 console showing a newly created bucket named "monitron-export-example" in the bucket list.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-choose-s3-bucket.png)

1. En la pestaña **Propiedades**, tome nota del nombre, el ARN y la región del bucket.  
![\[S3 bucket properties showing name, region, ARN, and creation date for monitron-export-example.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-s3-properties-tab.png)

## Paso 2: Dar permiso a Amazon Monitron para que acceda a Amazon S3
<a name="gdpr-console-set-policy"></a>

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/) y elija **Políticas**.  
![\[IAM Dashboard showing resource counts, recent updates, and tools for policy management.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-9.png)

1. Elija **Crear política**.  
![\[IAM Policies page with options to search, filter, and create a new policy.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-10.png)

1. Seleccione la pestaña **JSON**.  
![\[Policy editor interface showing JSON structure for specifying permissions in IAM.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-11.png)

1. Elimine el texto JSON predeterminado de manera que el formulario quede vacío.

1. Pegue la política de acceso al bucket.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
   
       "Statement": [
           {
               "Action": [
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation",
                   "s3:ListBucket"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::bucketname"
               ]
           },
           {
               "Action": [
                   "s3:PutObject",
                   "s3:GetBucketAcl"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::bucketname/*"
               ]
           }
       ]
   }
   ```

------  
![\[IAM policy editor interface showing JSON code for S3 bucket permissions.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-12.png)

1. Seleccione **Siguiente**.

1. En la página **Revisar y crear**, haga lo siguiente:

   1. En **Detalles de la política**, introduzca un **nombre de política** y, si lo desea, una **descripción**.

   1. Deje los **permisos definidos en esta sección de política** tal como están.

   1. En **Añadir etiquetas (*opcional*), puede optar por añadir etiquetas para realizar un seguimiento de sus recursos.** .

   1. Elija **Crear política**.  
![\[Policy creation interface showing policy details, permissions, and tags sections.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-13.png)

## Paso 3: Crear el rol
<a name="gdpr-console-create-role"></a>

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/) y elija **Funciones**.  
![\[IAM Dashboard showing resource counts, recent updates, and available tools.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-14.png)

1. Elija **Crear rol**.  
![\[IAM roles interface showing 116 roles and a prominent "Create role" button.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-15.png)

1. En **Seleccione una entidad de confianza**, en **Tipo de entidad de confianza**, elija una **AWS cuenta**.

1. En **Una AWS cuenta**, selecciona **Esta cuenta**. Puede personalizar la configuración adicional mediante **las opciones**.

1. Elija **Siguiente**.  
![\[Cuenta de AWS selection interface with trusted entity types and account options.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-16.png)

1. En **Añadir permisos**, en **Políticas de permisos**, busca la política que acabas de crear en el cuadro de búsqueda y selecciona tu política.  
![\[Add permissions interface showing search for "monitron-policy" with one matching result selected.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-17.png)

1. En la página **Nombre, revisión y creación**, haga lo siguiente:

   1. En **Detalles del rol**, introduzca un **nombre de rol** y, si lo desea, una **descripción**.

   1. Puede optar por omitir el **paso 1: seleccionar entidades de confianza** y el **paso 2: añadir permisos**.

   1. Para el **paso 3: Añadir etiquetas**, para **Añadir etiquetas (*opcional*)**, añade etiquetas opcionales para realizar un seguimiento de tus recursos.

1. Elija **Crear rol**.  
![\[Form for creating a new role with fields for role name, description, trust policy, and permissions.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-18.png)

## Paso 4: Crear la política de confianza
<a name="gdpr-console-trust-policy"></a>

1. Busque el rol que acaba de crear y selecciónelo.  
![\[IAM Roles page showing search results for "monitron-role" with one matching role listed.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-19.png)

1. Seleccione la pestaña **Relaciones de confianza**.  
![\[IAM role details page showing Trust relationships tab and Edit trust policy button.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-20.png)

1. Elija **Editar relación de confianza**.  
![\[Trust relationships tab with Edit trust relationship button highlighted.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-edit-trust-relationship.png)

1. Elimine el texto JSON predeterminado de manera que el formulario quede vacío.

1. Pegue la política que permite a Amazon Monitron asumir el rol.

------
#### [ JSON ]

****  

   ```
   {
   	"Version":"2012-10-17",		 	 	 
   	"Statement": [{
   		"Effect": "Allow",
   		"Principal": {
   			"Service": ["monitron.amazonaws.com"]
   		},
   		"Action": "sts:AssumeRole"
   	}]
   }
   ```

------  
![\[Form for creating a new role with fields for role name, description, trust policy, and permissions.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-18.png)

1. Elija **Actualizar política de confianza**.

## Paso 5: Crear el caso de soporte
<a name="gdpr-console-case"></a>

1.  Desde la AWS consola, selecciona el icono del signo de interrogación situado en la esquina superior derecha de cualquier página y, a continuación, selecciona **Support Center**.   
![\[AWS console interface showing IAM dashboard with Soporte Center dropdown menu highlighted.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-support-question-mark.png)

1.  En la página siguiente, elija **Crear caso**.   
![\[Soporte Center interface with Quick solutions, Active cases, and Create case button.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-4.png)

1. En la **sección ¿Cómo podemos ayudar?** haga lo siguiente:

   1.  Elija **Soporte de cuentas y facturación** 

   1. En **Servicio**, selecciona **Cuenta**. 

   1. En **Categoría**, elija **Cumplimiento y acreditaciones**. 

   1. Elija **Gravedad**, si esa opción está disponible en función de su suscripción de soporte. 

   1. Elija **Siguiente paso: información adicional**.   
![\[Soporte case form with Account and billing selected, and service details specified.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-5.png)

1. En **Información adicional**, haga lo siguiente:

   1. En **Asunto**, introduzca **Amazon Monitron data export request**. 

   1. En el campo **Descripción**, introduzca:

      1. su ID de cuenta

      1. la región del bucket que ha creado

      1. el ARN del bucket que ha creado (por ejemplo: “arn:aws:s3:::bucketname”)

      1. el ARN del rol que ha creado (por ejemplo: «arn:aws:iam: :273771705212:role/ «) role-for-monitron  
![\[Form for Amazon Monitron data export request with fields for account and bucket details.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-6.png)

   1. Elija **Siguiente paso: Resuelva ahora o póngase en contacto con nosotros**.

1. **En Solve now** o ponte en contacto con nosotros, haz lo siguiente:

   1. En **Resolver ahora**, selecciona **Siguiente**.   
![\[Soporte options interface with "Solve now" and "Contact us" buttons, and recommendations.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-7.png)

   1. En **Póngase en contacto con nosotros**, elija el **idioma de contacto preferido** y el método de contacto que prefiera.

   1. Seleccione **Enviar**. Aparecerá una pantalla de confirmación con el identificador de tu caso y los detalles.  
![\[Contact options with language selection and choices for Web, Phone, or Chat communication.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-8.png)

 Un especialista en atención AWS al cliente se pondrá en contacto contigo lo antes posible. Si surgiera algún problema con los pasos indicados, el especialista podría pedirle más información. Si se ha proporcionado toda la información necesaria, el especialista le avisará en cuanto sus datos se hayan copiado en el bucket de Amazon S3 que creó anteriormente. 

# Exportar sus datos con CloudShell
<a name="export-shell"></a>

**Topics**
+ [Paso 1: Crear un bucket de Amazon S3 (con AWS CloudShell)](#create-s3-with-shell)
+ [Paso 2: Conceder a Amazon Monitron acceso a su bucket de Amazon S3 (con) AWS CloudShell](#create-policy-with-shell)
+ [Paso 3: Crear su ticket de soporte](#create-support-ticket)

## Paso 1: Crear un bucket de Amazon S3 (con AWS CloudShell)
<a name="create-s3-with-shell"></a>

1. Inicie sesión en la AWS consola. 

1. Abra AWS CloudShell

   [AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) es un entorno de línea de comandos que opera dentro de su navegador. En su interior AWS CloudShell, puede utilizarla AWS Command Line Interface para iniciar y configurar muchos AWS servicios.

1. En AWS CloudShell, introduzca el siguiente comando, donde bucketname es el nombre del depósito que está creando:

   ```
   $ aws s3api create-bucket --bucket bucketname --region us-east-1
   ```

   Este comando crea un bucket de Amazon S3 para almacenar sus datos sin procesar. Podrá acceder fácilmente a su bucket desde la consola y descargar sus datos según le convenga. Para obtener más información, consulte [Creación, configuración y uso de buckets de Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/creating-buckets-s3.html).
**importante**  
Usted es el responsable de tomar las medidas apropiadas para proteger sus datos. Le recomendamos encarecidamente que utilice el cifrado del lado del servidor y que bloquee el acceso público a su bucket.

   En el comando anterior, el bucket se crea en la Región Este de EE. UU. (Norte de Virginia). Puede especificar opcionalmente una región diferente en el cuerpo de la solicitud. Para obtener más información, consulte [Regiones, zonas de disponibilidad y zonas locales](https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html).

   Debería ver una salida similar a esta:

   ```
   { "Location": "/bucketname" }
   ```

1. Identifique el [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com//general/latest/gr/aws-arns-and-namespaces.html) del bucket que ha creado, que será:

   ```
   arn:aws:s3:::bucketname
   ```

## Paso 2: Conceder a Amazon Monitron acceso a su bucket de Amazon S3 (con) AWS CloudShell
<a name="create-policy-with-shell"></a>

1. Pegue el siguiente código en un editor de texto y guárdelo como: monitron-assumes-role .json. No utilice Microsoft Word, dado que añade caracteres adicionales. Usa un editor de texto simple como el Bloc de notas o. TextEdit

   Esta política da permiso a Amazon Monitron para asumir el rol que le permitirá acceder a su bucket de S3. Para obtener más información, consulte [Políticas y permisos en IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies.html). 

------
#### [ JSON ]

****  

   ```
   {
   	"Version":"2012-10-17",		 	 	 
   	"Statement": [{
   		"Effect": "Allow",
   		"Principal": {
   			"Service": ["monitron.amazonaws.com"]
   		},
   		"Action": "sts:AssumeRole"
   	}]
   }
   ```

------

1.  Pegue el siguiente texto en un editor de texto y guárdelo como: 3.json monitron-role-accesses-s 

    Esta política da permiso a Amazon Monitron (mediante el rol creado anteriormente) para acceder a su bucket de Amazon S3. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
   
       "Statement": [
           {
               "Action": [
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation",
                   "s3:ListBucket"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::bucketname"
               ]
           },
           {
               "Action": [
                   "s3:PutObject",
                   "s3:GetBucketAcl"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::bucketname/*"
               ]
           }
       ]
   }
   ```

------

1. En el archivo de texto que acabas de crear, reemplaza cada aparición de *bucketname* por el nombre de tu bucket.

   Por ejemplo, si el nombre de su bucket es relentless, entonces su archivo tendrá este aspecto:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
   
       "Statement": [
           {
               "Action": [
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation",
                   "s3:ListBucket"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::relentless"
               ]
           },
           {
               "Action": [
                   "s3:PutObject",
                   "s3:GetBucketAcl"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::relentless/*"
               ]
           }
       ]
   }
   ```

------

1. Sube los dos archivos json que acabas de crear al CloudShell directorio principal. 

   Para cargar un archivo, selecciona Acciones en la esquina superior derecha de la página de la CloudShell consola y, a continuación, selecciona Cargar archivo. 

1. Introduce lo siguiente en la línea de comandos en CloudShell:

   **aws iam create-role --role-name role-for-monitron --assume-role-policy-document "cat monitron-assumes-role.json"**

   Este comando crea el rol y adjunta la monitron-assumes-role política. 

    Debería ver una salida similar a esta: 

   ```
    {
   	"Role": {
   		"Path": "/",
   		"RoleName": "role-for-monitron",
   		"RoleId": "AROAT7PQQWN6BMTMASVPP",
   		"Arn": "arn:aws:iam::273771705212:role/role-for-monitron",
   		"CreateDate": "2021-07-14T02:48:15+00:00",
   		"AssumeRolePolicyDocument": {
   			"Version": "2012-10-17",		 	 	 
   			"Statement": [{
   				"Sid": "",
   				"Effect": "Allow",
   				"Principal": {
   					"Service": [
   						"monitron.amazonaws.com"
   					]
   				},
   				"Action": "sts:AssumeRole"
   			}]
   		}
   	}
   }
   ```

    Tome nota del valor ARN del rol que acaba de crear. La necesitará más adelante. 

   En nuestro ejemplo, el valor ARN es: `arn:aws:iam::273771705212:role/role-for-monitron`

1. Introduzca lo siguiente en la línea de comandos en CloudShell:

    ** aws iam create-policy --policy-name role-uses-bucket --policy-document "cat role-uses-bucket.json"** 

    Este comando crea la política monitron-role-accesses-s 3. 

    Debería ver una salida similar a esta: 

   ```
    {
   	"Policy": {
   		"PolicyName": "role-uses-bucket",
   		"PolicyId": "ANPAT7PQQWN6I5KLORSDQ",
   		"Arn": "arn:aws:iam::273771705212:policy/role-uses-bucket",
   		"Path": "/",
   		"DefaultVersionId": "v1",
   		"AttachmentCount": 0,
   		"PermissionsBoundaryUsageCount": 0,
   		"IsAttachable": true,
   		"CreateDate": "2021-07-14T02:19:23+00:00",
   		"UpdateDate": "2021-07-14T02:19:23+00:00"
   	}
   }
   ```

    Tome nota del valor ARN de la política que acaba de crear. Lo necesitará para el siguiente paso. 

    En nuestro ejemplo, el valor ARN es: 

   ```
   arn:aws:iam::273771705212:policy/role-uses-bucket
   ```

1. Introduzca lo siguiente en la línea de comandos CloudShell y sustituya el ARN por el ARN de su política: role-uses-bucket 

   ```
    aws iam attach-role-policy --role-name role-for-monitron --policy-arn
         arn:aws:iam::273771705212:policy/role-uses-bucket
   ```

   Este comando asocia la política monitron-role-accesses-s 3 al rol que acaba de crear.

    Acaba de crear y preparar un bucket de Amazon S3, un rol que Amazon Monitron puede asumir, una política que permite a Amazon Monitron asumir ese rol y otra política que permite al servicio mediante ese rol utilizar su bucket de Amazon S3.

   Usted es el responsable de tomar las medidas apropiadas para proteger sus datos. Le recomendamos encarecidamente que utilice el cifrado del lado del servidor y que bloquee el acceso público a su bucket. Para obtener más información, consulte [Bloqueo del acceso público](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-control-block-public-access.html).

## Paso 3: Crear su ticket de soporte
<a name="create-support-ticket"></a>

1.  Desde la AWS consola, selecciona el icono del signo de interrogación situado en la esquina superior derecha de cualquier página y, a continuación, selecciona **Support Center**.   
![\[AWS console interface showing IAM dashboard with Soporte Center dropdown menu highlighted.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/gdpr-support-question-mark.png)

1.  En la página siguiente, elija **Crear caso**.   
![\[Soporte Center interface with Quick solutions, Active cases, and Create case button.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-4.png)

1. En la **sección ¿Cómo podemos ayudar?** haga lo siguiente:

   1.  Elija **Soporte de cuentas y facturación** 

   1. En **Servicio**, selecciona **Cuenta**. 

   1. En **Categoría**, elija **Cumplimiento y acreditaciones**. 

   1. Elija **Gravedad**, si esa opción está disponible en función de su suscripción de soporte. 

   1. Elija **Siguiente paso: información adicional**.   
![\[Soporte case form with Account and billing selected, and service details specified.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-5.png)

1. En **Información adicional**, haga lo siguiente:

   1. En **Asunto**, introduzca **Amazon Monitron data export request**. 

   1. En el campo **Descripción**, introduzca:

      1. su ID de cuenta

      1. la región del bucket que ha creado

      1. el ARN del bucket que ha creado (por ejemplo: “arn:aws:s3:::bucketname”)

      1. el ARN del rol que ha creado (por ejemplo: «arn:aws:iam: :273771705212:role/ «) role-for-monitron  
![\[Form for Amazon Monitron data export request with fields for account and bucket details.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-6.png)

   1. Elija **Siguiente paso: Resuelva ahora o póngase en contacto con nosotros**.

1. **En Solve now** o ponte en contacto con nosotros, haz lo siguiente:

   1. En **Resolver ahora**, selecciona **Siguiente**.   
![\[Soporte options interface with "Solve now" and "Contact us" buttons, and recommendations.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-7.png)

   1. En **Póngase en contacto con nosotros**, elija el **idioma de contacto preferido** y el método de contacto que prefiera.

   1. Seleccione **Enviar**. Aparecerá una pantalla de confirmación con el identificador de tu caso y los detalles.  
![\[Contact options with language selection and choices for Web, Phone, or Chat communication.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/s3-export-8.png)

 Un especialista en atención AWS al cliente se pondrá en contacto contigo lo antes posible. Si surgiera algún problema con los pasos indicados, el especialista podría pedirle más información. Si se ha proporcionado toda la información necesaria, el especialista le avisará en cuanto sus datos se hayan copiado en el bucket de Amazon S3 que creó anteriormente. 

# Exportación de datos de Amazon Monitron con Kinesis v1
<a name="monitron-kinesis-export"></a>

**nota**  
El esquema de exportación de datos de Amazon Monitron Kinesis v1 ha quedado en desuso. Obtenga más información sobre el esquema de exportación de datos [v2](monitron-kinesis-export-v2.md). 

Puede exportar datos de mediciones entrantes y los resultados de inferencia correspondientes desde Amazon Monitron y realizar análisis en tiempo real. La exportación de datos transmite datos en directo a Kinesis.

**Topics**
+ [Exportación de datos a un flujo de Kinesis](#exporting-stream-procedure)
+ [Edición de los ajustes de exportación de datos en directo](#edit-live-export)
+ [Detención de una exportación de datos en directo](#stop-kinesis-export)
+ [Visualización de errores de exportación de datos](#viewing-kinesis-export-errors)
+ [Uso del cifrado en el lado del servidor para el flujo de Kinesis](#data-export-server-side-encryption)
+ [Supervisión con Amazon CloudWatch Logs](data-export-cloudwatch-logs.md)
+ [Almacenamiento de datos exportados en Amazon S3](kinesis-store-S3.md)
+ [Procesamiento de datos con Lambda](data-export-lambda.md)
+ [Comprensión del esquema de exportación de datos v1](data-export-schema.md)

## Exportación de datos a un flujo de Kinesis
<a name="exporting-stream-procedure"></a>

1. En la página principal de su proyecto, casi en la parte inferior de la página, a la derecha, elija **Iniciar exportación de datos en directo**.

1. En **Seleccionar flujo de datos de Amazon Kinesis**, realice una de las siguientes acciones:
   + Introduzca el nombre de un flujo existente en el cuadro de búsqueda. A continuación, vaya al paso 5.
   + Elija **Crear un nuevo flujo de datos**.

1. En la página **Crear flujo de datos**, en **Configuración del flujo de datos**, introduzca el nombre de su flujo de datos.

1. En Capacidad de flujo de datos, elija su modo de capacidad:
   + Si los requisitos de rendimiento de su flujo de datos son impredecibles y variables, elija **Bajo demanda**.
   + Si puede estimar de forma fiable los requisitos de rendimiento de su flujo de datos, elija **Estipulado**. A continuación, en particiones estipuladas, introduzca el número de particiones que desee crear, o elija el **Estimador de particiones**.

1. Elija **Crear flujo de datos**.

## Edición de los ajustes de exportación de datos en directo
<a name="edit-live-export"></a>

Para editar los ajustes de exportación de datos en directo:

1. Abra la consola de Amazon Monitron.

1. En el panel de navegación, elija **Proyectos**.

1. Si tiene múltiples proyectos, elija el proyecto para el que desea editar los ajustes de exportación.

1. En la página principal de su proyecto, en **Exportación de datos en directo**, en el menú desplegable **Acciones**, elija **Editar ajustes de exportación de datos en directo**.

## Detención de una exportación de datos en directo
<a name="stop-kinesis-export"></a>

1. Abra la consola de Amazon Monitron.

1. En el panel de navegación, elija **Proyectos**.

1. Si tiene múltiples proyectos, elija el proyecto para el que desea editar los ajustes de exportación.

1. En la página principal de su proyecto, en **Exportación de datos en directo**, en el menú desplegable **Acciones**, elija **Detener exportación de datos en directo**.

1. En la ventana emergente, elija **Detener**.

## Visualización de errores de exportación de datos
<a name="viewing-kinesis-export-errors"></a>

Para ver los mensajes de error en la interfaz CloudWatch de registros:
+ En la consola de Amazon Monitron, en la página principal de su proyecto, en **Exportación de datos en vivo**, elija grupo de **CloudWatch registros**.

## Uso del cifrado en el lado del servidor para el flujo de Kinesis
<a name="data-export-server-side-encryption"></a>

Puede habilitar el cifrado en el lado del servidor para su flujo de datos de Kinesis antes de configurar la exportación de datos de Kinesis. Sin embargo, si se habilita el cifrado en el lado del servidor después de configurar la exportación de datos de Kinesis, Amazon Monitron no podrá publicar en el flujo. Esto se debe a que Amazon Monitron no tendrá permiso para llamar a [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), GenerateDataKey por lo que podrá cifrar los datos enviados a Kinesis.

Para solucionar este problema, siga las instrucciones indicadas en [Edición de los ajustes de exportación de datos en directo](#edit-live-export), pero sin cambiar la configuración. Esto asociará el cifrado que haya establecido con su configuración de exportación.

# Supervisión con Amazon CloudWatch Logs
<a name="data-export-cloudwatch-logs"></a>

Puede supervisar la exportación de datos en tiempo real de Amazon Monitron mediante Amazon CloudWatch Logs. Si una medición no se puede exportar, Amazon Monitron enviará un evento de registro a sus CloudWatch registros. También puede configurar un filtro de métricas en el registro de errores para generar métricas y configurar alarmas. Una alarma puede vigilar determinados umbrales y enviar notificaciones o tomar medidas cuando se alcanzan dichos umbrales. Para obtener más información, consulte [la Guía del CloudWatch usuario](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).

Amazon Monitron envía los eventos de registro al grupo de registros/aws/monitron/data-export/ \$1HASH\$1ID\$1.

El evento de registro tiene el siguiente formato JSON:

```
{ 
    "assetDisplayName": "string", 
    "destination": "string", 
    "errorCode": "string", 
    "errorMessage": "string", 
    "eventId": "string", 
    "positionDisplayName": "string", 
    "projectDisplayName": "string", 
    "projectName": "string", 
    "sensorId": "string", 
    "siteDisplayName": "string", 
    "timestamp": "string"
}
```

assetDisplayName  
+ El nombre del activo que se muestra en la aplicación
+ Tipo: cadena

destination  
+ El ARN del flujo de datos de Kinesis
+ Tipo: cadena
+ Patrón: arn:aws:kinesis: \$1\$1REGION\$1\$1: \$1\$1\$1ID\$1\$1 :stream/ \$1\$1STREAM\$1NAME\$1\$1 AWS\$1ACCOUNT

errorCode  
+ El código de error
+ Tipo: cadena
+ Valores válidos: `INTERNAL_SEVER_ERROR | KINESIS_RESOURCE_NOT_FOUND | KINESIS_PROVISIONED_THROUGHPUT_EXCEEDED | KMS_ACCESS_DENIED | KMS_NOT_FOUND | KMS_DISABLED | KMS_INVALID_STATE | KMS_THROTTLING`

errorMessage  
+ El mensaje de error detallado
+ Tipo: cadena

eventId  
+ El ID de evento único correspondiente a cada exportación de medición
+ Tipo: cadena

positionDisplayName  
+ El nombre de la posición del sensor que se muestra en la aplicación
+ Tipo: cadena

sensorId  
+ El ID físico del sensor desde el que se envía la medición
+ Tipo: cadena

siteDisplayName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

timestamp  
+ La marca de tiempo en UTC en la que el servicio de Amazon Monitron recibe la medición
+ Tipo: cadena
+  yyyy-mm-ddPatrón: HH:MM:SS.SSS

# Almacenamiento de datos exportados en Amazon S3
<a name="kinesis-store-S3"></a>

**Topics**
+ [Uso de una plantilla predefinida CloudFormation](#kinesis-cloudfront-makestack)
+ [Configuración manual de Kinesis en la consola](#kinesis-configure-console)

## Uso de una plantilla predefinida CloudFormation
<a name="kinesis-cloudfront-makestack"></a>

Amazon Monitron proporciona una AWS CloudFormation plantilla predefinida que ayuda a configurar rápidamente la Firehose para entregar datos desde una transmisión de datos de Kinesis al bucket de Amazon S3. Esta plantilla habilita el particionamiento dinámico y los objetos de Amazon S3 entregados utilizarán el siguiente formato de clave recomendado por Amazon Monitron: `/project={projectName}/site={siteName}/time={yyyy-mm-dd 00:00:00}/{filename}`

1. Inicie sesión en su cuenta. AWS 

1. Abra una nueva pestaña del navegador con el siguiente URL:

   ```
   https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create/review?templateURL=https://s3.us-east-1.amazonaws.com/monitron-cloudformation-templates-us-east-1/monitron_kinesis_data_export.yaml&stackName=monitron-kinesis-live-data-export
   ```

1. En la CloudFormation página que se abre, en la esquina superior derecha, seleccione la región en la que utiliza Amazon Monitron.

1. De forma predeterminada, la plantilla crea un nuevo flujo de datos de Kinesis y un bucket de S3 junto con otros recursos necesarios para entregar datos a Amazon S3. Puede cambiar los parámetros a fin de utilizar los recursos existentes.

1. Marque la casilla que dice «*Reconozco que AWS CloudFormation podría crear recursos de IAM*».

1. Seleccione **Creación de pila**.

1. En la página siguiente, elija el icono de actualización tantas veces como desee hasta que el estado de la pila sea CREATE\$1COMPLETE.

## Configuración manual de Kinesis en la consola
<a name="kinesis-configure-console"></a>

1. Inicie sesión en la consola de AWS administración y abra la consola de Kinesis en /kinesis. https://console.aws.amazon.com

1. En el panel de navegación, elija **Flujos de entrega**.

1. Elija **Crear flujo de entrega**.

1. En Origen, elija **Amazon Kinesis Data Streams**.

1. En Destino, elija **Amazon S3**.

1. En **Configuración de origen, flujo de datos de Kinesis**, introduzca el ARN de su flujo de datos de Kinesis.

1. En **Nombre del flujo de datos**, introduzca el nombre de su flujo de datos de Kinesis.

1. En **Configuración de destino**, elija un bucket de Amazon S3 o introduzca un URI de bucket.

1. (opcional) Habilite el particionamiento dinámico mediante el análisis sintáctico en línea para JSON. Esta opción es apropiada si desea particionar los datos de medición en flujo continuo en función de la información de origen y la fecha y hora. Por ejemplo:
   + En **Partición dinámica**, elija **Habilitado**.
   + En **Nuevo delimitador de línea**, elija **Habilitado**.
   + En **Análisis sintáctico en línea para JSON**, elija **Habilitado**.
   + En **Claves de partición dinámica**, añada:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/kinesis-store-S3.html)

1. Elija **Aplicar claves de partición dinámica** y confirme que el prefijo del bucket de Amazon S3 generado sea `!{partitionKeyFromQuery:project}/!{partitionKeyFromQuery:site}/!{partitionKeyFromQuery:time}/`.

1. En Amazon S3, los objetos utilizan el siguiente formato de clave: `/project={projectName}/site={siteName}/time={yyyy-mm-dd 00:00:00}/{filename}`.

1. Elija **Crear flujo de entrega**.

1. (opcional) Utilice una ruta más granular.

   Si ha elegido una partición dinámica, utilice el formato de clave anterior de Amazon S3 si piensa utilizar AWS Glue Athena para consultar los datos. También puede elegir un formato de clave más fino, pero la consulta de Amazon Athena no será eficiente. En este ejemplo se muestra cómo configurar una ruta de clave de Amazon S3 más fina.

   En **Claves de partición dinámica**, añada:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/kinesis-store-S3.html)

   En Amazon S3, los objetos utilizan el siguiente formato de clave: ` /project={projectName}/site={siteName}/asset={assetName}/position={positionName}/sensor={sensorId}/date={yyyy-mm-dd}/time={HH:MM:SS}/{filename}`

# Procesamiento de datos con Lambda
<a name="data-export-lambda"></a>

**Topics**
+ [Paso 1: Cree el [rol de IAM](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html) que otorgue permiso a su función para acceder a los recursos AWS](#create-iam-role)
+ [Paso 2: Crear la función de Lambda](#create-lambda-function)
+ [Paso 3: Configurar la función de Lambda](#configure-lambda-function)
+ [Paso 4: Habilitar el disparador de Kinesis en la consola AWS Lambda](#enable-lambda-trigger)

## Paso 1: Cree el [rol de IAM](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html) que otorgue permiso a su función para acceder a los recursos AWS
<a name="create-iam-role"></a>

1. Abra la [página Roles](https://console.aws.amazon.com/iam/home?#/roles) en la consola de IAM.

1. Elija **Crear rol**.

1. Cree un rol con las propiedades siguientes.
   + Entidad de confianza: Lambda
   + Permisos: AWSLambda KinesisExecutionRole (y AWSKey ManagementServicePowerUser si la transmisión de Kinesis está cifrada)
   + Nombre del rol: lambda-kinesis-role  
![\[IAM role creation interface showing name, review, and create steps with role details and permissions.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-create-role.png)

## Paso 2: Crear la función de Lambda
<a name="create-lambda-function"></a>

1. Abra la página **Funciones** en la consola de Lambda.

1. Seleccione **Creación de función**.

1. Elija **Utilizar un esquema**.

1. En la barra de búsqueda de **Blueprints**, busque y elija **kinesis-process-record (nodejs**) o. **kinesis-process-record-python**

1. Elija **Configurar**.  
![\[Create function interface with options to author from scratch, use a blueprint, or select container image.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-create-function.png)

## Paso 3: Configurar la función de Lambda
<a name="configure-lambda-function"></a>

1. Elija **Nombre de la función**

1. Elija el rol creado en el primer paso como **Rol de ejecución**.

1. Configure el activador de Kinesis.

   1. Elija su flujo de Kinesis.

   1. Pulse **Crear función**.  
![\[Lambda function configuration form with basic information and Kinesis trigger settings.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-kinesis-trigger.png)

## Paso 4: Habilitar el disparador de Kinesis en la consola AWS Lambda
<a name="enable-lambda-trigger"></a>

1. En la pestaña **Configuración**, elija **Activadores**.

1. Marque la casilla situada junto al nombre del flujo de Kinesis y elija **Habilitar**.  
![\[Lambda function configuration page with Triggers tab and Kinesis stream trigger highlighted.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/kinesis-process-record-lambda.png)

El esquema utilizado en este ejemplo solo consume datos de registro del flujo seleccionado. Puede seguir editando el código de función de Lambda más adelante para completar una tarea más complicada. 

# Comprensión del esquema de exportación de datos v1
<a name="data-export-schema"></a>

**nota**  
El esquema de exportación de datos de Amazon Monitron Kinesis v1 ha quedado en desuso. Obtenga más información sobre el esquema de exportación de datos [v2](monitron-kinesis-export-v2.md). 

Cada dato de medición y su correspondiente resultado de inferencia se exportan como un registro de flujo de datos de Kinesis en formato JSON.

**Topics**
+ [Formato del esquema v1](#data-export-schema-format)
+ [Parámetros del esquema v1](#data-export-schema-parameters)

## Formato del esquema v1
<a name="data-export-schema-format"></a>

```
{
    "timestamp": "string",
    "eventId": "string",
    "version": "string",
    "projectDisplayName": "string",
    "siteDisplayName": "string",
    "assetDisplayName": "string",
    "sensorPositionDisplayName": "string",
    "sensor": {
        "physicalId": "string",
        "rssi": number
    },
    "gateway": {
        "physicalId": "string"
    },
    "measurement": {
        "features": {
            "acceleration": {
                "band0To6000Hz": {
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                },
                "band10To1000Hz": {
                    "resultantVector": {
                        "absMax": number,
                        "absMin": number,
                        "crestFactor": number,
                        "rms": number
                    },
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                }
            },
            "temperature": number,
            "velocity": {
                "band10To1000Hz": {
                    "resultantVector": {
                        "absMax": number,
                        "absMin": number,
                        "crestFactor": number,
                        "rms": number
                    },
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                }
            }
        },
        "sequenceNo": number
    },
    "models": {
        "temperatureML": {
            "persistentClassificationOutput": "string",
            "pointwiseClassificationOutput": "string"
        },
        "vibrationISO": {
            "isoClass": "string",
            "mutedThreshold": "string",
            "persistentClassificationOutput": "string",
            "pointwiseClassificationOutput": "string"
        },
        "vibrationML": {
            "persistentClassificationOutput": "string",
            "pointwiseClassificationOutput": "string"
        }
    },
    "assetState": {
        "newState": "string",
        "previousState": "string"
    }
}
```

## Parámetros del esquema v1
<a name="data-export-schema-parameters"></a>

timestamp  
+ La marca de tiempo en UTC en que el servicio de Monitron recibe la medición
+ Tipo: cadena
+ Patrón: HH:MM:SS.SSS yyyy-mm-dd

eventId  
+ El ID de evento de exportación de datos único asignado a cada medición. Se puede utilizar para deduplicar los registros de flujo de Kinesis recibidos.
+ Tipo: cadena

versión  
+ Versión del esquema
+ Tipo: cadena
+ Valor actual: 1.0

projectDisplayName  
+ El nombre del proyecto que se muestra en la aplicación y en la consola
+ Tipo: cadena

siteDisplayName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

assetDisplayName  
+ El nombre del activo que se muestra en la aplicación
+ Tipo: cadena

sensorPositionDisplayNombre  
+ El nombre de la posición del sensor que se muestra en la aplicación
+ Tipo: cadena

sensor.physicalId  
+ El ID físico del sensor desde el que se envía la medición
+ Tipo: cadena

sensor.rssi  
+ El valor del indicador de intensidad de señal bluetooth recibida del sensor
+ Tipo: Number
+ Unidad: dBm

gateway.physicalId  
+ El ID físico de la puerta de enlace utilizada para transmitir datos al servicio de Amazon Monitron
+ Tipo: cadena

measurement.features.acceleration.band0To6000Hz.xAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 0‑6000 Hz en el eje x
+ Tipo: Number
+ Unidad: m/s^2

measurement.features.acceleration.band0To6000Hz.yAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 0‑6000 Hz en el eje y
+ Tipo: Number
+ Unidad: m/s^2

measurement.features.acceleration.band0To6000Hz.zAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 0‑6000 Hz en el eje y
+ Tipo: Number
+ Unidad: m/s^2

measurement.features.acceleration.band10To1000Hz.resultantVector.absMax  
+ La aceleración máxima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ Unidad: m/s^2

measurement.features.acceleration.band10To1000Hz.resultantVector.absMin  
+ La aceleración mínima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ Unidad: m/s^2

measurement.features.acceleration.band10To1000Hz.resultantVector.crestFactor  
+ El factor de cresta de aceleración observado en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number

measurement.features.acceleration.band10To1000Hz.resultantVector.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ m/s^2

measurement.features.acceleration.band10To1000Hz.xAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz en el eje x
+ Tipo: Number
+ m/s^2

measurement.features.acceleration.band10To1000Hz.yAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz en el eje y
+ Tipo: Number
+ m/s^2

measurement.features.acceleration.band10To1000Hz.zAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz en el eje z
+ Tipo: Number
+ m/s^2

measurement.features.temperature  
+ La temperatura observada
+ Tipo: Number
+ °C/grados C

measurement.features.velocity.band10To1000Hz.resultantVector.absMax  
+ La aceleración máxima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ mm/s

measurement.features.velocity.band10To1000Hz.resultantVector.absMin  
+ La aceleración mínima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ mm/s

measurement.features.velocity.band10To1000Hz.resultantVector.crestFactor  
+ El factor de cresta de velocidad observado en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number

measurement.features.velocity.band10To1000Hz.resultantVector.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ mm/s

measurement.features.velocity.band10To1000Hz.xAxis.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz en el eje x
+ Tipo: Number
+ mm/s

measurement.features.velocity.band10To1000Hz.yAxis.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz en el eje y
+ Tipo: Number
+ mm/s

measurement.features.velocity.band10To1000Hz.zAxis.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz en el eje z
+ Tipo: Number
+ mm/s

measurement.sequenceNo  
+ El número de secuencias de medición
+ Tipo: Number

Modelos. Temperatura ml. persistentClassificationOutput  
+ El resultado de clasificación persistente del modelo de machine learning basado en la temperatura
+ Tipo: Number
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM`

Modelos. Temperatura ml. pointwiseClassificationOutput  
+ El resultado de clasificación puntual del modelo de machine learning basado en la temperatura
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | INITIALIZING | HEALTHY | WARNING | ALARM`

models.vibrationISO.isoClass  
+ La clase ISO 20816 (norma de medición y evaluación de vibración de máquinas) utilizada por el modelo de vibración basado en ISO
+ Tipo: cadena
+ Valores válidos: `CLASS1 | CLASS2 | CLASS3 | CLASS4 | FAN_BV2`

models.vibrationISO.mutedThreshold  
+ El umbral para silenciar la notificación del modelo de vibración basado en ISO
+ Tipo: cadena
+ Valores válidos: `WARNING | ALARM`

Modelos. Vibration ISO. persistentClassificationOutput  
+ La salida de clasificación persistente del modelo de vibración basado en ISO
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM`

Modelos. Vibration ISO. pointwiseClassificationOutput  
+ La salida de clasificación puntual del modelo de vibraciones basado en ISO
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM | MUTED_WARNING | MUTED_ALARM`

Modelos. Vibration ML. persistentClassificationOutput  
+ La salida de clasificación persistente del modelo de vibración basado en machine learning
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM`

Modelos. Vibration ML. pointwiseClassificationOutput  
+ La salida de clasificación puntual del modelo de vibración basado en machine learning
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | INITIALIZING | HEALTHY | WARNING | ALARM`

assetState.newState  
+ El estado de la máquina después de procesar la medición
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | NEEDS_MAINTENANCE | WARNING | ALARM`

assetState.previousState  
+ El estado de la máquina antes de procesar la medición
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | NEEDS_MAINTENANCE | WARNING | ALARM`

# Exportación de datos de Amazon Monitron con Kinesis v2
<a name="monitron-kinesis-export-v2"></a>

 Puede exportar datos de mediciones entrantes y los resultados de inferencia correspondientes desde Amazon Monitron y realizar análisis en tiempo real. La exportación de datos transmite datos en directo a Kinesis. 

**Topics**
+ [Exportación de datos a un flujo de Kinesis](#exporting-stream-procedure-v2)
+ [Edición de los ajustes de exportación de datos en directo](#edit-live-export-v2)
+ [Detención de una exportación de datos en directo](#stop-kinesis-export-v2)
+ [Visualización de errores de exportación de datos](#viewing-kinesis-export-errors-v2)
+ [Uso del cifrado en el lado del servidor para el flujo de Kinesis](#data-export-server-side-encryption-v2)
+ [Supervisión con Amazon CloudWatch Logs](data-export-cloudwatch-logs-v2.md)
+ [Almacenamiento de datos exportados en Amazon S3](kinesis-store-S3-v2.md)
+ [Procesamiento de datos con Lambda](data-export-lambda-v2.md)
+ [Comprensión del esquema de exportación de datos v2](data-export-schema-v2.md)
+ [Migración de Kinesis v1 a v2](migration-from-v1-to-v2.md)

## Exportación de datos a un flujo de Kinesis
<a name="exporting-stream-procedure-v2"></a>

1. En la página principal de su proyecto, casi en la parte inferior de la página, a la derecha, elija **Iniciar exportación de datos en directo**.

1. En **Seleccionar flujo de datos de Kinesis**, realice una de las siguientes acciones:
   + Introduzca el nombre de un flujo existente en el cuadro de búsqueda. A continuación, vaya al paso 5.
   +  Elija **Crear un nuevo flujo de datos**. 

1. En la página **Crear flujo de datos**, en **Configuración del flujo de datos**, introduzca el nombre de su flujo de datos.

1. En Capacidad de flujo de datos, elija su modo de capacidad:
   + Si los requisitos de rendimiento de su flujo de datos son impredecibles y variables, elija **Bajo demanda**.
   + Si puede estimar de forma fiable los requisitos de rendimiento de su flujo de datos, elija **Estipulado**. A continuación, en particiones estipuladas, introduzca el número de particiones que desee crear, o elija el **Estimador de particiones**.

1. Elija **Crear flujo de datos**.

## Edición de los ajustes de exportación de datos en directo
<a name="edit-live-export-v2"></a>

Para editar los ajustes de exportación de datos en directo:

1. Abra la consola de Amazon Monitron.

1. En el panel de navegación, elija **Proyectos**.

1. Si tiene múltiples proyectos, elija el proyecto para el que desea editar los ajustes de exportación.

1. En la página principal de su proyecto, en **Exportación de datos en directo**, en el menú desplegable **Acciones**, elija **Editar ajustes de exportación de datos en directo**.

## Detención de una exportación de datos en directo
<a name="stop-kinesis-export-v2"></a>

1. Abra la consola de Amazon Monitron.

1. En el panel de navegación, elija **Proyectos**.

1. Si tiene múltiples proyectos, elija el proyecto para el que desea editar los ajustes de exportación.

1. En la página principal de su proyecto, en **Exportación de datos en directo**, en el menú desplegable **Acciones**, elija **Detener exportación de datos en directo**.

1. En la ventana emergente, elija **Detener**.

## Visualización de errores de exportación de datos
<a name="viewing-kinesis-export-errors-v2"></a>

Para ver los mensajes de error en la interfaz CloudWatch de registros:
+ En la consola de Amazon Monitron, en la página principal de su proyecto, en **Exportación de datos en vivo**, elija grupo de **CloudWatch registros**.

## Uso del cifrado en el lado del servidor para el flujo de Kinesis
<a name="data-export-server-side-encryption-v2"></a>

Puede habilitar el cifrado en el lado del servidor para su flujo de datos de Kinesis antes de configurar la exportación de datos de Kinesis. Sin embargo, si se habilita el cifrado en el lado del servidor después de configurar la exportación de datos de Kinesis, Amazon Monitron no podrá publicar en el flujo. Esto se debe a que Amazon Monitron no tendrá permiso para llamar a [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), GenerateDataKey por lo que podrá cifrar los datos enviados a Kinesis.

Para solucionar este problema, siga las instrucciones indicadas en [Edición de los ajustes de exportación de datos en directo](#edit-live-export-v2), pero sin cambiar la configuración. Esto asociará el cifrado que haya establecido con su configuración de exportación.

# Supervisión con Amazon CloudWatch Logs
<a name="data-export-cloudwatch-logs-v2"></a>

Puede supervisar la exportación de datos en tiempo real de Amazon Monitron mediante Amazon CloudWatch Logs. Si una medición no se puede exportar, Amazon Monitron enviará un evento de registro a sus CloudWatch registros. También puede configurar un filtro de métricas en el registro de errores para generar métricas y configurar alarmas. Una alarma puede vigilar determinados umbrales y enviar notificaciones o tomar medidas cuando se alcanzan dichos umbrales. Para obtener más información, consulte [la Guía del CloudWatch usuario](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).

Amazon Monitron envía los eventos de registro al grupo de registros/aws/monitron/data-export/ \$1HASH\$1ID\$1.

El evento de registro tiene el siguiente formato JSON:

```
{
    "assetName": "string",
    "destination": "string",
    "errorCode": "string",
    "errorMessage": "string",
    "eventId": "string",
    "eventType": "string",
    "positionName": "string",
    "projectName": "string",
    "projectId": "string",
    "sensorId": "string",
    "gatewayId": "string",
    "siteName": "string",
    "timestamp": "string"
}
```

assetName  
+ El nombre del activo que se muestra en la aplicación
+ Tipo: cadena

destination  
+ El ARN del flujo de datos de Kinesis
+ Tipo: cadena
+ Patrón: arn:aws:kinesis: \$1\$1REGION\$1\$1: \$1\$1\$1ID\$1\$1 :stream/ \$1\$1STREAM\$1NAME\$1\$1 AWS\$1ACCOUNT 

errorCode  
+ El código de error
+ Tipo: cadena
+ Valores válidos: `INTERNAL_SEVER_ERROR | KINESIS_RESOURCE_NOT_FOUND | KINESIS_PROVISIONED_THROUGHPUT_EXCEEDED | KMS_ACCESS_DENIED | KMS_NOT_FOUND | KMS_DISABLED | KMS_INVALID_STATE | KMS_THROTTLING`

errorMessage  
+ El mensaje de error detallado
+ Tipo: cadena

eventId  
+ El ID de evento único correspondiente a cada exportación de medición
+ Tipo: cadena

eventType  
+ El tipo de evento actual
+ Tipo: cadena
+ Valores válidos: `measurement` ` | gatewayConnected` ` | gatewayDisconnected` ` | sensorConnected` ` | sensorDisconnected` ` | assetStateTransition` 

positionName  
+ El nombre de la posición del sensor que se muestra en la aplicación
+ Tipo: cadena

projectName  
+ El nombre del proyecto que se muestra en la aplicación y en la consola
+ Tipo: cadena

  

projectID  
+ El ID de proyecto único correspondiente al proyecto de Amazon Monitron
+ Tipo: cadena

sensorID  
+ El ID físico del sensor desde el que se envía la medición
+ Tipo: cadena

gatewayID  
+ El ID físico de la puerta de enlace utilizada para transmitir datos al servicio de Amazon Monitron
+ Tipo: cadena

siteName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

timestamp  
+ La marca de tiempo en UTC en la que el servicio de Amazon Monitron recibe la medición
+ Tipo: cadena
+  yyyy-mm-ddPatrón: HH:MM:SS.SSS

# Almacenamiento de datos exportados en Amazon S3
<a name="kinesis-store-S3-v2"></a>

Si desea almacenar sus datos exportados en Amazon S3, utilice el siguiente procedimiento.

**Topics**
+ [Configuración manual de Kinesis en la consola](#kinesis-configure-console-v2)

## Configuración manual de Kinesis en la consola
<a name="kinesis-configure-console-v2"></a>

1. Inicie sesión en la consola de AWS administración y abra la consola de Kinesis en /kinesis. https://console.aws.amazon.com

1. En el panel de navegación, elija **Flujos de entrega**.

1. Elija **Crear flujo de entrega**.

1. En Origen, elija **Amazon Kinesis Data Streams**.

1. En Destino, elija **Amazon S3**.

1. En **Configuración de origen, flujo de datos de Kinesis**, introduzca el ARN de su flujo de datos de Kinesis.

1. En **Nombre del flujo de datos**, introduzca el nombre de su flujo de datos de Kinesis.

1. En **Configuración de destino**, elija un bucket de Amazon S3 o introduzca un URI de bucket.

1. (opcional) Habilite el particionamiento dinámico mediante el análisis sintáctico en línea para JSON. Esta opción es apropiada si desea particionar los datos de medición en flujo continuo en función de la información de origen y la fecha y hora. Por ejemplo:
   + En **Partición dinámica**, elija **Habilitado**.
   + En **Nuevo delimitador de línea**, elija **Habilitado**.
   + En **Análisis sintáctico en línea para JSON**, elija **Habilitado**.
   + En **Claves de partición dinámica**, añada:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/kinesis-store-S3-v2.html)

1. Elija **Aplicar claves de partición dinámica** y confirme que el prefijo del bucket de Amazon S3 generado sea `!{partitionKeyFromQuery:project}/!{partitionKeyFromQuery:site}/!{partitionKeyFromQuery:time}/`.

1. En Amazon S3, los objetos utilizan el siguiente formato de clave: `/project={projectName}/site={siteName}/time={yyyy-mm-dd 00:00:00}/{filename}`.

1. Elija **Crear flujo de entrega**.

# Procesamiento de datos con Lambda
<a name="data-export-lambda-v2"></a>

**Topics**
+ [Paso 1: Cree el rol de [IAM que le dé permiso a su función](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html) para acceder a los recursos AWS](#data-export-lambda-v2-1)
+ [Paso 2: Crear la función de Lambda](#create-lambda-function-v2)
+ [Paso 3: Configurar la función de Lambda](#configure-lambda-function-v2)
+ [Paso 4: Habilitar el disparador de Kinesis en la consola AWS Lambda](#configure-kinesis-trigger-v2)

## Paso 1: Cree el rol de [IAM que le dé permiso a su función](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html) para acceder a los recursos AWS
<a name="data-export-lambda-v2-1"></a>

1. Abra la [página Roles](https://console.aws.amazon.com/iam/home?#/roles) en la consola de IAM.

1. Elija **Crear rol**.

1. En la página **Seleccionar entidad de confianza**, haga lo siguiente:
   + En **Tipo de entidad de confianza**, elija **AWS servicio.**
   + En **Caso de uso**, para **Servicio o caso de uso**, elija **Lambda**.
   + Elija **Siguiente**.  
![\[IAM role creation interface showing trusted entity selection with Servicio de AWS option chosen.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-role-1.png)

1. En la página **Añadir permisos**, haga lo siguiente: 
   + En **Políticas de permisos**, elija AWSLambda KinesisExecutionRole (y AWSKey ManagementServicePowerUser si la transmisión de Kinesis está cifrada).
   + Deje las configuraciones en **Definir el límite de permisos** tal como están.
   + Elija **Siguiente**.  
![\[Add permissions interface showing AWSLambdaKinesisExecutionRole policy selected for a new role.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-role-2.png)

1. En la página **Nombrar, revisar y crear**, haga lo siguiente: 
   + En **Detalles del rol**, en **Nombre del rol**, introduzca un nombre para su rol. Por ejemplo, *lambda-kinesis-role*. También puede optar por añadir una **descripción** opcional.
   + Deje los ajustes para el **paso 1: seleccionar entidades de confianza** y el **paso 2: Añadir los permisos** tal como están. Puede optar por añadir etiquetas en el **paso 3: Añadir etiquetas** para realizar un seguimiento de sus recursos.  
![\[IAM role creation interface showing name, review, and create steps with role details and permissions.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-create-role.png)

1. Elija **Crear rol**.

## Paso 2: Crear la función de Lambda
<a name="create-lambda-function-v2"></a>

1. Abra la página **Funciones** en la consola de Lambda.

1. Seleccione **Creación de función**.

1. Elija **Utilizar un esquema**.

1. En la barra de búsqueda de **Blueprints**, busque y elija **kinesis-process-record (nodejs**) o. **kinesis-process-record-python**

1. Elija **Configurar**.  
![\[Create function interface with options to author from scratch, use a blueprint, or select container image.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-create-function.png)

## Paso 3: Configurar la función de Lambda
<a name="configure-lambda-function-v2"></a>

1. Elija **Nombre de la función**

1. Elija el rol creado en el primer paso como **Rol de ejecución**.

1. Configure el activador de Kinesis.

   1. Elija su flujo de Kinesis.

   1. Pulse **Crear función**.  
![\[Lambda function configuration form with basic information and Kinesis trigger settings.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/lambda-kinesis-trigger.png)

## Paso 4: Habilitar el disparador de Kinesis en la consola AWS Lambda
<a name="configure-kinesis-trigger-v2"></a>

1. En la pestaña **Configuración**, elija **Activadores**.

1. Marque la casilla situada junto al nombre del flujo de Kinesis y elija **Habilitar**.  
![\[Lambda function configuration page with Triggers tab and Kinesis stream trigger highlighted.\]](http://docs.aws.amazon.com/es_es/Monitron/latest/user-guide/images/kinesis-process-record-lambda.png)

El esquema utilizado en este ejemplo solo consume datos de registro del flujo seleccionado. Puede seguir editando el código de función de Lambda más adelante para completar una tarea más complicada. 

# Comprensión del esquema de exportación de datos v2
<a name="data-export-schema-v2"></a>

 Cada dato de medición, su resultado de inferencia correspondiente y los connect/disconnect, and sensor connect/disconnect eventos de puerta de enlace se exportan como un registro de transmisión de datos de Kinesis en formato JSON. 

**Topics**
+ [Formato del esquema v2](#data-export-schema-format-v2)
+ [Parámetros del esquema v2](#data-export-schema-parameters-v2)

## Formato del esquema v2
<a name="data-export-schema-format-v2"></a>

```
{
    "timestamp": "string",
    "eventId": "string",
    "version": "2.0",
    "accountId": "string",
    "projectName": "string",
    "projectId": "string",
    "eventType": "measurement|gatewayConnected|gatewayDisconnected|sensorConnected|sensorDisconnected|assetStateTransition",
    // measurement
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string",
            "rssi": number
        },
        "gateway": {
            "physicalId": "string"
        },
        "sequenceNo": number,
        "features": {
            "acceleration": {
                "band0To6000Hz": {
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                },
                "band10To1000Hz": {
                    "totalVibration": {
                        "absMax": number,
                        "absMin": number,
                        "crestFactor": number,
                        "rms": number
                    },
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                }
            },
            "velocity": {
                "band10To1000Hz": {
                    "totalVibration": {
                        "absMax": number,
                        "absMin": number,
                        "crestFactor": number,
                        "rms": number
                    },
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                }
            },
            "temperature": number
        }
        "models": {
            "temperatureML": {
                "previousPersistentClassificationOutput": "string",
                "persistentClassificationOutput": "string",
                "pointwiseClassificationOutput": "string"
            },
            "vibrationISO": {
                "isoClass": "string",
                "mutedThreshold": "string",
                "previousPersistentClassificationOutput": "string",
                "persistentClassificationOutput": "string",
                "pointwiseClassificationOutput": "string"
            },
            "vibrationML": {
                "previousPersistentClassificationOutput": "string",
                "persistentClassificationOutput": "string",
                "pointwiseClassificationOutput": "string"
            }
        },
        "assetPositionId": "string"
    }
    
    // sensorConnected
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string"
        },
        "assetPositionId": "string"
    }
    
    // sensorDisconnected
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string"
        },
        "assetPositionId": "string"
    }
    
    // gatewayConnected
    "eventPayload": {
        "siteName": "string",
        "gatewayName": "string",
        "gatewayListURL": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "gateway": {
            "physicalId": "string"
        }
    }
    
    // gatewayDisconnected
    "eventPayload": {
        "siteName": "string",
        "gatewayName": "string",
        "gatewayListURL": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "gateway": {
            "physicalId": "string"
        }
    }
    
    // assetStateTransition
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string"
        },
        "assetTransitionType": "measurement|userInput",
        "assetState": {
            "newState": "string",
            "previousState": "string"
        },
        "closureCode": {
            "failureMode": "string",
            "failureCause": "string",
            "actionTaken": "string",
            "resolvedModels": list<"string">
        },
        "assetPositionId": "string"
    }
}
```

## Parámetros del esquema v2
<a name="data-export-schema-parameters-v2"></a>

 El esquema de exportación de datos de Kinesis v2 de Amazon Monitron incluye los siguientes parámetros de esquema. Algunos parámetros son actualizaciones de v1 y otros son exclusivos de v2. Por ejemplo, `siteName` era un parámetro de primer nivel en v1. En v2, es un parámetro de segundo nivel que se encuentra bajo la entidad `eventPayload`. 

timestamp  
+ La marca de tiempo en UTC en la que el servicio de Amazon Monitron recibe la medición
+ Tipo: cadena
+ Patrón: HH:MM:SS.SSS yyyy-mm-dd

eventId  
+ El ID de evento de exportación de datos único asignado a cada medición. Se puede utilizar para deduplicar los registros de flujo de Kinesis recibidos.
+ Tipo: cadena

versión  
+ Versión del esquema
+ Tipo: cadena
+ Valor: 1.0 o 2.0

accountId  
+ El ID de AWS cuenta de 12 dígitos de su proyecto de Monitron
+ Tipo: cadena

projectName  
El nombre del proyecto que se muestra en la aplicación y en la consola.  
Tipo: cadena

projectId  
El identificador único de su proyecto. Amazon Monitron   
Tipo: cadena

eventType  
+ El flujo de eventos actual. Cada tipo de evento tiene un formato `eventPayload` específico.
+ Tipo: cadena
+ Valores posibles: `measurement`, `gatewayConnected`, `gatewayDisconnected`, `sensorConnected`, `sensorDisconnected` o `assetStateTransition`.

**`eventType: measurement`**

eventPayload.features.acceleration.band0To6000Hz.xAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 0‑6000 Hz en el eje x
+ Tipo: Number
+ Unidad: m/s^2

eventPayload.features.acceleration.band0To6000Hz.yAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 0‑6000 Hz en el eje y
+ Tipo: Number
+ Unidad: m/s^2

eventPayload.features.acceleration.band0To6000Hz.zAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 0‑6000 Hz en el eje z
+ Tipo: Number
+ Unidad: m/s^2

eventPayload.features.acceleration.band10To1000Hz.resultantVector.absMax  
+ La aceleración máxima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ Unidad: m/s^2

eventPayload.features.acceleration.band10To1000Hz.resultantVector.absMin  
+ La aceleración mínima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ Unidad: m/s^2

eventPayload.features.acceleration.band10To1000Hz.resultantVector.crestFactor  
+ El factor de cresta de aceleración observado en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number

eventPayload.features.acceleration.band10To1000Hz.resultantVector.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ m/s^2

eventPayload.features.acceleration.band10To1000Hz.xAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz en el eje x
+ Tipo: Number
+ m/s^2

eventPayload.features.acceleration.band10To1000Hz.yAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz en el eje y
+ Tipo: Number
+ m/s^2

eventPayload.features.acceleration.band10To1000Hz.zAxis.rms  
+ La raíz cuadrada media de la aceleración observada en la banda de frecuencia 10‑1000 Hz en el eje z
+ Tipo: Number
+ m/s^2

eventPayload.features.temperature  
+ La temperatura observada
+ Tipo: Number
+ °C/grados C

eventPayload.features.velocity.band10To1000Hz.resultantVector.absMax  
+ La aceleración máxima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ mm/s

eventPayload.features.velocity.band10To1000Hz.resultantVector.absMin  
+ La aceleración mínima absoluta observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ mm/s

eventPayload.features.velocity.band10To1000Hz.resultantVector.crestFactor  
+ El factor de cresta de velocidad observado en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number

eventPayload.features.velocity.band10To1000Hz.resultantVector.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz
+ Tipo: Number
+ mm/s

eventPayload.features.velocity.band10To1000Hz.xAxis.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz en el eje x
+ Tipo: Number
+ mm/s

eventPayload.features.velocity.band10To1000Hz.yAxis.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz en el eje y
+ Tipo: Number
+ mm/s

eventPayload.features.velocity.band10To1000Hz.zAxis.rms  
+ La raíz cuadrada media de la velocidad observada en la banda de frecuencia 10‑1000 Hz en el eje z
+ Tipo: Number
+ mm/s

eventPayload.sequenceNo  
+ El número de secuencias de medición
+ Tipo: Number

Carga útil del evento. assetPositionId  
+ El identificador de la posición del sensor para la que se envía la medición.
+ Tipo: cadena

EventPayload.Nombre de la empresa  
+ El nombre de la empresa que utiliza el activo.
+ Tipo: cadena

Carga útil del evento. Geolocalización. Latitud  
+ La latitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Geolocalización. Longitud  
+ La longitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Dirección  
+ La dirección del sitio.
+ Tipo: cadena

Carga útil del evento. Número de serie  
+ El número de serie del activo.
+ Tipo: cadena

EventPayload.Make  
+ La marca del activo.
+ Tipo: cadena

Carga útil del evento. Modelo  
+ El modelo del activo.
+ Tipo: cadena

`eventType: sensorConnected`

siteName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

assetName  
+ El nombre del activo que se muestra en la aplicación
+ Tipo: cadena

positionName  
+ El nombre de la posición del sensor que se muestra en la aplicación
+ Tipo: cadena

assetPositionURL  
+ El URL del sensor que se muestra en la aplicación
+ Tipo: cadena

physicalID  
+ El ID físico del sensor desde el que se envía la medición
+ Tipo: cadena

Carga útil del evento. assetPositionId  
+ El identificador de la posición del sensor cuyo estado ha cambiado.
+ Tipo: cadena

EventPayload.Nombre de la empresa  
+ El nombre de la empresa que utiliza el activo.
+ Tipo: cadena

Carga útil del evento. Geolocalización. Latitud  
+ La latitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Geolocalización. Longitud  
+ La longitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Dirección  
+ La dirección del sitio.
+ Tipo: cadena

Carga útil del evento. Número de serie  
+ El número de serie del activo.
+ Tipo: cadena

EventPayload.Make  
+ La marca del activo.
+ Tipo: cadena

Carga útil del evento. Modelo  
+ El modelo del activo.
+ Tipo: cadena

`eventType: sensorDisconnected`

siteName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

assetName  
+ El nombre del activo que se muestra en la aplicación
+ Tipo: cadena

positionName  
+ El nombre de la posición del sensor que se muestra en la aplicación
+ Tipo: cadena

assetPositionURL  
+ El URL del sensor que se muestra en la aplicación
+ Tipo: cadena

physicalID  
+ El ID físico del sensor desde el que se envía la medición
+ Tipo: cadena

Carga útil del evento. assetPositionId  
+ El identificador de la posición del sensor cuyo estado ha cambiado.
+ Tipo: cadena

EventPayload.Nombre de la empresa  
+ El nombre de la empresa que utiliza el activo.
+ Tipo: cadena

Carga útil del evento. Geolocalización. Latitud  
+ La latitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Geolocalización. Longitud  
+ La longitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Dirección  
+ La dirección del sitio.
+ Tipo: cadena

Carga útil del evento. Número de serie  
+ El número de serie del activo.
+ Tipo: cadena

EventPayload.Make  
+ La marca del activo.
+ Tipo: cadena

Carga útil del evento. Modelo  
+ El modelo del activo.
+ Tipo: cadena

 `eventType: gatewayConnected` 

eventPayload.siteName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

eventPayload.gatewayName  
+ El nombre de la puerta de enlace que se muestra en la aplicación
+ Tipo: cadena

eventPayload.gatewayListURL  
+ El URL de la puerta de enlace que se muestra en la aplicación
+ Tipo: cadena

eventPayload.gateway.physicalID  
+ El ID físico de la puerta de enlace apenas conectada para transmitir datos al servicio de Amazon Monitron
+ Tipo: cadena

Carga útil del evento. Nombre de la empresa  
+ El nombre de la empresa que utiliza el activo.
+ Tipo: cadena

Carga útil del evento. Geolocalización. Latitud  
+ La latitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Geolocalización. Longitud  
+ La longitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Dirección  
+ La dirección del sitio.
+ Tipo: cadena

`eventType: gatewayDisconnected`

siteName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

gatewayName  
+ El nombre de la puerta de enlace que se muestra en la aplicación
+ Tipo: cadena

gatewayListURL  
+ El URL de la puerta de enlace que se muestra en la aplicación
+ Tipo: cadena

physicalID  
+ El ID físico de la puerta de enlace apenas conectada para transmitir datos al servicio de Amazon Monitron
+ Tipo: cadena

EventPayload.Nombre de la empresa  
+ El nombre de la empresa que utiliza el activo.
+ Tipo: cadena

Carga útil del evento. Geolocalización. Latitud  
+ La latitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Geolocalización. Longitud  
+ La longitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Dirección  
+ La dirección del sitio.
+ Tipo: cadena

`eventType: assetStateTransition`

eventPayload.siteName  
+ El nombre del sitio que se muestra en la aplicación
+ Tipo: cadena

eventPayload.assetName  
+ El nombre del activo que se muestra en la aplicación
+ Tipo: cadena

eventPayload.positionName  
+ El nombre de la posición del sensor que se muestra en la aplicación
+ Tipo: cadena

eventPayload.assetPositionURL  
+ El URL del sensor que se muestra en la aplicación
+ Tipo: cadena

eventPayload.sensor.physicalID  
+ El ID físico del sensor desde el que se envía la medición
+ Tipo: cadena

Carga útil del evento. assetTransitionType  
+ El motivo de la transición de estado del activo
+ Tipo: cadena
+ Valores posibles: `measurement` o `userInput`

eventPayload.assetState.newState  
+ El nuevo estado del activo
+ Tipo: cadena

eventPayload.assetState.previousState  
+ El estado anterior del activo
+ Tipo: cadena

eventPayload.closureCode.failureMode  
+ El modo de error seleccionado por el usuario al reconocer este fallo
+ Tipo: cadena
+ Valores posibles: `NO_ISSUE` \$1 `BLOCKAGE` \$1 `CAVITATION` \$1 `CORROSION` \$1 `DEPOSIT` \$1 `IMBALANCE` \$1 `LUBRICATION` \$1 `MISALIGNMENT` \$1 `OTHER` \$1 `RESONANCE` \$1 `ROTATING_LOOSENESS` \$1 `STRUCTURAL_LOOSENESS` \$1 `TRANSMITTED_FAULT` \$1 `UNDETERMINED` 

eventPayload.closureCode.failureCause  
+ La causa del fallo seleccionada por el usuario en el menú desplegable de la aplicación al reconocer un fallo.
+ Tipo: cadena
+ Valores posibles: `ADMINISTRATION` \$1 `DESIGN` \$1 `FABRICATION` \$1 `MAINTENANCE` \$1 `OPERATION` \$1 `OTHER` \$1 `QUALITY` \$1 `UNDETERMINED` \$1 `WEAR` 

eventPayload.closureCode.actionTaken  
+ La acción que se realiza al cerrar esta anomalía seleccionada por el usuario en el menú desplegable de la aplicación.
+ Tipo: cadena
+ Valores posibles: `ADJUST` \$1 `CLEAN` \$1 `LUBRICATE` \$1 `MODIFY` \$1 `NO_ACTION` \$1 `OTHER` \$1 `OVERHAUL` \$1 `REPLACE` 

eventPayload.closureCode.resolvedModels  
+ El conjunto de modelos que pusieron de manifiesto el problema.
+ Tipo: Lista de cadenas
+ Valores posibles: `vibrationISO` \$1 `vibrationML` \$1 `temperatureML` 

Carga útil del evento. assetPositionId  
+ El identificador de la posición del activo cuyo estado ha cambiado.
+ Tipo: cadena

Models.TemperatureML. persistentClassificationOutput  
+ El resultado de clasificación persistente del modelo de machine learning basado en la temperatura
+ Tipo: Number
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM`

Modelos. Temperatura ml. pointwiseClassificationOutput  
+ El resultado de clasificación puntual del modelo de machine learning basado en la temperatura
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | INITIALIZING | HEALTHY | WARNING | ALARM`

models.vibrationISO.isoClass  
+ La clase ISO 20816 (norma de medición y evaluación de vibración de máquinas) utilizada por el modelo de vibración basado en ISO
+ Tipo: cadena
+ Valores válidos: `CLASS1 | CLASS2 | CLASS3 | CLASS4`

models.vibrationISO.mutedThreshold  
+ El umbral para silenciar la notificación del modelo de vibración basado en ISO
+ Tipo: cadena
+ Valores válidos: `WARNING | ALARM`

Modelos. Vibration ISO. persistentClassificationOutput  
+ La salida de clasificación persistente del modelo de vibración basado en ISO
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM`

Modelos. Vibration ISO. pointwiseClassificationOutput  
+ La salida de clasificación puntual del modelo de vibraciones basado en ISO
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM | MUTED_WARNING | MUTED_ALARM`

Modelos. Vibration ML. persistentClassificationOutput  
+ La salida de clasificación persistente del modelo de vibración basado en machine learning
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | WARNING | ALARM`

Modelos. Vibration ML. pointwiseClassificationOutput  
+ La salida de clasificación puntual del modelo de vibración basado en machine learning
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | INITIALIZING | HEALTHY | WARNING | ALARM`

assetState.newState  
+ El estado de la máquina después de procesar la medición
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | NEEDS_MAINTENANCE | WARNING | ALARM`

assetState.previousState  
+ El estado de la máquina antes de procesar la medición
+ Tipo: cadena
+ Valores válidos: `UNKNOWN | HEALTHY | NEEDS_MAINTENANCE | WARNING | ALARM`

EventPayload.Nombre de la empresa  
+ El nombre de la empresa que utiliza el activo.
+ Tipo: cadena

Carga útil del evento. Geolocalización. Latitud  
+ La latitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Geolocalización. Longitud  
+ La longitud de la ubicación física del sitio.
+ Tipo: Number

Carga útil del evento. Dirección  
+ La dirección del sitio.
+ Tipo: cadena

Carga útil del evento. Número de serie  
+ El número de serie del activo.
+ Tipo: cadena

EventPayload.Make  
+ La marca del activo.
+ Tipo: cadena

Carga útil del evento. Modelo  
+ El modelo del activo.
+ Tipo: cadena

# Migración de Kinesis v1 a v2
<a name="migration-from-v1-to-v2"></a>

 Si utiliza actualmente el esquema de datos v1, es posible que ya envíe datos a Amazon S3 o que procese a posteriori la carga útil del flujo de datos con Lambda. 

**Topics**
+ [Actualización del esquema de datos a v2](#updating-to-v2)
+ [Actualización del procesamiento de datos con Lambda](#updating-with-lam)

## Actualización del esquema de datos a v2
<a name="updating-to-v2"></a>

 Si ya ha configurado un flujo de datos con el esquema v1, puede actualizar su proceso de exportación de datos mediante el siguiente procedimiento: 

1. Abra su consola de Amazon Monitron.

1. Vaya a su proyecto.

1.  Detenga la [exportación de datos en directo actual](monitron-kinesis-export-v2.md#stop-kinesis-export-v2). 

1.  Inicie la exportación de datos en directo para crear un nuevo flujo de datos.

1. Seleccione el flujo de datos recién creado.

1. Elija **iniciar exportación de datos en directo**. En este punto, el nuevo esquema enviará su carga a través del flujo de datos.

1. (Opcional) Vaya a la consola de Kinesis y elimine su antiguo flujo de datos.

1. Configure un nuevo método de entrega para su flujo de datos recién creado con el esquema v2.

 Su nuevo flujo entrega ahora cargas útiles conformes con el esquema v2 a su nuevo bucket. Le recomendamos que utilice dos buckets distintos para tener un formato coherente en caso de que desee procesar todos los datos en estos buckets. Por ejemplo, usar otros servicios como Athena y. AWS Glue

**nota**  
Si ya entregaba sus datos a Amazon S3, obtenga información sobre cómo [almacenar los datos exportados en Amazon S3](kinesis-store-S3-v2.md#kinesis-store-S3-title-v2) para obtener detalles sobre cómo entregar sus datos a Amazon S3 con el esquema v2.

**nota**  
Si utilizaba una función de Lambda para procesar sus cargas, obtenga información sobre cómo [procesar datos con Lambda](https://docs.aws.amazon.com/Monitron/latest/user-guide/data-export-lambda.html). También puede consultar la sección [actualización con Lambda](#updating-with-lam) para obtener más información.

## Actualización del procesamiento de datos con Lambda
<a name="updating-with-lam"></a>

 La actualización del procesamiento de datos con Lambda requiere que tenga en cuenta que el flujo de datos de la v2 se basa ahora en eventos. Su código inicial de Lambda v1 podría haber sido similar al siguiente: 

```
import base64

def main_handler(event):
    # Kinesis "data" blob is base64 encoded so decode here:
    for record in event['Records']:
        payload = base64.b64decode(record["kinesis"]["data"])
     
        measurement = payload["measurement"]
        projectDisplayName = payload["projectDisplayName"]
     
        # Process the content of the measurement
        # ...
```

 Dado que el esquema de datos de v1 está en vías de desaparición, el código Lambda anterior no funcionará con todos los nuevos flujos de datos. 

 El siguiente código Python de ejemplo procesa los eventos del flujo de Kinesis con el esquema de datos v2. Este código utiliza el nuevo parámetro `eventType` para orientar el procesamiento al controlador apropiado: 

```
import base64

handlers = {
    "measurement": measurementEventHandler,
    "gatewayConnected": gatewayConnectedEventHandler,
    "gatewayDisconnected": gatewayDisconnectedEventHandler,
    "sensorConnected": sensorConnectedEventHandler,
    "sensorDisconnected": sensorDisconnectedEventHandler,
}

def main_handler(event):
    # Kinesis "data" blob is base64 encoded so decode here:
    for record in event['Records']:
        payload = base64.b64decode(record["kinesis"]["data"])
          
        eventType = payload["eventType"]
        if eventType not in handler.keys():
            log.info("No event handler found for the event type: {event['eventType']}")
            return 
     
        # Invoke the appropriate handler based on the event type.
        eventPayload = payload["eventPayload"]
        eventHandler = handlers[eventType] 
        eventHandler(eventPayload)

def measurementEventHandler(measurementEventPayload):
    # Handle measurement event
    projectName = measurementEventPayload["projectName"]
    
    # ...

def gatewayConnectedEventHandler(gatewayConnectedEventPayload):
    # Handle gateway connected event

# Other event handler functions
```