

# Conexión a WooCommerce
<a name="connecting-to-data-woocommerce"></a>

WooCommerce es una solución de software flexible de código abierto creada para sitios web basados en WordPress. Se utiliza habitualmente para crear tiendas de comercio electrónico en línea. Gracias a esta solución de software, cualquiera puede convertir un sitio web convencional en una tienda en línea completamente funcional.

**Topics**
+ [Compatibilidad de AWS Glue con WooCommerce](woocommerce-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](woocommerce-configuring-iam-permissions.md)
+ [Configuración de WooCommerce](woocommerce-configuring.md)
+ [Configuración de conexiones a WooCommerce](woocommerce-configuring-connections.md)
+ [Cómo leer de las entidades de WooCommerce](woocommerce-reading-from-entities.md)
+ [Opciones de conexión de WooCommerce](woocommerce-connection-options.md)

# Compatibilidad de AWS Glue con WooCommerce
<a name="woocommerce-support"></a>

AWS Glue es compatible con WooCommerce de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede usar los trabajos de ETL de AWS Glue para consultar datos de WooCommerce.

**¿Es compatible como destino?**  
No.

**Versiones de la API de WooCommerce compatibles**  
Las siguientes versiones de la API de WooCommerce son compatibles:
+ v3

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="woocommerce-configuring-iam-permissions"></a>

En el siguiente ejemplo de política se describen los permisos de AWS IAM necesarios para crear y utilizar conexiones. Si va a crear un nuevo rol, cree una política que contenga lo siguiente:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Si no desea utilizar el método anterior, puede utilizar las siguientes políticas de IAM administradas:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): da acceso a recursos que precisan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, CloudWatch Logs y Amazon EC2. Si aplica la convención de nomenclatura en los recursos especificados en esta política, los procesos de AWS Glue tienen los permisos necesarios. Normalmente, esta política se asocia a los roles que se especifican a la hora de definir rastreadores, trabajos y puntos de conexión de desarrollo.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): otorga acceso total a los recursos de AWS Glue cuando una identidad a la que está asociada la política utiliza la Consola de administración de AWS. Si sigue la convención de nomenclatura para los recursos especificados en esta política, los usuarios dispondrán de todas las funciones de la consola. Esta política se suele adjuntar a los usuarios de la consola AWS Glue.

# Configuración de WooCommerce
<a name="woocommerce-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde WooCommerce, deberá cumplir estos requisitos:

## Requisitos mínimos
<a name="woocommerce-configuring-min-requirements"></a>

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de WooCommerce con una `consumerKey` y un `consumerSecret`.
+ La cuenta de WooCommerce tiene acceso a la API con una licencia válida.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de WooCommerce. Para conexiones típicas, no necesita hacer nada más en WooCommerce.

# Configuración de conexiones a WooCommerce
<a name="woocommerce-configuring-connections"></a>

WooCommerce admite la autenticación personalizada. Para consultar la documentación pública de WooCommerce sobre la generación de las claves de API necesarias para la autorización personalizada, consulte [Autenticación: Documentación de la API de REST de WooCommerce](https://woocommerce.github.io/woocommerce-rest-api-docs/#authentication).

Para configurar una conexión a WooCommerce:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:
   + Para una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `consumerKey` y `consumerSecret` como claves. Nota: Debe crear un secreto por conexión en AWS Glue.

1. En AWS Glue Glue Studio, cree una conexión en **Conexiones de datos** según los pasos que se indican a continuación:

   1. Al seleccionar un **Tipo de conexión**, elija WooCommerce.

   1. Proporcione la `INSTANCE_URL` de la instancia de WooCommerce a la que se quiere conectar.

   1. Seleccione el rol de AWS IAM que AWS Glue pueda asumir y que tenga permisos para las siguientes acciones:

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens.

   1. Seleccione las opciones de red si quiere usar su red.

1. Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`.

# Cómo leer de las entidades de WooCommerce
<a name="woocommerce-reading-from-entities"></a>

**Requisito previo**

Un objeto de WooCommerce desde el que desea leer. Necesitará el nombre del objeto, como cupón, pedido, producto, etc.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Cupón | Sí | Sí | Sí | Sí | Sí | 
| Total de cupón | No | No | No | Sí | No | 
| Total de clientes | No | No | No | Sí | No | 
| Order | Sí | Sí | Sí | Sí | Sí | 
| Total de pedido | No | No | No | Sí | No | 
| Puerta de enlace de pago | No | No | No | Sí | No | 
| Producto | Sí | Sí | Sí | Sí | Sí | 
| Atributo de producto | Sí | Sí | Sí | Sí | Sí | 
| Categoría de producto | Sí | Sí | Sí | Sí | Sí | 
| Opinión de producto | Sí | Sí | Sí | Sí | Sí | 
| Clase de envío de producto | Sí | Sí | Sí | Sí | Sí | 
| Etiqueta de producto | Sí | Sí | Sí | Sí | Sí | 
| Variación de producto | Sí | Sí | Sí | Sí | Sí | 
| Total de productos | No | No | No | Sí | No | 
| Informe (lista) | No | No | No | Sí | No | 
| Total de opiniones | No | No | No | Sí | No | 
| Informe de ventas | Sí | No | No | Sí | No | 
| Método de envío | No | No | No | Sí | No | 
| Zona de envío | No | No | No | Sí | No | 
| Ubicación de la zona de envío | No | No | No | Sí | No | 
| Método de zona de envío | No | No | No | Sí | No | 
| Tasa fiscal | Sí | Sí | Sí | Sí | Sí | 
| Clase fiscal | No | No | No | Sí | No | 
| Informe de los más vendidos | Sí | No | No | Sí | No | 

**Ejemplo:**

```
woocommerce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.woocommerce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupon",
        "API_VERSION": "v3",
        "INSTANCE_URL": "instanceUrl"
    }
```

**Detalles de entidades y campos de WooCommerce**:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/woocommerce-reading-from-entities.html)

**nota**  
Los tipos de datos de estructura y enumeración se convierten en cadenas, y los de fecha y hora se convierten en marcas de tiempo en la respuesta de los conectores.

## Consultas de partición
<a name="woocommerce-reading-partitioning-queries"></a>

**Partición basada en registros**:

Puede proporcionar la opción adicional `NUM_PARTITIONS` de Spark si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

En la partición basada en registros, la cantidad total de registros presentes se consulta desde la API de WooCommerce y se divide por el número proporcionado de `NUM_PARTITIONS`. A continuación, cada subconsulta obtiene simultáneamente el número de registros resultante.
+ `NUM_PARTITIONS`: el número de particiones.

Las siguientes entidades admiten la partición basada en registros:
+ coupon
+ orden
+ producto
+ product-attribute
+ product-attribute-term
+ product-category
+ product-review
+ product-shipping-class
+ product-tag
+ product-variation
+ tax-rate

Ejemplo:

```
woocommerce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.woocommerce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupon",
        "API_VERSION": "v3",
        "INSTANCE_URL": "instanceUrl"
        "NUM_PARTITIONS": "10"
    }
```

**Partición basada en registros**:

La consulta original se divide en un número `NUM_PARTITIONS` de subconsultas que se pueden ejecutar por tareas Spark de forma simultánea:
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
WooCommerce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="WooCommerce",
    connection_options={
        "connectionName": "connectionName",
        "REALMID": "1234567890123456789",
        "ENTITY_NAME": "Bill",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# Opciones de conexión de WooCommerce
<a name="woocommerce-connection-options"></a>

Las siguientes son opciones de conexión para WooCommerce:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en WooCommerce.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. La versión de API de Rest de WooCommerce que desea utilizar.
+ `REALM_ID`(cadena): un identificador que identifica a una empresa individual de WooCommerce Online a la que se envían las solicitudes.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto.
+ `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL.
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL.
+ `INSTANCE_URL`(cadena): (obligatorio) una URL de instancia de WooCommerce válida con el formato: https://<instance>.wpcomstaging.com
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.