

# Adición de una conexión de AWS Glue
<a name="console-connections"></a>

 Puede conectar a orígenes de datos en AWS Glue de Spark mediante programación. Para obtener más información, consulte [Tipos de conexión y opciones para ETL en AWS Glue para Spark](aws-glue-programming-etl-connect.md) 

Puede usar la consola de AWS Glue para agregar, editar, eliminar y probar conexiones. Para obtener más información acerca de las conexiones a AWS Glue, consulte [Conexión a datos](glue-connections.md).

**Topics**
+ [Conexión a Adobe Analytics](connecting-to-adobe-analytics.md)
+ [Conexión a Adobe Marketo Engage](connecting-to-data-adobe-marketo-engage.md)
+ [Conexión a Amazon Redshift en AWS Glue Studio](connecting-to-data-redshift.md)
+ [Conexión a Asana](connecting-to-asana.md)
+ [Conexión a Azure Cosmos DB en AWS Glue Studio](connecting-to-data-azurecosmos.md)
+ [Conexión a Azure SQL en AWS Glue Studio](connecting-to-data-azuresql.md)
+ [Conexión a Blackbaud Raiser's Edge NXT](connecting-to-data-blackbaud.md)
+ [Conexión a CircleCI](connecting-to-data-circleci.md)
+ [Conexión a Datadog](connecting-to-datadog.md)
+ [Conexión a Docusign Monitor](connecting-to-data-docusign-monitor.md)
+ [Conexión a Domo](connecting-to-data-domo.md)
+ [Conexión a Dynatrace](connecting-to-data-dynatrace.md)
+ [Conexión a Anuncios de Facebook](connecting-to-data-facebook-ads.md)
+ [Conexión a Facebook Page Insights](connecting-to-data-facebook-page-insights.md)
+ [Conexión a Freshdesk](connecting-to-data-freshdesk.md)
+ [Conexión a Freshsales](connecting-to-data-freshsales.md)
+ [Conexión a Google Ads](connecting-to-googleads.md)
+ [Conexión a Google Analytics 4](connecting-to-googleanalytics.md)
+ [Conexión a Google BigQuery en AWS Glue Studio](connecting-to-data-bigquery.md)
+ [Conexión a Google Search Console](connecting-to-data-google-search-console.md)
+ [Conexión a Google Sheets](connecting-to-googlesheets.md)
+ [Conexión a HubSpot](connecting-to-data-hubspot.md)
+ [Conexión a Anuncios de Instagram](connecting-to-data-instagram-ads.md)
+ [Conexión a Intercom en AWS Glue Studio](connecting-to-data-intercom.md)
+ [Conexión a Jira Cloud](connecting-to-data-jira-cloud.md)
+ [Conexión a Kustomer](connecting-to-data-kustomer.md)
+ [Conexión a LinkedIn](connecting-to-linkedin.md)
+ [Conexión a Mailchimp](connecting-to-mailchimp.md)
+ [Conexión con Microsoft Dynamics 365 CRM](connecting-to-microsoft-dynamics-365.md)
+ [Conexión a Microsoft Teams](connecting-to-microsoft-teams.md)
+ [Conexión a Mixpanel](connecting-to-mixpanel.md)
+ [Conexión a Monday](connecting-to-monday.md)
+ [Conexión a MongoDB en AWS Glue Studio](connecting-to-data-mongodb.md)
+ [Conexión a Oracle NetSuite](connecting-to-data-oracle-netsuite.md)
+ [Conexión al servicio OpenSearch en AWS Glue Studio](connecting-to-data-opensearch.md)
+ [Conexión a Okta](connecting-to-okta.md)
+ [Conexión a PayPal](connecting-to-data-paypal.md)
+ [Conexión a Pendo](connecting-to-pendo.md)
+ [Conexión a Pipedrive](connecting-to-pipedrive.md)
+ [Conexión a Productboard](connecting-to-productboard.md)
+ [Conexión a QuickBooks](connecting-to-data-quickbooks.md)
+ [Conexión a una API de REST](connecting-to-data-rest-api.md)
+ [Conexión a Salesforce](connecting-to-data-salesforce.md)
+ [Conexión a Salesforce Marketing Cloud](connecting-to-data-salesforce-marketing-cloud.md)
+ [Conexión a Salesforce Commerce Cloud](connecting-to-salesforce-commerce-cloud.md)
+ [Conexión a Salesforce Marketing Cloud Account Engagement](connecting-to-data-salesforce-marketing-cloud-account-engagement.md)
+ [Conexión a SAP HANA en AWS Glue Studio](connecting-to-data-saphana.md)
+ [Conexión a SAP OData](connecting-to-data-sap-odata.md)
+ [Conexión a SendGrid](connecting-to-data-sendgrid.md)
+ [Conexión a ServiceNow](connecting-to-data-servicenow.md)
+ [Conexión a Slack en AWS Glue Studio](connecting-to-data-slack.md)
+ [Conexión a Smartsheet](connecting-to-smartsheet.md)
+ [Conexión a Snapchat Ads en AWS Glue Studio](connecting-to-data-snapchat-ads.md)
+ [Conectarse a Snowflake en AWS Glue Studio](connecting-to-data-snowflake.md)
+ [Conexión a Stripe en AWS Glue Studio](connecting-to-data-stripe.md)
+ [Conexión a Teradata Vantage en AWS Glue Studio](connecting-to-data-teradata.md)
+ [Conexión a Twilio](connecting-to-data-twilio.md)
+ [Conexión a Vertica en AWS Glue Studio](connecting-to-data-vertica.md)
+ [Conexión a WooCommerce](connecting-to-data-woocommerce.md)
+ [Conexión a Zendesk](connecting-to-data-zendesk.md)
+ [Conexión a Zoho CRM](connecting-to-data-zoho-crm.md)
+ [Conexión a Zoom Meetings](connecting-to-data-zoom-meetings.md)
+ [Agregar una conexión JDBC con sus propios controladores JDBC](console-connections-jdbc-drivers.md)

# Conexión a Adobe Analytics
<a name="connecting-to-adobe-analytics"></a>

Adobe Analytics es una plataforma de análisis de datos sólida que recopila datos de experiencias digitales en múltiples canales que respaldan el recorrido del cliente a la vez que proporciona herramientas para analizar los datos. Se trata de una plataforma utilizada habitualmente por profesionales del marketing y analistas de negocio para realizar análisis empresariales. Si es usuario de Adobe Analytics, puede conectar AWS Glue a la cuenta de Adobe Analytics. A continuación, puede utilizar Adobe Analytics como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Adobe Analytics y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Adobe Analytics](adobe-analytics-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](adobeanalytics-configuring-iam-permissions.md)
+ [Configuración de Adobe Analytics](adobeanalytics-configuring.md)
+ [Configuración de las conexiones a Adobe Analytics](adobeanalytics-configuring-connections.md)
+ [Cómo leer de entidades de Adobe Analytics](adobeanalytics-reading-from-entities.md)
+ [Opciones de conexión de Adobe Analytics](adobeanalytics-connection-options.md)
+ [Creación de una cuenta de Adobe Analytics](adobeanalytics-create-account.md)
+ [Limitaciones](adobeanalytics-connector-limitations.md)

# Compatibilidad de AWS Glue con Adobe Analytics
<a name="adobe-analytics-support"></a>

AWS Glue admite Adobe Analytics de la siguiente manera:

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

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

**Versiones de la API de Adobe Analytics compatibles**  
 v2.0 

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede acceso completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Adobe Analytics
<a name="adobeanalytics-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Adobe Analytics, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="adobeanalytics-configuring-min-requirements"></a>
+ Tener una cuenta de Adobe Analytics con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Adobe Analytics](adobeanalytics-create-account.md). 
+  La cuenta de Adobe Analytics debe estar habilitada para el acceso de API. El acceso de API está habilitado de forma predeterminada para las ediciones Select, Prime y Ultimate. 

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

# Configuración de las conexiones a Adobe Analytics
<a name="adobeanalytics-configuring-connections"></a>

 Adobe Analytics admite el tipo de concesión `AUTHORIZATION_CODE` para `OAuth2`.

Este tipo de concesión se considera un `OAuth` “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Los usuarios aún pueden optar por crear una aplicación conectada propia en Adobe Analytics y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Adobe Analytics para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

 Para obtener documentación pública de Adobe Analytics sobre la creación de una aplicación conectada para el flujo AUTHORIZATION\$1CODE OAuth, consulte [API de Adobe Analytics](https://adobedocs.github.io/analytics-2.0-apis/). 

Para configurar una conexión a Adobe Analytics:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 

   En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

1. En AWS 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 Adobe Analytics.

   1. Proporcione la `x_api_key, instanceUrl` de Adobe Analytics a la que se desea conectar.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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 entidades de Adobe Analytics
<a name="adobeanalytics-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de Adobe Analytics del que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Anotación | Sí | Sí | Sí | Sí | No | 
| Métricas calculadas | Sí | Sí | Sí | Sí | No | 
| Función de métricas calculadas | Sí | No | No | Sí | No | 
| Metadatos compartidos de componentes | Sí | Sí | No | Sí | No | 
| Rangos de fechas | Sí | Sí | No | Sí | No | 
| Dimensiones | Sí | No | No | Sí | No | 
| Métricas | Sí | No | No | Sí | No | 
| Proyectos | Sí | No | No | Sí | No | 
| Elemento principal de informes | Sí | Sí | No | Sí | No | 
| Segmentos | Sí | Sí | Sí | Sí | No | 
| Registros de uso | Sí | Sí | No | Sí | No | 

 **Ejemplo** 

```
adobeAnalytics_read = glueContext.create_dynamic_frame.from_options( 
     connection_type="adobeanalytics", 
     connection_options={ 
        "connectionName": "connectionName", 
        "ENTITY_NAME": "annotation/ex*****", 
        "API_VERSION": "v2.0" 
 })
```

 **Detalles de entidades y campos de Adobe Analytics** 
+ [Anotaciones](https://adobedocs.github.io/analytics-2.0-apis/#/Annotations)
+ [Métricas calculadas](https://adobedocs.github.io/analytics-2.0-apis/#/Calculated%20Metrics)
+ [Metadatos de los componentes](https://adobedocs.github.io/analytics-2.0-apis/#/Component%20Meta%20Data)
+ [Rangos de fechas](https://adobedocs.github.io/analytics-2.0-apis/#/Date%20Ranges)
+ [Dimensiones](https://adobedocs.github.io/analytics-2.0-apis/#/Dimensions)
+ [Métricas](https://adobedocs.github.io/analytics-2.0-apis/#/Metrics)
+ [Proyectos de](https://adobedocs.github.io/analytics-2.0-apis/#/Projects)
+ [Informes](https://adobedocs.github.io/analytics-2.0-apis/#/Reports)
+ [Segmentos](https://adobedocs.github.io/analytics-2.0-apis/#/Segments)
+ [Usuarios](https://adobedocs.github.io/analytics-2.0-apis/#/Users)
+ [Registros de uso](https://adobedocs.github.io/analytics-2.0-apis/#/Usage%20Logs)

# Opciones de conexión de Adobe Analytics
<a name="adobeanalytics-connection-options"></a>

Las siguientes son opciones de conexión para Adobe Analytics:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Adobe Analytics. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de Rest de Adobe Analytics que desea utilizar. Por ejemplo, v2.0. 
+  `X_API_KEY`(cadena): (obligatorio) se utiliza para leer y escribir. Se necesita para autenticar al desarrollador o a la aplicación que realiza solicitudes a la API. 
+  `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. 

# Creación de una cuenta de Adobe Analytics
<a name="adobeanalytics-create-account"></a>

1. Para registrarse en el programa de intercambio para socios, acceda al [Programa para socios de Adobe](https://partners.adobe.com/exchangeprogram/creativecloud.html). 

1. Elija **Unirse al programa de intercambio**. 

1. Regístrese o cree una cuenta con su dirección de correo electrónico corporativa. 

1. En el buzón de sugerencias, seleccione la empresa adecuada que tenga una suscripción al producto Adobe Analytics. 

1. Asegúrese de que la cuenta esté registrada en una organización válida (de la lista disponible) que tenga una suscripción activa a Adobe Analytics. 

1. Tras obtener la aprobación por parte de la administración de la empresa, active la cuenta. Para ello, haga clic en el enlace que aparece en el correo electrónico de aprobación. 

**Cómo verificar si la cuenta creada tiene acceso al servicio Adobe Analytics**

1. Inicie sesión en la [Consola de administración de Adobe](https://adminconsole.adobe.com/).

1. Verifique el nombre de la organización que aparece en la esquina superior derecha de la página para asegurarse de que ha iniciado sesión en la empresa correcta.

1. Seleccione **Productos** y compruebe que Adobe Analytics se encuentra disponible.
**nota**  
Si no hay ninguna organización disponible, o el producto Adobe Analytics aparece en gris o no se encuentra disponible, es probable que la cuenta no esté asociada a ninguna organización o que no tenga una suscripción activa a Adobe Analytics. Contacte al administrador del sistema para solicitar acceso a este servicio para la cuenta.

**Creación de un proyecto y credenciales de `OAuth2.0`**

1. Inicie sesión en la cuenta de Adobe Analytics en la que desea que la [aplicación OAuth 2.0](https://developer.adobe.com/developer-console/docs/guides/services/services-add-api-oauth/) se cree.

1. Seleccione **Proyecto** y, a continuación, **Crear un proyecto nuevo**. 

1. Para agregar un proyecto, seleccione **Agregar al proyecto** y, a continuación, seleccione **API**.

1. Seleccione **API de Adobe Analytics**.

1. Seleccione **OAUTH** como autenticación de usuario.

1. Seleccione **Web** como `OAUTH` y proporcione el URI de redireccionamiento. 

   Para conocer el URI de redirección y su patrón, consulte lo siguiente:
   + URI de redireccionamiento predeterminado de `OAuth 2.0`: un URI de redireccionamiento predeterminado es la URL de la página a la que Adobe accederá durante el proceso de autenticación. Por ejemplo: ., `https://ap-southeast-2.console.aws.amazon.com/appflow/oauth` 
   + Patrón URI de redireccionamiento de OAuth 2.0: un patrón URI de redireccionamiento es una ruta URI (o una lista de rutas separada por comas) a la que Adobe puede redirigir (si se solicita) cuando se completa el flujo de inicio de sesión. Por ejemplo: ., `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Agregue los siguientes alcances: 
   + `openid`
   + `read_organizations`
   + `additional_info.projectedProductContext`
   + `additional_info.job_function`

1. Elija **Guardar credencial**.

1. Una vez creada la aplicación, copie los valores `Client ID` y `Client Secret` en un archivo de texto.

# Limitaciones
<a name="adobeanalytics-connector-limitations"></a>

A continuación, se indican las limitaciones del conector de Adobe Analytics:
+ Adobe Analytics no admite la partición basada en campos ni en registros. No se admite la partición basada en campos, ya que no se pueden consultar los campos particionados. No se admiten las particiones basadas en registros, ya que no existe ninguna disposición para obtener un “desplazamiento” para la paginación.
+ En la entidad `Report Top Item`, los parámetros de consulta `startDate` y `endDate` no funcionan como se esperaba. La respuesta no se filtra en función de estos parámetros, lo que provoca problemas con el filtro y el flujo incremental de esta entidad. 
+ En el caso de las entidades `Annotation`, `Calculated Metrics`, `Calculated Metrics Function`, `Date Ranges`, `Dimension`, `Metric`, `Project`, `Report Top Items` y `Segment`, el parámetro de consulta `locale` especifica el idioma que se debe utilizar para las secciones localizadas de respuestas y no filtra los registros. Por ejemplo, `locale="ja_JP"` mostrará los datos en japonés. 
+ Entidad `Report Top Item`: el filtro de los campos `dateRange` y `lookupNoneValues` no funciona actualmente. 
+ Entidad `Segment`: con el valor de filtro `includeType=“templates”`, los filtros de otros campos no funcionan. 
+ Entidad `Date Range`: el filtro del campo `curatedRsid` no funciona. 
+ Entidad `Metric entity`: con el filtro de un campo que se puede segmentar con el valor “falso”, se obtienen resultados tanto para el valor verdadero como para el falso.

# Conexión a Adobe Marketo Engage
<a name="connecting-to-data-adobe-marketo-engage"></a>

Adobe Marketo Engage es una plataforma de automatización de marketing que permite a los profesionales del marketing administrar programas y campañas multicanal personalizados para clientes y posibles clientes.

**Topics**
+ [Compatibilidad de AWS Glue con Adobe Marketo Engage](adobe-marketo-engage-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](adobe-marketo-engage-configuring-iam-permissions.md)
+ [Configuración de Adobe Marketo Engage](adobe-marketo-engage-configuring.md)
+ [Configuración de las conexiones a Adobe Marketo Engage](adobe-marketo-engage-configuring-connections.md)
+ [Lectura desde entidades de Adobe Marketo Engage](adobe-marketo-engage-reading-from-entities.md)
+ [Escritura en entidades de Adobe Marketo Engage](adobe-marketo-engage-writing-to-entities.md)
+ [Opciones de conexión de Adobe Marketo Engage](adobe-marketo-engage-connection-options.md)
+ [Limitaciones y notas para el conector de Adobe Marketo Engage](adobe-marketo-engage-connector-limitations.md)

# Compatibilidad de AWS Glue con Adobe Marketo Engage
<a name="adobe-marketo-engage-support"></a>

AWS Glue es compatible con Adobe Marketo Engage de la siguiente manera:

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

**¿Es compatible como destino?**  
Sí. Puede usar trabajos de ETL de AWS Glue para escribir datos en Adobe Marketo Engage.

**Versiones compatibles de la API de Supported Adobe Marketo**  
Se admiten las siguientes versiones de la API de Adobe Marketo Engage:
+ v1

Para conocer la compatibilidad de entidades por versión específica, consulte Entidades admitidas para el origen.

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="adobe-marketo-engage-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 Adobe Marketo Engage
<a name="adobe-marketo-engage-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Adobe Marketo Engage con credenciales de cliente.
+ La cuenta de Adobe Marketo Engage debe disponer de acceso de API con una licencia válida.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Adobe Marketo Engage. Si es una conexión típica, no necesita hacer nada más en Adobe Marketo Engage.

## Obtención de las credenciales de OAuth 2.0
<a name="adobe-marketo-engage-configuring-creating-adobe-marketo-engage-oauth2-credentials"></a>

Para obtener las credenciales de la API para poder hacer llamadas autenticadas a la instancia, consulte [Adobe Marketo Rest API](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api).

# Configuración de las conexiones a Adobe Marketo Engage
<a name="adobe-marketo-engage-configuring-connections"></a>

Adobe Marketo Engage admite el tipo de concesión CLIENT CREDENTIALS para OAuth2.
+ Este tipo de concesión se considera OAuth 2.0 de doble vía, ya que lo utilizan los clientes para obtener un código de acceso fuera del contexto de un usuario. AWS Glue puede utilizar el ID de cliente y el secreto de cliente para autenticar las API de Adobe Marketo Engage que proporcionan los servicios personalizados que se definan.
+ Cada servicio personalizado pertenece a un usuario exclusivo de la API con un conjunto de roles y permisos que autorizan al servicio a realizar acciones específicas. Un token de acceso está asociado a un único servicio personalizado.
+ Este tipo de concesión da lugar a un token de acceso de corta duración, que se puede renovar mediante una llamada a un punto de conexión de identidad.
+ Para consultar la documentación pública de Adobe Marketo Engage para OAuth 2.0 con credenciales de cliente, consulte [Autenticación](https://developers.adobe-marketo-engage.com/rest-api/authentication/) en la Guía para desarrolladores de Adobe Marketo Engage.

Para configurar una conexión a Adobe Marketo Engage:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto por cada 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 Adobe Marketo Engage.

   1. Proporcione la `INSTANCE_URL` de la instancia de Adobe Marketo Engage 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`.

# Lectura desde entidades de Adobe Marketo Engage
<a name="adobe-marketo-engage-reading-from-entities"></a>

**Requisito previo**

Un objeto de Adobe Marketo Engage desde el que le gustaría leer. Necesitará el nombre del objeto, como clientes potenciales, actividades u objetos personalizados. En las siguientes tablas se muestran las entidades admitidas.

**Entidades compatibles con el origen (síncronas)**:


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| leads | Sí | Sí | No | Sí | No | 
| actividades | Sí | Sí | No | Sí | No | 
| customobjects | Sí | Sí | No | Sí | No | 

**Entidades compatibles con el origen (asíncronas)**:


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| leads | Sí | No | No | Sí | Sí | 
| actividades | Sí | No | No | Sí | No | 
| customobjects | Sí | No | No | Sí | Sí | 

**Ejemplo:**

```
adobe-marketo-engage_read = glueContext.create_dynamic_frame.from_options(
    connection_type="adobe-marketo-engage",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v2",
        "INSTANCE_URL": "https://539-t**-6**.mktorest.com"
    }
```

**Detalles de la entidad y el campo de Adobe Marketo Engage**:

**Entidades con metadatos estáticos**: 

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

**Entidades con metadatos dinámicos**:

Para las siguientes entidades, Adobe Marketo Engage proporciona puntos de conexión para obtener los metadatos de forma dinámica, de modo que la compatibilidad del operador se capture en el nivel del tipo de datos de cada entidad.

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

## Consultas de particionamiento
<a name="adobe-marketo-engage-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo DateTime, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

En la tabla siguiente, se describen los detalles de compatibilidad de campos de particiones de entidades:

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

Ejemplo:

```
adobe-marketo-engage_read = glueContext.create_dynamic_frame.from_options(
    connection_type="adobe-marketo-engage",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2024-07-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-07-02T00:00:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Escritura en entidades de Adobe Marketo Engage
<a name="adobe-marketo-engage-writing-to-entities"></a>

**Requisitos previos**
+ Un objeto de Adobe Marketo en el que desea escribir. Necesitará el nombre del objeto, como `leads` o `customobjects`.
+ El conector de Adobe Marketo admite tres operaciones de escritura:
  + INSERT
  + UPSERT
  + UPDATE
+ Para las operaciones de escritura `UPSERT` y `UPDATE`, debe proporcionar la opción `ID_FIELD_NAMES` para especificar el campo de ID para los registros. Cuando trabaje con la entidad `leads`, utilice `email` como `ID_FIELD_NAMES` para las operaciones `UPSERT` y `id` para las operaciones `UPDATE`. Para la entidad `customobjects`, utilice `marketoGUID` como `ID_FIELD_NAMES` tanto para las operaciones `UPDATE` como `UPSERT`.

**Entidades compatibles para destino (Sincrónico)**


| Nombre de la entidad | Se admitirá como conector de destino | Se puede insertar | Se puede actualizar | Se puede actualizar o insertar | 
| --- | --- | --- | --- | --- | 
| leads | Sí | Sí (masivo) | Sí (masivo) | Sí (masivo) | 
| customobjects | Sí | Sí (masivo) | Sí (masivo) | Sí (masivo) | 

**Ejemplo:**

**Operación INSERT:**

```
marketo_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="marketo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v1",
        "WRITE_OPERATION": "INSERT"
    }
```

**Operación UPDATE:**

```
marketo_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="marketo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v1",
        "WRITE_OPERATION": "UPDATE",
        "ID_FIELD_NAMES": "id"
    }
```

**nota**  
Para las entidades `leads` y `customobjects`, Adobe Marketo proporciona puntos de conexión para recuperar los metadatos de forma dinámica, de modo que los campos modificables se identifiquen en la respuesta de la API de Marketo.

# Opciones de conexión de Adobe Marketo Engage
<a name="adobe-marketo-engage-connection-options"></a>

Las siguientes son opciones de conexión para Adobe Marketo Engage:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de su objeto en Adobe Marketo Engage.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Adobe Marketo Engage que desea utilizar. Por ejemplo: v1.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `TRANSFER_MODE`(cadena): Predeterminado: SYNC. Se utiliza para la lectura asíncrona.
+ `WRITE_OPERATION`(cadena): predeterminado: INSERT. Se utiliza para escribir. El valor debe ser INSERT, UPDATE, UPSERT.
+ `ID_FIELD_NAMES`(cadena): predeterminado: nulo. Necesario para UPDATE y UPSERT.

# Limitaciones y notas para el conector de Adobe Marketo Engage
<a name="adobe-marketo-engage-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Adobe Marketo Engage:
+ “sinceDatetime” y “activityTypeId” son parámetros de filtro obligatorios para la entidad de sincronización de actividades.
+ A las suscripciones se les asignan 50 000 llamadas a la API al día (que se restablecen diariamente a las 12:00 h CST). Se puede adquirir capacidad diaria adicional como parte de una suscripción a Adobe Marketo Engage. Como referencia, consulte la [Adobe Marketo Rest API](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api).
+ El intervalo de tiempo máximo para el filtro de intervalo de fechas (`createdAt` o `updatedAt`) es de 31 días. Como referencia, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ A las suscripciones se les asigna un máximo de 10 trabajos de extracción masiva en la cola en un momento dado. Como referencia, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ De forma predeterminada, los trabajos de extracción están limitados a 500 MB por día (que se restablece diariamente a las 12:00 h CST). Se puede adquirir capacidad diaria adicional como parte de una suscripción a Adobe Marketo Engage. Como referencia, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ La cantidad máxima de trabajos de exportación simultáneos es de 2. Como referencia, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ La cantidad máxima de trabajos de exportación en cola (incluidos los trabajos que se exportan actualmente) es de 10. Como referencia, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ El tamaño máximo de archivo permitido es de 1 GB para extraer de un trabajo masivo.
+ Una vez creado un trabajo asíncrono, el periodo de retención del archivo será de 7 días antes de expirar. Como referencia, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ `createdAt` o `updatedAt` son parámetros de filtro obligatorios para la entidad Async Leads.
+ En la entidad Async Activities, `createdAt` es un parámetro de filtro obligatorio.
+ En la entidad Async Custom Object, `updatedAt` es un parámetro de filtro obligatorio.
+ Al usar conectores de Saas AWS Glue, los usuarios no pueden identificar qué registros específicos fallaron durante una operación de escritura en las plataformas SaaS de destino en caso de fallos parciales.
+ Al utilizar operaciones de escritura sincrónica, todos los campos con valores nulos en el archivo de entrada se eliminarán de forma automática y no se enviarán a la plataforma SaaS.
+ Puede crear o actualizar hasta 300 registros en un lote para la escritura sincrónica.

Para obtener más información, consulte [Prácticas recomendadas de integración de Adobe Marketo Engage](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/marketo-integration-best-practices) y [Extracción masiva](https://https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-activity-extract).

# Conexión a Amazon Redshift en AWS Glue Studio
<a name="connecting-to-data-redshift"></a>

**nota**  
 Puede usar AWS Glue de Spark para leer y escribir en tablas en bases de datos de Amazon Redshift fuera de AWS Glue Studio. Para configurar Amazon Redshift con trabajos de AWS Glue mediante programación, consulte [Conexiones Redshift](aws-glue-programming-etl-connect-redshift-home.md). 

 AWS Glue proporciona soporte integrado para Amazon Redshift. AWS Glue Studio proporciona una interfaz visual para conectarse a Amazon Redshift, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

**Topics**
+ [Creación de una conexión de Amazon Redshift](creating-redshift-connection.md)
+ [Crear un nodo de origen de Amazon Redshift](creating-redshift-source-node.md)
+ [Crear un nodo de destino de Amazon Redshift](creating-redshift-target-node.md)
+ [Opciones avanzadas](creating-redshift-connection-advanced-options.md)

# Creación de una conexión de Amazon Redshift
<a name="creating-redshift-connection"></a>

## Permisos necesarios
<a name="creating-redshift-connection-permissions"></a>

 Se necesitan permisos adicionales para usar clústeres de Amazon Redshift y entornos de Amazon Redshift sin servidor. Para obtener más información sobre cómo agregar permisos a los trabajos de ETL, consulte [Revisar los permisos de IAM necesarios para los](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job) trabajos de ETL. 
+  redshift:DescribeClusters 
+  redshift-serverless:ListWorkgroups 
+  redshift-serverless:ListNamespaces 

## Descripción general
<a name="w2aac25c27c13c11b5"></a>

 Al agregar una conexión en Amazon Redshift, puede elegir una conexión de Amazon Redshift existente o crear una nueva al agregar un **origen de datos (nodo Redshift** en AWS Glue Studio). 

 AWS Glue es compatible tanto con clústeres de Amazon Redshift como con entornos de Amazon Redshift sin servidor. Al crear una conexión, los entornos de Amazon Redshift sin servidor muestran la etiqueta **sin servidor** junto a la opción de conexión. 

 Para obtener más información sobre cómo crear una conexión de Amazon Redshift, consulte [Mover datos desde y hacia Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using). 

# Crear un nodo de origen de Amazon Redshift
<a name="creating-redshift-source-node"></a>

## Permisos necesarios
<a name="creating-redshift-source-node-permissions"></a>

 los trabajos de AWS Glue Studio que utilizan orígenes de datos de Amazon Redshift requieren permisos adicionales. Para obtener más información sobre cómo agregar permisos a los trabajos de ETL, consulte [Revisar los permisos de IAM necesarios para los](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job) trabajos de ETL. 

 Se necesitan los siguientes permisos para utilizar una conexión de Amazon Redshift. 
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 
+  redshift-data:DescribeTable 
+  redshift-data:ExecuteStatement 
+  redshift-data:DescribeStatement 
+  redshift-data:GetStatementResult 

## Agregar un origen de datos de Amazon Redshift
<a name="creating-redshift-source-node-add"></a>

**Para agregar un nodo de **Origen de datos: Amazon Redshift**:**

1.  Elija el tipo de acceso a Amazon Redshift: 
   +  Conexión de datos directa (recomendada): elija esta opción si desea acceder a sus datos de Amazon Redshift directamente. Esta es la opción recomendada y también la predeterminada. 
   +  Data Catalog tables— Elija esta opción si hay tablas del catálogo de datos que desee utilizar. 

1.  Si elige Conexión de datos directa, elija la conexión para el origen de datos de Amazon Redshift. Esto supone que la conexión ya existe y que puede seleccionar entre las conexiones existentes. Si necesita crear una conexión, elija **Crear conexión de Redshift**. Para más información, consulte [Información general sobre el uso de conectores y conexiones](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. La información sobre la conexión está visible, como la URL, los grupos de seguridad, la subred, la zona de disponibilidad, la descripción y las marcas horarias creadas (UTC) y actualizadas por última vez (UTC). 

1.  Elija una opción de origen de Amazon Redshift: 
   +  **Elija una sola tabla**: esta es la tabla que contiene los datos a los que desea acceder desde una sola tabla de Amazon Redshift. 
   +  **Ingresar una consulta personalizada**: permite acceder a un conjunto de datos de varias tablas de Amazon Redshift en función del consulta personalizada. 

1.  Si eligió una sola tabla, elija el esquema de Amazon Redshift. La lista de esquemas disponibles para elegir se determina por la tabla seleccionada. 

    O bien, elija **Ingresar consulta personalizada**. Elija esta opción para acceder a un conjunto de datos personalizado desde varias tablas de Amazon Redshift. Al elegir esta opción, ingrese la consulta de Amazon Redshift. 

    Al conectarse a un entorno de Amazon Redshift sin servidor, agregue el siguiente permiso a la consulta personalizada: 

   ```
               GRANT SELECT ON ALL TABLES IN <schema> TO PUBLIC
   ```

    Puede elegir **Deducir el esquema** para leer el esquema en función de la consulta que haya introducido. También puede elegir el **editor de consultas Open Redshift** para ingresar una consulta de Amazon Redshift. Para obtener más información, vea [Consulta de una base de datos mediante el editor de consultas](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor.html). 

1.  En **Rendimiento y seguridad**, elija el directorio provisional de Amazon S3 y el rol de IAM. 
   +  **Directorio de almacenamiento provisional de Amazon S3**: elija la ubicación de Amazon S3 para almacenar los datos temporalmente. 
   +  **Rol de IAM**: elija la función de IAM que pueda escribir en la ubicación de Amazon S3 que haya seleccionado. 

1.  En **Parámetros de Redshift personalizados (opcional),** ingrese el parámetro y el valor. 

# Crear un nodo de destino de Amazon Redshift
<a name="creating-redshift-target-node"></a>

## Permisos necesarios
<a name="creating-redshift-target-node-permissions"></a>

 los trabajos de AWS Glue Studio que utilizan los destinos de datos de Amazon Redshift requieren permisos adicionales. Para obtener más información sobre cómo agregar permisos a los trabajos de ETL, consulte [Revisar los permisos de IAM necesarios para los](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job) trabajos de ETL. 

 Se necesitan los siguientes permisos para utilizar una conexión de Amazon Redshift. 
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 

## Agregar un nodo de destino de Amazon Redshift
<a name="w2aac25c27c13c15b5"></a>

**Para crear de un nodo de destino de Amazon Redshift:**

1.  Elija una tabla Amazon Redshift existente como destino o ingrese un nombre de tabla nuevo. 

1.  Al utilizar el nodo **destino de datos: Redshift**, puede elegir entre las siguientes opciones: 
   +  **APPEND**: si ya existe una tabla, coloque todos los datos nuevos en la tabla como un inserto. Si la tabla no existe, créela y, a continuación, inserte todos los datos nuevos. 

      Además, seleccione la casilla si desea actualizar (UPSERT) los registros existentes en la tabla de destino. La tabla debe existir primero; de lo contrario, la operación fallará. 
   +  **MERGE**: AWS Glue actualizará o anexará datos a la tabla de destino en función de las condiciones que especifique. 
**nota**  
 Para utilizar la acción de combinación en AWS Glue, debe activar la función de combinación de Amazon Redshift. Para obtener instrucciones sobre cómo habilitar la combinación en una instancia de Amazon Redshift, consulte [MERGE (vista previa)](https://docs.aws.amazon.com/redshift/latest/dg/r_MERGE.html). 

      Elija opciones: 
     + **Elegir claves y acciones sencillas**: elija las columnas que se usarán como claves de coincidencia entre los orígenes de datos y el conjunto de destinos de datos. 

       Especifique las siguientes opciones cuando coincidan:
       + Actualice el registro del conjunto de datos de destino con los datos de origen.
       + Elimine el registro del conjunto de datos de destino.

       Especifique las siguientes opciones cuando no coincidan:
       + Inserte los datos de origen como una nueva fila en el conjunto de datos de destino.
       + No hacer nada.
     + **Ingrese una instrucción MERGE personalizada**: a continuación, puede elegir **Validar la instrucción MERGE** para comprobar si la instrucción es válida o no.
   +  **TRUNCATE**: si ya existe una tabla, trunque los datos de la tabla al borrar primero el contenido de la tabla de destino. Si el truncado se realiza correctamente, inserte todos los datos. Si la tabla no existe, créela y, a continuación, inserte todos los datos. Si el truncado no es exitoso, la operación producirá un error. 
   +  **DROP**: si una tabla ya existe, elimine los metadatos y los datos de la tabla. Si el borrado se realiza correctamente, inserte todos los datos. Si la tabla no existe, créela y, a continuación, inserte todos los datos. Si el descarte no es exitoso, la operación producirá un error. 
   +  **CREATE**: cree una tabla nueva con el nombre predeterminado. Si el nombre de la tabla ya existe, cree una nueva tabla con un sufijo de nombre `job_datetime` en el nombre para que sea único. Esto insertará todos los datos en la nueva tabla. Si la tabla existe, el nombre final de la tabla tendrá el sufijo adjunto. Si la tabla no existe, se creará una tabla. En cualquier caso, se creará una tabla nueva. 

# Opciones avanzadas
<a name="creating-redshift-connection-advanced-options"></a>

 Consulte [Uso del conector Spark de Amazon Redshift en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using). 

# Conexión a Asana
<a name="connecting-to-asana"></a>

Asana es una solución de colaboración en equipo basada en la nube que ayuda a los equipos a organizar, planificar y completar tareas y proyectos. Si es usuario de Asana, la cuenta contiene datos sobre los espacios de trabajo, los proyectos, las tareas, los equipos y mucho más. Puedes transferir datos desde Asana a ciertos servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con Asana
<a name="asana-support"></a>

AWS Glue es compatible con Asana de la siguiente manera:

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

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

**Versiones de la API de Asana compatibles**  
 1.0 

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede acceso completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Asana
<a name="asana-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Asana, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="asana-configuring-min-requirements"></a>
+ Tener una cuenta de Asana con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Asana](asana-create-account.md). 
+ Debe tener una cuenta de AWS creada con el servicio de acceso a AWS Glue. 
+ Asegúrese de haber creado uno de los siguientes recursos en la cuenta de Asana: 
  + Una aplicación para desarrolladores que admite la autenticación de `OAuth 2.0`. Para obtener más instrucciones, consulte [OAuth](https://developers.asana.com/docs/oauth) en la Documentación para desarrolladores de Asana. Para otras opciones, consulte [Cómo crear una cuenta de Asana](asana-create-account.md). 
  + Un token de acceso personal. Para obtener más información, consulte el token de acceso personal [https://developers.asana.com/docs/personal-access-token](https://developers.asana.com/docs/personal-access-token) en la documentación para desarrolladores de Asana. 

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

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

Asana admite el tipo de concesión `AUTHORIZATION_CODE` para `OAuth2`. 

Este tipo de concesión se considera un `OAuth` “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Los usuarios aún pueden optar por crear una aplicación conectada propia en Asana y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Asana para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

Para consultar la documentación pública de Asana sobre la creación de una aplicación conectada para el flujo `AUTHORIZATION_CODE OAuth`, consulte las [API de Asana](https://developers.asana.com/docs/oauth). 

Para configurar una conexión a Asana:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 
   + En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
   + 
**nota**  
Debe crear un secreto para la conexión en AWS Glue.

1. En AWS 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**, seleccione Asana.

   1. Proporcione el entorno de Asana.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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 Asana
<a name="asana-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de Asana del que le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades admitidas para el origen** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
|  Espacio de trabajo  | No | Sí | No | Sí | No | 
| Tag | No | Sí | No | Sí | No | 
| Usuario | No | Sí | No | Sí | No | 
|  Portfolio  | No | Sí | No | Sí | No | 
| Equipo | No | Sí | No | Sí | No | 
| Proyecto | Sí | Sí | No | Sí | No | 
| Sección | No | Sí | No | Sí | No | 
| Tarea  | Sí | No | No | Sí | Sí | 
| Objetivo | Sí | Sí | No | Sí | No | 
|  AuditLogEvent  | Sí | Sí | No | Sí | No | 
|  Actualización de estado  | Sí | Sí | No | Sí | No | 
|  Campo personalizado  | No | Sí | No | Sí | No | 
|  Breve descripción del proyecto  | Sí | No | No | Sí | Sí | 

 **Ejemplo** 

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Asana",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "task/workspace:xxxx",
        "API_VERSION": "1.0",
        "PARTITION_FIELD": "created_at",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```

 **Detalles de entidades y campos de Asana** 
+ [Espacio de trabajo](https://developers.asana.com/docs/workspaces)
+ [Tag](https://developers.asana.com/docs/tags)
+ [Usuario](https://developers.asana.com/docs/users)
+ [Portafolio](https://developers.asana.com/docs/portfolios)
+ [Equipo](https://developers.asana.com/docs/teams)
+ [Proyecto](https://developers.asana.com/docs/get-all-projects-in-a-workspace)
+ [Sección](https://developers.asana.com/docs/get-sections-in-a-project)
+ [Tarea](https://developers.asana.com/docs/search-tasks-in-a-workspace) 
+ [Objetivo](https://developers.asana.com/docs/get-goals)
+ [AuditLogEvent](https://developers.asana.com/docs/audit-log-api)
+ [Actualización de estado](https://developers.asana.com/reference/status-updates)
+ [Campo personalizado](https://developers.asana.com/reference/custom-fields)
+ [Breve descripción del proyecto](https://developers.asana.com/reference/project-briefs)

 **Consultas de partición** 

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+ `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+ `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

  Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `2024-06-07T13:30:00.134Z`. 
+ `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se capturaron en la siguiente tabla. 


| Nombre de la entidad | Campo de partición | Tipo de datos | 
| --- | --- | --- | 
| Tarea |  created\$1at  | DateTime | 
| Tarea |  modified\$1at  | DateTime | 

 **Ejemplo** 

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Asana",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "task/workspace:xxxx",
        "API_VERSION": "1.0",
        "PARTITION_FIELD": "created_at",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```

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

Las siguientes son opciones de conexión para Asana:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Asana. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Asana que desea usar. Por ejemplo: 1.0. 
+  `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. 
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Cómo crear una cuenta de Asana
<a name="asana-create-account"></a>

1. Regístrese para obtener una [cuenta de Asana](https://asana.com/create-account) y elija **Registrarse**.

1. Tras iniciar sesión, pasará a la página [Configuración de la cuenta](https://app.asana.com/0/account_setup). Realice los siguientes pasos:
   + Revise el formulario de configuración de cuenta.
   + Complete todos los detalles relevantes para crear la cuenta de Asana.
   + Verifique la exactitud de la información.

1. Elija **Crear cuenta** o **Enviar** (el texto exacto del botón puede variar) para finalizar la configuración de la cuenta.

**Cómo crear la aplicación en Asana para `OAuth2.0`**

1. Inicie sesión en la cuenta de Asana con sus [credenciales de cliente de Asana](https://app.asana.com/-/login). 

1. Elija el icono del perfil de usuario en la esquina superior derecha y seleccione **Mi configuración** en el menú desplegable.

1. Seleccione la pestaña **Aplicaciones** y, a continuación, seleccione **Administrar aplicaciones de desarrollador**.

1. Seleccione **Crear nueva aplicación** e ingrese los detalles pertinentes. 

1. Elija **Crear aplicaciones**.

1. En la página **Mis aplicaciones**: 

   1. Seleccione **OAuth** y en la sección **Credenciales de la aplicación**, anote el ID de cliente y el secreto de cliente.

   1. En la sección **URL de redirección**, agregue las URL de redirección necesarias.
**nota**  
Introduzca el URI de redirección con el siguiente formato: `https://{aws-region-code}.console.aws.amazon.com/gluestudio/oauth`. Ejemplo: para el Este de EE. UU. (Norte de Virginia), utilice: `https://us-east-1.console.aws.amazon.com/gluestudio/oauth`

**Cómo crear la aplicación en Asana para el token de `PAT`**

1. Inicie sesión en la cuenta de Asana con sus [credenciales de cliente de Asana](https://app.asana.com/-/login). 

1. Elija el icono del perfil de usuario en la esquina superior derecha y seleccione **Configuración de mi perfil** en el menú desplegable.

1. Seleccione la pestaña **Aplicaciones** y, a continuación, **Cuentas de servicio**.

1. Seleccione **Crear nueva aplicación** e ingrese los detalles pertinentes. 

1. Elija **Agregar cuenta de servicio**.

1. La siguiente página muestra el token, cópielo y guárdelo de forma segura. 
**importante**  
Este token solo aparecerá una vez. Asegúrese de copiarlo y almacenarlo de forma segura. 

# Limitaciones
<a name="asana-connector-limitations"></a>

Las siguientes son limitaciones para el conector de Asana:
+ Las cuentas de servicio de los dominios Enterprise solo pueden acceder a los puntos de conexión de la API del registro de auditoría. Para acceder a estos puntos de conexión es necesario autenticarse con un token de acceso personal de la cuenta de servicio.
+ Solo las cuentas de usuario con el plan Premium o uno superior pueden acceder a la entidad Goal.
+ `Audit Log Event Entity`: en el conector, los campos `start_at` y `end_at` se combinan en un único campo “start\$1end\$1at” para permitir el filtrado y la transferencia incremental.
+ No es posible realizar particiones en el campo `Date`, aunque se admiten los operadores “mayor que o igual a” y “menor que o igual a”. Escenario: se creó un trabajo con `partitionField` como `due_on` (tipo de datos: fecha), `lowerBound` como `2019-09-14`, `upperBound` como `2019-09-16` y `numPartition` como `2`. La parte del filtro de la URL del punto de conexión se crea de la siguiente manera:
  + partition1: due\$1on.before=2019-09-14&due\$1on.after=2019-09-14
  + partition2: due\$1on.before=2019-09-15&due\$1on.after=2019-09-15 Salida:
  + En partition1, obtenemos datos con due\$1date como 14/09/2019 y 15/09/2019
  + En partition2, obtenemos los mismos datos con due\$1date como 15/09/2019 (que estaba en partition1) junto con otros datos, lo que provoca la duplicación de datos.
+ El filtrado y la partición no se admiten en el mismo campo, ya que se produce un error de solicitud incorrecta en la parte de SaaS.
+ La entidad Task requiere un mínimo de un campo en los criterios de filtrado. Existe una limitación con Asana por la cual la paginación no se identifica sin ordenar los registros con base en un campo basado en el tiempo. Por lo tanto, el campo Created\$1at se utiliza junto con la paginación para distinguir el siguiente conjunto de registros. El campo Created\$1at se marca como obligatorio en el filtro, con un valor predeterminado de 2000-01-01T00:00:00Z si no se proporciona. [ara obtener más información sobre la paginación, consulte Tareas en un espacio de trabajo](https://developers.asana.com/reference/searchtasksforworkspace).

# Conexión a Azure Cosmos DB en AWS Glue Studio
<a name="connecting-to-data-azurecosmos"></a>

 AWS Glue proporciona soporte integrado para Azure Cosmos DB. AWS Glue Studio proporciona una interfaz visual para conectarse a Azure Cosmos DB for NoSQL, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

**Topics**
+ [Creación de una conexión a Azure Cosmos DB](creating-azurecosmos-connection.md)
+ [Creación de un nodo de origen de Azure Cosmos DB](creating-azurecosmos-source-node.md)
+ [Creación de un nodo de destino de Azure Cosmos DB](creating-azurecosmos-target-node.md)
+ [Opciones avanzadas](#creating-azurecosmos-connection-advanced-options)

# Creación de una conexión a Azure Cosmos DB
<a name="creating-azurecosmos-connection"></a>

**Requisitos previos**:
+ En Azure, tendrá que identificar o generar una clave de Azure Cosmos DB para que la utilice AWS Glue, `cosmosKey`. Para obtener más información, consulte [Acceso seguro a los datos en Azure Cosmos DB](https://learn.microsoft.com/en-us/azure/cosmos-db/secure-access-to-data?tabs=using-primary-key) en la documentación de Azure.

**Para configurar una conexión a Azure Cosmos DB:**

1. En AWS Secrets Manager, cree un secreto con su clave de datos de Azure Cosmos DB. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, genere un par para la clave `spark.cosmos.accountKey` con el valor *cosmosKey*.

1. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en [Adición de una conexión de AWS Glue](console-connections.md). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el uso futuro en AWS Glue. 
   + Al seleccionar un **tipo de conexión**, seleccione Azure Cosmos DB.
   + Al seleccionar un **secreto AWS**, proporcione un *secretName*.

# Creación de un nodo de origen de Azure Cosmos DB
<a name="creating-azurecosmos-source-node"></a>

## Requisitos previos necesarios
<a name="creating-azurecosmos-source-node-prerequisites"></a>
+ Una conexión a AWS Glue Azure Cosmos DB, configurada con un AWS Secrets Manager secreto, tal y como se describe en la sección anterior, [Creación de una conexión a Azure Cosmos DB](creating-azurecosmos-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Un contenedor de Azure Cosmos DB para NoSQL del que desearía leer. Necesitará la información de identificación del contenedor.

  Un contenedor de Azure Cosmos para NoSQL se identifica por su base de datos y su contenedor. Debe proporcionar los nombres de la base de datos, *cosmosDBName*, y del contenedor, *cosmosContainerName*, al conectarse a la API de Azure Cosmos para NoSQL.

## Agregar un origen de datos de Azure Cosmos DB
<a name="creating-azurecosmos-source-node-add"></a>

**Para agregar un nodo de **Origen de datos - Azure Cosmos DB**:**

1.  Elija la conexión para el origen de datos de Azure Cosmos DB. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de Azure Cosmos DB**. Para obtener más información, consulte la sección [Creación de una conexión a Azure Cosmos DB](creating-azurecosmos-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Elija el **Nombre de la base de datos de Cosmos DB**: proporcione el nombre de la base de datos desde la que desea leer, *CosmosDBName*.

1. Elija **Azure Cosmos DB Container**: proporcione el nombre del contenedor desde el que desea leer, *CosmosContainerName*.

1. Si lo desea, elija **Azure Cosmos DB Custom Query**: proporcione una consulta SQL SELECT para recuperar información específica de Azure Cosmos DB.

1.  En **Propiedades personalizadas de Azure Cosmos**, ingrese los parámetros y valores según sea necesario. 

# Creación de un nodo de destino de Azure Cosmos DB
<a name="creating-azurecosmos-target-node"></a>

## Requisitos previos necesarios
<a name="creating-azurecosmos-target-node-prerequisites"></a>
+ Una conexión a AWS Glue Azure Cosmos DB, configurada con un AWS Secrets Manager secreto, tal y como se describe en la sección anterior, [Creación de una conexión a Azure Cosmos DB](creating-azurecosmos-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de Azure Cosmos DB a la que desearía escribir. Necesitará la información de identificación del contenedor. **Debe crear el contenedor antes de llamar al método de conexión.**

  Un contenedor de Azure Cosmos para NoSQL se identifica por su base de datos y su contenedor. Debe proporcionar los nombres de la base de datos, *cosmosDBName*, y del contenedor, *cosmosContainerName*, al conectarse a la API de Azure Cosmos para NoSQL.

## Agregar un destino de datos de Azure Cosmos DB
<a name="creating-azurecosmos-target-node-add"></a>

**Para agregar un nodo de **Destino de datos - Azure Cosmos DB**:**

1.  Elija la conexión para el origen de datos de Azure Cosmos DB. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de Azure Cosmos DB**. Para obtener más información, consulte la sección [Creación de una conexión a Azure Cosmos DB](creating-azurecosmos-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Elija el **Nombre de la base de datos de Cosmos DB**: proporcione el nombre de la base de datos desde la que desea leer, *CosmosDBName*.

1. Elija **Azure Cosmos DB Container**: proporcione el nombre del contenedor desde el que desea leer, *CosmosContainerName*.

1.  En **Propiedades personalizadas de Azure Cosmos**, ingrese los parámetros y valores según sea necesario. 

## Opciones avanzadas
<a name="creating-azurecosmos-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de Azure Cosmos DB. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte [Conexiones de Azure Cosmos DB](aws-glue-programming-etl-connect-azurecosmos-home.md). 

# Conexión a Azure SQL en AWS Glue Studio
<a name="connecting-to-data-azuresql"></a>

 AWS Glue proporciona soporte integrado para Azure SQL. AWS Glue Studio proporciona una interfaz visual para conectarse a Azure SQL, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

**Topics**
+ [Creación de una conexión de Azure SQL](creating-azuresql-connection.md)
+ [Creación de un nodo de origen de Azure SQL](creating-azuresql-source-node.md)
+ [Creación de un nodo de destino de Azure SQL](creating-azuresql-target-node.md)
+ [Opciones avanzadas](#creating-azuresql-connection-advanced-options)

# Creación de una conexión de Azure SQL
<a name="creating-azuresql-connection"></a>

Para conectarse a Azure SQL desde AWS Glue, tendrá que crear y almacenar sus credenciales de Azure SQL en un AWS Secrets Manager secreto y, a continuación, asociar ese secreto a una conexión AWS Glue de Azure SQL.

**Para configurar una conexión a Azure SQL:**

1. En AWS Secrets Manager, cree un secreto con sus credenciales de Azure SQL. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, genere un par para la clave `user` con el valor *azuresqlUsername*.
   + Al seleccionar **pares clave/valor**, genere un par para la clave `password` con el valor *azuresqlPassword*.

1. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en [Adición de una conexión de AWS Glue](console-connections.md). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el uso futuro en AWS Glue. 
   + Al seleccionar un **tipo de conexión**, seleccione Azure SQL.
   + Al proporcionar una **URL de Azure SQL**, proporcione una URL de punto de conexión de JDBC.

      La lista de URL debe tener el siguiente formato: `jdbc:sqlserver://databaseServerName:databasePort;databaseName=azuresqlDBname;`.

     AWS Glue requiere las siguientes propiedades de URL: 
     + `databaseName`: una base de datos predeterminada en Azure SQL a la que conectarse.

     Para obtener más información sobre las direcciones URL de JDBC para instancias administradas de Azure SQL, consulte la [documentación de Microsoft](https://learn.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=azuresqldb-mi-current).
   + Al seleccionar un **secreto AWS**, proporcione un *secretName*.

# Creación de un nodo de origen de Azure SQL
<a name="creating-azuresql-source-node"></a>

## Requisitos previos necesarios
<a name="creating-azuresql-source-node-prerequisites"></a>
+ Una conexión de AWS Glue Azure SQL, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Creación de una conexión de Azure SQL](creating-azuresql-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de Azure SQL de la que quiera leer, *tableName*.

  Una tabla de Azure SQL se identifica por su base de datos, esquema y nombre de tabla. Debe proporcionar el nombre de la base de datos y el nombre de la tabla al conectarse a Azure SQL. También debe proporcionar el esquema si no es el predeterminado, "público". La base de datos se proporciona a través de una propiedad URL en *connectionName*, y el nombre de la tabla y el esquema a través de `dbtable`.

## Agregar un origen de datos de Azure SQL
<a name="creating-azuresql-source-node-add"></a>

**Para agregar un nodo de **Origen de datos - Azure SQL**:**

1.  Elija la conexión para el origen de datos de Azure SQL. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de Azure SQL**. Para obtener más información, consulte la sección [Creación de una conexión de Azure SQL](creating-azuresql-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1.  Elija una opción de **Origen de Azure SQL**: 
   +  **Elija una sola tabla**: acceda a todos los datos de una sola tabla. 
   +  **Ingresar una consulta personalizada**: permite acceder a un conjunto de datos de varias tablas en función del consulta personalizada. 

1.  Si eligió una sola tabla, ingrese *tableName*. 

    Si eligió **Introducir una consulta personalizada**, introduzca una consulta SELECT de TransactSQL. 

1.  En **Propiedades personalizadas de Azure SQL**, ingrese los parámetros y valores según sea necesario. 

# Creación de un nodo de destino de Azure SQL
<a name="creating-azuresql-target-node"></a>

## Requisitos previos necesarios
<a name="creating-azuresql-target-node-prerequisites"></a>
+ Una conexión de AWS Glue Azure SQL, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Creación de una conexión de Azure SQL](creating-azuresql-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de Azure SQL a la que desearía escribir, *tableName*.

  Una tabla de Azure SQL se identifica por su base de datos, esquema y nombre de tabla. Debe proporcionar el nombre de la base de datos y el nombre de la tabla al conectarse a Azure SQL. También debe proporcionar el esquema si no es el predeterminado, "público". La base de datos se proporciona a través de una propiedad URL en *connectionName*, y el nombre de la tabla y el esquema a través de `dbtable`.

## Agregar un destino de datos de Azure SQL
<a name="creating-azuresql-target-node-add"></a>

**Para agregar un nodo de **Destino de datos - Azure SQL**:**

1.  Elija la conexión para el origen de datos de Azure SQL. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de Azure SQL**. Para obtener más información, consulte la sección [Creación de una conexión de Azure SQL](creating-azuresql-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Configure el **nombre de la tabla** proporcionando *tableName*.

1.  En **Propiedades personalizadas de Azure SQL**, ingrese los parámetros y valores según sea necesario. 

## Opciones avanzadas
<a name="creating-azuresql-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de Azure SQL. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte [Conexiones SQL Azure](aws-glue-programming-etl-connect-azuresql-home.md). 

# Conexión a Blackbaud Raiser's Edge NXT
<a name="connecting-to-data-blackbaud"></a>

Blackbaud Raiser's Edge NXT es una solución integral de software de recaudación de fondos y administración de donantes basada en la nube y creada específicamente para organizaciones sin fines de lucro y la comunidad de beneficencia social en su conjunto. Este conector se basa en la API SKY de Edge NXT de Blackbaud Raiser y proporciona operaciones que ayudan a administrar las entidades que se encuentran dentro de Edge NXT de Raisers.

**Topics**
+ [Compatibilidad de AWS Glue con Blackbaud Raiser's Edge NXT](blackbaud-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](blackbaud-configuring-iam-permissions.md)
+ [Configuración de Blackbaud Raiser's Edge NXT](blackbaud-configuring.md)
+ [Configuración de las conexiones a Blackbaud Raiser's Edge NXT](blackbaud-configuring-connections.md)
+ [Lectura de entidades de Blackbaud Raiser's Edge NXT](blackbaud-reading-from-entities.md)
+ [Opciones de conexión a Blackbaud Raiser's Edge NX.](blackbaud-connection-options.md)
+ [Limitaciones de Blackbaud Raiser's Edge NXT](blackbaud-connection-limitations.md)

# Compatibilidad de AWS Glue con Blackbaud Raiser's Edge NXT
<a name="blackbaud-support"></a>

AWS Glue es compatible con Blackbaud Raiser's Edge NXT de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Blackbaud Raiser's Edge NXT.

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

**Versiones de la API de Blackbaud Raiser's Edge NXT compatibles**  
Las siguientes versiones de la API de Blackbaud Raiser's Edge NXT son compatibles:
+ v1

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="blackbaud-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 Blackbaud Raiser's Edge NXT
<a name="blackbaud-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Blackbaud Raiser's Edge NXTl, deberá cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Blackbaud Raiser's Edge NXT.
+ Haber generado un token de acceso en la cuenta de Blackbaud Raiser's Edge NXT con el alcance de lectura/escritura adecuado asignado para acceder a las API. Para obtener más información, consulte [Autorización](https://developer.blackbaud.com/skyapi/docs/authorization).

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Blackbaud Raiser's Edge NXT.

# Configuración de las conexiones a Blackbaud Raiser's Edge NXT
<a name="blackbaud-configuring-connections"></a>

Blackbaud Raiser's Edge NXT admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth 2.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Blackbaud Raiser's Edge NXT, donde deberá iniciar sesión y otorgar a AWS Glue los permisos solicitados para acceder a la instancia de Edge NXT de Blackbaud Raiser.
+ Los usuarios pueden optar por crear una aplicación conectada propia en Blackbaud Raiser's Edge NXT y proporcionar un ID de cliente, clave de suscripción y URL de instancia propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abriráBlackbaud Raiser's Edge NXT para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de Edge NXT de Blackbaud Raiser sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Autorización](https://developer.blackbaud.com/skyapi/docs/authorization).

Para configurar una conexión a Blackbaud Raiser's Edge NXT:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la aplicación conectada administrada por el cliente, el secreto debe contener la clave de la API de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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 **origen de datos**, seleccione Blackbaud Raiser's Edge NXT.

   1. Proporcione la `INSTANCE_URL` de la cuenta de Blackbaud Raiser's Edge NX a la que se desea conectar.

   1. Proporcione el `clientId` de la aplicación cliente administrada por el usuario.

   1. Proporcione la clave de suscripción asociada a la cuenta.

   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`.

# Lectura de entidades de Blackbaud Raiser's Edge NXT
<a name="blackbaud-reading-from-entities"></a>

**Requisito previo**

Un objeto de Blackbaud Raiser's Edge NXT desde el que desea leer. Necesitará el nombre del objeto.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Dirección del contacto | Sí | Sí | No | Sí | Sí | 
| Educación del contacto | Sí | Sí | No | Sí | Sí | 
| Dirección de correo electrónico del contacto | Sí | Sí | No | Sí | Sí | 
| Teléfono del contacto | Sí | Sí | No | Sí | Sí | 
| Nota del contacto | Sí | Sí | No | Sí | Sí | 
| Relación del contacto | Sí | Sí | No | Sí | Sí | 
| Presencia en línea del contacto | Sí | Sí | No | Sí | Sí | 
| Oportunidad | Sí | Sí | No | Sí | Sí | 
| Campaña | Sí | Sí | No | Sí | Sí | 
| Campaña | Sí | Sí | No | Sí | Sí | 
| Fondo | Sí | Sí | No | Sí | Sí | 
| Paquete | Sí | Sí | No | Sí | Sí | 
| Lote de donaciones | Sí | Sí | No | Sí | No | 
| Participante del evento | Sí | Sí | Sí | Sí | Sí | 
| Recaudación de fondos para los electores | No | No | No | Sí | No | 
| Donación | Sí | Sí | Sí | Sí | Sí | 
| Pertenencia | Sí | Sí | No | Sí | Sí | 
| Acción | Sí | Sí | No | Sí | No | 
| Contacto | Sí | Sí | Sí | Sí | Sí | 
| Bienes del contacto | Sí | Sí | No | Sí | Sí | 
| Evento | Sí | Sí | Sí | Sí | Sí | 
| Campo personalizado de donación | Sí | Sí | No | Sí | Sí | 

**Ejemplo:**

```
blackbaud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="BLACKBAUD",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1",
        "SUBSCRIPTION_KEY": <Subscription key associated with one's developer account>
    }
```

## Detalles de entidades y campos de Blackbaud Raiser's Edge NXT
<a name="blackbaud-reading-entity-field-details"></a>

Para obtener más información acerca de las entidades y los detalles de los campos, consulte:
+ [Action](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Action)
+ [Contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Constituent)
+ [Dirección del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Address)
+ [Membresía del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Membership)
+ [Constituent Fundraiser Assignment](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#FundraiserAssignment)
+ [Educación del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Education)
+ [Dirección de correo electrónico del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#EmailAddress)
+ [Teléfono del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Phone)
+ [Nota del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Note)
+ [Presencia en línea del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#OnlinePresence)
+ [Relación del contacto](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Relationship)
+ [Evento](https://developer.blackbaud.com/skyapi/renxt/event/entities#Event)
+ [Participante del evento](https://developer.blackbaud.com/skyapi/renxt/event/entities#Participant)
+ [Campaña](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Appeal)
+ [Campaña](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Campaign)
+ [Fondo](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Fund)
+ [Package](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Package)
+ [Donación](https://developer.blackbaud.com/skyapi/renxt/gift/entities#Gift)
+ [Campo personalizado de donación](https://developer.blackbaud.com/skyapi/renxt/gift/entities#CustomField)
+ [Lote de donaciones](https://developer.blackbaud.com/skyapi/renxt/gift-batch/entities#GiftBatch)
+ [Oportunidad](https://developer.blackbaud.com/skyapi/renxt/opportunity/entities#Opportunity)
+ [Códigos del contacto](https://developer.sky.blackbaud.com/api#api=56b76470069a0509c8f1c5b3)

**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="blackbaud-reading-partitioning-queries"></a>

**Partición basada en campos**:

Blackbaud Raiser's Edge NXT no admite la partición basada en campos ni en registros.

**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 `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

En la partición basada en registros, se consulta el número total de registros presentes en la API de Blackbaud Raiser’s Edge NXT y se divide entre el número de `NUM_PARTITIONS` proporcionado. A continuación, cada subconsulta obtiene simultáneamente el número de registros resultante.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
blackbaud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="BLACKBAUD",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2",
        "SUBSCRIPTION_KEY": <Subscription key associated with one's developer account>
    }
```

# Opciones de conexión a Blackbaud Raiser's Edge NX.
<a name="blackbaud-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Blackbaud Raiser's Edge NXT:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Blackbaud Raiser's Edge NXT.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. La versión de la API de REST de Blackbaud Raiser's Edge NXT que desea utilizar.
+ `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.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. Valor de ejemplo: 10.
+ `SUBSCRIPTION_KEY`(cadena): (obligatorio) predeterminado: vacío. Se usa para leer. Clave de suscripción asociada a la cuenta de desarrollador.

# Limitaciones de Blackbaud Raiser's Edge NXT
<a name="blackbaud-connection-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a Blackbaud Raiser's Edge NXT:
+ La solución SaaS solo es compatible con el operador `EQUAL_TO`, que devuelve los resultados creados o modificados en la fecha especificada o posteriormente. Además, el campo “id” es un tipo de datos de cadena. Tampoco se identifican los campos que no admiten valores nulos. Por lo tanto, no se admite la partición basada en campos.
+ Únicamente la entidad `Event` admite la extracción incremental con frecuencia diaria, mensual y semanal.
+ La entidad Constituent Fundraiser Assignment devuelve un máximo de 20 registros.
+ Partición basada en registros:
  + No es compatible con las entidades `Action`, `Constituent Fundraiser Assignment` ni `Gift Batch`.
  + La partición basada en registros con el predicado de filtro solo es compatible con las entidades `Event` y `Event Participant`. Si se utiliza un predicado de filtro con cualquier otra entidad compatible basada en registros, se generará una excepción.
+ En la entidad `Gift Custom Field`, el campo “valor” se debe utilizar en conjunto con el campo “categoría”, que, de lo contrario, generará una respuesta sin filtrar. Así, para exigir al usuario que introduzca el campo “categoría” al filtrar con el campo “valor”, se emitirá una excepción si no se cumple el requisito antes mencionado.
+ Los campos `date_added` y `last_modified` de todas las entidades correspondientes no admiten operadores comparativos. Solo admiten el operador “igual a”. Además, no hay ningún campo que se pueda emparejar con los anteriores para obtener un rango de registros. Por lo tanto, estos campos solo se pueden consultar y no admiten transferencias incrementales.
+ El campo `added_by` de la entidad `Gift Batch` no se considerará filtrable, ya que es posible que no emita los resultados correctos.
+ Hay una latencia de aproximadamente 30 minutos para que los registros se recuperen a través del punto de conexión `/GET Gift List` después de la inserción de datos en la entidad `Gift`.
+ Se ha eliminado la compatibilidad con la transferencia incremental para la entidad Gift debido a limitaciones en el origen de los datos. 
+ Existe una latencia de 10 minutos para el campo “estado” en la entidad Opportunity.
+ La entidad `Fundraiser Assignment` tiene a `Constituent` como entidad dependiente. El conector carga un máximo de 5000 ID para elegir, a fin de evitar que el tamaño de la respuesta supere el límite máximo de carga útil permitido.

# Conexión a CircleCI
<a name="connecting-to-data-circleci"></a>

CircleCI es una plataforma de integración y entrega continuas. La cuenta de CircleCI contiene datos sobre los proyectos, las canalizaciones y los flujos de trabajo, entre otros. Si es usuario de CircleCI, puede conectar AWS Glue a la cuenta de CircleCI. Tras ello, podrá utilizar CircleCI como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre CircleCI y los servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con CircleCI
<a name="circleci-support"></a>

AWS Glue admite CircleCI de la siguiente manera:

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

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

**Versiones de la API de CircleCI compatibles**  
Las siguientes versiones de la API de CircleCI son compatibles:
+ v2

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="circleci-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 CircleCI
<a name="circleci-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta en CircleCI que contenga los datos que desea transferir. 
+ En la configuración de usuario de la cuenta, haber creado un token de API personal. Para obtener más información, consulte [Creating a personal API token](https://circleci.com/docs/managing-api-tokens/#creating-a-personal-api-token).
+ Se proporciona el token de API personal a AWS Glue al crear la conexión.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de CircleCI.

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

CircleCI admite la autenticación personalizada.

Para configurar una conexión a CircleCI:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la aplicación conectada administrada por el cliente, el secreto debe contener la clave de la API de la aplicación conectada con `Circle-Token` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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 **Origen de datos**, elija CircleCI.

   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`.

# Lectura de entidades de CircleCI
<a name="circleci-reading-from-entities"></a>

**Requisito previo**

Un objeto de CircleCI desde el que desea leer. Necesitará el nombre del objeto.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Contexto | Sí | No | No | Sí | No | 
| Métrica de resumen de la organización | Sí | No | No | Sí | No | 
| Canalización | No | No | No | Sí | No | 
| Flujo de trabajo de canalización | Sí | No | No | Sí | No | 
| Ramificación de proyecto | Sí | No | No | Sí | No | 
| Prueba inestable del proyecto | No | No | No | Sí | No | 
| Métrica de resumen del proyecto | Sí | No | No | Sí | No | 
| Programación | No | No | No | Sí | No | 
| Serie de tiempo del trabajo del flujo de trabajo | Sí | No | No | Sí | No | 
| Métrica y tendencia del flujo de trabajo | Sí | No | No | Sí | No | 
| Ejecución reciente del flujo de trabajo | Sí | No | No | Sí | No | 
| Métrica de resumen del flujo de trabajo | Sí | No | No | Sí | No | 
| Métrica de prueba del flujo de trabajo | Sí | No | No | Sí | No | 

**Ejemplo:**

```
circleci_read = glueContext.create_dynamic_frame.from_options(
    connection_type="circleci",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "context/e7ea2945-dccb-4205-b673-8391fe1b3a4c",
        "API_VERSION": "v2"
    }
```

## Detalles de entidades y campos de CircleCI
<a name="circleci-reading-from-entities-field-details"></a>

Para obtener más información acerca de las entidades y los detalles de los campos, consulte:
+ [Contextos](https://circleci.com/docs/api/v2/#operation/listContexts)
+ [Métricas de resumen del proyecto](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowsPageData)
+ [Serie de tiempo del trabajo del flujo de trabajo](https://circleci.com/docs/api/v2/#operation/getJobTimeseries)
+ [Métricas de resumen de la organización](https://circleci.com/docs/api/v2/#operation/getOrgSummaryData)
+ [Ramificaciones del proyecto](https://circleci.com/docs/api/v2/#operation/getAllInsightsBranches)
+ [Pruebas inestables del proyecto](https://circleci.com/docs/api/v2/#operation/getFlakyTests)
+ [Ejecuciones recientes del flujo de trabajo](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowRuns)
+ [Métricas de resumen del flujo de trabajo](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowMetrics)
+ [Métricas y tendencias del flujo de trabajo](https://circleci.com/docs/api/v2/#operation/getWorkflowSummary)
+ [Métricas de prueba del flujo de trabajo](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowTestMetrics)
+ [Canalizaciones](https://circleci.com/docs/api/v2/#operation/listPipelinesForProject)
+ [Flujos de trabajo de la canalización](https://circleci.com/docs/api/v2/#operation/listWorkflowsByPipelineId)
+ [Programas](https://circleci.com/docs/api/v2/#operation/listSchedulesForProject)

Entidades con metadatos estáticos:

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

**nota**  
Los tipos de datos de estructura y lista se convierten en tipos de datos de cadena en respuesta al conector.

**Consultas de partición**

CircleCI no admite la partición basada en campos ni registros.

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

Existen las siguientes opciones para establecer conexión con CircleCI:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en CircleCI.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de CircleCI que desea usar.
+ `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.

# Limitaciones de CircleCI
<a name="circleci-connection-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a CircleCI:
+ CircleCI no admite la partición basada en campos ni en registros.
+ Los campos de filtro que contengan “-” (guión) solo funcionarán si están encerrados entre comillas invertidas. Por ejemplo: “workflow-name” = “abc”
+ No se puede admitir el tipo VCS de GitLab porque no existe una forma de recuperar el “ID del proyecto” que se necesita para la ruta de la entidad VCS de GitLab mediante programación.

# Conexión a Datadog
<a name="connecting-to-datadog"></a>

Datadog es una plataforma de supervisión y análisis para aplicaciones a escala de la nube, que incluye infraestructura, aplicaciones, servicios y herramientas.

**Topics**
+ [Compatibilidad de AWS Glue con Datadog](datadog-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](datadog-configuring-iam-permissions.md)
+ [Configuración de Datadog](datadog-configuring.md)
+ [Configuración de las conexiones a Datadog](datadog-configuring-connections.md)
+ [Leer de entidades de Datadog](datadog-reading-from-entities.md)
+ [Opciones de conexión a Datadog](datadog-connection-options.md)
+ [Cómo crear una cuenta de Datadog](datadog-create-account.md)
+ [Limitaciones](datadog-connector-limitations.md)

# Compatibilidad de AWS Glue con Datadog
<a name="datadog-support"></a>

AWS Glue admite Datadog de la siguiente manera:

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

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

**Versiones de la API de Datadog compatibles**  
 
+ v1
+ v2

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede acceso completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Datadog
<a name="datadog-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Datadog, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="datadog-configuring-min-requirements"></a>
+ Tener una cuenta de Datadog con DD-API-KEY y DD-APPLICATION-KEY. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Datadog](datadog-create-account.md). 
+  La cuenta de Datadog tiene acceso de API con una licencia válida.

   

Datadog admite las siguientes seis URL. Todos los clientes de la API de Datadog se configuran de forma predeterminada para consumir las API del sitio US1 de Datadog. Si se encuentra en el sitio de la UE de Datadog, debe seleccionar la URL https://api.datadoghq.eu con la `DD-API-KEY` y la `DD-APPLICATION-KEY` del sitio de la UE de Datadog para acceder a las API. Del mismo modo, para otros sitios, debe seleccionar las URL respectivas con las `DD-API-KEY and DD-APPLICATION-KEY` del sitio correspondiente. 
+ URL DE LA API DE US1: [https://api.datadoghq.com](https://api.datadoghq.com)https://api.datadoghq.com
+ URL DE LA API DE LA UE: [https://api.datadoghq.eu ](https://api.datadoghq.eu)
+ URL DE LA API DE US3: [https://api.us3.datadoghq.com](https://api.us3.datadoghq.com) 
+ URL DE LA API DE US5: [https://api.us5.datadoghq.com](https://api.us5.datadoghq.com)
+ URL DE LA API DE S1-FED: [https://api.ddog-gov.com](https://api.ddog-gov.com)
+ URL DE LA API DE JAPÓN: [https://api.ap1.datadoghq.com](https://api.ap1.datadoghq.com)

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Datadog.

# Configuración de las conexiones a Datadog
<a name="datadog-configuring-connections"></a>

Datadog admite la autenticación personalizada. Estos son los pasos que hay que seguir para configurar la conexión a Datadog:

Para configurar una conexión a Datadog:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 

   Para la aplicación conectada administrada por el cliente: el secreto debe contener el secreto del consumidor de la aplicación conectada con `API_KEY` y `APPLICATION_KEY` como claves. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

1. En AWS 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 Datadog.

   1. Proporcione la `Instance_Url` de Datadog a la que se desea conectar.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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`. 

# Leer de entidades de Datadog
<a name="datadog-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de Datadog desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
|  Serie de tiempo de métricas  | Sí | No | No | Sí | No | 
|  Consultas de registros  | Sí | Sí | Sí | Sí | No | 

 **Ejemplo** 

```
Datadog_read = glueContext.create_dynamic_frame.from_options(
    connection_type="datadog",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "log-queries",
        "API_VERSION": "v2",
        "INSTANCE_URL": "https://api.datadoghq.com",
        "FILTER_PREDICATE": "from = `2023-10-03T09:00:26Z`"
    }
```

 **Detalles de entidades y campos de Datadog** 

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

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

Las siguientes son opciones de conexión para Datadog:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Datadog.
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. La versión de la API de Rest de Datadog que desea utilizar. La versión de `v1` admite la entidad `metrics-timeseries`, mientras que la versión `v2` admite la entidad `log-queries`.
+  `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. URL de la instancia de Datadog. La URL de la instancia de Datadog varía según la región. 
+  `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. 

# Cómo crear una cuenta de Datadog
<a name="datadog-create-account"></a>

1. Vaya a [https://www.datadoghq.com/](https://api.datadoghq.com). 

1. Elija **COMENZAR DE FORMA GRATUITA**.

1. Ingrese la información requerida y regístrese. 

1. Instale el **Instalador del agente Datadog** como se sugiere. 

1. Asegúrese de que la cuenta queda registrada en una organización válida (de la lista disponible) que tenga una suscripción activa a Datadog. 

1. Después de iniciar sesión en la cuenta de Datadog, pase el cursor sobre el nombre de usuario en la esquina superior derecha para ver los detalles de las **claves**:

   1. Para obtener la clave de la API, elija **Claves de la API**.

   1. Para obtener la clave de la aplicación, elija **Claves de aplicación**.

# Limitaciones
<a name="datadog-connector-limitations"></a>

Las siguientes son limitaciones para el conector de Datadog:
+ Datadog no admite la partición basada en campos ni en registros.
+ `from` es un parámetro de filtro obligatorio para la entidad `Log Queries`.
+ `from_to_date` y `query` son parámetros de filtro obligatorios para la entidad `Metrics Timeseries`.

# Conexión a Docusign Monitor
<a name="connecting-to-data-docusign-monitor"></a>

Docusign Monitor ayuda a las organizaciones a proteger los contratos por medio de un seguimiento ininterrumpido de la actividad. La API Monitor proporciona esta información de seguimiento de la actividad directamente a las pilas de seguridad o herramientas de visualización de datos existentes, lo que permite a los equipos detectar actividades no autorizadas, investigar incidentes y responder rápidamente a las amenazas verificadas. Además, proporciona la flexibilidad que los equipos de seguridad necesitan para personalizar los paneles y las alertas con el fin de satisfacer necesidades empresariales específicas.

**Topics**
+ [Compatibilidad de AWS Glue con Docusign Monitor](docusign-monitor-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](docusign-monitor-configuring-iam-permissions.md)
+ [Configuración de Docusign Monitor](docusign-monitor-configuring.md)
+ [Configuración de las conexiones de Docusign Monitor](docusign-monitor-configuring-connections.md)
+ [Lectura de entidades de Docusign Monitor](docusign-monitor-reading-from-entities.md)
+ [Opciones de conexión a Docusign Monitor](docusign-monitor-connection-options.md)
+ [Limitaciones de Docusign Monitor](docusign-monitor-connection-limitations.md)

# Compatibilidad de AWS Glue con Docusign Monitor
<a name="docusign-monitor-support"></a>

AWS Glue es compatible con Docusign Monitor de la siguiente manera:

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

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

**Versiones de la API de Docusign Monitor compatibles**  
Las siguientes versiones de la API de Docusign Monitor son compatibles:
+ v2.0

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="docusign-monitor-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 Docusign Monitor
<a name="docusign-monitor-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Docusign Monitor a destinos compatibles, deberá cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Docusign en la que utilice el producto de software de Docusign en Docusign Monitor.
+ Haber creado una aplicación de integración OAuth 2.0 para AWS Glue en la consola para desarrolladores de la cuenta de Docusign.

  Esta aplicación proporciona las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [OAuth 2.0](https://developers.docusign.com/platform/webhooks/connect/validation-and-security/oauth-connect/) en la documentación de Docusign Monitor.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Docusign Monitor.

# Configuración de las conexiones de Docusign Monitor
<a name="docusign-monitor-configuring-connections"></a>

Docusign Monitor admite el tipo de concesión AUTHORIZATION\$1CODE.
+ Este tipo de concesión se considera un OAuth de tres vías, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue.
+ Los usuarios aún pueden optar por crear una aplicación conectada propia en Docusign Monitor y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Docusign Monitor para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da lugar a un token de actualización y a un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Si desea consultar la documentación pública de Docusign Monitor sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [OAuth for Docusign Connect](https://developers.docusign.com/platform/webhooks/connect/validation-and-security/oauth-connect/).

Para configurar una conexión a Docusign Monitor:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la aplicación conectada administrada por el cliente, el secreto debe contener la clave de la API de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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. En **Conexiones**, elija **Crear conexión**.

   1. Al seleccionar un **Origen de datos**, seleccione Docusign Monitor.

   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. Proporcione el **ClientId de la aplicación cliente administrada por el usuario** de la aplicación Docusign Monitor.

   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`.

# Lectura de entidades de Docusign Monitor
<a name="docusign-monitor-reading-from-entities"></a>

**Requisito previo**

Un objeto de Docusign Monitor desde el que desea leer.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Monitoreo de datos | Sí | Sí | No | Sí | No | 

**Ejemplo:**

```
docusignmonitor_read = glueContext.create_dynamic_frame.from_options(
    connection_type="docusign_monitor",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "monitoring-data",
        "API_VERSION": "v2.0"
    }
```

## Detalles de entidades y campos de Docusign Monitor
<a name="docusign-monitor-reading-from-entities-field-details"></a>

Entidades con metadatos estáticos:

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

**Consultas de partición**

Docusign Monitor no admite la partición basada en campos ni en registros.

# Opciones de conexión a Docusign Monitor
<a name="docusign-monitor-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Docusign Monitor:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Docusign Monitor.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Docusign Monitor que desea utilizar.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto.
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL.
+ `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL.

# Limitaciones de Docusign Monitor
<a name="docusign-monitor-connection-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a Docusign Monitor:
+ Cuando se aplica un filtro con el campo `cursor`, la API recupera registros para los siguientes siete días a partir de la fecha especificada.
+ Si no se proporciona un filtro, la API recupera registros de los siete días anteriores a la fecha actual de la solicitud de la API.
+ Docusign Monitor no admite la partición basada en campos ni en registros.
+ Docusign Monitor no admite la característica Ordenar por.

# Conexión a Domo
<a name="connecting-to-data-domo"></a>

Domo es una herramienta basada en la nube para la creación y administración de paneles. Con la plataforma de aplicaciones empresariales de Domo, la base que necesita para ampliar Domo ya está en su lugar, lo que permite desarrollar soluciones personalizadas más rápido.

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

# Compatibilidad de AWS Glue con Domo
<a name="domo-support"></a>

AWS Glue admite Domo de la siguiente manera:

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

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

**Versiones de la API de Domo compatibles**  
Las siguientes versiones de la API de Domo son compatibles:
+ v1

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="domo-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 Domo
<a name="domo-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Domo a destinos compatibles, deberá cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ La cuenta de Domo debe estar habilitada para el acceso a la API.
+ Debe tener una aplicación en la cuenta de desarrollador de Domo que proporcione las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Creación de una aplicación para desarrolladores de Domo](#domo-configuring-creating-developer-app).

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Domo.

## Creación de una aplicación para desarrolladores de Domo
<a name="domo-configuring-creating-developer-app"></a>

Para obtener el ID de cliente y el secreto del cliente, debe crear una cuenta de desarrollador.

1. Vaya a la [página de inicio de sesión para desarrolladores de Domo.](https://developer.domo.com/manage-clients)

1. Seleccione **Iniciar sesión**.

1. Proporcione el nombre de dominio y haga clic en **Continuar**.

1. Coloque el cursor sobre **Mi cuenta** y elija **Nuevo cliente**.

1. Ingrese el nombre y la descripción; seleccione el ámbito (“datos”); y, elija **Crear**.

1. Recupere el **ID de cliente** y el **secreto de cliente** generados del nuevo cliente creado.

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

Domo admite el tipo de concesión CLIENT\$1CREDENTIALS para OAuth2.
+ Este tipo de concesión se considera un OAuth de dos patas, ya que solo la aplicación cliente se autentica ante el servidor, sin la participación del usuario.
+ Los usuarios aún pueden optar por crear una aplicación conectada propia en Domo y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue.
+ Para ver la documentación pública de Domo sobre la creación de una aplicación conectada para el flujo de Authorization Code OAuth, consulte [OAuth Authentication](https://developer.domo.com/portal/1845fc11bbe5d-api-authentication).

Para configurar una conexión a Domo:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la aplicación conectada administrada por el cliente, el secreto debe contener el token de acceso de la aplicación conectada, el `client_id` y el `client_secret`.

   1. Nota: Debe crear un secreto para las conexiones 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. En **Conexiones**, elija **Crear conexión**.

   1. Al seleccionar un **Origen de datos**, elija Domo.

   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`.

# Lectura de entidades de Domo
<a name="domo-reading-from-entities"></a>

**Requisito previo**

Un objeto de Domo desde el que desea leer. Necesitará el nombre del objeto, como Conjunto de datos o Políticas de permisos de datos. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Conjunto de datos | Sí | Sí | Sí | Sí | Sí | 
| Políticas de permisos de datos | No | No | No | Sí | No | 

**Ejemplo:**

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1"
    }
```

## Detalles de entidades y campos de Domo
<a name="domo-reading-from-entities-field-details"></a>

Entidades con metadatos estáticos:

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

Para la siguiente entidad, Domo proporciona puntos de conexión para obtener metadatos de forma dinámica, de modo que la compatibilidad del operador se capture a nivel de tipo de datos para la entidad.

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

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

**Partición basada en campos**

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo DateTime, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

  ```
  "2023-01-15T11:18:39.205Z"
  ```

  En el campo Fecha, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.

  Ejemplo de valor válido:

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS`: el número de particiones.

En la siguiente tabla se detalla la compatibilidad de los campos de partición por entidad:

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

Ejemplo:

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "permissionTime"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

**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 `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

En la partición basada en registros, se consulta el número total de registros presentes en Domo y se divide entre el número de `NUM_PARTITIONS` proporcionado. A continuación, cada subconsulta obtiene simultáneamente el número de registros resultante.

Ejemplo:

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2"
    }
```

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

Existen las siguientes opciones para establecer conexión con Domo:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Domo.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Domo que desea usar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para lectura. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para lectura. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para lectura. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Limitaciones de Domo
<a name="domo-connection-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a Domo:
+ Debido a una limitación del SDK, la filtración no funciona como se espera para los campos que se pueden consultar que comienzan con “\$1” (por ejemplo: \$1BATCH\$1ID).
+ Debido a una limitación de la API, la filtración funciona con la fecha anterior a la que se proporciona. Esto también afecta la extracción incremental. Para superar esta limitación, seleccione una fecha según su zona horaria en relación con UTC para obtener los datos de la fecha requerida.

# Conexión a Dynatrace
<a name="connecting-to-data-dynatrace"></a>

Dynatrace es una plataforma que ofrece análisis y automatización para conseguir observabilidad y seguridad completas. Se especializa en supervisar y optimizar el rendimiento de las aplicaciones, la infraestructura y la experiencia del usuario.

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

# Compatibilidad de AWS Glue con Dynatrace
<a name="dynatrace-support"></a>

AWS Glue es compatible con Dynatrace de la siguiente manera:

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

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

**Versiones de la API de Dynatrace compatibles**  
Las siguientes versiones de la API de Dynatrace son compatibles:
+ v2

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="dynatrace-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 Dynatrace
<a name="dynatrace-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Dynatrace.
+ Haber generado un token de acceso en la cuenta de Dynatrace con el alcance de lectura/escritura adecuado asignado para acceder a las API. Para obtener más información, consulte [Generate a token](https://docs.dynatrace.com/docs/discover-dynatrace/references/dynatrace-api/basics/dynatrace-api-authentication#create-token).

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Dynatrace.

# Configuración de las conexiones a Dynatrace
<a name="dynatrace-configuring-connections"></a>

Dynatrace admite la autenticación personalizada.

Para configurar una conexión a Dynatrace:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la aplicación conectada administrada por el cliente, el secreto debe contener la clave de la API de la aplicación conectada con `apiToken` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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 **Origen de datos**, elija Dynatrace.

   1. Proporcione la `INSTANCE_URL` de la cuenta de Dynatrace a la que se desea 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`.

# Lectura de entidades de Dynatrace
<a name="dynatrace-reading-from-entities"></a>

**Requisito previo**

Un objeto de Dynatrace desde el que desea leer. Necesitará el nombre del objeto, como “problema”.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Problema | Sí | Sí | Sí | Sí | No | 

**Ejemplo:**

```
Dynatrace_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Dynatrace",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "problem",
        "API_VERSION": "v2",
        "INSTANCE_URL": "https://[instanceName].live.dynatrace.com"
    }
```

**Detalles de entidades y campos de Dynatrace**:

Dynatrace proporciona puntos de conexión para obtener metadatos de forma dinámica para entidades compatibles. Por lo tanto, la compatibilidad del operador se captura según el tipo de datos.

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

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

Dynatrace no admite la partición basada en campos ni en registros.

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

Existen las siguientes opciones para establecer conexión con Dynatrace:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Dynatrace.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Dynatrace que desea utilizar.
+ `INSTANCE_URL`(cadena): se usa para leer. Una URL de instancia de Dynatrace válida.
+ `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.

# Limitaciones de Dynatrace
<a name="dynatrace-connection-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a Dynatrace:
+ Dynatrace no admite la partición basada en campos ni en registros.
+ En el caso de la característica Seleccionar todo, si proporciona el “campo” en el filtro, no permitirá que haya más de 10 registros por página.
+ Se admite un máximo de 500 por página. Si selecciona alguno de los campos [`evidenceDetails, impactAnalysis, recentComments`] al crear el flujo, la cantidad de registros por página se establecerá de forma predeterminada en 10.

# Conexión a Anuncios de Facebook
<a name="connecting-to-data-facebook-ads"></a>

Anuncios de Facebook es una potente plataforma de publicidad digital que utilizan empresas de todos los tamaños para llegar a su público objetivo y lograr diversos objetivos de marketing. La plataforma permite a los anunciantes crear anuncios personalizados que se pueden mostrar en toda la familia de aplicaciones y servicios de Facebook, incluidos Facebook y Messenger. Gracias a sus capacidades de segmentación avanzadas, Anuncios de Facebook permite que las empresas lleguen a grupos demográficos, intereses, comportamientos y ubicaciones específicos.

**Topics**
+ [Compatibilidad de AWS Glue con Anuncios de Facebook](facebook-ads-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](facebook-ads-configuring-iam-permissions.md)
+ [Configuración de Anuncios de Facebook](facebook-ads-configuring.md)
+ [Configuración de las conexiones de Anuncios de Facebook](facebook-ads-configuring-connections.md)
+ [Lectura desde entidades de Anuncios de Facebook](facebook-ads-reading-from-entities.md)
+ [Opciones de conexión de Anuncios de Facebook](facebook-ads-connection-options.md)
+ [Limitaciones y notas del conector de Anuncios de Facebook](facebook-ads-connector-limitations.md)

# Compatibilidad de AWS Glue con Anuncios de Facebook
<a name="facebook-ads-support"></a>

AWS Glue es compatible con Anuncios de Facebook de la siguiente manera:

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

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

**Versiones de la API de Anuncios de Facebook compatibles**  
Las siguientes versiones de la API de Anuncios de Facebook son compatibles:
+ v17.0
+ v18.0
+ v19.0
+ v20.0

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="facebook-ads-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 Anuncios de Facebook
<a name="facebook-ads-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos hacia o desde Anuncios de Facebook, debe cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Se accede a las cuentas estándar de Facebook directamente a través de Facebook.
+ Se necesita la autenticación del usuario para generar el token de acceso.
+ El conector del SDK de Anuncios de Facebook implementará el flujo *OAuth del token de acceso de usuario*.
+ Usamos OAuth 2.0 para autenticar nuestras solicitudes de API en Anuncios de Facebook. Esta autenticación basada en la web pertenece a la arquitectura de autenticación multifactor (MFA), que es un superconjunto de 2FA.
+ El usuario debe conceder permisos para acceder a los puntos de conexión. Para acceder a los datos del usuario, la autorización del punto de conexión se administra mediante [permisos](https://developers.facebook.com/docs/permissions) y [características](https://developers.facebook.com/docs/features-reference).

## Obtención de las credenciales de OAuth 2.0
<a name="facebook-ads-configuring-creating-facebook-ads-oauth2-credentials"></a>

Para obtener las credenciales de la API para poder hacer llamadas autenticadas a la instancia, consulte la [API de REST](https://developers.facebook-ads.com/rest-api/) en la guía para desarrolladores de Anuncios de Facebook.

# Configuración de las conexiones de Anuncios de Facebook
<a name="facebook-ads-configuring-connections"></a>

Anuncios de Facebook admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth 2.
+ Este tipo de concesión se considera un OAuth de tres vías, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue.
+ Los usuarios aún pueden optar por crear su propia aplicación conectada en Anuncios de Facebook y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este caso, se les continuará redirigiendo a Anuncios de Facebook para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token acceso. Un token de usuario del sistema que caduca es válido durante 60 días a partir de la fecha de generación o actualización. Para crear continuidad, el desarrollador debe actualizar el token de acceso en un plazo de 60 días. De lo contrario, se pierde el token de acceso y es necesario que el desarrollador obtenga uno nuevo para recuperar el acceso a la API. Consulte [Actualización del identificador de acceso](https://developers.facebook.com/docs/marketing-api/system-users/install-apps-and-generate-tokens/).
+ Para ver la documentación pública de Anuncios de Facebook sobre cómo crear una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Cómo usar OAuth 2.0 para acceder a las API de Google](https://developers.google.com/identity/protocols/oauth2) en la guía de Google para desarrolladores.

Configuración de una conexión con Anuncios de Facebook:

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**, seleccione Anuncios de Facebook.

   1. Proporcione la `INSTANCE_URL` de la instancia de Anuncios de Facebook a la que desea conectarse.

   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`.

# Lectura desde entidades de Anuncios de Facebook
<a name="facebook-ads-reading-from-entities"></a>

**Requisito previo**

Un objeto de Anuncios de Facebook desde el cual le gustaría leer. Necesitará el nombre del objeto. En las siguientes tablas se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Campaña | Sí | Sí | No | Sí | Sí | 
| Conjunto de anuncios | Sí | Sí | No | Sí | Sí | 
| Anuncios | Sí | Sí | No | Sí | Sí | 
| Creatividad de anuncios | No | Sí | No | Sí | No | 
| Información: cuenta | No | Sí | No | Sí | No | 
| Adaccounts | Sí | Sí | No | Sí | No | 
| Información: anuncio | Sí | Sí | No | Sí | Sí | 
| Información: conjunto de anuncios | Sí | Sí | No | Sí | Sí | 
| Información: campaña | Sí | Sí | No | Sí | Sí | 

**Ejemplo:**

```
FacebookAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="FacebookAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0"
    }
```

## Detalles de la entidad y el campo de Anuncios de Facebook
<a name="facebook-ads-reading-entity-and-field-details"></a>

Para obtener más información acerca de las entidades y los detalles de los campos, consulte:
+ [Cuenta de anuncios](https://developers.facebook.com/docs/marketing-api/reference/ad-account)
+ [Campaña](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group)
+ [Conjunto de anuncios](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign)
+ [Anuncio](https://developers.facebook.com/docs/marketing-api/reference/adgroup)
+ [Creatividad de anuncios](https://developers.facebook.com/docs/marketing-api/reference/ad-creative)
+ [Información: cuenta de anuncios](https://developers.facebook.com/docs/marketing-api/reference/ad-account/insights)
+ [Información: anuncios](https://developers.facebook.com/docs/marketing-api/reference/adgroup/insights/)
+ [Información: conjunto de anuncios](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign/insights)
+ [Información: campañas](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group/insights)

Para obtener más información, consulte [API de marketing](https://developers.facebook.com/docs/marketing-api/reference/v21.0).

**nota**  
Los tipos de datos de estructura y lista se convierten en tipos de datos de cadena en respuesta a los conectores.

## Consultas de particionamiento
<a name="facebook-ads-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo DateTime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas de Spark SQL.

  Ejemplo de valor válido:

  ```
  "2022-01-01"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
FacebookADs_read = glueContext.create_dynamic_frame.from_options(
    connection_type="FacebookAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0",
        "PARTITION_FIELD": "created_time"
        "LOWER_BOUND": "2022-01-01"
        "UPPER_BOUND": "2024-01-02"
        "NUM_PARTITIONS": "10"
    }
```

# Opciones de conexión de Anuncios de Facebook
<a name="facebook-ads-connection-options"></a>

Las siguientes son opciones de conexión para Anuncios de Facebook:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de su objeto en Anuncios de Facebook.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. API de REST de Anuncios de Facebook que desea utilizar. Por ejemplo: v1.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para lectura. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para lectura. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para lectura. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `TRANSFER_MODE`(cadena): Predeterminado: SYNC. Se utiliza para la lectura asíncrona.

# Limitaciones y notas del conector de Anuncios de Facebook
<a name="facebook-ads-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Anuncios de Facebook:
+ Como Anuncios de Facebook admite metadatos dinámicos, se pueden consultar todos los campos. Todos los campos permiten filtrar y los registros se recopilan si los datos están disponibles. De lo contrario, Facebook devuelve una respuesta a una solicitud incorrecta (400) con el mensaje de error adecuado.
+ El recuento de llamadas de una aplicación es el número de llamadas que un usuario puede hacer durante un periodo continuo de una hora, multiplicado por 200 por el número de usuarios. Para obtener información sobre los límites de frecuencia, consulte [Límites de frecuencia](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/) y [Límites de frecuencia de casos de uso comercial](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/#buc-rate-limits).

# Conexión a Facebook Page Insights
<a name="connecting-to-data-facebook-page-insights"></a>

Facebook Pages permite a las empresas y otros grupos de interés crear páginas para la red social Facebook.com. Las empresas utilizan estas páginas para compartir horarios de atención al público, hacer anuncios e interactuar con los clientes en línea. Si es usuario de Facebook Page Insights, puede conectar AWS Glue a la cuenta de Facebook Page Insights. Puede utilizar Facebook Page Insights como origen de datos en los trabajos de extracción, tratamiento y carga (ETL). Ejecute estos trabajos para transferir datos entre Facebook Page Insights y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Facebook Page Insights](facebook-page-insights-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](facebook-page-insights-configuring-iam-permissions.md)
+ [Configuración de las conexiones a Facebook Page Insights](facebook-page-insights-configuring.md)
+ [Configuración de las conexiones de Facebook Page Insights](facebook-page-insights-configuring-connections.md)
+ [Cómo leer de entidades de Facebook Page Insights](facebook-page-insights-reading-from-entities.md)
+ [Opciones de conexión a Facebook Page Insights](facebook-page-insights-connection-options.md)
+ [Limitaciones y notas del conector de Facebook Page Insights](facebook-page-insights-connector-limitations.md)

# Compatibilidad de AWS Glue con Facebook Page Insights
<a name="facebook-page-insights-support"></a>

AWS Glue es compatible con Facebook Page Insights de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Facebook Page Insights.

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

**Versiones de la API de Facebook Page Insights compatibles**  
Las siguientes versiones de la API de Facebook Page Insights son compatibles:
+ v17
+ v18
+ v19
+ v20
+ v21

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="facebook-page-insights-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 las conexiones a Facebook Page Insights
<a name="facebook-page-insights-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Se accede a las cuentas estándar de Facebook directamente a través de Facebook.
+ Se necesita la autenticación del usuario para generar el token de acceso.
+ El conector de Facebook Page Insights implementa el flujo OAuth de token de acceso de usuario.
+ El conector utiliza OAuth2.0 para autenticar nuestras solicitudes de API a Facebook Page Insights. Esto forma parte de la arquitectura de autenticación multifactor (MFA), que es un superconjunto de la 2FA. Se trata de una autenticación basada en la web.
+ El usuario necesita conceder permisos para acceder a los puntos de conexión. Para acceder a los datos del usuario, la autorización del punto de conexión se administra mediante permisos y características.

# Configuración de las conexiones de Facebook Page Insights
<a name="facebook-page-insights-configuring-connections"></a>

Para configurar una conexión a Facebook Page Insights:

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**, seleccione Facebook Page Insights.

   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 la URL del código de autorización.

   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 entidades de Facebook Page Insights
<a name="facebook-page-insights-reading-from-entities"></a>

**Requisito previo**

Un objeto de Facebook Page Insights desde el cual le gustaría leer. Necesitará el nombre del objeto.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Contenido de la página | Sí | No | Sí | Sí | Sí | 
| Clics de llamados a la acción (CTA) de la página | Sí | No | No | Sí | Sí | 
| Interacción con la página | Sí | No | No | Sí | Sí | 
| Impresiones de la página | Sí | No | No | Sí | Sí | 
| Publicaciones en la página | Sí | No | No | Sí | Sí | 
| Interacción con las publicaciones en la página | No | No | No | Sí | No | 
| Reacciones a las publicaciones en la página | No | No | No | Sí | No | 
| Reacciones a la página | Sí | No | No | Sí | Sí | 
| Historias | Sí | No | No | Sí | Sí | 
| Datos demográficos de los usuarios de la página | Sí | No | No | Sí | Sí | 
| Visualizaciones de videos de la página | Sí | No | No | Sí | Sí | 
| Vistas de la página | Sí | No | No | Sí | Sí | 
| Publicaciones de video de la página | Sí | No | No | Sí | Sí | 
| Páginas | No | Sí | No | Sí | No | 
| Fuentes | Sí | Sí | No | Sí | Sí | 

**Ejemplo:**

```
facebookPageInsights_read = glueContext.create_dynamic_frame. from options(
    connection_type="facebookpageinsights",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v21"
   }
```

**Detalles de campos de Facebook Page Insights**:

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

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

**Partición basada en filtros**:

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas SQL de Spark.

  Ejemplos de valor válido:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
facebookPageInsights_read = glueContext.create_dynamic_frame.from_options(
     connection_type="facebookpageinsights",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v21",
         "PARTITION_FIELD": "created_Time"
         "LOWER_BOUND": "2024-10-27T07:00:00+0000"
         "UPPER_BOUND": "2024-10-27T07:00:00+0000"
         "NUM_PARTITIONS": "10"
     }
```

# Opciones de conexión a Facebook Page Insights
<a name="facebook-page-insights-connection-options"></a>

Las siguientes son opciones de conexión para Facebook Page Insights:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Facebook Page Insights.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. La versión de la API de Rest de Facebook Page Insights que desea utilizar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. Una URL de la instancia de Facebook Page Insights válida.

# Limitaciones y notas del conector de Facebook Page Insights
<a name="facebook-page-insights-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Facebook Page Insights:
+ La mayoría de las métricas se actualizan una vez cada 24 horas.
+ Solo están disponibles los datos de información de los dos últimos años.
+ Solo se pueden ver 90 días de información a la vez cuando se utilizan los parámetros `since` y `until`.

# Conexión a Freshdesk
<a name="connecting-to-data-freshdesk"></a>

Freshdesk es un software de atención al cliente basado en la nube, rico en funciones y fácil de usar. Gracias a los múltiples canales de asistencia disponibles, como el chat en directo, el correo electrónico, el teléfono y las redes sociales, podrá ayudar a los clientes a través del método de comunicación que prefieran. Si es usuario de Freshdesk, puede conectar AWS Glue a la cuenta de Freshdesk. Puede usar Freshdesk como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Freshdesk y los servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con Freshdesk
<a name="freshdesk-support"></a>

AWS Glue es compatible con Freshdesk de la siguiente manera:

**¿Es compatible como origen?**  
Sí: sincrónica y asincrónica. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Freshdesk.

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

**Versiones de la API de Freshdesk compatibles**  
Se admiten las siguientes versiones de la API de Freshdesk:
+ v2

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="freshdesk-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 Freshdesk
<a name="freshdesk-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Una cuenta de Freshdesk. Puede elegir entre las ediciones Gratuita, Crecimiento, Profesional o Empresarial.
+ Una clave de API de usuario de Freshdesk.

# Configuración de las conexiones a Freshdesk
<a name="freshdesk-configuring-connections"></a>

Freshdesk admite la autenticación personalizada.

Para consultar la documentación pública de Freshdesk sobre la generación de las claves de la API necesarias para la autenticación personalizada, consulte [Freshdesk authentication](https://developer.freshdesk.com/api/#authentication).

Estos son los pasos que hay que seguir para configurar la conexión a Freshdesk:
+ En AWS Secrets Manager, cree un secreto con los siguientes detalles:
  + Para la aplicación conectada administrada por el cliente, el secreto debe contener la clave de la API de la aplicación conectada con `apiKey` como clave. Nota: Debe crear un secreto por conexión en AWS Glue.
+ En AWS Glue Studio, siga los pasos que se indican a continuación en **Conexiones de datos** para crear una conexión:
  + Al seleccionar un **Origen de datos**, elija Freshdesk.
  + Indique la `INSTANCE_URL` de la instancia de Freshdesk a la que se desea conectar.
  + 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": "*"
        }
      ]
    }
    ```

------
  + Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens.
  + Seleccione las opciones de red si quiere usar su red.
+ Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`.
+ En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**.

# Cómo leer de entidades de Freshdesk
<a name="freshdesk-reading-from-entities"></a>

**Requisito previo**

Un objeto de Freshdesk del que desea leer. Necesitará el nombre del objeto.

**Entidades compatibles para el origen sincrónico:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Agentes | Sí | Sí | No | Sí | Sí | 
| Horario laboral | No | Sí | No | Sí | Sí | 
| Empresa | Sí | Sí | No | Sí | Sí | 
| Contactos | Sí | Sí | No | Sí | Sí | 
| Conversaciones | No | Sí | No | Sí | No | 
| Configuración de correo electrónico | No | Sí | No | Sí | No | 
| Bandejas de entrada de correo electrónico | Sí | Sí | Sí | Sí | No | 
| Categorías de foro | No | Sí | No | Sí | No | 
| Foros | No | Sí | No | Sí | No | 
| Grupos | No | Sí | No | Sí | No | 
| Productos | No | Sí | No | Sí | No | 
| Roles | No | Sí | No | Sí | No | 
| Calificaciones de satisfacción | Sí | Sí | No | Sí | No | 
| Habilidades | No | Sí | No | Sí | No | 
| Soluciones | Sí | Sí | No | Sí | No | 
| Encuestas | No | Sí | No | Sí | No | 
| Tickets | Sí | Sí | Sí | Sí | Sí | 
| Entradas de tiempo | Sí | Sí | No | Sí | No | 
| Temas | No | Sí | No | Sí | No | 
| Comentarios de tema | No | Sí | No | Sí | No | 

**Entidades compatibles para el origen asíncrono**:


| Entidad | Versión de la API | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | --- | 
| Empresas | v2 | No | No | No | No | No | 
| Contactos | v2 | No | No | No | No | No | 

**Ejemplo:**

```
freshdesk_read = glueContext.create_dynamic_frame.from_options(
    connection_type="freshdesk",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v2"
    }
```

**Detalles de entidades y campos de Freshdesk**:


| Entidad | Campo | 
| --- | --- | 
| Agentes | https://developers.freshdesk.com/api/\$1list\$1all\$1agents | 
| Horario laboral | https://developers.freshdesk.com/api/\$1list\$1all\$1business\$1hours | 
| Comentarios | https://developers.freshdesk.com/api/\$1comment\$1attributess | 
| Empresa | https://developers.freshdesk.com/api/\$1companies | 
| Contactos | https://developers.freshdesk.com/api/\$1list\$1all\$1contacts | 
| Conversaciones | https://developers.freshdesk.com/api/\$1list\$1all\$1ticket\$1notes | 
| Configuraciones de correo electrónico | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1configs | 
| Bandejas de entrada de correo electrónico | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1mailboxes | 
| Categorías de foro | https://developers.freshdesk.com/api/\$1category\$1attributes | 
| Foros | https://developers.freshdesk.com/api/\$1forum\$1attributes | 
| Grupos | https://developers.freshdesk.com/api/\$1list\$1all\$1groups | 
| Productos | https://developers.freshdesk.com/api/\$1list\$1all\$1products | 
| Roles | https://developers.freshdesk.com/api/\$1list\$1all\$1roles | 
| Calificaciones de satisfacción | https://developers.freshdesk.com/api/\$1view\$1all\$1satisfaction\$1ratings | 
| Habilidades | https://developers.freshdesk.com/api/\$1list\$1all\$1skills | 
| Soluciones | https://developers.freshdesk.com/api/\$1solution\$1content | 
| Encuestas | https://developers.freshdesk.com/api/\$1list\$1all\$1surveys | 
| Tickets | https://developers.freshdesk.com/api/\$1list\$1all\$1tickets | 
| Entradas de tiempo | https://developers.freshdesk.com/api/\$1list\$1all\$1time\$1entries | 
| Temas | https://developers.freshdesk.com/api/\$1topic\$1attributes | 

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

**Partición basada en filtros**:

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas SQL de Spark.

  Ejemplos de valor válido:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
freshDesk_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshdesk",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v2",
         "PARTITION_FIELD": "Created_Time"
         "LOWER_BOUND": " 2024-10-27T23:16:08Z“
         "UPPER_BOUND": " 2024-10-27T23:16:08Z"
         "NUM_PARTITIONS": "10"
     }
```

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

Las siguientes son opciones de conexión para Freshdesk:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Freshdesk.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Freshdesk que desea usar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. Una URL de instancia de Freshdesk válida.
+ `TRANSFER_MODE`(Cadena): se usa para indicar si el tipo de procesamiento como `SYNC` o `ASYNC` está configurado como `SYNC` por defecto. (Opcional)

# Limitaciones y notas del conector de Freshdesk
<a name="freshdesk-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Freshdesk:
+ Las entidades `Company`, `Contacts` y `Tickets` con filtrado tienen limitaciones de paginación. Devuelven únicamente 30 registros por página y el valor de la página se puede fijar hasta un máximo de 10 (con lo que se obtiene un máximo de 300 registros).
+ La entidad `Tickets` no busca registros con una antigüedad superior a 30 días.
+ Las entidades `Company`, `Contacts` y `Tickets` admiten el tipo de datos “Fecha” en la filtración. Debe seleccionar las frecuencias de activación “Diaria” en adelante para estas tres entidades. Si selecciona “Minutos” o “Cada hora”, es posible que se dupliquen los datos. Además, al seleccionar estos campos para el filtrado, solo se debe seleccionar el valor de la fecha, ya que solo se tendrá en cuenta la parte de la fecha de la marca de tiempo seleccionada.
+ El número de llamadas a la API por minuto depende de su plan. Este límite se aplica a toda la cuenta, independientemente de factores como la cantidad de agentes o las direcciones IP utilizadas para realizar las llamadas. Para todos los usuarios de la versión de prueba, la API tiene un límite predeterminado de 50 llamadas por minuto. Para obtener más detalles, consulte [Freshdesk](https://developer.freshdesk.com/api/#ratelimit)
+ Para cualquier entidad, solo se procesa un trabajo de exportación/asincrónico a la vez. Solo se procesará un trabajo nuevo una vez que el trabajo existente se haya completado correctamente o haya fallado. Para obtener más detalles, consulte [Freshdesk](https://developers.freshdesk.com/api/#export_contact).
+ Los siguientes campos son compatibles con las llamadas a la API sincrónica, pero no se admiten ni se permite pasarlos en el cuerpo de la solicitud de la API asíncrona.
  + id
  + created\$1at
  + updated\$1at
  + updated\$1since
  + activa
  + company\$1id
  + other\$1companies
  + avatar
  + view\$1all\$1tickets
  + eliminado
  + other\$1emails
  + estado
  + etiqueta
  + etiquetas

# Conexión a Freshsales
<a name="connecting-to-data-freshsales"></a>

Freshsales es un sistema de gestión de las relaciones con los clientes (CRM) intuitivo que permite al personal de ventas dejar de lado las conjeturas. Gracias a las funciones integradas de teléfono y correo electrónico, tareas, citas y notas, los representantes de ventas ya no tienen que alternar entre pestañas para hacer un seguimiento de los clientes potenciales. Puede gestionar mejor los acuerdos gracias a la visualización del embudo de ventas e impulsar el cierre de más acuerdos. Si es usuario de Freshsales, puede conectar AWS Glue a la cuenta de Freshsales. Puede usar Freshsales como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Freshsales y los servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con Freshsales
<a name="freshsales-support"></a>

AWS Glue es compatible con Freshsales de la siguiente manera:

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

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

**Versiones de la API de Freshsales compatibles**  
Se admiten las siguientes versiones de la API de Freshsales:
+ v1.0

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="freshsales-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 Freshsales
<a name="freshsales-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Freshsales.
+ Tener una clave de API de usuario.

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

# Configuración de las conexiones de Freshsales
<a name="freshsales-configuring-connections"></a>

Freshsales admite la autenticación personalizada.

Para consultar la documentación pública de Freshsales sobre la generación de las claves de API necesarias para la autenticación personalizada, consulte [Autenticación](https://developer.freshsales.io/api/#authentication).

Para configurar una conexión de Freshsales:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la aplicación conectada administrada por el cliente, el secreto debe contener la clave de la API de la aplicación conectada con `apiSecretKey` como clave. El secreto también debe contener otro par de clave y valor con `apiKey` como clave y `token` como valor.

   1. Nota: Debe crear un secreto para las conexiones 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 **Origen de datos**, elija Freshsales.

   1. Proporcione la `INSTANCE_URL` de la cuenta de Freshsales a la que se desea 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 Freshsales
<a name="freshsales-reading-from-entities"></a>

**Requisito previo**

Un objeto de Freshsales del que le gustaría leer. Necesitará el nombre del objeto.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Cuentas | Sí | Sí | Sí | Sí | Sí | 
| Contactos | Sí | Sí | Sí | Sí | Sí | 

**Ejemplo:**

```
freshSales_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshsales",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v1.0"
     }
```

**Detalles de las entidades y campos de Freshsales**:

Freshsales proporciona puntos de conexión para obtener metadatos de forma dinámica para las entidades compatibles. Por lo tanto, la compatibilidad del operador se captura según el tipo de datos.

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

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

**Partición basada en filtros**:

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el valor en formato ISO.

  Ejemplos de valor válido:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
freshSales_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshsales",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v1",
         "PARTITION_FIELD": "Created_Time"
         "LOWER_BOUND": " 2024-10-15T21:16:25Z"
         "UPPER_BOUND": " 2024-10-20T21:25:50Z"
         "NUM_PARTITIONS": "10"
     }
```

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

Las siguientes son opciones de conexión para Freshsales:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Freshsales.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Freshsales que desea utilizar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): se usa para leer. Una URL de instancia de Freshsales válida.

# Limitaciones de Freshsales
<a name="freshsales-connection-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a Freshsales:
+ En Freshsales, el límite de velocidad de API es de 1000 solicitudes de API por hora por cuenta (consulte [Errores](https://developer.freshsales.io/api/#error). Sin embargo, este límite se puede ampliar con el plan de suscripción Enterprise (consulte la [comparación de planes](https://www.freshworks.com/crm/pricing-compare/)).

# Conexión a Google Ads
<a name="connecting-to-googleads"></a>

 La API de Google Ads es la interfaz programática de Google Ads que se utiliza para administrar cuentas y campañas de Google Ads grandes o complejas. Si es usuario de Google Ads, puede conectar AWS Glue a la cuenta de Google Ads. Luego, podrá usar Google Ads como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Google Ads y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Google Ads](googleads-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](googleads-configuring-iam-permissions.md)
+ [Configuración de Google Ads](googleads-configuring.md)
+ [Configuración de conexiones a Google Ads](googleads-configuring-connections.md)
+ [Lectura desde entidades de Google Ads](googleads-reading-from-entities.md)
+ [Opciones de conexión a Google Ads](googleads-connection-options.md)
+ [Crear una cuenta de Google Ads](googleads-create-account.md)
+ [Limitaciones](googleads-connector-limitations.md)

# Compatibilidad de AWS Glue con Google Ads
<a name="googleads-support"></a>

AWS Glue es compatible con Google Ads de la siguiente manera:

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

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

**Versiones de la API de Google Ads compatibles**  
v18

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Google Ads
<a name="googleads-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Google Ads, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="googleads-configuring-min-requirements"></a>
+  Tener una cuenta de Google Ads con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Google Ads](googleads-create-account.md). 
+  La cuenta de Google Ads debe estar habilitada para el acceso de API. La API de Google Ads se puede utilizar sin ningún costo adicional. 
+  Su cuenta de Google Ads le permite instalar aplicaciones conectadas. Si no tiene acceso a esta funcionalidad, contacte con su administrador de Google Ads. 

 Si cumple estos requisitos, lo tendrá todo listo para conectar AWS Glue a su cuenta de Google Ads. 

# Configuración de conexiones a Google Ads
<a name="googleads-configuring-connections"></a>

 Google Ads admite el tipo de concesión `AUTHORIZATION_CODE` para OAuth2. 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Google Ads, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Google Ads. 

 Los usuarios pueden optar por crear su propia aplicación conectada en Google Ads y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Google Ads para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

 Para obtener más información, consulte la [documentación pública de Google Ads sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth](https://developers.google.com/workspace/guides/create-credentials). 

Para configurar una conexión a Google Ads:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para el tipo de concesión AuthorizationCode: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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. Cuando elija un **Tipo de conexión**, seleccione Google Ads.

   1. Proporcione la `developer token` de Google Ads a la que se desea conectar.

   1. Proporcione el `MANAGER ID` de Google Ads si desea iniciar sesión como administrador.

   1.  Seleccione el rol de 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`. 

# Lectura desde entidades de Google Ads
<a name="googleads-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Google Ads desde el cual le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Anuncio de grupo de anuncios | Sí | Sí | Sí | No | Sí | 
| Grupo de anuncios | Sí | Sí | Sí | No | Sí | 
| Presupuesto de campaña | Sí | Sí | Sí | Sí | Sí | 
| Presupuesto de cuenta | Sí | No | Sí | Sí | No | 
| Campaña | Sí | Sí | Sí | Sí | Sí | 
| Cuenta | Sí | No | Sí | No | No | 

 **Ejemplo** 

```
googleAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16"
    }
```

 **Detalles de la entidad y el campo de Google Ads** 


| Entidad | Campo | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | --- | 
| Cuenta | resourceName | Cadena | \$1=, = | 
| Cuenta | callReportingEnabled | Booleano | \$1=, = | 
| Cuenta | callConversionReportingEnabled | Booleano | \$1=, = | 
| Cuenta | callConversionAction | Cadena | \$1=, = | 
| Cuenta | conversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | crossAccountConversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | payPerConversionEligibilityFailureReasons | Enumeración |  | 
| Cuenta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | currencyCode | Cadena | \$1=, =, LIKE | 
| Cuenta | timeZone | Cadena | \$1=, =, LIKE | 
| Cuenta | autoTaggingEnabled | Booleano | \$1=, = | 
| Cuenta | hasPartnersBadge | Booleano | \$1=, = | 
| Cuenta | manager | Booleano | \$1=, = | 
| Cuenta | testAccount | Booleano | \$1=, = | 
| Cuenta | date | Date | BETWEEN, =, <, >, <=, >= | 
| Cuenta | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | acceptedCustomerDataTerms | Booleano |  | 
| Cuenta | conversionTrackingStatus | Cadena | \$1=, =, LIKE | 
| Cuenta | enhancedConversionsForLeadsEnabled | Booleano |  | 
| Cuenta | googleAdsConversionCustomer | Cadena |  | 
| Cuenta | status | Cadena | \$1=, = | 
| Cuenta | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | costPerAllConversions | Doble | \$1=, =, <, > | 
| Cuenta | costPerConversion | Doble | \$1=, =, <, > | 
| Cuenta | conversions | Doble | \$1=, =, <, > | 
| Cuenta | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Cuenta | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | topImpressionPercentage | Doble | \$1=, =, <, > | 
| Cuenta | averageCpc | Doble | \$1=, =, <, > | 
| Cuenta | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | averageCost | Doble | \$1=, =, <, > | 
| Cuenta | ctr | Doble | \$1=, =, <, > | 
| Cuenta | activeViewCtr | Doble | \$1=, =, <, > | 
| Cuenta | searchImpressionShare | Doble | \$1=, =, <, > | 
| Cuenta | conversionAction | Cadena | \$1=, = | 
| Cuenta | conversionActionCategory | Cadena | \$1=, = | 
| Cuenta | conversionActionName | Cadena | \$1=, =, LIKE | 
| Presupuesto de cuenta | resourceName | Cadena | \$1=, = | 
| Presupuesto de cuenta | status | Cadena | \$1=, = | 
| Presupuesto de cuenta | proposedEndTimeType | Cadena | \$1=, = | 
| Presupuesto de cuenta | approvedEndTimeType | Cadena | \$1=, = | 
| Presupuesto de cuenta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | billingSetup | Cadena | \$1=, = | 
| Presupuesto de cuenta | nombre | Cadena | \$1=, =, LIKE | 
| Presupuesto de cuenta | approvedStartDateTime |  DateTime | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de cuenta | proposedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | approvedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | adjustedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | amountServedMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | resourceName | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | status | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | type | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | nombre | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | campaña | Cadena | \$1=, = | 
| Grupo de anuncios | cpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | targetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | cpmBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | cpvBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | targetCpmMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | effectiveTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | date | Date | BETWEEN, =, <, >, <=, >= | 
| Grupo de anuncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | useAudienceGrouped | Booleano | \$1=, = | 
| Grupo de anuncios | effectiveCpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | valuePerConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | averageCost | Doble | \$1=, =, <, > | 
| Grupo de anuncios | costPerAllConversions | Doble | \$1=, =, <, > | 
| Grupo de anuncios | costPerConversion | Doble | \$1=, =, <, > | 
| Grupo de anuncios | averagePageViews | Doble | \$1=, =, <, > | 
| Grupo de anuncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | allConversions | Doble | \$1=, =, <, > | 
| Grupo de anuncios | averageCpc | Doble | \$1=, =, <, > | 
| Grupo de anuncios | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Grupo de anuncios | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | topImpressionPercentage | Doble | \$1=, =, <, > | 
| Grupo de anuncios | activeViewCtr | Doble | \$1=, =, <, > | 
| Grupo de anuncios | ctr | Doble | \$1=, =, <, > | 
| Grupo de anuncios | searchTopImpressionShare | Doble | \$1=, =, <, > | 
| Grupo de anuncios | searchImpressionShare | Doble | \$1=, =, <, > | 
| Grupo de anuncios | searchAbsoluteTopImpressionShare | Doble | \$1=, =, <, > | 
| Grupo de anuncios | relativeCtr | Doble | \$1=, =, <, > | 
| Grupo de anuncios | conversionAction | Cadena | \$1=, = | 
| Grupo de anuncios | conversionActionCategory | Cadena | \$1=, = | 
| Grupo de anuncios | conversionActionName | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | updateMask | Cadena |  | 
| Grupo de anuncios | crear | Struct |  | 
| Grupo de anuncios | actualización | Struct |  | 
| Grupo de anuncios | primaryStatus | Cadena | \$1=, = | 
| Grupo de anuncios | primaryStatusReasons | Enumeración |  | 
| Anuncio de grupo de anuncios | resourceName | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | status | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | etiquetas | Enumeración |  | 
| Anuncio de grupo de anuncios | adGroup | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | approvalStatus | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | reviewStatus | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | adStrength | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | type | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | businessName | Cadena | \$1=, =, LIKE | 
| Anuncio de grupo de anuncios | date | Date | BETWEEN, =, <, >, <=, >= | 
| Anuncio de grupo de anuncios | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | valuePerConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | averageCost | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | costPerAllConversions | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | costPerConversion | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | averagePageViews | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | allConversions | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | averageCpc | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | topImpressionPercentage | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | activeViewCtr | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | ctr | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | conversionAction | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | conversionActionCategory | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | conversionActionName | Cadena | \$1=, =, LIKE | 
| Anuncio de grupo de anuncios | updateMask | Cadena |  | 
| Anuncio de grupo de anuncios | crear | Struct |  | 
| Anuncio de grupo de anuncios | actualización | Struct |  | 
| Anuncio de grupo de anuncios | policyValidationParameter | Struct |  | 
| Anuncio de grupo de anuncios | primaryStatus | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | primaryStatusReasons | Enumeración |  | 
| Campaña | resourceName | Cadena | \$1=, = | 
| Campaña | status | Cadena | \$1=, = | 
| Campaña | baseCampaign | Cadena | \$1=, = | 
| Campaña | nombre | Cadena | \$1=, =, LIKE | 
| Campaña | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | campaignBudget | Cadena | \$1=, =, LIKE | 
| Campaña | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaña | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaña | adServingOptimizationStatus | Cadena | \$1=, = | 
| Campaña | advertisingChannelType | Cadena | \$1=, = | 
| Campaña | advertisingChannelSubType | Cadena | \$1=, = | 
| Campaña | experimentType | Cadena | \$1=, = | 
| Campaña | servingStatus | Cadena | \$1=, = | 
| Campaña | biddingStrategyType | Cadena | \$1=, = | 
| Campaña | domainName | Cadena | \$1=, =, LIKE | 
| Campaña | languageCode | Cadena | \$1=, =, LIKE | 
| Campaña | useSuppliedUrlsOnly | Booleano | \$1=, = | 
| Campaña | positiveGeoTargetType | Cadena | \$1=, = | 
| Campaña | negativeGeoTargetType | Cadena | \$1=, = | 
| Campaña | paymentMode | Cadena | \$1=, = | 
| Campaña | optimizationGoalTypes | Enumeración |  | 
| Campaña | date | Date | BETWEEN, =, <, >, <=, >= | 
| Campaña | averageCost | Doble |  | 
| Campaña | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | useAudienceGrouped | Booleano | \$1=, = | 
| Campaña | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | costPerAllConversions | Doble | \$1=, =, <, > | 
| Campaña | costPerConversion | Doble | \$1=, =, <, > | 
| Campaña | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | publisherPurchasedClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | averagePageViews | Doble | \$1=, =, <, > | 
| Campaña | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | valuePerConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | allConversions | Doble | \$1=, =, <, > | 
| Campaña | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Campaña | searchAbsoluteTopImpressionShare | Doble | \$1=, =, <, > | 
| Campaña | averageCpc | Doble | \$1=, =, <, > | 
| Campaña | searchImpressionShare | Doble | \$1=, =, <, > | 
| Campaña | searchTopImpressionShare | Doble | \$1=, =, <, > | 
| Campaña | activeViewCtr | Doble | \$1=, =, <, > | 
| Campaña | ctr | Doble | \$1=, =, <, > | 
| Campaña | relativeCtr | Doble | \$1=, =, <, > | 
| Campaña | updateMask | Cadena |  | 
| Campaña | crear | Struct |  | 
| Campaña | actualización | Struct |  | 
| Presupuesto de campaña | resourceName | Cadena | \$1=, = | 
| Presupuesto de campaña | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | status | Cadena | \$1=, = | 
| Presupuesto de campaña | deliveryMethod | Cadena | \$1=, = | 
| Presupuesto de campaña | periodo | Cadena | \$1=, = | 
| Presupuesto de campaña | type | Cadena | \$1=, = | 
| Presupuesto de campaña | nombre | Cadena | \$1=, =, LIKE | 
| Presupuesto de campaña | amountMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | explicitlyShared | Booleano | \$1=, = | 
| Presupuesto de campaña | referenceCount | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | hasRecommendedBudget | Booleano | \$1=, = | 
| Presupuesto de campaña | date | Date | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de campaña | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de campaña | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de campaña | maximizeConversionValueTargetRoas | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | maximizeConversionsTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | selectiveOptimizationConversionActions | Cadena |  | 
| Presupuesto de campaña | averageCost | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | costPerAllConversions | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | costPerConversion | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | allConversions | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | valuePerAllConversions | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | averageCpc | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | ctr | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | updateMask | Cadena |  | 
| Presupuesto de campaña | crear | Struct |  | 
| Presupuesto de campaña | actualización | Struct |  | 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se capturaron en la siguiente tabla. 


| Nombre de la entidad | Campo de partición | Tipo de datos | 
| --- | --- | --- | 
| Anuncio de grupo de anuncios | date | Date | 
| Grupo de anuncios | date | Date | 
| Campaña | date | Date | 
| Presupuesto de campaña | date | Date | 

 **Ejemplo** 

```
googleads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16",
        "PARTITION_FIELD": "date"
        "LOWER_BOUND": "2024-01-01"
        "UPPER_BOUND": "2024-06-05"
        "NUM_PARTITIONS": "10"
    }
)
```

# Opciones de conexión a Google Ads
<a name="googleads-connection-options"></a>

Las siguientes son opciones de conexión para Google Ads:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Google Ads. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de Rest de Google Ads que desea utilizar. Ejemplo: v16. 
+  `DEVELOPER_TOKEN`(cadena): (obligatorio) se utiliza para leer y escribir. Se requiere para autenticar al desarrollador o a la aplicación que realiza solicitudes a la API. 
+  `MANAGER_ID`(cadena): se utiliza para leer y escribir. Un identificador único que permite administrar varias cuentas de Google Ads. Es el ID de cliente del administrador autorizado. Si el acceso a la cuenta de cliente se realiza a través de una cuenta de administrador, es obligatorio ingresar `MANAGER_ID`. Para obtener más información, consulte [login-customer-id](https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid). 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Crear una cuenta de Google Ads
<a name="googleads-create-account"></a>

1.  Inicie sesión en la [cuenta de desarrollador de Google Ads](https://console.cloud.google.com) con sus credenciales y vaya a \$1Mi proyecto.   
![\[En la captura de pantalla se muestra la pantalla de bienvenida para iniciar sesión en la cuenta de desarrollador de Google Ads.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-log-in-developer-account.png)

1.  Seleccione **Nuevo proyecto** y proporcione la información necesaria para crear un proyecto de Google si no tiene ninguna aplicación registrada en él.   
![\[En la captura de pantalla se muestra la página de selección de proyecto. Elija Nuevo proyecto en la esquina superior derecha.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-new-project.png)  
![\[En la captura de pantalla se muestra la ventana Nuevo proyecto para introducir un nombre de proyecto y elegir una ubicación.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-new-project-name-location.png)

1.  Elija la **pestaña de navegación**, luego **API y configuración** y **Crear ID de cliente** y **ClientSecret**, lo que requerirá una configuración adicional para crear una conexión entre AWS Glue y Google Ads. Para obtener más información, consulte [Credenciales de API](https://console.cloud.google.com/apis/credentials).   
![\[En la captura de pantalla se muestra la página de configuración de API y servicios.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-apis-and-services.png)

1.  Elija **CREAR CREDENCIALES** y seleccione **ID de cliente de OAuth**.   
![\[En la captura de pantalla se muestra la página de configuración de las API y los servicios con el menú desplegable Crear credenciales y la opción de ID de cliente de OAuth resaltada.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-create-credentials.png)

1.  Seleccione **Aplicación web** en **Tipo de aplicación**.   
![\[En la captura de pantalla se muestra la página de creación del ID de cliente de OAuth y el tipo de aplicación como aplicación web.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-oauth-client-id-application-type.png)

1.  En **URI de redireccionamiento autorizados**, agregue los URI de redireccionamiento de OAuth y elija **Crear**. Puede agregar varios URI de redireccionamiento si es necesario.   
![\[La captura de pantalla muestra la página de creación de ID de cliente de OAuth y la sección de URI de redireccionamiento autorizados. Aquí, agregue los URI y seleccione AGREGAR URI si es necesario. Cuando haya terminado, elija CREAR.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-oauth-redirect-uris.png)

1.  Su **ID de cliente** y su **secreto de cliente** se generarán al crear una conexión entre AWS Glue y Google Ads.   
![\[La captura de pantalla muestra la página de creación de ID de cliente de OAuth y la sección de URI de redireccionamiento autorizados. Aquí, agregue los URI y seleccione AGREGAR URI si es necesario. Cuando haya terminado, elija CREAR.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-oauth-client-created.png)

1.  Agregue los ámbitos según las necesidades de su aplicación, seleccione la **pantalla de consentimiento de OAuth** y proporcione la información necesaria y agregue los ámbitos en función de los requisitos.   
![\[En la captura de pantalla se muestra la página de actualización de ámbitos seleccionados. Seleccione los ámbitos según sea necesario.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-selected-scopes.png)

# Limitaciones
<a name="googleads-connector-limitations"></a>

Las siguientes son limitaciones para el conector de Google Ads:
+ `MANAGER_ID` es una entrada opcional al crear una conexión. Sin embargo, cuando se quiere acceder a los clientes subyacentes a un administrador concreto, entonces es obligatorio ingresar `MANAGER_ID`. La siguiente tabla explica las limitaciones de acceso en función de si `MANAGER_ID` está incluido o no en una conexión.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/googleads-connector-limitations.html)
+ Cuando se elige una cuenta de administrador como objeto, únicamente aparecerá `Account` como subobjeto. En el conector de Google Ads, las entidades, como campañas, anuncios, etc., se recuperan en función de las cuentas de cliente individuales, no de la cuenta del administrador.
+ No se pueden recuperar métricas para la cuenta de administrador. En su lugar, puede recuperar métricas para cuentas de clientes individuales.
+  Cada cuenta puede tener hasta 10 000 campañas, incluidas las campañas activas y en pausa. Para obtener más información, consulte [Límites de campañas y de grupos de anuncios](https://support.google.com/google-ads/answer/6372658). 
+  Al crear un informe, si selecciona determinadas métricas para mostrarlas, no se mostrará ninguna fila cuyas métricas seleccionadas sean todas cero. Para obtener más información, consulte [Zero Metrics](https://developers.google.com/google-ads/api/docs/reporting/zero-metrics?hl=en#exclude_zero_metrics_by_segmenting). 
+  Con los siguientes campos, el flujo de asignación completa no funcionará para las entidades Cuenta, Grupo de anuncios y Anuncio de grupo de anuncios, específicamente para conversionAction, conversionActionCategory, conversionActionName. Para obtener más información, consulte [Segment and Metrics](https://developers.google.com/google-ads/api/docs/reporting/segmentation?hl=en#selectability_between_segments_and_metrics). 
+ El filtro de intervalo de fechas es obligatorio cuando se selecciona el campo `segments.date`.

# Conexión a Google Analytics 4
<a name="connecting-to-googleanalytics"></a>

 Google Analytics 4 es un servicio de análisis que rastrea e informa las métricas relativas a las interacciones de los visitantes con sus aplicaciones y sitios web. Estas métricas incluyen las visitas a la página, los usuarios activos y los eventos. Si es usuario de Google Analytics 4, puede conectar AWS Glue a la cuenta de Google Analytics 4. Puede utilizar Google Analytics 4 como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Google Analytics 4 y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Google Analytics 4](googleanalytics-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](googleanalytics-configuring-iam-permissions.md)
+ [Configuración de Google Analytics 4](googleanalytics-configuring.md)
+ [Configuración de las conexiones de Google Analytics 4](googleanalytics-configuring-connections.md)
+ [Lectura desde entidades de Google Analytics 4](googleanalytics-reading-from-entities.md)
+ [Opciones de conexión de Google Analytics 4](googleanalytics-connection-options.md)
+ [Creación de una cuenta de Google Analytics 4](googleanalytics-create-account.md)
+ [Pasos para crear una aplicación cliente y credenciales de OAuth 2.0](googleanalytics-client-app-oauth-credentials.md)
+ [Limitaciones y consideraciones](googleanalytics-connector-limitations.md)

# Compatibilidad de AWS Glue con Google Analytics 4
<a name="googleanalytics-support"></a>

AWS Glue es compatible con Google Analytics 4 de la siguiente manera:

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

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

**Versiones de la API de Google Analytics 4 compatibles**  
 v1 Beta. 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Google Analytics 4
<a name="googleanalytics-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Google Analytics 4, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="googleanalytics-configuring-min-requirements"></a>
+  Tener una cuenta de Google Analytics con uno o más flujos de datos que recopilen los datos que desea transferir. 
+  Tener una cuenta de Google Cloud Platform y un proyecto de Google Cloud. 
+  Haber habilitado las siguientes API en el proyecto de Google Cloud: 
  +  API de Google Analytics 
  +  API de administración de Google Analytics 
  +  API de datos de Google Analytics 
+  Haber configurado en el proyecto de Google Cloud una pantalla de consentimiento OAuth para usuarios externos. Para obtener información acerca de la pantalla de consentimiento de OAuth, consulte [Configuración de la pantalla de consentimiento de OAuth](https://support.google.com/cloud/answer/10311615#) en la Ayuda de la Consola de Google Cloud Platform. 
+  Haber configurado un ID de cliente OAuth 2.0 en el proyecto de Google Cloud. Para obtener más información, consulte [Configuración de OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=). 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Google Analytics 4. 

# Configuración de las conexiones de Google Analytics 4
<a name="googleanalytics-configuring-connections"></a>

Para configurar una conexión a Google Sheets:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para el tipo de concesión AuthorizationCode: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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 Google Analytics 4.

   1. Proporcione la `INSTANCE_URL` de Google Analytics 4 a la que se desea conectar.

   1.  Seleccione el rol de 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`. 

 Tipo de concesión `AUTHORIZATION_CODE`. 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Google Analytics 4, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Google Analytics 4. 

 Los usuarios aún pueden optar por crear su propia aplicación conectada en Google Analytics 4 y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Google Analytics 4 para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

 Para obtener más información, consulte [Uso de Auth 2.0 para acceder a las API de Google](https://developers.google.com/identity/protocols/oauth2). 

# Lectura desde entidades de Google Analytics 4
<a name="googleanalytics-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Google Analytics 4 desde el cual le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Informe en tiempo real | Sí | Sí | Sí | Sí | No | 
| Informe principal | Sí | Sí | Sí | Sí | Sí | 

 **Ejemplo** 

```
googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
    connection_type="GoogleAnalytics4",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1beta"
    }
```

 **Detalles de entidades y campos de Google Analytics 4** 


| Entidad | Campo | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | --- | 
| Informe principal | Campos dinámicos |  |  | 
| Informe principal | Campos de dimensiones | Cadena | LIKE, = | 
| Informe principal | Campos de dimensiones | Date | LIKE, = | 
| Informe principal | Campos métricos | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe principal | Dimensiones personalizadas y campos métricos personalizados | Cadena | N/D | 
| Informe en tiempo real | AppVersion | Cadena | LIKE, = | 
| Informe en tiempo real | audienceId | Cadena | LIKE, = | 
| Informe en tiempo real | audienceName | Cadena | LIKE, = | 
| Informe en tiempo real | ciudad | Cadena | LIKE, = | 
| Informe en tiempo real | cityId | Cadena | LIKE, = | 
| Informe en tiempo real | país | Cadena | LIKE, = | 
| Informe en tiempo real | countryId | Cadena | LIKE, = | 
| Informe en tiempo real | deviceCategory | Cadena | LIKE, = | 
| Informe en tiempo real | eventName | Cadena | LIKE, = | 
| Informe en tiempo real | minutesAgo | Cadena | LIKE, = | 
| Informe en tiempo real | platform | Cadena | LIKE, = | 
| Informe en tiempo real | streamId | Cadena | LIKE, = | 
| Informe en tiempo real | streamName | Cadena | LIKE, = | 
| Informe en tiempo real | unifiedScreenName | Cadena | LIKE, = | 
| Informe en tiempo real | activeUsers | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe en tiempo real | conversions | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe en tiempo real | eventCount | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe en tiempo real | screenPageViews | Cadena | >, <, >=, <=, = BETWEEN | 

 **Consultas de partición** 

1.  **Partición basada en filtros** 

    Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
   +  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
   +  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

      Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
   +  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
   +  `NUM_PARTITIONS`: el número de particiones. 

    **Ejemplo** 

   ```
   googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
       connection_type="GoogleAnalytics4",
       connection_options={
           "connectionName": "connectionName",
           "ENTITY_NAME": "entityName",
           "API_VERSION": "v1beta",
           "PARTITION_FIELD": "date"
           "LOWER_BOUND": "2022-01-01"
           "UPPER_BOUND": "2024-01-02"
           "NUM_PARTITIONS": "10"
       }
   ```

1.  **Partición basada en registros** 

    Puede proporcionar las opciones adicionales de Spark `NUM_PARTITIONS` 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. 
   +  `NUM_PARTITIONS`: el número de particiones. 

    **Ejemplo** 

   ```
   googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
       connection_type="GoogleAnalytics4",
       connection_options={
           "connectionName": "connectionName",
           "ENTITY_NAME": "entityName",
           "API_VERSION": "v1beta",
           "NUM_PARTITIONS": "10"
       }
   ```

# Opciones de conexión de Google Analytics 4
<a name="googleanalytics-connection-options"></a>

Las siguientes son opciones de conexión para Google Analytics 4:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Google Analytics 4. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Google Analytics 4 que desea utilizar. 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 
+  `INSTANCE_URL`(Entero): se utiliza para la lectura. (Opcional) 

# Creación de una cuenta de Google Analytics 4
<a name="googleanalytics-create-account"></a>

 Siga los pasos para crear una cuenta de Google Analytics 4: [https://support.google.com/analytics/answer/9304153?hl=en](https://support.google.com/analytics/answer/9304153?hl=en) 

# Pasos para crear una aplicación cliente y credenciales de OAuth 2.0
<a name="googleanalytics-client-app-oauth-credentials"></a>

 Para obtener más información, consulte la [documentación de la API de Google Analytics4](https://developers.google.com/analytics/devguides/reporting/data/v1). 

1.  Cree y configure su cuenta; para ello, inicie sesión en la cuenta de [Google Analytics](https://analytics.google.com/) con sus credenciales. A continuación, vaya a **Administración** > **Crear cuenta**. 

1.  Cree una propiedad para la cuenta que ha creado; para ello, elija **Crear propiedad**. Configure la propiedad con los detalles necesarios. Una vez proporcionados todos los detalles, se generará el identificador de propiedad correspondiente. 

1.  Agregue un flujo de datos para la propiedad creada al seleccionar **Flujos de datos** > **Agregar flujo** > **Web** en el menú desplegable. Proporcione los detalles del sitio web, como la URL y otros campos obligatorios. Después de proporcionar todos los detalles, se generarán el **ID de flujo** y el **ID de medición** correspondientes. 

1.  Configure Google Analytics en su sitio web al copiar el ID de medición y agregarlo a la configuración de su sitio web. 

1.  Para crear un informe desde Google Analytics, diríjase a **Informes** y genere el informe correspondiente. 

1.  Para autorizar su aplicación, diríjase a [console.cloud.google.com]( https://console.cloud.google.com), busque la API de datos de Google Analytics y, a continuación, active la API. 

   1.  Vaya a la página de API y servicios y seleccione **Credenciales** > **Configurar los ID de cliente de OAuth 2.0**. 

   1.  Proporcione la URL de redireccionamiento; para ello, agregue la URL de redireccionamiento de AWS Glue. 

1.  Copie el ID y el secreto del cliente, que necesitará para crear la conexión. 

# Limitaciones y consideraciones
<a name="googleanalytics-connector-limitations"></a>

A continuación, se indican las limitaciones del conector de Google Analytics 4:
+  Para la entidad Informe principal, solo se permite enviar una solicitud con 9 campos de dimensiones y 10 campos de métricas. Si se supera el número de campos permitido, la solicitud fallará y el conector mostrará un mensaje de error. 
+  Para la entidad Informe en tiempo real, solo se permite enviar una solicitud con 4 campos de dimensiones. Si se supera el número de campos permitido, la solicitud fallará y el conector mostrará un mensaje de error. 
+  Google Analytics 4 es una herramienta gratuita en versión beta, por lo que habrá actualizaciones periódicas sobre nuevas características, mejoras de entidades, adición de nuevos campos y eliminación de campos existentes. 
+  Los campos del Informe principal se completan dinámicamente, por lo que se pueden agregar, eliminar y cambiar el nombre de los campos. Además, se pueden imponer nuevos límites a los campos en cualquier momento. 
+  La fecha de inicio predeterminada es de 30 días y la fecha de finalización es ayer (un día antes de la fecha actual). Estas fechas se anularán en el código de expresión del filtro si el usuario ha establecido el valor o si el flujo es incremental. 
+  Según la documentación, la entidad Informe en tiempo real devuelve 10 000 registros si no se establece un límite en la solicitud; de lo contrario, la API devuelve un máximo de 250 000 filas por solicitud, independientemente del número que solicite. Para obtener más información, consulte [Método: properties.runRealtimeReport](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport) en la documentación de Google Analytics. 
+  La entidad Informe en tiempo real no admite la partición basada en registros, ya que no admite la paginación. Además, no admite la partición basada en campos, ya que ninguno de los campos cumple con los criterios definidos. 
+  Debido a la limitación del número de campos que se pueden enviar en una solicitud. Estamos configurando los campos de dimensiones y métricas predeterminados dentro de los límites designados. Si elige “seleccionar todo”, solo se recuperarán los datos de esos campos predeterminados. 
  +  Informe principal 
    +  Según la limitación del SAAS, se permiten solicitudes de hasta 9 dimensiones y solo hasta 10 métricas; es decir, una solicitud puede contener un máximo de 19 campos (métricas \$1 dimensión). 
    +  Según la implementación, si el usuario utiliza SELECT\$1ALL o selecciona más de 25 campos, se enviarán los campos predeterminados en la solicitud. 
    +  Los siguientes campos se consideran campos predeterminados para el Informe principal: “country”, “city”, “eventName”, “cityId”, “browser”, “date”, “currencyCode”, “deviceCategory”, “transactionId”, “active1DayUsers”, “active28DayUsers”, “active7DayUsers”, “activeUsers”, “averagePurchaseRevenue”, “averageRevenuePerUser”, “averageSessionDuration”, “engagedSessions”, “eventCount”, “engagementRate”. 
  +  Informe en tiempo real 
    +  Según la limitación del SAAS, se permiten solicitudes de hasta 4 dimensiones. 
    +  Si el usuario pasa SELECT\$1ALL o selecciona más de 15 campos, los campos predeterminados se enviarán en la solicitud. 
    +  Los siguientes campos se consideran campos predeterminados para el Informe en tiempo real: “country”, “deviceCategory”, “city”, “cityId”, “activeUsers”, “conversions”, “eventCount”, “screenPageViews”. 
+  En la entidad Informe principal, si la partición en el campo de fecha y el filtro en startDate están presentes simultáneamente. En ese caso, el valor dateRange se reemplaza por el valor del filtro startDate, pero, dado que la partición siempre debe ser la prioridad, se descarta el filtro startDate si la partición en el campo de fecha ya está presente. 
+  Como ahora cohortSpecs también forma parte del cuerpo de la solicitud del informe principal, hemos mejorado la entidad del informe principal actual para incluir la compatibilidad con el atributo cohortSpec. En el cuerpo de la solicitud de cohortSpecs, casi todos los campos requieren la entrada del usuario. Para solucionar este problema, hemos establecido valores predeterminados para esos atributos/campos y hemos previsto que el usuario anule estos valores si es necesario.     
<a name="google-analytics-connector-limitations-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/googleanalytics-connector-limitations.html)
+  También puede enviar todos estos filtros a la vez o con otros filtros. 
  +  Ejemplo 1: filterPredicate: startDate between "2023-05-09" and "2023-05-10" AND startOffset=1 AND endOffset=2 AND granularity="WEEKLY" 
  +  Ejemplo 2: filterPredicate: city=“xyz” AND startOffset=1 AND endOffset=2 AND granularity="WEEKLY" 
+  En la solicitud de cohorte: 
  +  Si se incluye “cohortNthMonth” en la solicitud, el valor de granularidad interno se establecerá como “MONTHLY” 
  +  Del mismo modo, si se pasa “cohortNthWeek”, el valor de granularidad se establecerá como “WEEKLY” 
  +  Y, para “cohortNthDay”, el valor de granularidad se establecerá como “DAILY”. Para obtener más información, consulte: 
    +  [ https://developers.google.com/analytics/devguides/reporting/data/v1/advanced ](https://developers.google.com/analytics/devguides/reporting/data/v1/advanced) 
    +  [ https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec ](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec) 
  +  Se prevé que el usuario anule el valor predeterminado de dateRange y de granularidad. Consulte la tabla anterior. 

# Conexión a Google BigQuery en AWS Glue Studio
<a name="connecting-to-data-bigquery"></a>

**nota**  
  Puede usar AWS Glue para Spark para leer y escribir en tablas de Google BigQuery en AWS Glue 4.0 y versiones posteriores. Para configurar Google BigQuery con trabajos de AWS Glue mediante programación, consulte [Conexiones de BigQuery](aws-glue-programming-etl-connect-bigquery-home.md).  

 AWS Glue Studio proporciona una interfaz visual para conectarse a BigQuery, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

 Al crear una conexión a Google BigQuery en AWS Glue Studio, se crea una conexión unificada. Para obtener más información, consulte [Consideraciones](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

 En lugar de crear un secreto con las credenciales en un formato específico, `{"credentials": "base64 encoded JSON"}`; ahora, a través de una conexión unificada a Google BigQuery, es posible crear un secreto que incluya directamente el JSON de Google BigQuery: `{"type": "service-account", ...}`. 

**Topics**
+ [Crear una conexión con BigQuery](creating-bigquery-connection.md)
+ [Crear un nodo de origen de BigQuery](creating-bigquery-source-node.md)
+ [Creación de un nodo de destino de BigQuery](creating-bigquery-target-node.md)
+ [Opciones avanzadas](#creating-bigquery-connection-advanced-options)

# Crear una conexión con BigQuery
<a name="creating-bigquery-connection"></a>

Para conectarse a Google BigQuery desde AWS Glue, tendrá que generar y almacenar las credenciales de Google Cloud Platform en un secreto de AWS Secrets Manager y, a continuación, asociar ese secreto a una conexión de Google BigQuery AWS Glue.

**Para configurar una conexión a BigQuery, siga estos pasos:**

1. En Google Cloud Platform, genere e identifique los recursos pertinentes:
   + Genere e identifique un proyecto de GCP que contenga tablas de BigQuery a las que desea conectarse.
   + Habilite la API de BigQuery. Para obtener más información, consulte [Cómo usar la API de lectura de almacenamiento de BigQuery para leer datos de tablas](https://cloud.google.com/bigquery/docs/reference/storage/#enabling_the_api).

1. En Google Cloud Platform, genere y exporte las credenciales de la cuenta de servicio:

   Puede usar el asistente de credenciales de BigQuery para simplificar este paso: [Crear credenciales](https://console.cloud.google.com/apis/credentials/wizard?api=bigquery.googleapis.com).

   Para crear una cuenta de servicio en GCP, siga el tutorial disponible en [Crear cuentas de servicio](https://cloud.google.com/iam/docs/service-accounts-create).
   + Al elegir un **proyecto**, seleccione el proyecto que contiene su tabla de BigQuery.
   + Cuando elija los roles de IAM de GCP para la cuenta de servicio, agregue o genere una función que conceda los permisos apropiados para ejecutar los trabajos en BigQuery, como la lectura, escritura o creación de tablas de BigQuery.

   Para crear credenciales para la cuenta de servicio, siga el tutorial disponible en [Crear una clave de cuenta de servicio](https://cloud.google.com/iam/docs/keys-create-delete#creating).
   + Al seleccionar el tipo de clave, seleccione **JSON**.

   Ahora debería haber descargado un archivo JSON que contiene las credenciales de la cuenta de servicio. Debería parecerse a lo que sigue:

   ```
   {
     "type": "service_account",
     "project_id": "*****",
     "private_key_id": "*****",
     "private_key": "*****",
     "client_email": "*****",
     "client_id": "*****",
     "auth_uri": "https://accounts.google.com/o/oauth2/auth",
     "token_uri": "https://oauth2.googleapis.com/token",
     "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
     "client_x509_cert_url": "*****",
     "universe_domain": "googleapis.com"
   }
   ```

1. En AWS Secrets Manager, cree un secreto con el archivo de credenciales que descargó. Puede elegir la pestaña **Texto no cifrado** y pegar el contenido del archivo con formato JSON. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 

1. En el Catálogo de datos de AWS Glue, genere una conexión mediante los pasos que se indican en [https://docs.aws.amazon.com/glue/latest/dg/console-connections.html](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el siguiente paso. 
   + Cuando elija un **Tipo de conexión**, seleccione Google BigQuery.
   + Al seleccionar un **secreto AWS**, proporcione un *secretName*.

1. Otorga permiso al rol de IAM asociado al trabajo de AWS Glue para leer el *secretName*.

1. En la configuración del trabajo de AWS Glue, proporcione un *connectionName* como una **Conexión de red adicional**.

# Crear un nodo de origen de BigQuery
<a name="creating-bigquery-source-node"></a>

## Requisitos previos necesarios
<a name="creating-bigquery-source-node-prerequisites"></a>
+ Una conexión del Catálogo de datos de AWS Glue tipo BigQuery
+ Un secreto de AWS Secrets Manager de las credenciales de Google BigQuery, que utiliza la conexión.
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ El nombre y el conjunto de datos de la tabla y el proyecto de Google Cloud correspondiente que quiere leer.

## Agregar un origen de datos de BigQuery
<a name="creating-bigquery-source-node-add"></a>

**Para agregar un nodo de **Origen de datos: BigQuery**:**

1.  Elija la conexión para el origen de datos de BigQuery. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de BigQuery**. Para más información, consulte [Información general sobre el uso de conectores y conexiones](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Identifique qué datos de BigQuery desea leer y, a continuación, elija una opción de **origen de BigQuery**
   + Elegir una sola tabla: permite extraer todos los datos de una tabla.
   + Introducir una consulta personalizada: permite personalizar los datos que se van a recuperar mediante una consulta.

1.  Describa los datos que desea leer

   **(Obligatorio) **defina el **Proyecto principal** como el proyecto que contiene la tabla o un proyecto principal de facturación, si corresponde.

   Si ha elegido una sola tabla, establezca **Tabla** con el nombre de una tabla de Google BigQuery en el siguiente formato: `[dataset].[table]` 

   Si ha elegido una consulta, envíela a **Consulta**. En su consulta, consulte las tablas con su nombre de tabla completo, en el formato: `[project].[dataset].[tableName]`.

1.  Proporcionar las propiedades de BigQuery 

   Si ha elegido una sola tabla, no será necesario proporcionar propiedades adicionales.

   Si eligió una consulta, debe proporcionar las siguientes **Propiedades personalizadas de Google BigQuery**:
   + Establezca `viewsEnabled` en true.
   + Establezca `materializationDataset` en un conjunto de datos. La entidad principal de GCP autenticada por las credenciales proporcionadas a través de la conexión de AWS Glue debe poder crear tablas en este conjunto de datos.

# Creación de un nodo de destino de BigQuery
<a name="creating-bigquery-target-node"></a>

## Requisitos previos necesarios
<a name="creating-bigquery-target-node-prerequisites"></a>
+ Una conexión del Catálogo de datos de AWS Glue tipo BigQuery
+ Un secreto de AWS Secrets Manager de las credenciales de Google BigQuery, que utiliza la conexión.
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ El nombre y el conjunto de datos de la tabla y el proyecto de Google Cloud correspondiente al que desea escribir.

## Agregar un destino de datos de BigQuery
<a name="creating-bigquery-target-node-add"></a>

**Para agregar un nodo de **Destino de datos: BigQuery**, siga estos pasos:**

1.  Elija la conexión para el destino de datos de BigQuery. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de BigQuery**. Para más información, consulte [Información general sobre el uso de conectores y conexiones](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Identifique en qué tabla de BigQuery desea escribir y, a continuación, elija un **Método de escritura**.
   + Directo: escribe en BigQuery directamente mediante la API de escritura de BigQuery Storage.
   + Indirecto: escribe en Google Cloud Storage y, luego, copia en BigQuery.

   Si quiere escribir de forma indirecta, proporcione una ubicación de GCS de destino con un **bucket de GCS temporal**. Deberá proporcionar una configuración adicional en la conexión de AWS Glue. Para obtener más información, consulte [Uso de escritura indirecta con Google BigQuery](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html#aws-glue-programming-etl-connect-bigquery-indirect-write).

1.  Describa los datos que desea leer

   **(Obligatorio) **defina el **Proyecto principal** como el proyecto que contiene la tabla o un proyecto principal de facturación, si corresponde.

   Si ha elegido una sola tabla, establezca **Tabla** con el nombre de una tabla de Google BigQuery en el siguiente formato: `[dataset].[table]` 

## Opciones avanzadas
<a name="creating-bigquery-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de BigQuery. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte la [referencia sobre las opciones de conexión de BigQuery](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html) en la guía para desarrolladores de AWS Glue. 

# Conexión a Google Search Console
<a name="connecting-to-data-google-search-console"></a>

Google Search Console es una plataforma gratuita diseñada para que los propietarios de sitios web supervisen cómo Google percibe su sitio y optimicen su presencia en los resultados orgánicos. Esto incluye la visualización de los dominios de referencia, el rendimiento del sitio en dispositivos móviles, los resultados de búsqueda enriquecidos, así como las consultas y páginas con mayor tráfico. Si es usuario de Google Search Console, puede conectar AWS Glue a la cuenta de Google Search Console. Puede utilizar Google Search Console como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Google Search Console y los servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con Google Search Console
<a name="google-search-console-support"></a>

AWS Glue es compatible con Google Search Console de la siguiente manera:

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

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

**Versiones de la API de Google Search Console compatibles**  
Se admiten las siguientes versiones de la API de Google Search Console:
+ v3

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="google-search-console-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 Google Search Console
<a name="google-search-console-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Google Search Console.
+ Tener una cuenta de Google Cloud Platform y un proyecto de Google Cloud.
+ Haber habilitado la API de Google Search Console en el proyecto de Google Cloud.
+ Haber configurado en el proyecto de Google Cloud una pantalla de consentimiento OAuth para usuarios externos. Para obtener más información, consulte [Configuración de la pantalla de consentimiento de OAuth](https://support.google.com/cloud/answer/10311615) en la Ayuda de la Consola de Google Cloud Platform.
+ Haber configurado un ID de cliente OAuth 2.0 en el proyecto de Google Cloud. Consulte [Configuración de OAuth 2.0](https://support.google.com/cloud/answer/6158849) para conocer las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando realiza llamadas autenticadas a la cuenta.

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

# Configuración de las conexiones a Google Search Console
<a name="google-search-console-configuring-connections"></a>

Google Search Console admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2. El tipo de concesión determina la forma en que AWS Glue se comunica con Google Search Console para solicitar acceso a los datos.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue.
+ Los usuarios aún pueden optar por crear una aplicación conectada propia en Google Search Console y proporcionar un identificador de cliente y un secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este caso, aún serán redirigidos a Google Search Console para iniciar sesión y autorizar a AWS Glue a acceder a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de Google Search Console sobre la creación de una aplicación conectada para el flujo OAuth del código de autorización, consulte [Uso de OAuth 2.0 para acceder a las API de Google](https://developers.google.com/identity/protocols/oauth2).

Para configurar una conexión a Google Search Console:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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. Cuando elija un **Tipo de conexión**, seleccione Google Search Console.

   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 entidades de Google Search Console
<a name="google-search-console-reading-from-entities"></a>

**Requisito previo**

Un objeto de Google Search Console desde el cual le gustaría leer. Necesitará el nombre del objeto.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Análisis de búsqueda | Sí | Sí | No | Sí | No | 
| Sitios | No | No | No | Sí | No | 
| Mapas del sitio | No | No | No | Sí | No | 

**Ejemplo:**

```
googleSearchConsole_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesearchconsole",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v3"
    }
```

**Detalles de la entidad y el campo de Google Search Console**:

Google Search Console proporciona puntos de conexión para obtener metadatos de forma dinámica para las entidades compatibles. Por lo tanto, la compatibilidad del operador se captura según el tipo de datos.

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

**nota**  
Para obtener una lista actualizada de los valores válidos para los filtros, consulte la documentación de la API de [Google Search Console](https://developers.google.com/webmaster-tools/v1/searchanalytics/query).  
El campo `start_end_date` es una combinación de `start_date` y `end_date`.

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

No se admiten las particiones basadas en filtros ni las particiones basadas en registros.

# Opciones de conexión de Google Search Console
<a name="google-search-console-connection-options"></a>

A continuación se indican las opciones de conexión de Google Search Console:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Google Search Console.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Google Search Console que desea utilizar.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto.
+ `FILTER_PREDICATE` (cadena): Valor predeterminado: “start\$1end\$1date entre <hace 30 días de la fecha actual> Y <ayer: es decir, hace 1 día desde la fecha actual>”. Se usa para leer. Debe estar en el formato de Spark SQL.
+ `QUERY` (cadena): Valor predeterminado: “start\$1end\$1date entre <hace 30 días de la fecha actual> Y <ayer: es decir, hace 1 día de la fecha actual>”. Se utiliza para leer. Consulta completa de Spark SQL.
+ `INSTANCE_URL`(cadena): se usa para leer. Una URL de instancia de Google Search Console válida.

# Limitaciones de Google Search Console
<a name="google-search-console-limitations"></a>

Las siguientes son limitaciones o notas de Google Search Console:
+ Google Search Console aplica límites de uso a la API. Para obtener más información, consulte [Límites de uso](https://developers.google.com/webmaster-tools/limits).
+ Cuando no se transmite ningún filtro de la entidad de `Search Analytics`, la API suma todos los clics, impresiones, CTR y otros datos de todo el sitio dentro del intervalo de fechas predeterminado especificado y los presenta como un único registro.
+ Para desglosar los datos en segmentos más pequeños, es necesario introducir dimensiones en la consulta. Dimensiones indica a la API cómo desea segmentar los datos.
  + Por ejemplo, si agrega `filterPredicate: dimensions="country"` obtendrá un registro por cada país en el que el sitio haya recibido tráfico durante el periodo especificado.
  + Ejemplo para transmitir varias dimensiones: `filterPredicate: dimensions="country" AND dimensions="device" AND dimensions="page"`. En este caso, obtendrá una fila en la respuesta por cada combinación única de estas tres dimensiones.
+ Los valores predeterminados se establecen para los campos `start_end_date` y `dataState`.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/google-search-console-limitations.html)

# Conexión a Google Sheets
<a name="connecting-to-googlesheets"></a>

 Google Sheets es un software de hojas de cálculo en línea que le permite organizar grandes cantidades de datos, crear informes personalizados, automatizar cálculos y colaborar con otras personas. Si es usuario de Google Sheets, puede conectar AWS Glue a la cuenta de Google Sheets. Luego, podrá usar Google Sheets como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Google Sheets y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Google Sheets](googlesheets-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](googlesheets-configuring-iam-permissions.md)
+ [Configuración de Google Sheets](googlesheets-configuring.md)
+ [Configuración de las conexiones a Google Sheets](googlesheets-configuring-connections.md)
+ [Cómo leer de entidades de Google Sheets](googlesheets-reading-from-entities.md)
+ [Opciones de conexión de Google Sheets](googlesheets-connection-options.md)
+ [Configurar el flujo de OAuth del código de autorización para Google Sheets](googlesheets-oauth-authorization.md)
+ [Limitaciones del conector de Google Sheets](googlesheets-connector-limitations.md)

# Compatibilidad de AWS Glue con Google Sheets
<a name="googlesheets-support"></a>

AWS Glue es compatible con Sheets de la siguiente manera:

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

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

**Versiones de la API de Sheets compatibles**  
 API de Google Sheets versión 4 y API de Google Drive versión 3 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Google Sheets
<a name="googlesheets-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Google Sheets, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="googlesheets-configuring-min-requirements"></a>
+ Tener una cuenta de Google Sheets con correo electrónico y contraseña.
+  La cuenta de Google Sheets debe estar habilitada para el acceso de API. La API de Google Sheets se puede utilizar sin ningún costo adicional. 
+  Su cuenta de Google Sheets le permite instalar aplicaciones conectadas. Si no tiene acceso a esta funcionalidad, contacte con su administrador de Google Sheets. 

 Si cumple estos requisitos, lo tendrá todo listo para conectar AWS Glue a su cuenta de Google Sheets. 

# Configuración de las conexiones a Google Sheets
<a name="googlesheets-configuring-connections"></a>

Para configurar una conexión a Google Sheets:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 

   1.  Para el tipo de concesión AuthorizationCode: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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 **Origen de datos**, elija Google Sheets.

   1. Proporcione el entorno de Google Sheets.

      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`. 

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

****  

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

------

 **Tipo de concesión AUTHORIZATION\$1CODE** 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Google Sheets, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Google Sheets. 

 Los usuarios pueden optar por crear su propia aplicación conectada en Google Sheets y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Google Sheets para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

 Para obtener más información, consulte la [documentación pública de Google Sheets sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth](https://developers.google.com/workspace/guides/create-credentials). 

# Cómo leer de entidades de Google Sheets
<a name="googlesheets-reading-from-entities"></a>

 **Requisitos previos** 
+  Una hoja de cálculo de Google desde la que desee leer. Necesitará el ID de la hoja de cálculo y el nombre de la pestaña de la hoja de cálculo. 

 **Detalles de entidades y campos de Google Sheets:** 


| Entidad | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | 
| Hoja de cálculo | Cadena | N/A (no se admite el filtrado) | 

 **Ejemplo** 

```
googleSheets_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesheets",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "{SpreadSheetID}#{SheetTabName}",
        "API_VERSION": "v4"
    }
```

 **Consultas de partición** 

 Únicamente para la partición basada en registros, `NUM_PARTITIONS` se pueden proporcionar como opciones adicionales de Spark si desea utilizar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente. 

 **Ejemplo con `NUM_PARTITIONS`** 

```
googlesheets_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesheets",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "{SpreadSheetID}#{SheetTabName}",
        "API_VERSION": "v4",
        "NUM_PARTITIONS": "10"
    }
```

# Opciones de conexión de Google Sheets
<a name="googlesheets-connection-options"></a>

Las siguientes son opciones de conexión para Google Sheets:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El `SpreadSheet ID` y el `sheetTabName` en Google Sheets. Ejemplo: `{SpreadSheetID}#{SheetTabName}`. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Google Sheets que desea utilizar. 
+  `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. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Configurar el flujo de OAuth del código de autorización para Google Sheets
<a name="googlesheets-oauth-authorization"></a>

 **Requisitos previos** 
+  Una cuenta de Google en la que puede iniciar sesión para usar la aplicación Google Sheets. En su cuenta de Google, Google Sheets contiene los datos que desea transferir. 
+  Una cuenta de Google Cloud Platform y un proyecto de Google Cloud. Consulte [Crear un proyecto de Google Cloud](https://developers.google.com/workspace/guides/create-project) para obtener más información. 

**Para configurar su cuenta de Google y obtener las credenciales de OAuth 2.0:**

1.  Una vez configurado el proyecto de Google Cloud, habilite las API de Google Sheets y Google Drive en el proyecto. Para ver los pasos para habilitarlas, consulte [Habilitar y deshabilitar las API](https://support.google.com/googleapi/answer/6158841) en la ayuda de la consola de API de Google Cloud Platform. 

1.  A continuación, configure una pantalla de consentimiento de OAuth para usuarios externos. Para obtener más información acerca de la pantalla de consentimiento de OAuth, consulte [Configuración de la pantalla de consentimiento de OAuth](https://support.google.com/cloud/answer/10311615#) en la Ayuda de la Consola de Google Cloud Platform. 

1.  En la pantalla de consentimiento de OAuth, agregue los siguientes ámbitos: 
   +  [El ámbito de solo lectura de la API de Google Sheets](https://www.googleapis.com/auth/spreadsheets.readonly) 
   +  [El ámbito de solo lectura de la API de Google Drive](ttps://www.googleapis.com/auth/drive.readonly) 

    Para obtener más información sobre estos ámbitos, consulte [Ámbitos de OAuth 2.0 para las API de Google](https://developers.google.com/identity/protocols/oauth2/scopes) en la documentación de Google Identity. 

1.  Genere el ID y el secreto del cliente de OAuth 2.0. Para obtener información acerca de los pasos para crear este ID de cliente, consulte [Configuración de OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=) en la Ayuda de la consola de Google Cloud Platform. 

    El ID de cliente de OAuth 2.0 debe tener una o más URL de redireccionamiento autorizadas. 

    Las URL de redireccionamiento tienen el formato siguiente: 
   + https://<aws-region>.console.aws.amazon.com/gluestudio/oauth 

1.  Tenga en cuenta que el ID de cliente y el secreto del cliente provienen de la configuración de su ID de cliente de OAuth 2.0. 

# Limitaciones del conector de Google Sheets
<a name="googlesheets-connector-limitations"></a>

A continuación, se indican las limitaciones del conector de Google Sheets:
+  El conector de Google Sheets no admite filtros. Por lo tanto, no se puede admitir la partición basada en filtros. 
+  En la partición basada en registros, no existe ninguna provisión para devolver el recuento exacto de registros por SAAS. Como resultado, se pueden presentar situaciones en las que se creen archivos con registros vacíos.
+  Dado que el conector de Google Sheets no admite la partición basada en filtros, `partitionField`, `lowerbound` y `upperbound` no son opciones de conexión válidas. Si se proporcionan estas opciones, es probable que se presente un error en el trabajo de AWS Glue. 
+  Es esencial designar la primera fila de la hoja como fila de encabezado para evitar problemas de procesamiento de datos. 
  +  Si no se proporciona, la fila del encabezado se sustituirá por `Unnamed:1`, `Unnamed:2`, `Unnamed:3`... si la hoja contiene datos con la primera fila vacía. 
  +  Si se proporciona una fila de encabezado, los nombres de las columnas vacías se reemplazarán por `Unnamed:<number of column>`. Por ejemplo, si la fila de encabezado es `['ColumnName1', 'ColumnName2', '', '', 'ColumnName5', 'ColumnName6']`, pasará a ser `['ColumnName1', 'ColumnName2', 'Unnamed:3', 'Unnamed:4', 'ColumnName5', 'ColumnName6'].` 
+  El conector de Google Sheets no es compatible con las transferencias incrementales. 
+  El conector de Google Sheets solo admite el tipo de datos String. 
+  A los encabezados duplicados de una hoja se les cambiará el nombre de forma iterativa mediante un sufijo numérico. Los nombres de encabezado proporcionados por el usuario tendrán prioridad al cambiar el nombre de los encabezados duplicados. Por ejemplo, si la fila del encabezado es ["Nombre", "", "Nombre", nulo, "Sin nombre:6", ""], cambiará a: ["Nombre", "Sin nombre:2", "Nombre1", "Sin nombre:4", "Sin nombre:6", "Sin nombre:61"]. 
+  El conector de Google Sheets no admite espacios en los nombres de una pestaña. 
+  El nombre de una carpeta no puede contener los siguientes caracteres especiales: 
  + \$1
  + /

# Conexión a HubSpot
<a name="connecting-to-data-hubspot"></a>

La plataforma CRM de HubSpot tiene todas las herramientas e integraciones que necesita para el marketing, las ventas, la administración de contenido y la atención al cliente.
+ Marketing Hub: software de marketing que ayuda a aumentar el tráfico, convertir más visitantes y ejecutar campañas completas de marketing de entrada a gran escala.
+ Sales Hub: software de CRM de ventas que ayuda a obtener información más profunda sobre los clientes potenciales, automatizar las tareas que tiene y cerrar más tratos con mayor rapidez.
+ Service Hub: software de atención al cliente que ayuda a conectarse con los clientes, superar las expectativas y convertirlos en promotores que hagan crecer su negocio.
+ Operations Hub: software de operaciones que sincroniza sus aplicaciones, limpia y crea los datos de los clientes y automatiza los procesos, de modo que todos sus sistemas y equipos trabajen mejor juntos.

**Topics**
+ [Soporte de AWS Glue para HubSpot](hubspot-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](hubspot-configuring-iam-permissions.md)
+ [Configuración de HubSpot](hubspot-configuring.md)
+ [Configuración de las conexiones a HubSpot](hubspot-configuring-connections.md)
+ [Lectura desde entidades de HubSpot](hubspot-reading-from-entities.md)
+ [Escribir a entidades de HubSpot](hubspot-writing-to-entities.md)
+ [Opciones de conexión de HubSpot](hubspot-connection-options.md)
+ [Limitaciones y notas del conector de HubSpot](hubspot-connector-limitations.md)

# Soporte de AWS Glue para HubSpot
<a name="hubspot-support"></a>

AWS Glue es compatible con HubSpot de la siguiente manera:

**¿Es compatible como origen?**  
Sí: sincrónico y asincrónico. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de HubSpot.

**¿Es compatible como destino?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para escribir datos en HubSpot.

**Versiones compatibles de la API de HubSpot**  
Las siguientes versiones de la API de HubSpot son compatibles:
+ v1
+ v2
+ v3
+ v4

Para obtener información sobre la compatibilidad de entidades por versión específica, consulte [Entidades admitidas para el origen sincrónico](hubspot-reading-from-entities.md#sync-table) y [Entidades compatibles para el origen asincrónico](hubspot-reading-from-entities.md#async-table).

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="hubspot-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 HubSpot
<a name="hubspot-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tiene una cuenta de HubSpot. Para obtener más información, consulte [Cómo crear una cuenta de HubSpot](#hubspot-configuring-creating-hubspot-account).
+ La cuenta de HubSpot debe estar habilitada para el acceso de API.
+ Debe tener una aplicación en la cuenta de desarrollador de HubSpot que proporcione las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Creación de una aplicación para desarrolladores de HubSpot](#hubspot-configuring-creating-hubspot-developer-app).

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de HubSpot. Si es una conexión típica, no necesita hacer nada más en HubSpot.

## Cómo crear una cuenta de HubSpot
<a name="hubspot-configuring-creating-hubspot-account"></a>

Para crear una cuenta de HubSpot:

1. Ve a la [URL de registro de HubSpot CRM](https://app.hubspot.com/login).

1. Introduzca su dirección de correo electrónico y seleccione **Verificar correo electrónico** (también puede optar por registrarse con una cuenta de Google, Microsoft o Apple).

1. Busque en su bandeja de entrada el código de verificación de HubSpot.

1. Introduzca el código de verificación de 6 dígitos y haga clic en **Siguiente**.

1. Introduzca una contraseña y haga clic en **Siguiente**.

1. Introduzca su nombre y apellidos y haga clic en **Siguiente**, o regístrese mediante el enlace **Registrarse con Google**.

1. Introduzca su sector y haga clic en **Siguiente**.

1. Introduzca su puesto de trabajo y haga clic en **Siguiente**.

1. Introduzca el nombre de su empresa y haga clic en **Siguiente**.

1. Seleccione el tamaño de su empresa (cantidad de empleados que trabajan en su empresa) y haga clic en **Siguiente**.

1. Introduzca el sitio web de su empresa y haga clic en **Siguiente**.

1. Seleccione dónde deben alojarse sus datos (Estados Unidos o Europa) y haga clic en **Crear cuenta**.

1. Seleccione el propósito de la creación de su cuenta y haga clic en **Siguiente**.

1. Elija **Conectar cuenta de Google** o seleccione añadir contactos usted mismo para vincular sus contactos con su cuenta de HubSpot.

1. Inicie sesión en su cuenta de Google si seleccionó la opción **Conectar cuenta de Google** para vincular sus contactos y empezar a usar su cuenta de HubSpot.

## Creación de una aplicación para desarrolladores de HubSpot
<a name="hubspot-configuring-creating-hubspot-developer-app"></a>

Las cuentas de desarrollador de aplicaciones están diseñadas para crear y administrar aplicaciones, integraciones y cuentas de prueba para desarrolladores. También es donde puede crear y administrar listados del App Marketplace. Sin embargo, las cuentas de desarrollador de aplicaciones y sus cuentas de prueba asociadas no están vinculadas a una cuenta estándar de HubSpot. No pueden sincronizar datos o activos a o desde otra cuenta de HubSpot. Para obtener el ID de cliente y el secreto del cliente, debe crear una cuenta de desarrollador.

1. Vaya a https://developers.hubspot.com/

1. Elija **Crear cuenta de desarrollador** y desplácese hacia abajo.

1. Se le preguntará si desea crear una cuenta de desarrollador de aplicaciones, una cuenta de aplicación privada o una cuenta Sandbox para desarrolladores de CMS. Elija **Crear cuenta de desarrollador de aplicaciones**.

1. Como ya ha creado una cuenta con HubSpot, puede elegir **Continuar con este usuario**.

1. Haga clic en **Comenzar registro**.

1. Introduzca su puesto de trabajo y haga clic en **Siguiente**.

1. Asigne un nombre a su cuenta de desarrollador y haga clic en **Siguiente** y, a continuación, en **Omitir**.

1. Seleccione **Crear una aplicación**.

1. Una vez creada la aplicación, seleccione **Auth**.

1. En Auth, tome nota del ID de cliente y el secreto de cliente.

1. Añada la **URL de redireccionamiento** específica de su región como https:*//<aws-region>*.console.aws.amazon.com/gluestudio/oauth. Por ejemplo, agregue https://us-east-1.console.aws.amazon.com/gluestudio/oauth para la región us-east-1.

1. Desplácese hacia abajo y busque los ámbitos. Hay dos tipos de alcances que debe seleccionar bajo los encabezados «CRM» y «Estándar».

1. Agregue los siguientes alcances:

   ```
   content
   automation
   oauth
   crm.objects.owners.read
   forms
   tickets
   crm.objects.contacts.write
   e-commerce
   crm.schemas.custom.read
   crm.objects.custom.read
   sales-email-read
   crm.objects.custom.write
   crm.objects.companies.write
   crm.lists.write
   crm.objects.companies.read
   crm.lists.read
   crm.objects.deals.read
   crm.objects.deals.write
   crm.objects.contacts.read
   ```

1. Haga clic en **Guardar** y su cuenta de desarrollador estará lista para usarse.

1. Desplácese hacia arriba para encontrar el **ID de cliente**.

1. En la misma página, haga clic en **Mostrar** para obtener el **secreto del cliente**.

## Creación de una cuenta de prueba para desarrolladores de HubSpot
<a name="hubspot-configuring-creating-hubspot-developer-test-account"></a>

Dentro de las cuentas de desarrollador de aplicaciones, puede crear cuentas de prueba para desarrolladores para probar aplicaciones e integraciones sin que ello afecte a los datos reales de HubSpot. Las cuentas de prueba para desarrolladores no reflejan las cuentas de producción, sino que tienen acceso a una versión de prueba de 90 días de las versiones Enterprise de Marketing, Sales, Service, CMS y Operations Hub, lo que permite probar la mayoría de las herramientas y API de HubSpot.

1. Haga clic en **Inicio.**

1. Haga clic en **Crear cuenta de prueba**.

1. Haga clic en **Crear cuenta de prueba de aplicación**.

1. Aparece una nueva ventana. Introduzca el nombre de la cuenta de prueba de la aplicación y haga clic en **Crear**.

   Ya se creó su cuenta de prueba de la aplicación.

**nota**  
La cuenta de desarrollador está relacionada con actividades de desarrollo, como la integración de la API, y la cuenta de prueba de la aplicación se utiliza para ver los datos que crea o extrae la cuenta de desarrollador.

# Configuración de las conexiones a HubSpot
<a name="hubspot-configuring-connections"></a>

HubSpot admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión necesita proporcionar la información relacionada con OAuth, como el ID de cliente y el secreto de cliente, para su aplicación cliente de HubSpot. La consola de AWS Glue redirigirá al usuario a HubSpot, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de HubSpot.
+ Los usuarios aún pueden optar por crear su propia aplicación conectada en HubSpot y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá HubSpot para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de HubSpot sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Aplicaciones públicas](https://developers.hubspot.com/docs/api/creating-an-app).

Para configurar una conexión a HubSpot:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para la 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 HubSpot.

   1. Proporcione el entorno de HubSpot.

   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`.

1. En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**.

# Lectura desde entidades de HubSpot
<a name="hubspot-reading-from-entities"></a>

**Requisito previo**

Un objeto de HubSpot desde el cual le gustaría leer. Necesitará el nombre del objeto, como contacto o tarea. En la siguiente tabla se muestran las entidades admitidas para el origen sincrónico.

## Entidades admitidas para el origen sincrónico
<a name="sync-table"></a>


| Entidad | Versión de la API | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite particiones | 
| --- | --- | --- | --- | --- | --- | --- | 
| Campañas | v1 | No | Sí | No | Sí | No | 
| Empresas | v3 | Sí | Sí | Sí | Sí | Sí | 
| Contactos | v3 | Sí | Sí | Sí | Sí | Sí | 
| Listas de contactos | v1 | No | Sí | No | Sí | No | 
| Acuerdos | v3 | Sí | Sí | Sí | Sí | Sí | 
| Canalización de CRM (Canalizaciones de acuerdos) | v1 | No | No | No | Sí | No | 
| Eventos de correo electrónico | v1 | No | Sí | No | Sí | No | 
| Calls | v3 | Sí | Sí | Sí | Sí | Sí | 
| Notas | v3 | Sí | Sí | Sí | Sí | Sí | 
| Correos electrónicos | v3 | Sí | Sí | Sí | Sí | Sí | 
| Reuniones | v3 | Sí | Sí | Sí | Sí | Sí | 
| Tareas | v3 | Sí | Sí | Sí | Sí | Sí | 
| Correos | v3 | Sí | Sí | Sí | Sí | Sí | 
| Objetos personalizados | v3 | Sí | Sí | Sí | Sí | Sí | 
| Formularios | v2 | No | No | No | Sí | No | 
| Propietarios | v3 | No | Sí | No | Sí | No | 
| Productos | v3 | Sí | Sí | Sí | Sí | Sí | 
| Tickets | v3 | Sí | Sí | Sí | Sí | Sí | 
| Flujos de trabajo | v3 | No | No | No | Sí | No | 
| Associations | v4 | Sí | No | No | Sí | No | 
| Etiquetas de asociaciones | v4 | No | No | No | Sí | No | 

**Ejemplo:**

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3"
    }
```

## Entidades compatibles para el origen asincrónico
<a name="async-table"></a>


| Entidad | Versión de la API | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite particiones | 
| --- | --- | --- | --- | --- | --- | --- | 
| Empresas | v3 | Sí | No | Sí | Sí | No | 
| Contactos | v3 | Sí | No | Sí | Sí | No | 
| Acuerdos | v3 | Sí | No | Sí | Sí | No | 
| Calls | v3 | Sí | No | Sí | Sí | No | 
| Notas | v3 | Sí | No | Sí | Sí | No | 
| Correos electrónicos | v3 | Sí | No | Sí | Sí | No | 
| Reuniones | v3 | Sí | No | Sí | Sí | No | 
| Tareas | v3 | Sí | No | Sí | Sí | No | 
| Correos | v3 | Sí | No | Sí | Sí | No | 
| Objetos personalizados | v3 | Sí | No | Sí | Sí | No | 
| Productos | v3 | Sí | No | Sí | Sí | No | 
| Tickets | v3 | Sí | No | Sí | Sí | No | 

**Ejemplo:**

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3",
        "TRANSFER_MODE": "ASYNC"
    }
```

**Detalles de la entidad y el campo de HubSpot**:

**API de HubSpot v4**: 

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

**nota**  
En el caso del objeto `Associations`, para buscar asociaciones entre dos objetos, es necesario proporcionar el “ID de origen” (el ID del primer objeto) mediante un filtro obligatorio al crear un trabajo de AWS Glue. En ese caso, si quiere buscar asociaciones para varios ID de origen, tiene que proporcionar varios ID en la cláusula `where`. Por ejemplo: para buscar `Associations` de los ID de contacto “1” y “151”, debe proporcionar un filtro como `where id=1 AND id=151`.

**API de HubSpot v3**:

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

Para las siguientes entidades, HubSpot proporciona puntos de conexión para obtener los metadatos de forma dinámica, de modo que la compatibilidad del operador se capture en el nivel del tipo de datos de cada entidad.

**nota**  
`DML_STATUS` es un campo virtual que se agrega a cada registro en tiempo de ejecución para determinar su estado (CREADO/ACTUALIZADO) en el modo sincrónico. El operador `CONTAINS/LIKE` no es compatible con el modo asíncrono.

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

**API de HubSpot v2**:

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

**API de HubSpot v1**:

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

## Consultas de particionamiento
<a name="hubspot-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo DateTime, aceptamos el valor en formato ISO.

  Ejemplos de valor válido:

  ```
  “2024-01-01T10:00:00.115Z" 
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

En la tabla siguiente, se describen los detalles de compatibilidad de campos de particiones de entidades:

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

Ejemplo:

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "v3",
        "PARTITION_FIELD": "hs_object_id"
        "LOWER_BOUND": "50"
        "UPPER_BOUND": "16726619290"
        "NUM_PARTITIONS": "10"
    }
```

# Escribir a entidades de HubSpot
<a name="hubspot-writing-to-entities"></a>

## Requisitos previos
<a name="hubspot-writing-prerequisites"></a>
+ Un objeto de HubSpot en el que le gustaría escribir. Necesitará el nombre del objeto, como contacto o ticket.
+ El conector de HubSpot admite las siguientes operaciones de escritura:
  + INSERT
  + UPDATE
+ Al utilizar la operación de escritura `UPDATE`, debe proporcionar la opción `ID_FIELD_NAMES` para especificar el campo de ID de los registros.

## Entidades compatibles para el destino de sincronización
<a name="hubspot-supported-entities"></a>


| Entidad | Versión de API | Se admitirá como conector de destino | Se puede insertar | Se puede actualizar | 
| --- | --- | --- | --- | --- | 
| Empresas | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Contactos | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Acuerdos | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Productos | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Calls | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Reuniones | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Notas | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Correos electrónicos | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Tareas | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Correos | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Objetos personalizados | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Tickets | v3 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 
| Asociaciones | v4 | Sí | Sí (individual, masivo) | No | 
| Etiquetas de asociaciones | v4 | Sí | Sí (individual, masivo) | Sí (individual, masivo) | 

**Ejemplos:**

**Operación INSERT**

```
hubspot_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3",
        "WRITE_OPERATION": "INSERT"
    }
)
```

**Operación UPDATE**

```
hubspot_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deal",
        "API_VERSION": "v3",
        "WRITE_OPERATION": "UPDATE",
        "ID_FIELD_NAMES": "hs_object_id"
    }
)
```

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

Existen las siguientes opciones para establecer conexión con HubSpot:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en HubSpot.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de HubSpot que desea usar. Por ejemplo: v1,v2,v3,v4.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `TRANSFER_MODE`(Cadena): se usa para indicar si la consulta debe ejecutarse en modo asíncrono.
+ `WRITE_OPERATION`(cadena): predeterminado: INSERT. Se utiliza para escribir. El valor debe ser INSERT o UPDATE.
+ `ID_FIELD_NAMES`(cadena): predeterminado: nulo. Requerido para UPDATE.

# Limitaciones y notas del conector de HubSpot
<a name="hubspot-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de HubSpot:
+ Los puntos de conexión de búsqueda están limitados a un total de 10 000 resultados para una consulta determinada. Cualquier partición que tenga más de 10 000 registros generará un error 400.
+ Se describen otras limitaciones importantes del conector en [Limitaciones](https://developers.hubspot.com/docs/api/crm/search#limitations).
+ HubSpot acepta un máximo de tres instrucciones de filtrado.
+ Actualmente, HubSpot admite asociaciones entre objetos estándar de HubSpot (por ejemplo, contacto, empresa, acuerdo o ticket) y objetos personalizados.
  + Para una cuenta gratuita: solo puede crear hasta 10 tipos de asociación entre cada combinación de objetos (por ejemplo, contactos y empresas).
  + Para una cuenta de superadministrador: solo puede crear hasta 50 tipos de asociación entre cada combinación de objetos.
  + Para obtener más información, consulte [Associations v4](https://developers.hubspot.com/docs/api/crm/) y [Create and use association labels](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels).
+ Los objetos «Quote» y «Communications» no están presentes en las asociaciones, ya que actualmente no son compatibles con el conector.
+ Para Async, SaaS ordena los valores solo en orden ascendente.
+ Para la entidad `Ticket`, SaaS no devuelve el campo `hs_object_id` en el modo asíncrono.

# Conexión a Anuncios de Instagram
<a name="connecting-to-data-instagram-ads"></a>

Instagram es una popular aplicación para compartir fotos que le permite conectarse con marcas, famosos, líderes de opinión, amigos, familiares y más. Es un servicio de redes sociales y para compartir fotos. Los usuarios pueden tomar fotos o grabar videos cortos y compartirlos con sus seguidores. Los anuncios de Instagram son publicaciones por las que las empresas pueden pagar para ofrecerlas a los usuarios de Instagram.

**Topics**
+ [Compatibilidad de AWS Glue con Anuncios de Instagram](instagram-ads-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](instagram-ads-configuring-iam-permissions.md)
+ [Configuración de Anuncios de Instagram](instagram-ads-configuring.md)
+ [Configuración de las conexiones de Anuncios de Instagram](instagram-ads-configuring-connections.md)
+ [Lectura desde entidades de Anuncios de Instagram](instagram-ads-reading-from-entities.md)
+ [Opciones de conexión en Anuncios de Instagram](instagram-ads-connection-options.md)
+ [Limitaciones y notas del conector de Anuncios de Instagram](instagram-ads-connector-limitations.md)

# Compatibilidad de AWS Glue con Anuncios de Instagram
<a name="instagram-ads-support"></a>

AWS Glue es compatible con Anuncios de Instagram de la siguiente manera:

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

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

**Versiones de la API de Anuncios de Instagram compatibles**  
Las siguientes versiones de la API de Anuncios de Instagram son compatibles:
+ v17.0
+ v18.0
+ v19.0
+ v20.0

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="instagram-ads-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 Anuncios de Instagram
<a name="instagram-ads-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos hacia o desde Anuncios de Instagram, debe cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Se accede a las cuentas estándar de Instagram directamente a través de Facebook.
+ Se necesita la autenticación del usuario para generar el token de acceso.
+ El conector del SDK de Anuncios de Instagram implementará el flujo *OAuth del token de acceso de usuario*.
+ Usamos OAuth2.0 para autenticar nuestras solicitudes de API en Anuncios de Instagram. Esta autenticación basada en la web pertenece a la arquitectura de autenticación multifactor (MFA), que es un superconjunto de 2FA.
+ El usuario debe conceder permisos para acceder a los puntos de conexión. Para acceder a los datos del usuario, la autorización del punto de conexión se administra mediante [permisos](https://developers.facebook.com/docs/permissions) y [características](https://developers.facebook.com/docs/features-reference).

## Obtención de las credenciales de OAuth 2.0
<a name="instagram-ads-configuring-creating-instagram-ads-oauth2-credentials"></a>

Para obtener las credenciales de la API para poder hacer llamadas autenticadas a la instancia, consulte [API Graph](https://developers.facebook.com/docs/graph-api/).

# Configuración de las conexiones de Anuncios de Instagram
<a name="instagram-ads-configuring-connections"></a>

Anuncios de Instagram admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth 2.
+ Este tipo de concesión se considera un OAuth de tres vías, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue.
+ Los usuarios pueden optar por crear una aplicación conectada propia en Instagram Ads y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este caso, se les continuará redirigiendo a Anuncios de Instagram para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token acceso. Un token de usuario del sistema que caduca es válido durante 60 días a partir de la fecha de generación o actualización. Para crear continuidad, el desarrollador debe actualizar el token de acceso en un plazo de 60 días. De lo contrario, se pierde el token de acceso y es necesario que el desarrollador obtenga uno nuevo para recuperar el acceso a la API. Consulte [Actualización del identificador de acceso](https://developers.facebook.com/docs/marketing-api/system-users/install-apps-and-generate-tokens/).

Configuración de una conexión de Anuncios de Instagram:

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**, seleccione Anuncios de Instagram.

   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. Proporcione el ID de cliente de la aplicación cliente administrada por el usuario.

   1. Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens. El secreto seleccionado debe tener una clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` cuyo valor sea el secreto del cliente de la aplicación conectada.

   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`.

# Lectura desde entidades de Anuncios de Instagram
<a name="instagram-ads-reading-from-entities"></a>

**Requisito previo**

Un objeto de Anuncios de Instagram desde el cual le gustaría leer. Necesitará el nombre del objeto. En las siguientes tablas se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Campaña | Sí | Sí | No | Sí | Sí | 
| Conjunto de anuncios | Sí | Sí | No | Sí | Sí | 
| Anuncios | Sí | Sí | No | Sí | Sí | 
| Creatividad de anuncios | No | Sí | No | Sí | No | 
| Información: cuenta | No | Sí | No | Sí | No | 
| Imagen del anuncio | Sí | Sí | No | Sí | No | 
| Información: anuncio | Sí | Sí | No | Sí | Sí | 
| Información: conjunto de anuncios | Sí | Sí | No | Sí | Sí | 
| Información: campaña | Sí | Sí | No | Sí | Sí | 

**Ejemplo:**

```
instagramAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="instagramads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0"
    }
```

## Detalles de la entidad y el campo de Anuncios de Instagram
<a name="instagram-ads-reading-entity-and-field-details"></a>

Para obtener más información acerca de las entidades y los detalles de los campos, consulte:
+ [Campaña](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group)
+ [Conjunto de anuncios](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign)
+ [Anuncio](https://developers.facebook.com/docs/marketing-api/reference/adgroup)
+ [Creatividad de anuncios](https://developers.facebook.com/docs/marketing-api/reference/ad-creative)
+ [Ad Account Insight](https://developers.facebook.com/docs/marketing-api/reference/ad-account/insights)
+ [Ad Image](https://developers.facebook.com/docs/marketing-api/reference/ad-image)
+ [Ad Insights](https://developers.facebook.com/docs/marketing-api/reference/adgroup/insights/)
+ [AdSets Insights](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign/insights)
+ [Campaigns Insights](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group/insights)

Para obtener más información, consulte [API de marketing](https://developers.facebook.com/docs/marketing-api/reference/v21.0).

**nota**  
Los tipos de datos de estructura y lista se convierten en tipos de datos de cadena en respuesta a los conectores.

## Consultas de particionamiento
<a name="instagram-ads-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo DateTime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas de Spark SQL.

  Ejemplo de valor válido:

  ```
  "2022-01-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.

  Ejemplo de valor válido:

  ```
  "2024-01-02T00:00:00.000Z"
  ```
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
instagramADs_read = glueContext.create_dynamic_frame.from_options(
    connection_type="instagramads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0",
        "PARTITION_FIELD": "created_time"
        "LOWER_BOUND": "2022-01-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-01-02T00:00:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Opciones de conexión en Anuncios de Instagram
<a name="instagram-ads-connection-options"></a>

Las siguientes son opciones de conexión para Anuncios de Instagram:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de su objeto en Anuncios de Instagram.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. La versión de la API de Graph de Anuncios de Instagram que desea utilizar. Por ejemplo: v21.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para lectura. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para lectura. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para lectura. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Limitaciones y notas del conector de Anuncios de Instagram
<a name="instagram-ads-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Anuncios de Instagram:
+ El recuento de llamadas de una aplicación es el número de llamadas que un usuario puede hacer durante un periodo continuo de una hora, multiplicado por 200 por el número de usuarios. Para obtener información sobre los límites de frecuencia, consulte [Límites de frecuencia](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/) y [Límites de frecuencia de casos de uso comercial](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/#buc-rate-limits).

# Conexión a Intercom en AWS Glue Studio
<a name="connecting-to-data-intercom"></a>

 Intercom es el sistema operativo Engagement, un canal abierto entre su empresa y sus clientes (en cuanto al producto, al momento y según sus condiciones), que crea un diálogo continuo que le permite aprovechar al máximo cada interacción a lo largo del recorrido del cliente. 

**Topics**
+ [Compatibilidad con AWS Glue para Intercom](intercom-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](intercom-configuring-iam-permissions.md)
+ [Configuración de Intercom](intercom-configuring.md)
+ [Configuración de conexiones de Intercom](intercom-configuring-connections.md)
+ [Lectura desde entidades de Intercom](intercom-reading-from-entities.md)
+ [Opciones de conexión de Intercom](intercom-connection-options.md)
+ [Limitaciones](intercom-limitations.md)
+ [Creación de una nueva cuenta de Intercom y configuración de la aplicación cliente](intercom-new-account-creation.md)

# Compatibilidad con AWS Glue para Intercom
<a name="intercom-support"></a>

AWS Glue es compatible con Intercom de la siguiente manera:

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

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

**Versiones de la API de Intercom que son compatibles**  
 v2.5. Para obtener información sobre la compatibilidad de entidades por versión específica, consulte [Lectura desde entidades de Intercom](intercom-reading-from-entities.md). 

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

 En el siguiente ejemplo de política se describen los permisos de 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, Amazon 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): concede 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 Intercom
<a name="intercom-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos hacia o desde Intercom, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="intercom-configuring-min-requirements"></a>
+  Debe tener una cuenta de Intercom. Para obtener más información, consulte [Creación de una nueva cuenta de Intercom y configuración de la aplicación cliente](intercom-new-account-creation.md). 
+  Su cuenta de Intercom está habilitada para el acceso a la API. 
+  Debe tener una aplicación en la cuenta de desarrollador de Intercom que proporcione las credenciales de cliente que AWS Glue utiliza para acceder a sus datos de forma segura cuando hace llamadas autenticadas a su cuenta. Para obtener más información, consulte Intercom- New Account and Client App Creation Steps. 

 Si cumple estos requisitos, lo tiene todo listo para conectar AWS Glue a su cuenta de Intercom. 

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

 Intercom admite el tipo de concesión `AUTHORIZATION_CODE` para OAuth 2. 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Google Ads, donde deberá iniciar sesión y permitir a AWS Glue que los permisos solicitados accedan a su instancia de Intercom. 

 Los usuarios deben proporcionar su propio ID de cliente y su secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, se les continuará redirigiendo a Intercom para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

 Para obtener más información sobre cómo crear una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Ads API](https://developers.intercom.com/building-apps/docs/setting-up-oauth). 

Para configurar una conexión de Intercom:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el token de acceso a la aplicación conectada, el token de actualización, el client\$1id y el client\$1secret. 

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**, seleccione Intercom.

   1. Proporcione el entorno de Intercom.

   1.  Seleccione el rol de 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`. 

# Lectura desde entidades de Intercom
<a name="intercom-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Intercom desde el cual le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | API\$1Version | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | --- | 
| Admins | v2.5 | No | No | No | Sí | No | 
| Empresas | v2.5 | No | Sí | No | Sí | No | 
| Conversaciones | v2.5 | Sí | Sí | Sí | Sí | Sí | 
| Atributos de datos | v2.5 | No | No | No | Sí | No | 
| Contactos | v2.5 | Sí | Sí | Sí | Sí | Sí | 
| Segmentos | v2.5 | No | No | No | Sí | No | 
| Etiquetas | v2.5 | No | No | No | Sí | No | 
| Equipos | v2.5 | No | No | No | Sí | No | 

 **Ejemplo** 

```
Intercom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Intercom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "V2.5"
    }
)
```

 **Detalles de la entidad y el campo de Intercom** 


| Entidad | Campo | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | --- | 
| Admins | type | Cadena | N/D | 
| Admins | id | Cadena | N/D | 
| Admins | avatar | Struct | N/D | 
| Admins | nombre | Cadena | N/D | 
| Admins | correo electrónico | Cadena | N/D | 
| Admins | away\$1mode\$1enabled | Booleano | N/D | 
| Admins | away\$1mode\$1reassign | Booleano | N/D | 
| Admins | has\$1inbox\$1seat | Booleano | N/D | 
| Admins | teams\$1ids | Enumeración | N/D | 
| Admins | job\$1title | Cadena | N/D | 
| Empresas | type | Cadena | N/D | 
| Empresas | id | Cadena | N/D | 
| Empresas | app\$1id | Cadena | N/D | 
| Empresas | created\$1at | DateTime | N/D | 
| Empresas | remote\$1created\$1at | DateTime | N/D | 
| Empresas | updated\$1at | DateTime | N/D | 
| Empresas | last\$1request\$1at | DateTime | N/D | 
| Empresas | plan | Struct | N/D | 
| Empresas | company\$1id | Cadena | N/D | 
| Empresas | nombre | Cadena | N/D | 
| Empresas | custom\$1attributes | Struct | N/D | 
| Empresas | session\$1count | Entero | N/D | 
| Empresas | monthly\$1spend | Entero | N/D | 
| Empresas | user\$1count | Entero | N/D | 
| Empresas | industry | Cadena | N/D | 
| Empresas | tamaño | Entero | N/D | 
| Empresas | sitio web | Cadena | N/D | 
| Empresas | etiquetas | Struct | N/D | 
| Empresas | segments | Struct | N/D | 
| Contactos | id | Cadena | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contactos | type | Cadena | N/D | 
| Contactos | workspace\$1id | Cadena | N/D | 
| Contactos | external\$1id | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | rol | Cadena | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contactos | correo electrónico | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | phone | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | nombre | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | avatar | Cadena | N/D | 
| Contactos | owner\$1id | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | social\$1profiles | Struct | N/D | 
| Contactos | has\$1hard\$1bounced | Booleano | EQUAL\$1TO | 
| Contactos | marked\$1email\$1as\$1spam | Booleano | EQUAL\$1TO | 
| Contactos | unsubscribed\$1from\$1emails | Booleano | EQUAL\$1TO | 
| Contactos | created\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | updated\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | signed\$1up\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | last\$1seen\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | last\$1replied\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | last\$1contacted\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | last\$1email\$1opened\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | last\$1email\$1clicked\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contactos | language\$1override | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | navegador | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | browser\$1version | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | browser\$1language | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | os | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | ubicación | Struct | N/D | 
| Contactos | location\$1country | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | location\$1region | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | location\$1city | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | android\$1app\$1name | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | android\$1app\$1version | Cadena | N/D | 
| Contactos | android\$1device | Cadena | N/D | 
| Contactos | android\$1os\$1version | Cadena | N/D | 
| Contactos | android\$1sdk\$1version | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | android\$1last\$1seen\$1at | Date | N/D | 
| Contactos | ios\$1app\$1name | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | ios\$1app\$1version | Cadena | N/D | 
| Contactos | ios\$1device | Cadena | N/D | 
| Contactos | ios\$1os\$1version | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | ios\$1sdk\$1version | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contactos | ios\$1last\$1seen\$1at | DateTime | N/D | 
| Contactos | custom\$1attributes | Struct | N/D | 
| Contactos | etiquetas | Struct | N/D | 
| Contactos | notes | Struct | N/D | 
| Contactos | companies | Struct | N/D | 
| Contactos | unsubscribed\$1from\$1sms | Booleano | N/D | 
| Contactos | sms\$1consent | Booleano | N/D | 
| Contactos | opted\$1out\$1subscription\$1types | Struct | N/D | 
| Contactos | referrer | Cadena | N/D | 
| Contactos | utm\$1campaign | Cadena | N/D | 
| Contactos | utm\$1content | Cadena | N/D | 
| Contactos | utm\$1medium | Cadena | N/D | 
| Contactos | utm\$1source | Cadena | N/D | 
| Contactos | utm\$1term | Cadena | N/D | 
| Conversaciones | type | Cadena | N/D | 
| Conversaciones | id | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | created\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | updated\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | origen | Struct | N/D | 
| Conversaciones | source\$1id | Cadena | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | source\$1type | Cadena | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversaciones | source\$1delivered\$1as | Cadena | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversaciones | source\$1subject | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | source\$1body | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | source\$1author\$1id | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | source\$1author\$1type | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | source\$1author\$1name | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | source\$1author\$1email | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | source\$1url | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | contacts | Struct | N/D | 
| Conversaciones | teammates | Struct | N/D | 
| Conversaciones | título | Cadena | N/D | 
| Conversaciones | admin\$1assignee\$1id | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | team\$1assignee\$1id | Entero | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | custom\$1attributes | Struct | N/D | 
| Conversaciones | open | Booleano | EQUAL\$1TO | 
| Conversaciones | estado | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | lectura | Booleano | EQUAL\$1TO | 
| Conversaciones | waiting\$1since | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | snoozed\$1until | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | etiquetas | Struct | N/D | 
| Conversaciones | first\$1contact\$1reply | Struct | N/D | 
| Conversaciones | priority | Cadena | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | temas | Struct | N/D | 
| Conversaciones | sla\$1applied | Struct | N/D | 
| Conversaciones | conversation\$1rating | Struct | N/D | 
| Conversaciones | conversation\$1rating\$1requested\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | conversation\$1rating\$1replied\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | conversation\$1rating\$1score | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | conversation\$1rating\$1remark | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | conversation\$1rating\$1contact\$1id | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | conversation\$1rating\$1admin\$1id | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | statistics | Struct | N/D | 
| Conversaciones | statistics\$1time\$1to\$1assignment | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1time\$1to\$1admin\$1reply | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1time\$1to\$1first\$1close | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1time\$1to\$1last\$1close | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1median\$1time\$1to\$1reply | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1first\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1first\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1first\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1first\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1last\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1last\$1assignment\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1last\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1last\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1last\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1last\$1closed\$1by\$1id | Cadena | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversaciones | statistics\$1count\$1reopens | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1count\$1assignments | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | statistics\$1count\$1conversation\$1parts | Entero | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversaciones | conversation\$1parts | Enumeración | N/D | 
| Atributos de datos | id | Entero | N/D | 
| Atributos de datos | type | Cadena | N/D | 
| Atributos de datos | modelo | Cadena | N/D | 
| Atributos de datos | nombre | Cadena | N/D | 
| Atributos de datos | full\$1name | Cadena | N/D | 
| Atributos de datos | etiqueta | Cadena | N/D | 
| Atributos de datos | Descripción | Cadena | N/D | 
| Atributos de datos | data\$1type | Cadena | N/D | 
| Atributos de datos | options | Enumeración | N/D | 
| Atributos de datos | api\$1writable | Booleano | N/D | 
| Atributos de datos | ui\$1writable | Booleano | N/D | 
| Atributos de datos | personalizado | Booleano | N/D | 
| Atributos de datos | archived | Booleano | N/D | 
| Atributos de datos | created\$1at | Booleano | N/D | 
| Atributos de datos | updated\$1at | DateTime | N/D | 
| Atributos de datos | admin\$1id | Cadena | N/D | 
| Segmentos | type | Cadena | N/D | 
| Segmentos | id | Cadena | N/D | 
| Segmentos | nombre | Cadena | N/D | 
| Segmentos | created\$1at | DateTime | N/D | 
| Segmentos | updated\$1at | DateTime | N/D | 
| Segmentos | person\$1type | Cadena | N/D | 
| Segmentos | count | Entero | N/D | 
| Etiquetas | type | Cadena | N/D | 
| Etiquetas | id | Cadena | N/D | 
| Etiquetas | nombre | Cadena | N/D | 
| Equipos | type | Cadena | N/D | 
| Equipos | id | Cadena | N/D | 
| Equipos | nombre | Cadena | N/D | 
| Equipos | admin\$1ids | Enumeración | N/D | 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se capturaron en la siguiente tabla. 


| Nombre de la entidad | Campo de partición | Tipo de datos | 
| --- | --- | --- | 
| Contactos | created\$1at, updated\$1at,last\$1seen\$1at | DateTime | 
| Conversaciones | id | Entero | 
| Conversaciones | created\$1at, updated\$1at | DateTime | 

 **Ejemplo** 

```
Intercom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Intercom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversation",
        "API_VERSION": "V2.5",
        "PARTITION_FIELD": "created_at"
        "LOWER_BOUND": "2022-07-13T07:55:27.065Z"
        "UPPER_BOUND": "2022-08-12T07:55:27.065Z"
        "NUM_PARTITIONS": "2"
    }
)
```

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

Las siguientes son opciones de conexión para Intercom:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Intercom. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Intercom que desea usar. Ejemplo: v2.5. 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 
+  `INSTANCE_URL`(cadena): URL de la instancia en la que el usuario quiere ejecutar las operaciones. Por ejemplo: [https://api.intercom.io](https://api.intercom.io). 

# Limitaciones
<a name="intercom-limitations"></a>

Las siguientes son limitaciones para el conector de Intercom:
+  Al usar la entidad Empresa, hay un límite de 10 000 empresas que se pueden devolver. Para obtener más información, consulte [List all companies API](https://developers.intercom.com/docs/references/2.5/rest-api/companies/list-companies). 
+  Al aplicar Ordenar por, es obligatorio filtrar tanto para las entidades de **Contacto** como para las de **Conversación**. 
+  MCA es compatible con el proveedor de SaaS. Sin embargo, en función de los límites de frecuencia de las API mencionados en la documentación, no alojaremos el MCA en AWS Glue, ya que podría afectar a otras cargas de trabajo y provocar posibles problemas de rendimiento debido a la contención de recursos. 

# Creación de una nueva cuenta de Intercom y configuración de la aplicación cliente
<a name="intercom-new-account-creation"></a>

**Creación de una cuenta de Intercom**

1. Elija la [URL de Intercom](https://app.intercom.com/) y seleccione **Iniciar mi prueba gratuita** en la esquina superior derecha de la página.

1. Seleccione el **botón Probar de forma gratuita** en la esquina superior derecha de la página.

1. Elija el tipo de empresa que necesite. 

1. En la página, ingrese la información solicitada.

1. Después de ingresar toda la información, seleccione **Registrar**.



**Creación de una aplicación para desarrolladores de Intercom**

Para obtener el **ID de cliente** y el **secreto del cliente**, debe crear una cuenta de desarrollador.

1. Diríjase a [https://app.intercom.com/](https://app.intercom.com/).

1. Ingrese el ID de correo electrónico y la contraseña (o inicie sesión con Google) e inicie sesión.

1. Elija **Perfil de usuario** en la esquina inferior izquierda y elija la configuración.

1. Seleccione **Aplicaciones e integración**.

1. Seleccione la pestaña **Hub de desarrolladores** en **Aplicaciones e integración**.

1. Seleccione **Nueva aplicación** y cree la aplicación aquí.

1. Proporcione el nombre de la aplicación y elija **Crear** aplicación.

1. Dentro de la aplicación, diríjase a la sección **Autenticación**.

1. Elija la opción para **editar** y agregue las URI de redireccionamiento. Agregue la URL de redireccionamiento específica de su región como `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth`. Por ejemplo, agregue `https://us-east-1.console.aws.amazon.com/gluestudio/oauth for the us-east-1 region`.

1. Obtenga el **ID de cliente** y el **secreto de cliente** generados en la sección Información básica.

# Conexión a Jira Cloud
<a name="connecting-to-data-jira-cloud"></a>

Jira Cloud es una plataforma desarrollada por Atlassian. La plataforma incluye productos de seguimiento de problemas que ayudan a los equipos a planificar y realizar un seguimiento de sus proyectos de Agile. Como usuario de Jira Cloud, la cuenta contiene datos sobre los proyectos, como problemas, flujos de trabajo y eventos. Puede utilizar AWS Glue para transferir datos de Jira Cloud a determinados servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Jira Cloud](jira-cloud-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](jira-cloud-configuring-iam-permissions.md)
+ [Configuración de Jira Cloud](jira-cloud-configuring.md)
+ [Configurar las conexiones a Jira Cloud](jira-cloud-configuring-connections.md)
+ [Lectura de entidades de Jira Cloud](jira-cloud-reading-from-entities.md)
+ [Opciones de conexión de Jira Cloud](jira-cloud-connection-options.md)
+ [Limitaciones y notas del conector de Jira Cloud](jira-cloud-connector-limitations.md)

# Compatibilidad de AWS Glue con Jira Cloud
<a name="jira-cloud-support"></a>

AWS Glue es compatible con Jira Cloud de la siguiente manera:

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

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

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

Para obtener información sobre la compatibilidad de entidades por versión específica, consulte [Lectura de entidades de Jira Cloud](jira-cloud-reading-from-entities.md). 

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="jira-cloud-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 Jira Cloud
<a name="jira-cloud-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Jira Cloud a destinos compatibles, deberá cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Atlassian en la que utilice el producto de software Jira en Jira Cloud. Para obtener más información, consulte [Crear una cuenta de Jira Cloud](#jira-cloud-configuring-creating-jira-cloud-account).
+ Debe tener una cuenta de AWS creada con el servicio de acceso a AWS Glue.
+ Esta aplicación proporciona las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Habilitar OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-) en la documentación de Atlassian Developer.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Jira Cloud.

## Crear una cuenta de Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-account"></a>

Para crear una cuenta de Jira Cloud:

1. Navegue hasta la [URL de registro de Atlassian](https://id.atlassian.com/signup).

1. Introduzca su correo electrónico laboral y nombre, y elija **Acepto**. Recibirá un correo electrónico de verificación.

1. Tras verificar su correo electrónico, puede crear una contraseña y seleccionar **Registrarse**.

1. Escriba el nombre y la contraseña, y elija **Registrarse**.

1. Se le redirigirá a una página en la que debe ingresar su sitio. Introduzca el nombre del sitio y elija **Acepto**.

Una vez que se inicie su sitio de Atlassian Cloud, podrá configurar Jira respondiendo a algunas preguntas según sus preferencias de tipo de proyecto.

Para iniciar sesión en una cuenta existente:

1. Vaya a la [URL de inicio de sesión de Atlassian](https://id.atlassian.com/login) e introduzca las credenciales.

1. Introduzca el correo electrónico y la contraseña, y haga clic en **Iniciar sesión**. Se le redirigirá al panel de Jira.

## Creación de una aplicación en Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-app"></a>

Para crear una aplicación en Jira Cloud y obtener el ID de cliente y el secreto de cliente de la aplicación cliente administrada:

1. Vaya a la [URL de inicio de Jira Cloud](https://id.atlassian.com/login) e introduzca las credenciales.

1. Elija **Crear** y seleccione la opción de **integración con OAuth 2.0**.

1. Introduzca el nombre de la aplicación, consulte los **términos y condiciones** y seleccione **Crear**.

1. Vaya a la sección **Distribución** en el menú de la izquierda y seleccione **Editar**.

1. En la sección **Editar controles de distribución**:

   1. Seleccione **ESTADO DE DISTRIBUCIÓN** como **Uso compartido**.

   1. Introduzca el nombre del proveedor.

   1. Introduzca la URL de su **política de privacidad**. Por ejemplo, https://docs.aws.amazon.com/glue/latest/dg/security-iam-awsmanpol.html

   1. Introduzca la URL de sus **condiciones de servicio** (opcional).

   1. Introduzca la URL de su **contacto de atención al cliente** (opcional).

   1. Seleccione Sí/No en la **DECLARACIÓN DE DATOS PERSONALES** y elija **Guardar cambios**.

1. Vaya a **Permisos** en el menú de la izquierda de la aplicación correspondiente.

1. Para la **API de Jira**, seleccione **Agregar**. Una vez agregada, elija la opción **Configuración**.

1. En la sección **Ámbitos clásicos** > **API de REST de la plataforma Jira**, seleccione **Editar ámbitos** y marque todos los ámbitos. Haga clic en **Guardar**.

1. En **Ámbitos granulares**, seleccione **Editar ámbitos** y seleccione los siguientes ámbitos:

1. Desplácese hacia abajo y busque los ámbitos. Hay dos tipos de alcances que debe seleccionar bajo los encabezados «CRM» y «Estándar».

1. Agregue los siguientes alcances:

   ```
   read:application-role:jira
   read:audit-log:jira
   read:avatar:jira
   read:field:jira
   read:group:jira
   read:instance-configuration:jira
   read:issue-details:jira
   read:issue-event:jira
   read:issue-link-type:jira
   read:issue-meta:jira
   read:issue-security-level:jira
   read:issue-security-scheme:jira
   read:issue-type-scheme:jira
   read:issue-type-screen-scheme:jira
   read:issue-type:jira
   read:issue.time-tracking:jira
   read:label:jira
   read:notification-scheme:jira
   read:permission:jira
   read:priority:jira
   read:project:jira
   read:project-category:jira
   read:project-role:jira
   read:project-type:jira
   read:project-version:jira
   read:project.component:jir
   read:project.property:jira
   read:resolution:jira
   read:screen:jira
   read:status:jira
   read:user:jira
   read:workflow-scheme:jira
   read:workflow:jira
   read:field-configuration:jira
   read:issue-type-hierarchy:jira
   read:webhook:jira
   ```

1. Vaya a **Autenticación** en el menú de la izquierda y elija **Agregar**.

1. Introduzca una **URL de devolución de llamada**, como https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Vaya a **Configuración** en el menú de la izquierda y desplácese hacia abajo para ver los detalles de **Autenticación**. Tome nota del ID y el secreto de cliente.

# Configurar las conexiones a Jira Cloud
<a name="jira-cloud-configuring-connections"></a>

Jira Cloud admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Jira Cloud, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Jira Cloud.
+ Los usuarios aún pueden optar por crear una aplicación conectada propia en Jira Cloud y proporcionar el ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Jira Cloud para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de Jira Cloud sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Habilitación de OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-).

Para configurar una conexión a Jira Cloud:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para la 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 Jira Cloud.

   1. Proporcione el entorno de Jira Cloud.

   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`.

# Lectura de entidades de Jira Cloud
<a name="jira-cloud-reading-from-entities"></a>

**Requisito previo**

Un objeto de Jira Cloud desde el cual le gustaría leer. Necesitará el nombre del objeto, como Registro de auditoría o Problema. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Registro de auditoría | Sí | Sí | No | Sí | Sí | 
| Problema | Sí | Sí | No | Sí | Sí | 
| Campo de problema | No | No | No | Sí | No | 
| Configuración de campo de problema | Sí | Sí | No | Sí | Sí | 
| Tipo de enlace de problema | No | No | No | Sí | No | 
| Esquema de notificación de problema | Sí | Sí | No | Sí | Sí | 
| Esquema de seguridad de problema | No | No | No | Sí | No | 
| Esquema de tipo de problema | Sí | Sí | Sí | Sí | Sí | 
| Esquema de pantalla del tipo de problema | Sí | Sí | Sí | Sí | Sí | 
| Tipo de problema | No | No | No | Sí | No | 
| Configuración de Jira | Sí | No | No | Sí | No | 
| Configuración avanzada de Jira | No | No | No | Sí | No | 
| Configuración global de Jira | No | No | No | Sí | No | 
| Etiqueta | No | No | No | Sí | Sí | 
| Yo | Sí | No | No | Sí | No | 
| Permiso | No | No | No | Sí | No. | 
| Proyecto | Sí | Sí | Sí | Sí | Sí | 
| Categoría de proyecto | No | No | No | Sí | No | 
| Tipo de proyecto | No | No | No | Sí | No | 
| Información del servidor | No | No | No | Sí | No | 
| Usuarios | No | No | No. | Sí | No | 
| Flujo de trabajo | Sí | Sí | Sí | Sí | Sí | 
| Esquema de flujo de trabajo | No | Sí | No | Sí | Sí | 
| Asociación de proyectos del esquema de flujo de trabajo | Sí | No | No | Sí | No | 
| Estado del flujo de trabajo | No | No | No | Sí | No | 
| Categoría de estado del flujo de trabajo | No | No | No | Sí | No | 

**Ejemplo**:

```
jiracloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "audit-record",
        "API_VERSION": "v3"
    }
```

**Detalles de la entidad y el campo de Jira Cloud**:

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

## Consultas de particionamiento
<a name="jira-cloud-reading-partitioning-queries"></a>

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 `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
jiraCloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "issue",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# Opciones de conexión de Jira Cloud
<a name="jira-cloud-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Jira Cloud:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Jira Cloud.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Jira Cloud que desea usar. Por ejemplo: v3.
+ `DOMAIN_URL`(Cadena): (obligatorio) El ID de Jira Cloud que desea utilizar.
+ `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.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Limitaciones y notas del conector de Jira Cloud
<a name="jira-cloud-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Jira Cloud:
+  El operador `Contains` no es compatible con el campo `resourceName`, que es de tipo de datos `String`. 
+  De forma predeterminada, si no se aplica ningún filtro explícito, solo se rastrearán los problemas de los últimos 30 días. Los usuarios tienen la opción de anular este filtro predeterminado especificando un filtro personalizado. 

# Conexión a Kustomer
<a name="connecting-to-data-kustomer"></a>

Kustomer es una potente plataforma de experiencia del cliente que reúne todo lo necesario para mejorar la atención en una herramienta fácil de usar.

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

# Compatibilidad de AWS Glue con Kustomer
<a name="kustomer-support"></a>

AWS Glue admite Kustomer de la siguiente manera:

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

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

**Versiones de la API de Kustomer compatibles**  
Las siguientes versiones de la API de Kustomer son compatibles:
+ v1

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="kustomer-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 Kustomer
<a name="kustomer-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Kustomer a destinos compatibles, deberá cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta en Kustomer que contenga los datos que desea transferir. 
+ Haber creado la clave de API en la configuración de la cuenta. Para obtener más información, consulte [Creación de una clave de API](#kustomer-configuring-creating-an-api-key).
+ Se proporciona la clave de API a AWS Glue al crear la conexión.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Kustomer.

## Creación de una clave de API
<a name="kustomer-configuring-creating-an-api-key"></a>

Para crear una clave de API que utilizará para crear una conexión para el conector de Kustomer en AWS Glue Studio:

1. Inicie sesión en el [panel de Kustomer con sus credenciales.](https://amazon-appflow.kustomerapp.com/login)

1. Elija el icono **Configuración** en el menú situado al costado izquierdo.

1. Amplíe el menú desplegable **Seguridad** y seleccione **Claves de API**.

1. En la página de creación de la clave de API, seleccione **Agregar una clave de API** en la esquina superior derecha.

1. Rellene las entradas obligatorias correspondientes a la clave de API que se va a crear.
   + Nombre: cualquier nombre para la clave de API.
   + Roles: se debe seleccionar “org” para que las API de Kustomer funcionen.
   + Caducará (en días): la cantidad de días durante los que desea que la clave de API permanezca válida. Puede establecer esta opción en **No caducará nunca**, si es lo que el caso de uso precisa.

1. Seleccione **Crear**.

1. Guarde el valor (token) de la clave de API para usarlo posteriormente a fin de crear una conexión para el conector de Kustomer en AWS Glue Studio.

# Configuración de las conexiones a Kustomer
<a name="kustomer-configuring-connections"></a>

Para configurar una conexión a Kustomer:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `apiKey` como la clave.

   1. Nota: Debe crear un secreto para las conexiones 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. En **Conexiones**, elija **Crear conexión**.

   1. Al seleccionar un **Origen de datos**, elija Kustomer.

   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`.

# Lectura de entidades de Kustomer
<a name="kustomer-reading-from-entities"></a>

**Requisito previo**

Un objeto de Kustomer desde el que desea leer. Necesitará el nombre del objeto, como Marcas o Tarjetas. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Marcas | No | Sí | No | Sí | No | 
| Tarjetas | No | Sí | No | Sí | No | 
| Configuración del chat | No | No | No | Sí | No | 
| Empresas | Sí | Sí | Sí | Sí | Sí | 
| Conversaciones | Sí | Sí | Sí | Sí | Sí | 
| Clientes | Sí | Sí | Sí | Sí | Sí | 
| Búsquedas de clientes ancladas | No | Sí | No | Sí | No | 
| Posición de búsquedas de clientes | No | No | No | Sí | No | 
| Enlaces de correo | No | Sí | No | Sí | No | 
| Enlaces web | No | Sí | No | Sí | No | 
| Artículos de KB | No | Sí | No | Sí | No | 
| Categorías de KB | No | Sí | No | Sí | No | 
| Formularios de KB | No | Sí | No | Sí | No | 
| Rutas de KB | No | Sí | No | Sí | No | 
| Etiquetas de KB | No | Sí | No | Sí | No | 
| Plantillas de KB | No | Sí | No | Sí | No | 
| Temas de KB | No | Sí | No | Sí | No | 
| Klasses | No | Sí | No | Sí | No | 
| KViews | No | Sí | No | Sí | No | 
| Mensajes | Sí | Sí | Sí | Sí | Sí | 
| Notas | Sí | Sí | Sí | Sí | Sí | 
| Notificaciones | No | Sí | No | Sí | No | 

**Ejemplo:**

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "brands",
        "API_VERSION": "v1"
    }
```

## Detalles de entidades y campos de Kustomer
<a name="kustomer-reading-from-entities-field-details"></a>

Para obtener más información acerca de las entidades y los detalles de los campos, consulte:
+ [Marcas](https://api.kustomerapp.com/v1/brands)
+ [Tarjetas](https://api.kustomerapp.com/v1/cards)
+ [Configuración del chat](https://api.kustomerapp.com/v1/chat/settings)
+ [Empresas](https://api.kustomerapp.com/v1/companies)
+ [Conversaciones](https://api.kustomerapp.com/v1/conversations)
+ [Clientes](https://api.kustomerapp.com/v1/customers)
+ [Búsquedas de clientes ancladas](https://api.kustomerapp.com/v1/customers/searches/pinned)
+ [Posición de búsquedas de clientes](https://api.kustomerapp.com/v1/customers/searches/positions)
+ [Enlaces de correo](https://api.kustomerapp.com/v1/hooks/email)
+ [Enlaces web](https://api.kustomerapp.com/v1/hooks/web)
+ [Artículos de KB](https://api.kustomerapp.com/v1/kb/articles)
+ [Categorías de KB](https://api.kustomerapp.com/v1/kb/categories)
+ [Formularios de KB]( https://api.kustomerapp.com/v1/kb/forms)
+ [Rutas de KB](https://api.kustomerapp.com/v1/kb/routes)
+ [Etiquetas de KB](https://api.kustomerapp.com/v1/kb/tags)
+ [Plantillas de KB](https://api.kustomerapp.com/v1/kb/templates)
+ [Temas de KB](https://api.kustomerapp.com/v1/kb/themes)
+ [Klasses](https://api.kustomerapp.com/v1/klasses)
+ [KViews](https://api.kustomerapp.com/v1/kviews)
+ [Mensajes](https://api.kustomerapp.com/v1/messages)
+ [Notas](https://api.kustomerapp.com/v1/notes)
+ [Notificaciones](https://api.kustomerapp.com/v1/notifications)

API v1

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

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

**Partición basada en campos**

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo DateTime, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

  ```
  "2023-01-15T11:18:39.205Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

En la siguiente tabla se detalla la compatibilidad de los campos de partición por entidad:

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

Ejemplo:

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversation",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

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

Existen las siguientes opciones para establecer conexión con Kustomer:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Stripe.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Kustomer que desea usar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para lectura. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para lectura. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para lectura. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. URL de la instancia de Kustomer.

# Limitaciones de Kustomer
<a name="kustomer-connection-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a Kustomer:
+ La entidad `Customer Searches` no es compatible porque la documentación de la API de Kustomer no ha declarado ningún punto de conexión para esta.
+ No se admite la filtración ni la transferencia incremental en la entidad `Klasses`.
+ “Ordenar por” se puede admitir en varios campos aplicables en una sola solicitud.

  Sin embargo, se ha observado que la ordenación por funcionalidad en varios campos se comporta de manera inconsistente en el SaaS en algunas combinaciones. Es impredecible, ya que puede haber combinaciones “n” que podrían arrojar resultados de ordenación incorrectos. Por ejemplo:

  En el caso de la entidad `Customers`, “ordenar por `progressiveStatus desc, name asc`” no arroja el resultado correcto ordenado. Ordena únicamente en función del orden `progressiveStatus`. Si se observa este comportamiento, puede utilizar un único campo para ordenar.
+ “Ordenar por” en el campo ID solo es compatible con las entidades `Conversations` y `Messages` como parámetro de consulta. Por ejemplo: https://api.kustomerapp.com/v1/conversations?sort=desc (esto ordena los resultados por ID en orden descendente).

  Además, cualquier otro filtro u ordenación en cualquier otro campo se traduce en un cuerpo de solicitud POST, con el punto de conexión de la API como POST https://api.kustomerapp.com/v1/customers/search Para admitir la ordenación por ID en `Conversations` y `Messages`, solo debe estar presente la ordenación por ID o cualquier otro filtro u ordenación en cualquier otro campo aplicable.
+ Kustomer permite obtener un máximo de 10 000 registros, independientemente de si se trata de una solicitud filtrada o no filtrada. Debido a esta limitación, se perderán datos para cualquier entidad que tenga más de 10 000 registros. Existen dos soluciones alternativas que puede aplicar para mitigar parcialmente esta situación:
  + Aplique filtros para obtener un conjunto de registros específico.
  + Si hay más de 10 000 registros con un filtro aplicado, aplique un valor de filtro sucesivo en una nueva solicitud posterior o aplique rangos a los filtros. Por ejemplo: 

    filterExpression de la primera solicitud: `modifiedAt >= 2022-03-15T05:26:23.000Z and modifiedAt < 2023-03-15T05:26:23.000Z`

    Suponga que esto agota el límite de registro de 10 000.

    Se puede activar otra solicitud con filterExpression: `modifiedAt >= 2023-03-15T05:26:23.000Z`
+ Como comportamiento de SaaS, el operador `CONTAINS` de Kustomer solo admite coincidencias de palabras completas y no coincidencias parciales dentro de una palabra. Por ejemplo: “body CONTAINS 'test record'” coincidirá con un registro que contenga “test” en el campo “body”. Sin embargo, “body CONTAINS 'test'” no coincidirá con un registro que contenga “testAnotherRecord” en el campo “body”.

# Conexión a LinkedIn
<a name="connecting-to-linkedin"></a>

LinkedIn es una herramienta de marketing de pago que ofrece acceso a las redes sociales de LinkedIn a través de diversas publicaciones patrocinadas y otros métodos. LinkedIn es una herramienta de marketing potente para que las empresas B2B generen clientes potenciales, reconocimiento en línea, compartan contenidos y mucho más.

**Topics**
+ [Compatibilidad de AWS Glue con LinkedIn](linkedin-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](linkedin-configuring-iam-permissions.md)
+ [Configuración de LinkedIn](linkedin-configuring.md)
+ [Configuración de conexiones a LinkedIn](linkedin-configuring-connections.md)
+ [Cómo leer de entidades de LinkedIn](linkedin-reading-from-entities.md)
+ [Opción de conexión a LinkedIn](linkedin-connection-options.md)
+ [Cómo crear una cuenta de LinkedIn](linkedin-create-account.md)
+ [Limitaciones](linkedin-connector-limitations.md)

# Compatibilidad de AWS Glue con LinkedIn
<a name="linkedin-support"></a>

AWS Glue es compatible con LinkedIn de la siguiente manera:

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

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

**Versiones de la API de LinkedIn compatibles**  
** 202406 (junio de 2024) **

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 LinkedIn
<a name="linkedin-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde LinkedIn, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="linkedin-configuring-min-requirements"></a>
+ Tener una cuenta de LinkedIn. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de LinkedIn](linkedin-create-account.md). 
+ La cuenta de LinkedIn debe estar habilitada para el acceso a la API. 
+ Haber creado una integración de `OAuth2 API` en la cuenta de LinkedIn. Esta integración proporciona las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Cómo crear una cuenta de LinkedIn](linkedin-create-account.md).

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

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

 LinkedIn admite el tipo de concesión `AUTHORIZATION_CODE` para OAuth2. 

Este tipo de concesión se considera un `OAuth` “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Los usuarios aún pueden optar por crear una aplicación conectada propia en LinkedIn y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá LinkedIn para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

Este tipo de concesión da lugar tanto a un token de actualización como a un token de acceso. El token de acceso caduca 60 días después de su creación. Se puede obtener un nuevo token de acceso mediante el token de actualización.

Para consultar la documentación pública de LinkedIn sobre la creación de una aplicación conectada para el flujo de `Authorization Code OAuth`, consulte [Flujo de código de autorización (OAuth de 3 vías)](https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?toc=%2Flinkedin%2Fmarketing%2Ftoc.json&bc=%2Flinkedin%2Fbreadcrumb%2Ftoc.json&view=li-lms-2024-07&tabs=HTTPS1).

**Configuración de una conexión a LinkedIn**

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles: 
   + En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
   + En el caso de una aplicación conectada administrada por AWS: secreto vacío o un secreto con algún valor temporal.
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

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

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

   1. Proporcione el entorno de LinkedIn.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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 la red. 

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

# Cómo leer de entidades de LinkedIn
<a name="linkedin-reading-from-entities"></a>

**Requisitos previos** 

Un objeto de LinkedIn desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Cuentas de anuncios | Sí | Sí | Sí | Sí | No | 
| Campañas | Sí | Sí | Sí | Sí | No | 
| Grupos de campañas | Sí | Sí | Sí | Sí | No | 
| Creativos | Sí | Sí | Sí | Sí | No | 
| Análisis de anuncios | Sí | No | No | Sí | No | 
| Análisis de anuncios: todas las AdAcocunts | Sí | No | No | Sí | No | 
| Análisis de anuncios: todas las campañas | Sí | No | No | Sí | No | 
| Análisis de anuncios: todos los CampaignGroups | Sí | No | No | Sí | No | 
| Análisis de anuncios: todos los AdCreatives | Sí | No | No | Sí | No | 
| Compartir estadísticas | Sí | No | No | Sí | No | 
| Estadísticas de la página | Sí | No | No | Sí | No | 
| Estadísticas de seguidores | Sí | No | No | Sí | No | 

 **Ejemplo** 

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="linkedin",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "adaccounts",
        "API_VERSION": "202406"
    }
)
```


**Detalles de entidades y campos de LinkedIn**  

|  **Tipo de datos de los campos**  |  **Operadores de filtro admitidos**  | 
| --- | --- | 
|  Cadena  |  =  | 
|  DateTime  |  BETWEEN, =  | 
|  Numérico  |  =  | 
|  Booleano  |  =  | 

# Opción de conexión a LinkedIn
<a name="linkedin-connection-options"></a>

Las siguientes son opciones de conexión para LinkedIn:
+ `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en LinkedIn. Por ejemplo, adAccounts. 
+ `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de LinkedIn que desea usar. El valor será 202406, ya que LinkedIn actualmente solo admite la versión 202406.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desea seleccionar para la entidad seleccionada. 
+ `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. 

# Cómo crear una cuenta de LinkedIn
<a name="linkedin-create-account"></a>

**Cómo crear una aplicación de LinkedIn y credenciales de OAuth**

1. Vaya a la página de la **Red de desarrolladores de LinkedIn** e inicie sesión con las credenciales de la cuenta de LinkedIn. 

1. Vaya a la página **Mis aplicaciones** y elija **Crear aplicación** para crear una nueva aplicación de LinkedIn.

1. Ingrese los siguientes datos en el formulario de registro de la aplicación:
   + **Nombre de la empresa**: seleccione una empresa existente o cree una nueva.
   + **Nombre**: ingrese el nombre de la aplicación.
   + **Descripción**: ingrese la descripción de la aplicación.
   + **Logotipo de la aplicación**: seleccione un archivo de imagen como logotipo de la aplicación.
   + **Uso de la aplicación**: seleccione el uso de la aplicación.
   + **URL del sitio web**: ingrese la URL del sitio web que contiene información detallada sobre la aplicación.
   + **Correo electrónico empresarial**: ingrese la dirección de correo electrónico empresarial.
   + **Teléfono empresarial**: ingrese el número de teléfono empresarial.
   + **Términos de uso de la API de LinkedIn**: lea y acepte.

1. Al completar el formulario de registro de la aplicación, seleccione **Enviar**.

   Se le redirigirá a la página **Autenticación**, donde aparecerán las claves de autenticación (ID de cliente y secreto de cliente) y otros detalles relevantes.

1. Si la aplicación web necesita acceder a la dirección de correo electrónico del usuario desde su cuenta de LinkedIn, seleccione el permiso `r_emailaddress`. Además, puede especificar las URL de redireccionamiento autorizadas para la aplicación de LinkedIn. 

**Cómo crear una página en una cuenta de LinkedIn**

1. Vaya a [Productos de LinkedIn para desarrolladores](https://developer.linkedin.com/).

1. En la esquina superior derecha de la página **Productos de LinkedIn para desarrolladores**, seleccione **Mis aplicaciones**.

1. En la esquina superior derecha de la página **Mis aplicaciones**, seleccione **Crear aplicación**.

1. En la página **Crear una aplicación**, en el campo **Nombre de la aplicación**, ingrese el nombre de la aplicación.

1. En el campo **Página de LinkedIn**, ingrese el nombre o la URL de la página de la empresa.
**nota**  
Si no tiene una página de LinkedIn, puede crear una. Para ello, seleccione **Crear una nueva página de LinkedIn**. 

1. En el campo **URL de la política de privacidad**, ingrese la URL de la política de privacidad.

1. Elija **Cargar un logotipo** para cargar una imagen que se mostrará a los usuarios cuando se autoricen con la aplicación.

1. En la sección **Contrato jurídico**, seleccione **He leído y acepto estos términos**.

1. Seleccione **Crear una aplicación**. 

   Se creará la nueva aplicación, que estará disponible en la pestaña **Mis aplicaciones**.

**Cómo publicar anuncios de campaña en LinkedIn**

1. Inicie sesión en el **Administrador de Campañas**. 

1. Seleccione un **Grupo de campaña** existente, o elija **Crear** para crear uno nuevo.

1. Seleccione el objetivo.

1. Seleccione el grupo, el presupuesto y el horario.

1. Establezca el público objetivo.

1. Seleccione el formato del anuncio.

1. Seleccione el presupuesto y el horario.

1. Configure el anuncio o los anuncios.

1. Revise y lance.

# Limitaciones
<a name="linkedin-connector-limitations"></a>

Para los campos `ad_analytics_all_adAccounts`, `ad_analytics_all_campaigns`, `ad_analytics_all_campaign_groups` y `ad_analytics_all_adCreatives` de Analytics, se necesita un filtro para recuperar los registros.

# Conexión a Mailchimp
<a name="connecting-to-mailchimp"></a>

Mailchimp es una plataforma integral de marketing que ayuda a gestionar los clientes, consumidores y otros interesados, así como a comunicarse con ellos. Su enfoque de marketing se centra en buenas prácticas de administración de contactos, correos electrónicos con un diseño atractivo, flujos de trabajo automatizados únicos y un potente análisis de datos. Si es usuario de Mailchimp, puede conectar AWS Glue a la cuenta de Mailchimp. Tras ello, podrá utilizar Mailchimp como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Mailchimp y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Mailchimp](mailchimp-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](mailchimp-configuring-iam-permissions.md)
+ [Configuración de Mailchimp](mailchimp-configuring.md)
+ [Configuración de las conexiones a Mailchimp](mailchimp-configuring-connections.md)
+ [Lectura de entidades de Mailchimp](mailchimp-reading-from-entities.md)
+ [Opciones de conexión a Mailchimp](mailchimp-connection-options.md)
+ [Creación de una cuenta de Mailchimp](mailchimp-create-account.md)
+ [Limitaciones](mailchimp-connector-limitations.md)

# Compatibilidad de AWS Glue con Mailchimp
<a name="mailchimp-support"></a>

AWS Glue es compatible con Mailchimp de la siguiente manera:

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

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

**Versiones de la API de Mailchimp compatibles**  
 3.0 

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede acceso completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Mailchimp
<a name="mailchimp-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Mailchimp, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="mailchimp-configuring-min-requirements"></a>
+ Tener una cuenta de Mailchimp con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Mailchimp](mailchimp-create-account.md). 
+  Debe tener una cuenta de AWS creada con el servicio de acceso a AWS Glue. 
+ Asegúrese de haber creado uno de los siguientes recursos. Estos recursos proporcionan credenciales que AWS Glue utiliza para acceder a los datos de forma segura al realizar llamadas autenticadas a la cuenta.
  + Una aplicación para desarrolladores que admite la autenticación OAuth 2.0. Para obtener más información sobre cómo crear una aplicación para desarrolladores, consulte [Creación de una cuenta de Mailchimp](mailchimp-create-account.md). 

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Mailchimp. Si es una conexión típica, no necesita hacer nada más en Mailchimp.

# Configuración de las conexiones a Mailchimp
<a name="mailchimp-configuring-connections"></a>

 Mailchimp admite los siguientes dos tipos de mecanismos de autenticación: 
+ Mailchimp admite el tipo de concesión `AUTHORIZATION_CODE`.
  + Este tipo de concesión se considera un `OAuth` de “tres patas”, ya que depende de redirigir a los usuarios al servidor de autorización de terceros para autenticarlos. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, confiar en una aplicación conectada propiedad de AWS Glue, en la que no necesita proporcionar ninguna información relacionada con `OAuth`, excepto su ID de cliente y secreto de cliente de Mailchimp. La consola de AWS Glue redirigirá al usuario a Mailchimp, donde deberá iniciar sesión y conceder a AWS Gluelos permisos solicitados para acceder a su instancia de Mailchimp.
  + Los usuarios aún pueden optar por crear su propia aplicación conectada en Mailchimp y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Mailchimp para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
  + Para ver la documentación pública de Mailchimp sobre la creación de una aplicación conectada para el flujo `AUTHORIZATION_CODE OAuth`, consulte [ Access Data on Behalf of Other Users with OAuth 2 ](https://mailchimp.com/developer/marketing/guides/access-user-data-oauth-2/?msockid=141ebf9ffb4d619525c3ad27fad660d6). 
+ **Autenticación personalizada**: para consultar la documentación pública de Mailchimp sobre cómo generar las claves de API necesarias para la autorización personalizada, consulte [ About API Keys](https://mailchimp.com/en/help/about-api-keys/?msockid=310fd0fe09d16afe034fc5de08d76b01). 



Para configurar una conexión a Mailchimp:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 
   + Autenticación `OAuth`: en el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del cliente de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave. 
   + Autenticación personalizada: en el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del cliente de la aplicación conectada con “api\$1key” como clave. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

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

   1. En **Conexiones**, elija **Crear conexión**. 

   1. Al seleccionar un **Origen de datos**, elija Mailchimp.

   1. Proporcione la `instanceUrl` de Mailchimp.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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 tipo de autenticación para conectarse a Mailchimp:
      + En el caso de la autenticación `OAuth`: proporcione la URL del token, el ID de cliente de la aplicación cliente administrada por el usuario del Mailchimp al que se desea conectar.
      + En el caso de la autenticación personalizada, seleccione el tipo de autenticación PERSONALIZADA para conectarse a Mailchimp.

   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`. 

1. En la configuración del trabajo de AWS Glue, proporcione `connectionName` como una conexión de red adicional.

# Lectura de entidades de Mailchimp
<a name="mailchimp-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de Mailchimp desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 
+ [Informes de abuso ](https://mailchimp.com/developer/marketing/api/campaign-abuse/)
+ [Automation](https://mailchimp.com/developer/marketing/api/automation/list-automations/)
+ [Campañas de](https://mailchimp.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Detalles de los clics](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Listas](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Miembros](https://mailchimp.com/developer/marketing/api/list-segment-members/)
+ [Detalles de aperturas](https://mailchimp.com/developer/marketing/api/list-members/)
+ [Segmentos](https://mailchimp.com/developer/marketing/api/list-segments/)
+ [Almacenes](https://mailchimp.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Cancelación de suscripción](https://mailchimp.com/developer/marketing/api/unsub-reports/)


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Automatización | Sí | Sí | Sí | Sí | Sí | 
| Campaigns (Campañas) | No | No | No | No | No | 
| Listas | Sí | Sí | No | Sí | Sí | 
| Informa abuso | No | Sí | No | Sí | Sí | 
| Informa aperturas | No | Sí | No | Sí | Sí | 
| Informa clics | Sí | Sí | No | Sí | Sí | 
| Informa cancelaciones de suscripciones | No | Sí | No | Sí | Sí | 
| Segmento | No | Sí | No | Sí | Sí | 
| Segmentar miembros | Sí | Sí | No | Sí | No | 
| Almacenes | Sí | Sí | Sí | Sí | No | 

 **Ejemplo** 

```
mailchimp_read = glueContext.create_dynamic_frame.from_options(                    
            connection_type="mailchimp",                                           
            connection_options={                                                        
                  "connectionName": "connectionName",                                   
                  "ENTITY_NAME": "stores",  
"INSTANCE_URL": "https://us14.api.mailchimp.com",                     
                  "API_VERSION": "3.0"                                                
               })
```

 **Detalles de entidades y campos de Mailchimp** 
+ [Informes de abuso ](https://mailchimp.com/developer/marketing/api/campaign-abuse/)
+ [Automation](https://mailchimp.com/developer/marketing/api/automation/list-automations/)
+ [Campañas de](https://mailchimp.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Detalles de los clics](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Listas](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Miembros](https://mailchimp.com/developer/marketing/api/list-segment-members/)
+ [Detalles de aperturas](https://mailchimp.com/developer/marketing/api/list-members/)
+ [Segmentos](https://mailchimp.com/developer/marketing/api/list-segments/)
+ [Almacenes](https://mailchimp.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Cancelación de suscripción](https://mailchimp.com/developer/marketing/api/unsub-reports/)

## Consultas de particionamiento
<a name="mailchimp-engage-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo DateTime, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

En la tabla siguiente, se describen los detalles de compatibilidad de campos de particiones de entidades:

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

Ejemplo:

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="mailchimp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "automations",
        "API_VERSION": "3.0",
        "INSTANCE_URL": "https://us14.api.mailchimp.com",
        "PARTITION_FIELD": "create_time",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```

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

Existen las siguientes opciones para establecer conexión con Mailchimp:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Mailchimp. 
+ `INSTANCE_URL`(cadena): (obligatorio) una URL de instancia de Mailchimp válida.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Mailchimp Engage que desea utilizar. Por ejemplo: 3.0.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Creación de una cuenta de Mailchimp
<a name="mailchimp-create-account"></a>

1. Vaya a la [página de inicio de sesión de Mailchimp](https://login.mailchimp.com/?locale=en), ingrese la dirección de correo electrónico y la contraseña y, a continuación, elija **Iniciar sesión**.

1. Abra el correo electrónico de confirmación de Mailchimp y seleccione el enlace de confirmación para verificar la cuenta.
**nota**  
El tiempo de recepción del correo electrónico de activación puede variar. Si no ha recibido el correo electrónico de activación, revise la carpeta de correo no deseado y lea nuestros consejos para solucionar problemas relacionados con el correo electrónico de activación. Mailchimp bloquea los registros desde direcciones de correo electrónico basadas en roles, como [admin@pottedplanter.com](mailto:admin@pottedplanter.com) o [security@example.com](mailto:security@example.com).  


   La primera vez que inicie sesión en la cuenta, Mailchimp solicitará la información requerida. Mailchimp utiliza esta información para ayudar a garantizar que la cuenta cumple con sus Términos de uso y para proporcionar orientación que le resulte relevante y que responda a las necesidades de la empresa.

1. Ingrese la información, siga las peticiones para finalizar el proceso de activación y comience a utilizar su nueva cuenta de Mailchimp.

**Cómo registrar una aplicación de `OAuth2.0`**

1. Vaya a la [página de inicio de sesión de Mailchimp](https://login.mailchimp.com/?locale=en), ingrese la dirección de correo electrónico y la contraseña y, a continuación, elija **Iniciar sesión**. 

1. Seleccione el icono **Usuario** en la esquina superior derecha y, a continuación, elija **Cuenta y facturación** en el menú desplegable.

1. Seleccione **Extras** y elija **Aplicaciones registradas** en el menú desplegable.

1. Busque la opción **Registrar una aplicación** y selecciónela.

1. Escriba la información siguiente:
   + **Nombre de la aplicación**: nombre de la aplicación. 
   + **Empresa/organización**: nombre de la empresa u organización.
   + **Sitio web de la aplicación**: sitio web de la aplicación.
   + **URI de redireccionamiento**: un patrón de URI de redireccionamiento es una ruta de URI (o una lista de rutas separadas por comas) a la que Mailchimp puede redirigir (si se solicita) cuando finaliza el flujo de inicio de sesión. Por ejemplo: ., `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Seleccione **Crear**. 

1. Ahora aparecerán el **ID de cliente** y el **secreto de cliente**. Cópielos y guárdelos en un lugar seguro. A continuación, seleccione **Listo**. 
**nota**  
Las cadenas de ID de cliente y secreto de cliente son las credenciales utilizadas para establecer una conexión con este conector cuando se utiliza AppFlow o AWS Glue.

**Cómo generar una clave de API**

1. Vaya a la [página de inicio de sesión de Mailchimp](https://login.mailchimp.com/?locale=en), ingrese la dirección de correo electrónico y la contraseña y, a continuación, elija **Iniciar sesión**. 

1. Seleccione el icono **Usuario** en la esquina superior derecha y, a continuación, elija **Cuenta y facturación** en el menú desplegable.

1. Seleccione **Extras** y elija **Claves de API** en el menú desplegable.

1. Elija **Crear una clave**.

1. Ingrese un nombre para la clave y elija **Generar clave**.

   En la siguiente página, aparecerá la clave de API generada. 

1. Copia la clave, guárdala de forma segura y seleccione **Listo**.

# Limitaciones
<a name="mailchimp-connector-limitations"></a>

El conector de Mailchimp presenta las siguientes limitaciones:
+ La filtración solo es compatible con las entidades `Campaigns`, `Automations`, `Lists`, `Open Details`, `Members` y `Segments`.
+ Al utilizar un filtro en un campo de tipo de datos `DateTime`, los valores se deben transmitir en este formato: `yyyy-mm-ddThh:MM:ssZ`

# Conexión con Microsoft Dynamics 365 CRM
<a name="connecting-to-microsoft-dynamics-365"></a>

 Microsoft Dynamics 365 es una línea de productos de aplicaciones empresariales inteligentes para la planificación de recursos empresariales y administración de relaciones con los clientes. 

**Topics**
+ [Compatibilidad de AWS Glue con Microsoft Dynamics 365](microsoft-dynamics-365-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](microsoft-dynamics-365-configuring-iam-permissions.md)
+ [Configuración de Microsoft Dynamics 365 CRM](microsoft-dynamics-365-configuring.md)
+ [Configuración de conexiones con Microsoft Dynamics 365 CRM](microsoft-dynamics-365-configuring-connections.md)
+ [Lectura de entidades de Microsoft Dynamics 365 CRM](microsoft-dynamics-365-reading-from-entities.md)
+ [Referencia de opciones de conexión de Microsoft Dynamics 365 CRM](microsoft-dynamics-365-connection-options.md)
+ [Limitaciones](microsoft-dynamics-365-connector-limitations.md)

# Compatibilidad de AWS Glue con Microsoft Dynamics 365
<a name="microsoft-dynamics-365-support"></a>

AWS Glue es compatible con Microsoft Dynamics 365 de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Microsoft Dynamics 365.

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

**Versiones de API de Microsoft Dynamics 365 CRM compatibles**  
 v9.2. 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-configuring"></a>

Antes de poder usar AWS Glue para transferir datos desde Microsoft Dynamics 365 CRM, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="microsoft-dynamics-365-configuring-min-requirements"></a>
+  Tiene una cuenta de desarrollador de Microsoft Dynamics 365 CRM con un ID y un secreto de cliente. 
+  Su cuenta de Microsoft Dynamics 365 CRM tiene acceso a la API con una licencia válida. 

 Si cumple estos requisitos, podrá conectar AWS Glue a la cuenta de Microsoft Dynamics 365 CRM. Si se trata de una conexión típica, no necesita hacer nada más en Microsoft Dynamics 365 CRM. 

# Configuración de conexiones con Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-configuring-connections"></a>

 **Tipo de concesión AUTHORIZATION\$1CODE** 
+  Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Microsoft Dynamics 365 CRM, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Microsoft Dynamics 365 CRM. 
+  Los usuarios pueden optar por crear una aplicación conectada propia en Microsoft Dynamics 365 CRM y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se les redirigirá a Microsoft Dynamics 365 CRM para iniciar sesión y autorizar a AWS Glue a que acceda a los recursos. 
+  Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 
+  Para consultar la documentación pública de Microsoft Dynamics 365 CRM sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte \$1 Microsoft Learn. [Registro de aplicaciones de Microsoft](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/authenticate-oauth#app-registration). 

Microsoft Dynamics 365 CRM admite la autenticación OAuth2.0.

Para configurar una conexión a Microsoft Dynamics 365 CRM, haga lo siguiente:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 
   +  Para el tipo de concesión AuthorizationCode: 

      En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del cliente de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave. 

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

   1. Al seleccionar un **Origen de datos**, seleccione Microsoft Dynamics 365 CRM.

   1. Seleccione **INSTANCE\$1URL** de la instancia de Microsoft Dynamics 365 CRM a la que quiere conectarse.

   1.  Seleccione el rol de 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 **URL del token** y **URL del código de autorización** para acceder a su espacio de trabajo de Microsoft Dynamics 365 CRM. 

   1.  Proporcione el **ID de cliente de la aplicación cliente administrada por el usuario** de la aplicación Microsoft Dynamics 365 CRM. 

   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`. Elija **Siguiente**. 

1.  En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**. 

# Lectura de entidades de Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Microsoft Dynamics 365 CRM desde el que desea leer. Necesitará el nombre del objeto, como contactos o cuentas. En la siguiente tabla se muestran las entidades admitidas. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Entidad dinámica | Sí | Sí | Sí | Sí | Sí | 

 **Ejemplo** 

```
dynamics365_read = glueContext.create_dynamic_frame.from_options(
    connection_type="microsoftdynamics365crm",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dynamic_entity",
        "API_VERSION": "v9.2",
        "INSTANCE_URL": "https://{tenantID}.api.crm.dynamics.com"
    }
```

## Detalles de entidades y campos de Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-entity-and-field-details"></a>

 **Entidades con metadatos dinámicos:** 

Microsoft Dynamics 365 CRM proporciona puntos de conexión para obtener metadatos de forma dinámica. Por lo tanto, para las entidades dinámicas, la compatibilidad del operador se captura según el tipo de datos.

<a name="microsoft-dynamics-365-metadata-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/microsoft-dynamics-365-reading-from-entities.html)

 **Consultas de partición** 

Microsoft Dynamics 365 CRM solo admite la partición basada en campos.

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   En DateTime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-01-30T06:47:51.000Z"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se muestran en la siguiente tabla: 


| Nombre de la entidad | Campos de partición | DataType | 
| --- | --- | --- | 
| Entidad dinámica (entidad estándar) | Campos de DateTime dinámicos que se pueden consultar | createdon, modifiedon | 
| Entidad dinámica (entidad personalizada) | createdon, modifiedon | createdon, modifiedon | 

 **Ejemplo** 

```
dynamics365_read = glueContext.create_dynamic_frame.from_options(
    connection_type="microsoftdynamics365crm",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dynamic_entity",
        "API_VERSION": "v9.2",
        "instanceUrl": "https://{tenantID}.api.crm.dynamics.com"
        "PARTITION_FIELD": "createdon"
        "LOWER_BOUND": "2024-01-30T06:47:51.000Z"
        "UPPER_BOUND": "2024-06-30T06:47:51.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Referencia de opciones de conexión de Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Microsoft Dynamics 365 CRM:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de su objeto en Microsoft Dynamics 365 CRM. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Microsoft Dynamics 365 CRM que desea utilizar. 
+  `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 Microsoft Dynamics 365 CRM válida con el formato: `https://{tenantID}.api.crm.dynamics.com` 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. Ejemplo: `2024-01-30T06:47:51.000Z`. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. Ejemplo: `2024-06-30T06:47:51.000Z`. 

# Limitaciones
<a name="microsoft-dynamics-365-connector-limitations"></a>

El conector de Microsoft Dynamics 365 CRM presenta las siguientes limitaciones:
+  En Microsoft Dynamics 365 CRM, no se admite la partición basada en registros, ya que no admite un parámetro de compensación. 
+  La paginación se establece en un máximo de 500 registros por página para evitar excepciones del servidor interno de SaaS debido a una combinación de limitaciones de tamaño y velocidad de los datos. 
  + [Documentación de SaaS sobre paginación](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query/page-results?view=dataverse-latest)
  + [Documentación de SaaS sobre límites de tasas](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits?tabs=sdk)
+  Microsoft Dynamics 365 CRM solo admite `order by` en los campos principales de todas las entidades. `order by` no se admite en los subcampos. 
  + Se admiten las direcciones ASC y DESC.
  + `order by` se admite en varios campos.
+  Al filtrar en el campo “createddatetime” de la entidad `aadusers` estándar, se produce un error de solicitud incorrecta desde SaaS, aunque admite la filtración. No se identificó ninguna otra entidad que tenga un problema similar debido a la naturaleza dinámica de los metadatos y tampoco se conoce la causa raíz. Por lo tanto, no se puede solucionar. 
+  Los tipos de objetos complejos, como Struct, List y Map, no admiten la filtración. 
+  Muchos campos que se pueden recuperar de una respuesta tienen `isRetrievable` marcado como `false` en las respuestas de metadatos dinámicas. Para evitar la pérdida de datos, `isRetrievable` está configurado en `true` para todos los campos. 
+  Todas las entidades admiten la partición basada en campos cuando cumplen con los siguientes criterios: 
  + Los campos consultables de DateTime deben estar presentes en las entidades estándar o en los campos `createdon` y `modifiedon` (generados por el sistema) en las entidades personalizadas. 
  + No existe una identificación exclusiva de los campos generados por el sistema ni de la propiedad anulable de ninguna API de metadatos de SaaS; sin embargo, es una práctica general que solo los campos disponibles de forma predeterminada sean filtrables y no anulables. Por lo tanto, el criterio anterior de selección de campos se considera seguro frente a valores nulos y, si es filtrable, es elegible para la partición.

# Conexión a Microsoft Teams
<a name="connecting-to-microsoft-teams"></a>

 Microsoft Teams es un espacio de trabajo colaborativo dentro de Microsoft 365 que funciona como un centro para conversaciones laborales, trabajo en equipo, videollamadas y uso compartido de documentos, todo diseñado para mejorar la productividad con un conjunto unificado de herramientas. 

**Topics**
+ [Compatibilidad de AWS Glue con Microsoft Teams](microsoft-teams-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](microsoft-teams-configuring-iam-permissions.md)
+ [Configuración de Microsoft Teams](microsoft-teams-configuring.md)
+ [Configuración de las conexiones de Microsoft Teams](microsoft-teams-configuring-connections.md)
+ [Lectura de entidades de Microsoft Teams](microsoft-teams-reading-from-entities.md)
+ [Referencia de opciones de conexión de Microsoft Teams](microsoft-teams-connection-options.md)
+ [Limitaciones](microsoft-teams-connector-limitations.md)
+ [Cómo crear una nueva cuenta de Microsoft Teams:](#microsoft-teams-account-creation)

# Compatibilidad de AWS Glue con Microsoft Teams
<a name="microsoft-teams-support"></a>

AWS Glue es compatible con Microsoft Teams de la siguiente manera:

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

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

**Versiones de la API de Microsoft Teams compatibles**  
 v1. Para conocer la compatibilidad de entidades por versión específica, consulte Entidades compatibles para el origen. 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Microsoft Teams
<a name="microsoft-teams-configuring"></a>

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

## Requisitos mínimos
<a name="microsoft-teams-configuring-min-requirements"></a>
+  Tener una cuenta de desarrollador de Microsoft Teams con correo electrónico y contraseña. Para obtener más información, consulte [Cómo crear una nueva cuenta de Microsoft Teams:](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 
+  Haber configurado una aplicación OAuth2 en la cuenta de Microsoft que proporcione las credenciales de ID y secreto de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Cómo crear una nueva cuenta de Microsoft Teams:](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Microsoft Teams. Si se trata de una conexión típica, no necesita hacer nada más en Microsoft Teams. 

# Configuración de las conexiones de Microsoft Teams
<a name="microsoft-teams-configuring-connections"></a>

Microsoft Teams admite los siguientes dos tipos de mecanismos de autenticación:

1.  Autenticación OAuth: Microsoft Teams admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2. 
   +  Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, confiar en una aplicación conectada propiedad de AWS Glue en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de la instancia de Microsoft Teams. La consola de AWS Glue redirigirá al usuario a Microsoft Teams, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Microsoft Teams. 
   +  Los usuarios aún pueden optar por crear una aplicación conectada propia en Microsoft Teams y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún serán redirigidos a Microsoft Teams para iniciar sesión y autorizar a AWS Glue para que acceda a los recursos. 
   +  Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso permanecerá válido durante una hora y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 
   +  Para consultar la documentación pública de Microsoft Teams sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte \$1 Microsoft Learn. [Registre una aplicación en la plataforma de identidades de Microsoft: Microsoft Graph](https://learn.microsoft.com/en-us/graph/auth-register-app-v2). 

Para configurar una conexión a Microsoft Teams:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para la autenticación OAuth: 
      +  En el caso de aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET como clave. 

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

   1.  En Conexiones de datos, elija **Crear conexión**. 

   1. Al seleccionar un **Origen de datos**, seleccione Microsoft Teams.

   1. Proporcione el **ID de inquilino** de Microsoft Teams.

   1.  Seleccione el rol de 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.  Proporcione el ID de cliente de la aplicación cliente administrada por el usuario de la aplicación Microsoft Teams. 

   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`. Elija **Siguiente**. 

1.  En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**. 

# Lectura de entidades de Microsoft Teams
<a name="microsoft-teams-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Microsoft Teams desde el que desea leer. Necesitará el nombre del objeto, como equipo o channel-message. En la siguiente tabla se muestran las entidades admitidas. 

 **Entidades admitidas para el origen** 

 Todas las entidades se admiten con la versión 1.0 de la API. 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Equipos | No | No | No | Sí | No | 
| Miembros del equipo | Sí | Sí | No | Sí | Sí | 
| Grupos | Sí | Sí | Sí | Sí | Sí | 
| Miembro del grupo | Sí | Sí | No | Sí | No | 
| Canales | Sí | No | No | Sí | Sí | 
| Mensaje del canal | No | Sí | No | Sí | No | 
| Respuestas a los mensajes del canal | No | Sí | No | Sí | No | 
| Pestañas de canales | Sí | No | No | Sí | No | 
| Chats | Sí | Sí | Sí | Sí | Sí | 
| Eventos del calendario | Sí | Sí | Sí | Sí | Sí | 

 **Ejemplo** 

```
MicrosoftTeams_read = glueContext.create_dynamic_frame.from_options(
    connection_type="MicrosoftTeams",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "v1.0"
    }
```

## Detalles de entidades y campos de Microsoft Teams
<a name="microsoft-teams-entity-and-field-details"></a>

 Lista de entidades: 
+  Equipo: [ https://docs.microsoft.com/en-us/graph/api/user-list-joinedteams?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/user-list-joinedteams?view=graph-rest-1.0) 
+  Miembro del equipo: [ https://docs.microsoft.com/en-us/graph/api/team-list-members?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/team-list-members?view=graph-rest-1.0) 
+  Grupo: [ https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0) 
+  Miembro del grupo: [ https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0) 
+  Canal: [ https://docs.microsoft.com/en-us/graph/api/channel-list?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/channel-list?view=graph-rest-1.0) 
+  Mensaje del canal: [ https://docs.microsoft.com/en-us/graph/api/channel-list-messages?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/channel-list-messages?view=graph-rest-1.0) 
+  Respuesta a mensaje del canal: [ https://docs.microsoft.com/en-us/graph/api/chatmessage-list-replies?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/chatmessage-list-replies?view=graph-rest-1.0) 
+  Pestaña del canal: [ https://docs.microsoft.com/en-us/graph/api/channel-list-tabs?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/channel-list-tabs?view=graph-rest-1.0) 
+  Chat: [ https://docs.microsoft.com/en-us/graph/api/chat-list?view=graph-rest-1.0 ]( https://docs.microsoft.com/en-us/graph/api/chat-list?view=graph-rest-1.0) 
+  Evento del calendario: [ https://docs.microsoft.com/en-us/graph/api/group-list-events?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/group-list-events?view=graph-rest-1.0) 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se muestran en la siguiente tabla: 


| Nombre de la entidad | Campos de partición | Tipo de datos | 
| --- | --- | --- | 
| Miembros del equipo | visibleHistoryStartDateTime | DateTime | 
| Grupos | createdDateTime | DateTime | 
| Canales | createdDateTime | DateTime | 
| Chats | createdDateTime, lastModifiedDateTime | DateTime | 
| Eventos del calendario | createdDateTime, lastModifiedDateTime, originalStart | DateTime | 

 **Ejemplo** 

```
microsoftteams_read = glueContext.create_dynamic_frame.from_options(
    connection_type="MicrosoftTeams",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "group",
        "API_VERSION": "v1.0",
        "PARTITION_FIELD": "createdDateTime"
        "LOWER_BOUND": "2022-07-13T07:55:27.065Z"
        "UPPER_BOUND": "2022-08-12T07:55:27.065Z"
        "NUM_PARTITIONS": "2"
    }
```

# Referencia de opciones de conexión de Microsoft Teams
<a name="microsoft-teams-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Microsoft Teams:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Microsoft Teams. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Microsoft Teams que desea utilizar. Ejemplo: v1.0. 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Limitaciones
<a name="microsoft-teams-connector-limitations"></a>

El conector de Microsoft Teams presenta las siguientes limitaciones:
+  La API de Microsoft Teams devuelve una cantidad de registros inferior a la especificada para las entidades de chat y miembros del equipo. Se ha informado de este problema a Microsoft Teams Support y está en proceso de investigación. 

## Cómo crear una nueva cuenta de Microsoft Teams:
<a name="microsoft-teams-account-creation"></a>

1.  Vaya a la página de inicio de Microsoft Teams, [https://account.microsoft.com/account/](https://account.microsoft.com/account/), y elija **Iniciar sesión**. 

1.  Elija **Crear una**. 

1.  Ingrese la información requerida para la creación de la cuenta y cree una nueva cuenta. 

1.  Vaya al sitio web de Microsoft Teams: [https://www.microsoft.com/en-in/microsoft-teams/log-in](https://www.microsoft.com/en-in/microsoft-teams/log-in). 

1.  Regístrese con la cuenta de Microsoft que acaba de crear. 

1.  Después de registrarse correctamente en Teams, vaya a [https://account.microsft.com/services](https://account.microsft.com/services). 

1.  Elija **Probar Microsoft 365**. 

1.  Active una de las siguientes suscripciones de Microsoft 365 o Microsoft Teams para acceder a todas las características necesarias del conector de Microsoft Teams: 
   + Microsoft Teams Essentials
   + Microsoft 365 Business
   + Microsoft 365 Business Basic
   + Microsoft 365 Business Standard
   + Microsoft 365 Business Premium

**Cómo crear una aplicación cliente administrada:**

1.  Para crear una aplicación administrada, debe registrar una nueva aplicación OAuth en Microsoft Entra (anteriormente Azure Active Directory): 

1.  Inicie sesión en el [Centro de administración de Microsoft Entra](https://entra.microsoft.com). 

1.  Si tiene acceso a varios inquilinos, utilice el icono de Configuración en el menú superior para cambiar al inquilino en el que desea registrar la aplicación desde el menú Directorios \$1 suscripciones. 

1.  Vaya a Identidad > Aplicaciones > Registros de aplicaciones y seleccione **Nuevo registro**. 

1. Ingrese un Nombre de visualización para la aplicación.

1.  Especifique quién puede usar la aplicación en la sección Tipos de cuenta admitidos. Para que esta aplicación sea global, seleccione “Cuentas en cualquier directorio organizacional” o “Cuentas en cualquier directorio organizacional y cuentas personales de Microsoft”. 

1.  Ingrese el URI de redirección `https://{region}.console.aws.amazon.com/appflow/oauth`. Por ejemplo, en el caso de `us-west-2 region`, agregue `https://us-west-2.console.aws.amazon.com/appflow/oauth`. Puede agregar varias URL para las diferentes regiones que desea utilizar.

1.  Registre la aplicación. 

1.  Anote el ID de cliente para usarlo más adelante. 

1.  Seleccione **Agregar un certificado o secreto** en la sección Esenciales. 

1.  Seleccione **Nuevo secreto de cliente**. 

1.  Ingrese la descripción y la duración del vencimiento. 

1.  Copie y guarde el secreto de cliente para usarlo después. 

1.  En la lista del menú lateral izquierdo, seleccione **Permisos de API**. 

1.  Elija **Agregar un permiso**. 

1.  Seleccione “Microsoft Graph”. 

1.  Seleccione “Permisos delegados”. 

1.  Marque todos los permisos que aparecen a continuación: 
   + User.Read
   + Offline\$1access
   + User.Read.All
   + User.ReadWrite.All
   + TeamsTab.ReadWriteForTeam
   + TeamsTab.ReadWriteForChat
   + TeamsTab.ReadWrite.All
   + TeamsTab.Read.All
   + TeamSettings.ReadWrite.All
   + TeamSettings.Read.All
   + TeamMember.ReadWrite.All
   + TeamMember.Read.All
   + Team.ReadBasic.All
   + GroupMember.ReadWrite.All
   + GroupMember.Read.All
   + Group.ReadWrite.All
   + Group.Read.All
   + Directory.ReadWrite.All
   + Directory.Read.All
   + Directory.AccessAsUser.All
   + Chat.ReadWrite
   + Chat.ReadBasic
   + Chat.Read
   + ChannelSettings.ReadWrite.All
   + ChannelSettings.Read.All
   + ChannelMessage.Read.All
   + Channel.ReadBasic.All

1.  Elija **Añadir permisos**. La aplicación se ha configurado correctamente. Puede utilizar el ID de cliente y el secreto de cliente para crear una nueva conexión. Para obtener más información, consulte [https://learn.microsoft.com/en-us/graph/auth-register-app-v2](https://learn.microsoft.com/en-us/graph/auth-register-app-v2). 

# Conexión a Mixpanel
<a name="connecting-to-mixpanel"></a>

Mixpanel es una potente plataforma de análisis en tiempo real que ayuda a las empresas a medir y optimizar la interacción con los usuarios. Mixpanel es una aplicación que se utiliza para realizar un seguimiento del comportamiento de los clientes. Permite realizar un seguimiento de cómo los usuarios interactúan con el producto, así como analizar estos datos a través de informes interactivos con los que se pueden consultar y visualizar los resultados con tan solo unos clics. Como usuario de Mixpanel, puede conectar AWS Glue a la cuenta de Mixpanel. A continuación, puede utilizar Mixpanel como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Mixpanel y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Mixpanel](Mixpanel-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](mixpanel-configuring-iam-permissions.md)
+ [Configuración de Mixpanel](mixpanel-configuring.md)
+ [Configuración de las conexiones a Mixpanel](mixpanel-configuring-connections.md)
+ [Cómo leer de entidades de Mixpanel](mixpanel-reading-from-entities.md)
+ [Opciones de conexión a Mixpanel](mixpanel-connection-options.md)
+ [Creación de una cuenta de Mixpanel y configuración de la aplicación cliente](mixpanel-create-account.md)
+ [Limitaciones](mixpanel-connector-limitations.md)

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

AWS Glue admite Mixpanel de la siguiente manera:

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

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

**Versiones de la API de Mixpanel compatibles**  
 2.0 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Mixpanel
<a name="mixpanel-configuring"></a>

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

## Requisitos mínimos
<a name="mixpanel-configuring-min-requirements"></a>
+  Tener una cuenta de Mixpanel. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Mixpanel](mixpanel-create-account.md). 
+  La cuenta de Mixpanel debe estar habilitada para el acceso a la API. El acceso a la API está habilitado de forma predeterminada para las ediciones Enterprise, Unlimited, Developer y Performance. 

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

# Configuración de las conexiones a Mixpanel
<a name="mixpanel-configuring-connections"></a>

Mixpanel admite nombre de usuario y contraseña para `BasicAuth`. La autenticación básica es un método de autenticación simple en el que los clientes proporcionan credenciales directamente para acceder a los recursos protegidos. AWS Glue puede utilizar el nombre de usuario y la contraseña para autenticar las API de Mixpanel. 

Para consultar la documentación pública de Mixpanel sobre el flujo `BasicAuth`, consulte [Cuentas de servicio de Mixpanel](https://developer.mixpanel.com/reference/service-accounts). 

Para configurar una conexión a Mixpanel:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 
   +  Para la autenticación básica, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USERNAME` y `PASSWORD` como clave. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

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

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

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

   1. Seleccione el rol de 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 **Opciones de red** si quiere usar la red. 

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

# Cómo leer de entidades de Mixpanel
<a name="mixpanel-reading-from-entities"></a>

 **Requisitos previos** 

Debe tener un objeto de Mixpanel, como `Funnels`, `Retention` o `Retention Funnels`, del que desee leer datos. Además, necesitará conocer el nombre del objeto.

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Embudos | Sí | No | No | Sí | No | 
| Retención | Sí | No | No | Sí | No | 
| Segmentación | Sí | No | No | Sí | No | 
| Suma de segmentación | Sí | No | No | Sí | No | 
| Promedio de segmentación | Sí | No | No | Sí | No | 
| Cohortes | Sí | No | No | Sí | No | 
| Uso de | No | Sí | No | Sí | No | 
| Events | Sí | No | No | Sí | No | 
| Eventos principales | Sí | No | No | Sí | No | 
| Nombres de eventos | Sí | No | No | Sí | No | 
| Propiedades de eventos | Sí | No | No | Sí | No | 
| Principales propiedades de eventos | Sí | No | No | Sí | No | 
| Valores de propiedades de eventos | Sí | No | No | Sí | No | 
| Anotaciones | Sí | No | No | Sí | No | 
| Actividad de evento de perfil | Sí | No | No | Sí | No | 

 **Ejemplo** 

```
mixpanel_read = glueContext.create_dynamic_frame.from_options(
    connection_type="mixpanel",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/cohorts/list?project_id=2603353",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://www.mixpanel.com/api/app/me"
    }
```

 **Detalles de entidades y campos de Mixpanel** 

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

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

Las siguientes son opciones de conexión para Mixpanel:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Mixpanel. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de Rest de Mixpanel que desea usar. Por ejemplo, v2.0. 
+  `SELECTED_FIELDS`(lista<Cadena>): predeterminado: vacío (SELECTO \$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. 

# Creación de una cuenta de Mixpanel y configuración de la aplicación cliente
<a name="mixpanel-create-account"></a>

**Creación de una cuenta de Mixpanel**

1. Vaya a la [Página de inicio de Mixpanel/](https://mixpanel.com/). 

1. En la página de inicio de **Mixpanel**, elija **Registrarse** en la esquina superior derecha de la página. 

1. En la página **Comencemos**, realice las siguientes acciones: 
   + Ingrese su dirección de correo electrónico en el campo designado.
   + Seleccione la casilla necesaria para aceptar las condiciones.
   + Elija **Comenzar** para continuar.

     Al finalizar con éxito, recibirá un correo electrónico de verificación. 

1. Revise su bandeja de entrada para encontrar un correo de verificación, ábralo y siga las instrucciones proporcionadas para confirmar su dirección de correo electrónico. 

1. En la página de verificación, elija **Verificar correo electrónico** para completar la verificación del correo electrónico. 

1. En la página **Asigne un nombre a la organización**, ingrese el nombre de la organización y elija **Siguiente**. 

1. En la página **Su primer proyecto**, ingrese los detalles del proyecto y seleccione **Crear**.

1. En la página siguiente, elija **Comencemos** para terminar de crear la cuenta. 

**Inicio de sesión en una cuenta de Mixpanel**

1. Vaya a la [Página de inicio de sesión de Mixpanel/](https://mixpanel.com/login/). 

1. Ingrese la dirección de correo electrónico y elija **Continuar**. 

1. Revise su bandeja de entrada para encontrar un correo de verificación, ábralo y siga las instrucciones proporcionadas para confirmar su dirección de correo electrónico. 

1. En la página siguiente, elija **el botón Iniciar sesión** para iniciar sesión en la cuenta. 

**Cómo adquirir un plan de Mixpanel**

1. En la página de Mixpanel, seleccione el icono **Configuración** que se encuentra en la esquina superior derecha de la página.

1. En la lista de opciones, seleccione **Detalles del plan y facturación**. 

1. En la página **Detalles del plan y facturación**, seleccione **Actualizar o Modificar**.

1. En la página siguiente, seleccione el plan que desee comprar.

   Con esto se completa el proceso de creación de la cuenta y de adquisición del plan.

**Creación de un nombre de usuario y un secreto de cliente (para registrar la aplicación)**

1. En la página de Mixpanel, seleccione el icono **Configuración** que se encuentra en la esquina superior derecha de la página. 

1. En la lista de opciones, seleccione **Configuración del proyecto**. 

1. En la página **Configuración del proyecto**, seleccione **Cuentas de servicio** y, a continuación, **Agregar cuenta de servicio**.

1. En la lista desplegable **Cuenta de servicio**, seleccione la **Cuenta de servicio o ingrese el nombre que desea crear**, agregue el **Rol del proyecto**, especifique los **vencimientos** y seleccione **Agregar**. 
**importante**  
Una vez completado el paso anterior, aparecerá la siguiente página con la clave secreta de la cuenta de servicio. Asegúrese de guardar la clave secreta de la cuenta de servicio. No podrá volver a acceder a esta después de este punto.

# Limitaciones
<a name="mixpanel-connector-limitations"></a>

Las siguientes son limitaciones para el conector de Mixpanel:
+ En el caso de la entidad `Segmentation Numeric`, la API de Mixpanel arroja un error `400 (Bad Request)` si no se encuentran datos numéricos para los filtros obligatorios. Tratamos esto como una respuesta `OK` para evitar una falla en el flujo.
+ El campo que se puede consultar `limit` se ha eliminado de las entidades compatibles debido a que:
  + Causaba errores porque se interpretaba como la característica límite del SDK
  + El filtro no tenía ninguna utilidad práctica
  + La funcionalidad equivalente ahora la desempeña la implementación de la característica límite
+ No se puede admitir la partición basada en campos debido a la ausencia de operadores necesarios (`>=`, `<=`, `<`, `>` y `between`) para la partición desde la plataforma SaaS. Aunque admite el operador `between`, los campos para los que admite este operador no se pueden recuperar. Por lo tanto, no se cumplen los criterios para la partición por campos.
+  Dado que no existe ninguna provisión para obtener un valor de “desplazamiento” para las entidades que admiten paginación, no es posible admitir la partición basada en registros en el caso de Mixpanel.
+ La entidad `Cohorts` solo admite el campo `CreatedDate/Time`, y no hay ningún campo para identificar `UpdatedDate/Time`, por lo que no se puede identificar `DML_Status`. Además, no existe un punto de conexión para identificar los registros eliminados. Por lo tanto, no se puede admitir CDC.
+  Para ejecutar un trabajo de AWS Glue para las entidades que se mencionan a continuación, se requieren filtros obligatorios. Consulte la tabla que aparece a continuación para conocer los nombres de las entidades y los filtros necesarios.  
**Nombre de la entidad y filtros necesarios**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/mixpanel-connector-limitations.html)

# Conexión a Monday
<a name="connecting-to-monday"></a>

 Monday.com es un sistema operativo de trabajo versátil que optimiza la administración de proyectos y la colaboración en equipo. Ofrece flujos de trabajo personalizables, paneles visuales y herramientas de automatización para mejorar la productividad. Los usuarios pueden realizar el seguimiento de las tareas, administrar recursos y comunicarse de manera efectiva en una plataforma integrada. 

**Topics**
+ [Compatibilidad de AWS Glue con Monday](monday-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](monday-configuring-iam-permissions.md)
+ [Configuración de Monday](monday-configuring.md)
+ [Configuración de conexiones a Monday](monday-configuring-connections.md)
+ [Lectura de entidades de Monday](monday-reading-from-entities.md)
+ [Referencia de opciones de conexión de Monday](monday-connection-options.md)
+ [Limitaciones](monday-connector-limitations.md)
+ [Cómo crear una cuenta nueva de Monday:](#monday-account-creation)

# Compatibilidad de AWS Glue con Monday
<a name="monday-support"></a>

AWS Glue admite Monday de la siguiente manera:

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

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

**Versiones de la API de Monday compatibles**  
 v2 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Monday
<a name="monday-configuring"></a>

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

## Requisitos mínimos
<a name="monday-configuring-min-requirements"></a>
+  Tener una cuenta para desarrolladores de Monday con correo electrónico y contraseña. Para obtener más información, consulte [Cómo crear una cuenta nueva de Monday:](connecting-to-monday.md#monday-account-creation). 
+  La cuenta para desarrolladores de Monday debe estar habilitada para el acceso de API. La API de Monday se puede utilizar sin ningún costo adicional durante el periodo de prueba. Una vez finalizado el periodo de prueba, deberá comprar una suscripción para crear datos y acceder a estos. Para obtener más información, consulte la [página de licencias de Monday](https://developer.monday.com/api-reference/reference/about-the-api-reference). 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Monday. Si se trata de una conexión típica, no necesita hacer nada más en Monday. 

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

Monday admite los siguientes dos tipos de mecanismos de autenticación:

1.  Autenticación OAuth: Monday admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2. 
   +  Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, confiar en una aplicación conectada propiedad de AWS Glue en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de la instancia de Monday. La consola de AWS Glue redirigirá al usuario a Monday, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Monday. 
   +  Los usuarios deberían optar por crear una aplicación conectada propia en Monday y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Monday para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 
   +  Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso permanecerá válido durante una hora y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 
   +  Para obtener más información, consulte la [documentación sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth](https://developers.Monday.com/docs/api/v1/Oauth). 

1.  Autenticación personalizada: 
   +  Para consultar la documentación de Monday sobre cómo generar las claves de API necesarias para la autorización personalizada, consulte [https://developer.monday.com/api-reference/docs/authentication\$1api-token-permissions ](https://developer.monday.com/api-reference/docs/authentication#api-token-permissions). 

Para configurar una conexión a Monday:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para la autenticación OAuth: 
      +  En el caso de aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET como clave. 

   1.  Para la autenticación personalizada: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `personalAccessToken` como clave. 

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

   1.  En Conexiones de datos, elija **Crear conexión**. 

   1. Al seleccionar un **Origen de datos**, elija Monday.

   1. Proporcione la **URL de instancia** de Monday.

   1.  Seleccione el rol de 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 tipo de autenticación para conectarse a Monday 
      +  En el caso de la autenticación OAuth: proporcione la **URL del token**, el **ID de cliente de la aplicación cliente administrada por el usuario** del Monday al que se desea conectar. 
      +  En el caso de la autenticación personalizada, seleccione el tipo de autenticación **PERSONALIZADA** para conectarse a Monday. 

   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`. Elija **Siguiente**. 

1.  En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**. 

# Lectura de entidades de Monday
<a name="monday-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Monday desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades admitidas para el origen** 

 Lista de entidades: 
+  Cuenta: [ https://developer.monday.com/api-reference/docs/account\$1queries ](https://developer.monday.com/api-reference/docs/account#queries) 
+  Tablero: [ https://developer.monday.com/api-reference/docs/boards\$1queries ](https://developer.monday.com/api-reference/docs/boards#queries) 
+  Columna: [ https://developer.monday.com/api-reference/docs/columns\$1queries ](https://developer.monday.com/api-reference/docs/columns#queries) 
+  Documentos: [ https://developer.monday.com/api-reference/docs/docs\$1queries ](https://developer.monday.com/api-reference/docs/docs#queries) 
+  Bloque de documentos: [ https://developer.monday.com/api-reference/docs/blocks\$1queries ](https://developer.monday.com/api-reference/docs/blocks#queries) 
+  Archivos: [ https://developer.monday.com/api-reference/docs/files\$1queries ](https://developer.monday.com/api-reference/docs/files#queries) 
+  Carpetas: [ https://developer.monday.com/api-reference/docs/folders\$1queries ](https://developer.monday.com/api-reference/docs/folders#queries) 
+  Grupos: [ https://developer.monday.com/api-reference/docs/groups\$1queries ](https://developer.monday.com/api-reference/docs/groups#queries) 
+  Elemento: [ https://developer.monday.com/api-reference/docs/items\$1queries ](https://developer.monday.com/api-reference/docs/items#queries) 
+  Subelementos: [ https://developer.monday.com/api-reference/docs/subitems\$1queries ](https://developer.monday.com/api-reference/docs/subitems#queries) 
+  Etiquetas: [ https://developer.monday.com/api-reference/docs/tags-queries\$1queries ](https://developer.monday.com/api-reference/docs/tags-queries#queries) 
+  Equipos: [ https://developer.monday.com/api-reference/docs/teams\$1queries ](https://developer.monday.com/api-reference/docs/teams#queries) 
+  Actualizaciones: [ https://developer.monday.com/api-reference/docs/updates\$1queries ](https://developer.monday.com/api-reference/docs/updates#queries) 
+  Usuarios: [ https://developer.monday.com/api-reference/docs/users\$1queries ](https://developer.monday.com/api-reference/docs/users#queries) 
+  Espacios de trabajo: [ https://developer.monday.com/api-reference/docs/workspaces\$1queries ](https://developer.monday.com/api-reference/docs/workspaces#queries) 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Cuenta | No | No | No | Sí | No | 
| Tableros | Sí | Sí | No | Sí | No | 
| Columnas | No | No | No | Sí | No | 
| Documentos | Sí | Sí | No | Sí | No | 
| Bloques de documentos | No | Sí | No | Sí | No | 
| Archivos | Sí | No | No | Sí | No | 
| Grupos | No | No | No | Sí | No | 
| Elemento | Sí | Sí | No | Sí | No | 
| Subelementos | No | No | No | Sí | No | 
| Etiquetas | Sí | No | No | Sí | Sí | 
| Equipos | Sí | No | No | Sí | No | 
| Actualizaciones | No | Sí | No | Sí | No | 
| Usuarios | Sí | Sí | No | Sí | No | 
| Workspaces | Sí | Sí | No | Sí | No | 
| Carpetas | Sí | Sí | No | Sí | No | 

 **Ejemplo** 

```
monday_read = glueContext.create_dynamic_frame.from_options(
     connection_type="monday",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "account",
         "API_VERSION": "v2"
     }
```

# Referencia de opciones de conexión de Monday
<a name="monday-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Monday:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Monday. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Monday que desea usar. Ejemplo: v2. 
+  `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. 

# Limitaciones
<a name="monday-connector-limitations"></a>

El conector de Monday presenta las siguientes limitaciones:
+  La respuesta de metadatos dinámicos presenta ciertos conflictos con la documentación, como se menciona a continuación: 
  +  La entidad Grupo, Columna admite las operaciones de filtrado, pero no está presente en el punto de conexión de los metadatos dinámicos, por lo que se mantiene como entidad no filtrable. 
  +  El punto de conexión dinámico consta de más de 15 000 líneas y devuelve los metadatos de todas las entidades en una sola respuesta. Como resultado, los campos tardan un promedio de 10 segundos en cargarse, lo que implica un tiempo adicional mientras se ejecuta un trabajo. 
  +  Consulte la siguiente tabla para conocer el límite de tasa de Monday. El gran tamaño de los datos de respuesta de la entidad dinámica genera un retraso notable, lo que hace que los campos tarden en promedio 10 segundos en cargarse.     
<a name="monday-rate-limit-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/monday-connector-limitations.html)

## Cómo crear una cuenta nueva de Monday:
<a name="monday-account-creation"></a>

1.  Vaya a la página de inicio de Monday, [https://monday.com/](https://monday.com/) y elija **Iniciar sesión**. 

1.  Se le redirigirá a la página de inicio de sesión. En la parte inferior de la página, elija **Registrarse**. 

1.  Ingrese la dirección de correo electrónico y elija **Continuar**. Como alternativa, puede iniciar sesión con Google. 

1.  Ingrese los detalles requeridos y seleccione **Continuar**. 

1.  Complete las preguntas de la encuesta y siga los pasos para finalizar el proceso de creación de la cuenta. 

**Cómo registrar una aplicación OAuth.**

1.  Inicie sesión en la cuenta de monday.com. Haga clic en el avatar (icono de imagen) en la esquina inferior izquierda de la pantalla. 

1.  Elija **Desarrollador**. 

1.  Seleccione **Crear una aplicación**. 

1.  Complete los campos obligatorios de nombre y descripción. 

1. Vaya a la sección “OAuth” ubicada en el lado derecho, agregue los ámbitos y seleccione “Guardar característica”.

1.  Vaya a la pestaña “URL de redirección” junto al ámbito, agregue la URL de redirección y seleccione “Guardar característica”. 

1.  En la pestaña **URL de redirección**, indique la URL de la aplicación. Debe ser https://\$1region-code\$1.console.aws.amazon.com/appflow/oauth. Por ejemplo, si utiliza `us-east-1 `, puede agregar `https://us-east-1.console.aws.amazon.com/appflow/oauth`. 

1.  La aplicación ya está lista para su uso. Puede encontrar las credenciales en la sección “Información básica”. Tome nota de las cadenas de ID de cliente y secreto de cliente. Estas cadenas se utilizan para establecer conexión con esta aplicación mediante un conector AppFlow. 

**Cómo generar un token de acceso personal:**

 Actualmente, monday.com solo ofrece tokens de API V2, los cuales son tokens personales. Para acceder a los tokens de API, puede utilizar uno de los dos métodos disponibles según el nivel de usuario. Los usuarios administradores pueden utilizar ambos métodos para obtener los tokens de API. Los usuarios miembros pueden acceder a sus tokens de API desde la pestaña Desarrollador. 

 Administradores: si es un usuario administrador en la cuenta de monday.com, puede acceder a los tokens de API desde la pestaña “Administrador”. Para ello, siga estos pasos: 

1.  Inicie sesión en la cuenta de monday.com. Haga clic en el avatar (icono de imagen) en la esquina inferior izquierda de la pantalla. 

1.  Seleccione “Administración” en el menú que aparece (para esto debe contar con permisos de administrador). 

1.  Vaya a la sección “API” y genere un “Token de API V2”. Puede copiar el token y usarlo. 

 Desarrollador: si es un usuario miembro en la cuenta de monday.com, puede acceder a los tokens de API desde la pestaña “Desarrollador”. Para ello, siga estos pasos: 

1.  Inicie sesión en la cuenta de monday.com. Haga clic en el avatar (icono de imagen) en la esquina inferior izquierda de la pantalla. 

1.  Seleccione “Desarrolladores” en el menú que aparece. 

1.  En el menú superior, seleccione el desplegable “Desarrollador”. Seleccione la primera opción del menú desplegable titulada “Mis tokens de acceso”. 

# Conexión a MongoDB en AWS Glue Studio
<a name="connecting-to-data-mongodb"></a>

 AWS Glue proporciona soporte integrado para MongoDB. AWS Glue Studio proporciona una interfaz visual para conectarse a MongoDB, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

**Topics**
+ [Creación de una conexión de MongoDB](creating-mongodb-connection.md)
+ [Creación de un nodo de origen de MongoDB](creating-mongodb-source-node.md)
+ [Creación de un nodo de destino de MongoDB](creating-mongodb-target-node.md)
+ [Opciones avanzadas](#creating-mongodb-connection-advanced-options)

# Creación de una conexión de MongoDB
<a name="creating-mongodb-connection"></a>

**Requisitos previos**:
+ Si su instancia de MongoDB está en una Amazon VPC, configure Amazon VPC para permitir que su trabajo de AWS Glue se comunique con la instancia de MongoDB sin que el tráfico atraviese la Internet pública. 

  En Amazon VPC, identifique o cree una **VPC**, una **subred** y un **grupo de seguridad** que AWS Glue utilizará al ejecutar el trabajo. Además, debe asegurarse de que Amazon VPC esté configurada para permitir el tráfico de red entre su instancia de MongoDB y esta ubicación. Según el diseño de la red, esto puede requerir cambios en las reglas de los grupos de seguridad, las ACL de red, las puertas de enlace de NAT y las conexiones entre pares.

**Para configurar una conexión a MongoDB:**

1. Si lo desea, en AWS Secrets Manager, cree un secreto con sus credenciales de MongoDB. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, genere un par para la clave `username` con el valor *mongodbUser*.

     Al seleccionar **pares clave/valor**, genere un par para la clave `password` con el valor *mongodbPass*.

1. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en [Adición de una conexión de AWS Glue](console-connections.md). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el uso futuro en AWS Glue. 
   + Al seleccionar un **tipo de conexión**, seleccione **MongoDB** o **MongoDB Atlas**.
   + Al seleccionar la **URL de MongoDB** o la **URL de MongoDB Atlas**, proporciona el nombre de host de la instancia de MongoDB.

     Se proporciona una URL de MongoDB en este formato `mongodb://mongoHost:mongoPort/mongoDBname`.

     Se proporciona una URL de MongoDB Atlas en este formato `mongodb+srv://mongoHost/mongoDBname`.
   + Si eligió crear un secreto de Secrets Manager, elija el **tipo de credencial AWS Secrets Manager**.

     Luego, en **AWS Secret**, ingrese *secretName*.
   + Si decide proporcionar el nombre de **usuario y la contraseña**, proporcione *mongoDBuser* y *mongodbPass*.

1. En las siguientes situaciones, es posible que necesite una configuración adicional:
   + 

     Para instancias de MongoDB alojadas AWS en una VPC de Amazon
     + Deberá proporcionar la información de conexión de Amazon VPC a la conexión AWS Glue que define sus credenciales de seguridad de MongoDB. Al crear o actualizar la conexión, configure los **VPC**, **Subred** y los **grupos de seguridad** en **Opciones de red**.

Tras crear una conexión con AWS Glue MongoDB, deberá realizar los siguientes pasos antes de ejecutar su trabajo de AWS Glue:
+ Cuando trabaje con trabajos AWS Glue en el editor visual, debe proporcionar la información de conexión de Amazon VPC para que su trabajo se conecte a MongoDB. Identifique una ubicación adecuada en Amazon VPC y envíela a su conexión de AWS Glue MongoDB.
+ Si opta por crear un secreto de Secrets Manager, conceda permiso al rol de IAM asociado a su trabajo de AWS Glue para leer *secretName*.

# Creación de un nodo de origen de MongoDB
<a name="creating-mongodb-source-node"></a>

## Requisitos previos necesarios
<a name="creating-mongodb-source-node-prerequisites"></a>
+ Una conexión AWS Glue MongoDB, como se describe en la sección anterior,. [Creación de una conexión de MongoDB](creating-mongodb-connection.md)
+ Si eligió crear un secreto de Secrets Manager, asigne los permisos necesarios para leer el secreto utilizado por la conexión.
+ Una colección de MongoDB de la que quiera leer. Necesitará información de identificación para la colección.

  Una colección MongoDB se identifica mediante un nombre de base de datos y un nombre de colección, *mongodbName*, *mongodbCollection*.

## Agregar un origen de datos de MongoDB
<a name="creating-mongodb-source-node-add"></a>

**Para agregar un nodo de **Origen de datos - MongoDB**:**

1.  Elija la conexión para el origen de datos de MongoDB. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de MongoDB**. Para obtener más información, consulte la sección [Creación de una conexión de MongoDB](creating-mongodb-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Elija una **Base de datos**. Introduzca *mongodbName.*

1. Elija una **Colección**. Ingrese a *mongodbCollection.*

1. Elija el **Particionador**, el **tamaño de la partición (MB)** y la **Clave de partición**. Para obtener más información sobre los parámetros de particiones, consulte ["connectionType": "mongodb" como origen](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source).

1.  En **Propiedades personalizadas de MongoDB**, ingrese los parámetros y valores según sea necesario. 

# Creación de un nodo de destino de MongoDB
<a name="creating-mongodb-target-node"></a>

## Requisitos previos necesarios
<a name="creating-mongodb-target-node-prerequisites"></a>
+ Una conexión AWS Glue MongoDB, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Creación de una conexión de MongoDB](creating-mongodb-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de MongoDB a la que desearía escribir, *tableName*.

## Agregar un destino de datos de MongoDB
<a name="creating-mongodb-target-node-add"></a>

**Para añadir un nodo de **Destino de datos - MongoDB**:**

1.  Elija la conexión para el origen de datos de MongoDB. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de MongoDB**. Para obtener más información, consulte la sección [Creación de una conexión de MongoDB](creating-mongodb-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Elija una **Base de datos**. Introduzca *mongodbName.*

1. Elija una **Colección**. Ingrese a *mongodbCollection.*

1. Elija el **Particionador**, el **tamaño de la partición (MB)** y la **Clave de partición**. Para obtener más información sobre los parámetros de particiones, consulte ["connectionType": "mongodb" como origen](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source).

1. Seleccione **Reintentar escrituras** si lo desea.

1.  En **Propiedades personalizadas de MongoDB**, ingrese los parámetros y valores según sea necesario. 

## Opciones avanzadas
<a name="creating-mongodb-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de MongoDB. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte [Referencia de opciones de conexión de MongoDB](aws-glue-programming-etl-connect-mongodb-home.md#aws-glue-programming-etl-connect-mongodb). 

# Conexión a Oracle NetSuite
<a name="connecting-to-data-oracle-netsuite"></a>

Oracle NetSuite es una solución integral de administración empresarial en la nube que ayuda a las organizaciones a operar de forma más eficaz mediante la automatización de los procesos principales y la visibilidad en tiempo real del rendimiento operativo y financiero. Con un conjunto único e integrado de aplicaciones para administrar la contabilidad, el procesamiento de pedidos, la administración del inventario, la producción, la cadena de suministro y las operaciones de almacén, Oracle NetSuite ofrece a las empresas una visibilidad clara de sus datos y un control más estricto sobre sus negocios.

**Topics**
+ [Compatibilidad de AWS Glue para Oracle NetSuite](oracle-netsuite-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](oracle-netsuite-configuring-iam-permissions.md)
+ [Configuración de Oracle NetSuite](oracle-netsuite-configuring.md)
+ [Configuración de las conexiones a Oracle NetSuite](oracle-netsuite-configuring-connections.md)
+ [Lectura de entidades de Oracle NetSuite](oracle-netsuite-reading-from-entities.md)
+ [Opciones de conexión a Oracle NetSuite](oracle-netsuite-connection-options.md)
+ [Limitaciones y notas para el conector de Oracle NetSuite](oracle-netsuite-connector-limitations.md)

# Compatibilidad de AWS Glue para Oracle NetSuite
<a name="oracle-netsuite-support"></a>

AWS Glue es compatible con Oracle NetSuite de la siguiente manera:

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

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

**Versiones de la API de Oracle NetSuite compatibles**  
Las siguientes versiones de la API de Oracle NetSuite son compatibles:
+ v1

Para conocer la compatibilidad de entidades por versión específica, consulte Entidades admitidas para el origen.

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="oracle-netsuite-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 Oracle NetSuite
<a name="oracle-netsuite-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos hacia o desde Oracle NetSuite, deberá cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Oracle NetSuite. Para obtener más información, consulte [Creación de una cuenta de Oracle NetSuite](#oracle-netsuite-configuring-creating-oracle-netsuite-account).
+ La cuenta de Oracle NetSuite debe estar habilitada para el acceso de API.
+ Ha creado una integración de la API de OAuth 2.0 en su cuenta de desarrollador de Oracle NetSuite. Esta integración proporciona las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Creación de una aplicación cliente de Oracle NetSuite y credenciales de OAuth 2.0](#oracle-netsuite-configuring-creating-oracle-netsuite-client-app).

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Oracle NetSuite.

## Creación de una cuenta de Oracle NetSuite
<a name="oracle-netsuite-configuring-creating-oracle-netsuite-account"></a>

Vaya a [Oracle NetSuite](https://www.netsuite.com/portal/home.shtml) y elija **Recorrido gratuito por el producto**. Complete los detalles requeridos para obtener un recorrido gratuito por el producto, a través del cual podrá ponerse en contacto con un proveedor. El proceso para obtener una cuenta es el siguiente:
+ La adquisición de una cuenta de NetSuite se realiza a través de un proveedor, que proporciona un formulario o presupuesto que debe revisarse legalmente.
+ La cuenta que se va a adquirir para el conector Oracle NetSuite es de **Standard Cloud Service.**
+ El proveedor crea esta cuenta y comparte las credenciales temporales. Recibirá un correo de bienvenida de NetSuite <billing@notification.netsuite.com> <system@sent-via.netsuite.com> con detalles como su nombre de usuario y un enlace para configurar su contraseña.
+ Utilice el enlace **Establecer su contraseña** para establecer la contraseña del nombre de usuario proporcionado por el proveedor.

## Creación de una aplicación cliente de Oracle NetSuite y credenciales de OAuth 2.0
<a name="oracle-netsuite-configuring-creating-oracle-netsuite-client-app"></a>

Para obtener el ID de cliente y el secreto de cliente, debe crear una aplicación cliente de Oracle NetSuite:

1. Inicie sesión en su cuenta de NetSuite a través del [inicio de sesión de cliente de NetSuite](https://system.netsuite.com/pages/customerlogin.jsp).

1. Seleccione **Configuración** > **Empresa** > **Habilitar características**.

1. Vaya a la sección **SuiteCloud** y seleccione la casilla de verificación **REST WEB SERVICES** en **SuiteTalk (servicios web)**.

1. Seleccione la casilla de verificación **OAUTH 2.0** en **Administrar autenticación**. Haga clic en **Guardar**.

1. Vaya a **Configuración** > **Integración** > **Administrar integraciones** y seleccione **Nueva** para crear una aplicación OAuth2.0.

1. Introduzca un nombre de su elección y mantenga el **ESTADO** como Habilitado.

1. Si están marcadas, desactive las casillas de verificación **TBA: FLUJO DE AUTORIZACIÓN** y **AUTENTICACIÓN BASADA EN TOKEN** que aparecen en **Autenticación basada en token**.

1. Seleccione las casillas de verificación **CONCESIÓN DE CÓDIGO DE AUTORIZACIÓN** y **CLIENTE PÚBLICO** en **OAuth 2.0**.

1. En Auth, tome nota del ID de cliente y el secreto de cliente.

1. Introduzca un **URI DE REDIRECCIÓN**. Por ejemplo, https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Seleccione la casilla **SERVICIOS WEB REST** en **ÁMBITO**.

1. Seleccione la casilla de verificación **CREDENCIALES DE USUARIO** en **Credenciales de usuario**. Seleccione **Save**.

1. Anote la CLAVE DEL CONSUMIDOR/ID DE CLIENTE y el SECRETO DEL CONSUMIDOR/SECRETO DEL CLIENTE en las **Credenciales de cliente**. Estos valores se muestran solo una vez.

1. Cree un rol de ADMINISTRADOR si es necesario; para ello, vaya a **Usuario/Roles** > **Administrar roles** > **Nuevo**.

1. Al crear un rol personalizado, agregue acceso completo en la pestaña **Permisos** para las siguientes entidades/funcionalidades:
   + “Depósito”, “Artículos”, “Cumplimiento de artículos”, “Realizar entrada en el diario”, “Orden de compra”, “Filiales”, “Proveedores”, “Facturas”, “Autorización de devolución del proveedor”, “Seguimiento del tiempo”, “Pago del cliente”, “Entradas de registro personalizadas”, “Tipos de registros personalizados”, “Servicios web REST”, “Administración de aplicaciones autorizadas de OAuth 2.0”, “Campos de entidad personalizados”, “Iniciar sesión con los tokens de acceso de OAuth 2.0”.

Para obtener más información, consulte [OAuth 2.0](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_157769826287.html) en la documentación de NetSuite Applications Suite.

# Configuración de las conexiones a Oracle NetSuite
<a name="oracle-netsuite-configuring-connections"></a>

Oracle NetSuite admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2. El tipo de concesión determina cómo se comunica AWS Glue con Oracle NetSuite para solicitar el acceso a los datos.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, confiar en una aplicación conectada propiedad de AWS Glue (aplicación cliente administrada por AWS Glue) en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de la instancia de Oracle NetSuite. La consola de AWS Glue redirigirá al usuario a Oracle NetSuite, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Oracle NetSuite.
+ Los usuarios aún pueden optar por crear su propia aplicación conectada en Oracle NetSuite y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún serán redirigidos a Oracle NetSuite para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de Oracle NetSuite sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Aplicaciones públicas](https://developers.oracle-netsuite.com/docs/api/creating-an-app).

Para configurar una conexión a Oracle NetSuite:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para su 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 Oracle NetSuite.

   1. Proporcione el entorno de Oracle NetSuite.

   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`.

# Lectura de entidades de Oracle NetSuite
<a name="oracle-netsuite-reading-from-entities"></a>

**Requisito previo**

Un objeto de Oracle NetSuite desde el cual le gustaría leer. Necesitará el nombre del objeto, como `deposit` o `timebill`. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite Ordenar por | Admite límite | Admite SELECCIONAR \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Depósito | Sí | No | Sí | Sí | Sí | 
| Artículo de la descripción | Sí | No | Sí | Sí | Sí | 
| Artículo de inventario | Sí | No | Sí | Sí | Sí | 
| Procesamiento de artículos | Sí | No | Sí | Sí | Sí | 
| Grupo de artículos | Sí | No | Sí | Sí | Sí | 
| Entrada de diario | Sí | No | Sí | Sí | Sí | 
| Artículo de compra no incluido en el inventario | Sí | No | Sí | Sí | Sí | 
| Artículo de reventa no incluido en el inventario | Sí | No | Sí | Sí | Sí | 
| Artículo de venta no incluido en el inventario | Sí | No | Sí | Sí | Sí | 
| Orden de compra | Sí | No | Sí | Sí | Sí | 
| Filial | Sí | No | Sí | Sí | Sí | 
| Proveedor | Sí | No | Sí | Sí | Sí | 
| Factura de proveedor | Sí | No | Sí | Sí | Sí | 
| Autorización de devolución del proveedor | Sí | No | Sí | Sí | Sí | 
| Factura de tiempo | Sí | No | Sí | Sí | Sí | 
| Pago de cliente | Sí | No | Sí | Sí | Sí | 
| Solicitud de cumplimiento | Sí | No | Sí | Sí | Sí | 
| Elemento | Sí | Sí | Sí | Sí | Sí | 
| Línea de transacción | Sí | Sí | Sí | Sí | Sí | 
| Línea de contabilidad de transacciones | Sí | Sí | Sí | Sí | Sí | 
| Tipos de registros personalizados (dinámicos) | Sí | Sí | Sí | Sí | Sí | 

**Ejemplo:**

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1"
    }
)
```

**Detalles de la entidad y el campo de Oracle NetSuite**:

Oracle NetSuite carga dinámicamente los campos disponibles en la entidad seleccionada. Según el tipo de datos de los campos, se admiten los operadores de filtro siguientes.


| Tipo de datos de los campos | Operadores de filtro admitidos | 
| --- | --- | 
| Cadena | LIKE, =, \$1= | 
| Date | BETWEEN, =, <, <=, >, >= | 
| DateTime | BETWEEN, <, <=, >, >= | 
| Numérico |  =, \$1=, <, <=, >, >= | 
| Booleano |  =, \$1= | 

**Formato de entrada esperado para los valores booleanos en Expresión de filtro**:


| Entidad | Formato de valor booleano “true” | Formato de valor booleano “false” | Ejemplo | 
| --- | --- | --- | --- | 
| Entidades de Elemento, Línea de transacción, Línea de contabilidad de transacciones y Tipo de registro personalizado | T o t | F o f | isinactive = “T” o isinactive = “t” | 
| Todas las demás entidades | true | false | isinactive = true | 

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

**Partición basada en campos**

El conector de Oracle NetSuite tiene metadatos dinámicos, de modo que los campos compatibles para la partición basada en campos se eligen de forma dinámica. La partición basada en campos se admite en los campos que tienen el tipo de datos Integer, BigInteger, Date o DateTime.

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo de marca de tiempo, aceptamos el formato de marca de tiempo de Spark que se usa en las consultas de Spark SQL.

  Ejemplos de valores válidos:

  ```
  "TIMESTAMP \"1707256978123\""
  "TIMESTAMP \"1702600882\""
  "TIMESTAMP '2024-02-06T22:00:00:00.000Z'"
  "TIMESTAMP '2024-02-06T22:00:00:00Z'"
  "TIMESTAMP '2024-02-06'"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "id",
        "LOWER_BOUND": "1",
        "UPPER_BOUND": "10000",
        "NUM_PARTITIONS": "10"
    }
```

**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 `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

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

Ejemplo:

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "3"
    }
```

# Opciones de conexión a Oracle NetSuite
<a name="oracle-netsuite-connection-options"></a>

Las siguientes son opciones de conexión para Oracle NetSuite:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de la entidad de Oracle NetSuite. Ejemplo: depósito.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Oracle NetSuite que desea usar. El valor será v1, ya que Oracle NetSuite actualmente solo admite la versión 1.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Lista de columnas separadas por comas que quiere seleccionar para la entidad seleccionada.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta (partición basada en campos).
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido, que se utiliza en la partición basada en campos.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido, que se utiliza en la partición basada en campos. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. Se utiliza en la partición basada en campos y registros.
+ `INSTANCEE_URL`(cadena): una URL de instancia de NetSuite válida con el formato https://\$1account-id\$1.suitetalk.api.netsuite.com.

# Limitaciones y notas para el conector de Oracle NetSuite
<a name="oracle-netsuite-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Oracle NetSuite:
+ Los valores de los parámetros access\$1token y refresh\$1token están en formato JSON Web Token (JWT). access\$1token es válido durante 60 minutos, mientras que refresh\$1token es válido durante siete días.
+ Al generar el ID y el secreto de cliente, si selecciona “PUBLIC CLIENT” junto con “AUTHORIZATION CODE GRANT”, el token de actualización solo es válido durante tres horas y solo se puede usar una vez.
+ Puede obtener un máximo de 100 000 de registros mediante el conector. Para obtener más información, consulte [Executing SuiteQL Queries Through REST Web Services](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157909186990.html).
+ Las particiones se crean de manera que cada partición recupere los registros en múltiplos de 1000, excepto posiblemente la última, que recuperará los registros restantes.
+ En el caso de los objetos Elemento, Línea de transacción y Línea de contabilidad de transacciones, el conector no admite algunos operadores por los siguientes motivos:
  + Al aplicar los operadores de filtro `EQUAL_TO`, `NOT_EQUAL_TO` a campos de tipo Fecha, se obtienen resultados poco fiables.
  + Al aplicar el operador de filtro `LESS_THAN_OR_EQUAL_TO` a campos de tipo Fecha, se obtienen resultados poco fiables y el operador se comporta de forma similar al operador `LESS_THAN`.
  + Al aplicar el operador de filtro `GREATER_THAN` a campos de tipo Fecha=, se obtienen resultados poco fiables y el operador se comporta de forma similar al operador `GREATER_THAN_OR_EQUAL_TO`.
+ En el caso de los objetos Elemento, Línea de transacción, Línea de contabilidad de transacciones y Tipo de registro personalizado, los valores booleanos aparecen en el formato T/F en lugar del estándar true/false. El conector asigna los valores t/f a true/false para garantizar la coherencia de los datos.

# Conexión al servicio OpenSearch en AWS Glue Studio
<a name="connecting-to-data-opensearch"></a>

 AWS Glue proporciona soporte integrado para Amazon OpenSearch Service. AWS Glue Studio proporciona una interfaz visual para conectarse a Amazon OpenSearch Service, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. Esta característica no es compatible con OpenSearch Service sin servidor. 

 AWS Glue Studio crea una conexión unificada para Amazon OpenSearch Service. Para obtener más información, consulte [Consideraciones](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Crear una conexión con OpenSearch Service](creating-opensearch-connection.md)
+ [Crear un nodo fuente de OpenSearch Service](creating-opensearch-source-node.md)
+ [Crear un nodo de destino de OpenSearch Service](creating-opensearch-target-node.md)
+ [Opciones avanzadas](#creating-opensearch-connection-advanced-options)

# Crear una conexión con OpenSearch Service
<a name="creating-opensearch-connection"></a>

**Requisitos previos**:
+ Identifique el punto de conexión del dominio, el *AOSEndpoint* y el puerto, *AOSport* desde el que desea leer o cree el recurso siguiendo las instrucciones de la documentación de Amazon OpenSearch Service. Para obtener más información sobre la creación de un dominio, consulte [Crear y administrar dominios de Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) en la documentación de Amazon OpenSearch Service.

  Un punto de conexión de dominio de Amazon OpenSearch Service tendrá el siguiente formulario predeterminado: https://search-*domainName*-*unstructuredIdContent*.*region*.es.amazonaws.com. Para obtener más información sobre cómo identificar su punto de conexión de dominio, consulte [Crear y administrar dominios de Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) en la documentación de Amazon OpenSearch Service. 

  Identifique o genere credenciales de autenticación básica HTTP, *aosUser *y *aosPassword* para su dominio.

**Para configurar una conexión a OpenSearch Service:**

1. En AWS Secrets Manager, cree un secreto con sus credenciales de OpenSearch Service. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, genere un par para la clave `USERNAME` con el valor *aosUser*.
   + Al seleccionar **pares clave/valor**, genere un par para la clave `PASSWORD` con el valor *aosPassword*.

1. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en [Adición de una conexión de AWS Glue](console-connections.md). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el uso futuro en AWS Glue. 
   + Al seleccionar un **tipo de conexión**, seleccione OpenSearch Service.
   + Al seleccionar un punto de conexión de dominio, proporcione *aosEndpoint*.
   + Al seleccionar un puerto, proporcione *aosPort*.
   + Al seleccionar un **secreto AWS**, proporcione un *secretName*.

# Crear un nodo fuente de OpenSearch Service
<a name="creating-opensearch-source-node"></a>

## Requisitos previos necesarios
<a name="creating-opensearch-source-node-prerequisites"></a>
+ Una conexión AWS Glue de OpenSearch Service, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Crear una conexión con OpenSearch Service](creating-opensearch-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Un índice de OpenSearch Service del que quiera leer, *aosIndex*.

## Agregar un origen de datos de OpenSearch Service
<a name="creating-opensearch-source-node-add"></a>

**Para añadir un nodo de **origen de datos: OpenSearch Service**:**

1.  Elija la conexión para el origen de datos de OpenSearch Service. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de OpenSearch Service**. Para obtener más información, consulte la sección [Crear una conexión con OpenSearch Service](creating-opensearch-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Proporcione **Index**, el índice que desea leer.

1. Si lo desea, proporcione **Query**, una consulta de OpenSearch para obtener resultados más específicos. Para obtener más información sobre cómo escribir consultas de OpenSearch, consulte [Lectura de los índices de OpenSearch Service](aws-glue-programming-etl-connect-opensearch-home.md#aws-glue-programming-etl-connect-opensearch-read).

1.  En las **propiedades personalizadas de OpenSearch Service**, ingrese los parámetros y valores según sea necesario. 

# Crear un nodo de destino de OpenSearch Service
<a name="creating-opensearch-target-node"></a>

## Requisitos previos necesarios
<a name="creating-opensearch-target-node-prerequisites"></a>
+ Una conexión AWS Glue de OpenSearch Service, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Crear una conexión con OpenSearch Service](creating-opensearch-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Un índice de OpenSearch Service al que desearía escribir, *aosIndex*.

## Agregar un destino de datos de OpenSearch Service
<a name="creating-opensearch-target-node-add"></a>

**Para añadir un nodo de **Destino de datos: OpenSearch Service**:**

1.  Elija la conexión para el origen de datos de OpenSearch Service. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de OpenSearch Service**. Para obtener más información, consulte la sección [Crear una conexión con OpenSearch Service](creating-opensearch-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Proporcione **Index**, el índice que desea leer.

1.  En las **propiedades personalizadas de OpenSearch Service**, ingrese los parámetros y valores según sea necesario. 

## Opciones avanzadas
<a name="creating-opensearch-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de OpenSearch Service. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte [Conexiones de OpenSearch Service](aws-glue-programming-etl-connect-opensearch-home.md). 

# Conexión a Okta
<a name="connecting-to-okta"></a>

 La API de Okta es la interfaz programática de Okta que se utiliza para administrar cuentas y campañas de Okta grandes o complejas. Si es usuario de Okta, puede conectar AWS Glue a la cuenta de Okta. Tras ello, podrá utilizar Okta como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Okta y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Okta](okta-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](okta-configuring-iam-permissions.md)
+ [Configuración de Okta](okta-configuring.md)
+ [Configuración de conexiones a Okta](okta-configuring-connections.md)
+ [Lectura de entidades de Okta](okta-reading-from-entities.md)
+ [Referencia de opciones de conexión de Okta](okta-connection-options.md)
+ [Pasos para crear una nueva cuenta y una aplicación para desarrolladores de Okta](okta-create-account.md)
+ [Limitaciones](okta-connector-limitations.md)

# Compatibilidad de AWS Glue con Okta
<a name="okta-support"></a>

AWS Glue es compatible con Okta de la siguiente manera:

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

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

**Versiones de la API de Okta compatibles**  
 v1. 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Okta
<a name="okta-configuring"></a>

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

## Requisitos mínimos
<a name="okta-configuring-min-requirements"></a>
+  Tener una cuenta de Okta. Para obtener más información sobre cómo crear una cuenta, consulte [Pasos para crear una nueva cuenta y una aplicación para desarrolladores de Okta](okta-create-account.md). 
+  La cuenta de Okta debe estar habilitada para el acceso de API. 
+  Haber creado una integración de API de OAuth2 en la cuenta de Okta. Esta integración proporciona las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte los Pasos que se deben seguir para crear una aplicación cliente y las credenciales de OAuth2.0: pasos para crear una nueva cuenta en Okta y una aplicación para desarrolladores 
+  Tener una cuenta Okta de con un OktaApiToken. Consulte la [documentación de Okta](https://developer.okta.com/docs/guides/create-an-api-token/main/#create-the-token). 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Okta. Si es una conexión típica, no necesita hacer nada más en Okta. 

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

 Okta admite dos tipos de mecanismos de autenticación: 
+  Autenticación OAuth: Okta admite el tipo de concesión `AUTHORIZATION_CODE`. 
  +  Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Okta, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Okta. 
  +  Los usuarios pueden optar por crear su propia aplicación conectada en Okta y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Okta para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 
  +  Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 
  +  Para obtener más información, consulte la [documentación pública de Okta sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth](https://developers.google.com/workspace/guides/create-credentials). 
+  Autenticación personalizada: 
  +  Para consultar la documentación pública de Okta sobre cómo generar las claves de API necesarias para la autorización personalizada, consulte la [documentación de Okta](https://developer.okta.com/docs/guides/create-an-api-token/main/#create-the-token). 

Para configurar una conexión a Okta:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para la autenticación OAuth: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

   1.  Para la autenticación personalizada: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `OktaApiToken` como clave. 

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

   1.  En Conexiones, elija **Crear conexión**. 

   1. Al seleccionar un **Origen de datos**, elija Okta.

   1. Proporcione el subdominio de Okta.

   1. Seleccione la URL del dominio de Okta de la cuenta de Okta.

   1.  Seleccione el rol de 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 tipo de autenticación para conectarse al origen de datos. 

   1.  Para el tipo de autenticación OAuth2, proporcione el **ID de cliente de la aplicación cliente administrada por el usuario** de la aplicación de Okta. 

   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`. 

1.  En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**. 

# Lectura de entidades de Okta
<a name="okta-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Okta desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Aplicaciones | Sí | Sí | No | Sí | No | 
| Dispositivos | Sí | Sí | No | Sí | Sí | 
| Grupos | Sí | Sí | Sí | Sí | Sí | 
| Usuarios | Sí | Sí | Sí | Sí | Sí | 
| Tipos de usuario | No | No | No | Sí | No | 

 **Ejemplo** 

```
okta_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Okta",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "applications",
        "API_VERSION": "v1"
    }
```

 **Detalles de entidades y campos de Okta** 

 Lista de entidades: 
+  Aplicación: [ https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Application/ ](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Application/) 
+  Dispositivo: [ https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Device/ ](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Device/) 
+  Grupo: [ https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Group/ ](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Group/) 
+  Usuario: [ https://developer.okta.com/docs/api/openapi/okta-management/management/tag/User/ ](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/User/) 
+  Tipo de usuario: [ https://developer.okta.com/docs/api/openapi/okta-management/management/tag/UserType/ ](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/UserType/) 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 **Ejemplo** 

```
okta_read = glueContext.create_dynamic_frame.from_options(
    connection_type="okta",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "lastUpdated",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "lastMembershipUpdated"
        "LOWER_BOUND": "2022-08-10T10:28:46.000Z"
        "UPPER_BOUND": "2024-08-10T10:28:46.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Referencia de opciones de conexión de Okta
<a name="okta-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Okta:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Okta. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Okta que desea usar. Ejemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Pasos para crear una nueva cuenta y una aplicación para desarrolladores de Okta
<a name="okta-create-account"></a>

 Cree una cuenta para desarrolladores en Okta para acceder a la API de Okta. Una cuenta para desarrolladores gratuita de Okta proporciona acceso a la mayoría de las características clave para desarrolladores necesarias para acceder a la API de Okta. 

**Para crear una cuenta para desarrolladores en Okta**

1.  Vaya a [https://developer.okta.com/signup/](https://console.cloud.google.com). 

1.  Ingrese la información de la cuenta: correo electrónico, nombre, apellido y país/región. Seleccione **No soy un robot** y luego haga clic en **Registrarse**. 

1.  Se enviará un correo de verificación a la dirección de correo registrada. Recibirá un enlace en el correo electrónico para activar la cuenta para desarrolladores de Okta. Seleccione **Activar**. 

1.  Será redirigido a la página de restablecimiento de contraseña. Ingrese la nueva contraseña dos veces y seleccione ** Restablecer contraseña**. 

1.  Será redirigido al panel de la cuenta para desarrolladores de Okta. 

**Para crear una aplicación cliente y credenciales de OAuth 2.0**

1.  En el panel para desarrolladores, seleccione la opción para crear una integración de aplicaciones.   
![\[La captura de pantalla muestra la página de creación de ID de cliente de OAuth y la sección de URI de redireccionamiento autorizados. Aquí, agregue los URI y seleccione AGREGAR URI si es necesario. Cuando haya terminado, elija CREAR.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/create-client-app-step-1.png)

1.  La ventana **Crear una nueva integración de aplicación** aparecerá y mostrará varios métodos de inicio de sesión. Seleccione **OIDC – OpenID Connect**. 

1.  Desplácese hacia abajo hasta la sección Tipo de aplicación. Seleccione **Aplicación web** y haga clic en **Siguiente**. 

1.  En la pantalla “Nueva integración de aplicación web”, complete la siguiente información: 
   + Nombre de la integración de la aplicación: ingrese el nombre de la aplicación. 
   + Tipo de concesión: seleccione **Código de autorización** y **Token de actualización** de la lista.
   + URI de redireccionamiento de inicio de sesión: elija **Agregar URI ** y agregue `https://{regioncode}.console.aws.amazon.com/appflow/oauth`. Por ejemplo, si utiliza `us-west-2 (Oregon)`, puede agregar `https://us-east-1.console.aws.amazon.com/appflow/oauth`.
   + Acceso controlado: asigne la aplicación a los grupos de usuarios según lo necesite y seleccione **Guardar**.

1. Se generan tanto el ID de cliente como el secreto de cliente.

# Limitaciones
<a name="okta-connector-limitations"></a>

El conector de Okta presenta las siguientes limitaciones:
+  Para la entidad “Aplicaciones”, solo se puede aplicar un único filtro. Si se aplica más de un filtro, se devolverá un error 400 de solicitud errónea con el siguiente resumen: “Los criterios de búsqueda no son válidos”. 
+  “Ordenar por” solo se admite con consultas de búsqueda. Por ejemplo, ` http://dev-15940405.okta.com/api/v1/groups?search=type e.q. "OKTA_GROUP"&sortBy=lastUpdated&sortOrder=asc ` 

# Conexión a PayPal
<a name="connecting-to-data-paypal"></a>

PayPal es un sistema de pagos que facilita las transferencias de dinero en línea entre partes, por ejemplo, transferencias entre clientes y proveedores en línea. Si es usuario de PayPal, la cuenta contiene datos sobre las transacciones, como los pagadores, las fechas y los estados. Puede utilizar AWS Glue para transferir datos de PayPal a determinados servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con PayPal
<a name="paypal-support"></a>

AWS Glue admite PayPal de la siguiente manera:

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

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

**Versión de API de PayPal compatibles**  
Las siguientes versiones de la API de PayPal son compatibles:
+ v1

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="paypal-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 PayPal
<a name="paypal-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tiene una cuenta PayPal con credenciales de cliente.
+ La cuenta de PayPal tiene acceso de API con una licencia válida.

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

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

PayPal admite el tipo de concesión CLIENT CREDENTIALS para OAuth2.
+ Este tipo de concesión se considera OAuth 2.0 de doble vía, ya que lo utilizan los clientes para obtener un código de acceso fuera del contexto de un usuario. AWS Glue puede utilizar el ID de cliente y el secreto de cliente para autenticar las API de PayPal que proporcionan los servicios personalizados que se definan.
+ Cada servicio personalizado pertenece a un usuario exclusivo de la API con un conjunto de roles y permisos que autorizan al servicio a realizar acciones específicas. Un token de acceso está asociado a un único servicio personalizado.
+ Este tipo de concesión da lugar a un token de acceso de corta duración, y se puede renovar mediante una nueva llamada al punto de conexión `/v2/oauth2/token`.
+ Para consultar la documentación pública de PayPal para OAuth 2.0 con credenciales de cliente, consulte [Autenticación](https://developer.paypal.com/api/rest/authentication/).

Para configurar una conexión a PayPal:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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 PayPal.

   1. Proporcione la `INSTANCE_URL` de la instancia de PayPal 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`.

## Obtención de las credenciales de OAuth 2.0
<a name="paypal-getting-oauth-20-credentials"></a>

Para llamar a la API de Rest, tendrá que intercambiar el ID de cliente y el secreto de cliente por un token de acceso. Para obtener más información, consulte [Introducción a las API de REST de PayPal](https://developer.paypal.com/api/rest/).

# Cómo leer datos de entidades de PayPal
<a name="paypal-reading-from-entities"></a>

**Requisito previo**

Un objeto de PayPal desde el que desea leer. Necesitará el nombre del objeto, `transaction`.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| transacción | Sí | Sí | No | Sí | Sí | 

**Ejemplo:**

```
paypal_read = glueContext.create_dynamic_frame.from_options(
    connection_type="paypal",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "transaction",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://api-m.paypal.com"
    }
```

**Detalles de entidades y campos de PayPal**:

Entidades con metadatos estáticos:

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

## Consultas de particionamiento
<a name="paypal-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el valor en formato ISO.

  Ejemplos de valor válido:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Se admite el siguiente campo para la partición por entidades:


| Nombre de la entidad | Campos de partición | Tipo de datos: | 
| --- | --- | --- | 
| transacción | transaction\$1initiation\$1date | DateTime | 

Ejemplo:

```
paypal_read = glueContext.create_dynamic_frame.from_options(
    connection_type="paypal",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "transaction",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "transaction_initiation_date"
        "LOWER_BOUND": "2024-07-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-07-02T00:00:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

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

Las siguientes son opciones de conexión para PayPal:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en PayPal.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de PayPal que desea usar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Limitaciones y notas del conector de PayPal
<a name="paypal-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de PayPal:
+ La [documentación sobre transacciones de PayPal](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get) indica que las transacciones ejecutadas tardan un máximo de tres horas en reflejarse en la llamada a lista de transacciones. Sin embargo, se ha observado que lleva más tiempo que eso según la [https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=last_refreshed_datetime](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=last_refreshed_datetime). En este caso, `last_refreshed_datetime` es la cantidad de tiempo durante el cual tiene disponibles los datos de las API.
+ Si la `last_refreshed_datetime` es anterior a la `end_date` solicitada, la `end_date` pasa a ser igual a la `last_refreshed_datetime`, ya que solo tenemos datos hasta ese momento.
+ El campo `transaction_initiation_date` es un filtro obligatorio que se debe proporcionar para la entidad `transaction` y el intervalo de fechas [máximo admitido](https://developer.paypal.com/docs/transaction-search/#:~:text=The%20maximum%20supported%20date%20range%20is%2031%20days.) para este campo es de 31 días.
+ Cuando llama a la solicitud de API de la entidad `transaction` con filtros (parámetros de consulta) distintos del campo `transaction_initiation_date`, se espera que el valor del campo [https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=If%20you%20specify%20one%20or%20more%20optional%20query%20parameters%2C%20the%20ending_balance%20response%20field%20is%20empty.](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=If%20you%20specify%20one%20or%20more%20optional%20query%20parameters%2C%20the%20ending_balance%20response%20field%20is%20empty.) no aparezca en la respuesta.

# Conexión a Pendo
<a name="connecting-to-pendo"></a>

Pendo proporciona un rico almacén de datos para los datos de interacción con los usuarios. Los clientes transferirán estos datos a AWS para poder unirlos con otros datos de productos, realizar análisis adicionales y crear paneles, así como establecer alertas si así lo desean.

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

# Compatibilidad de AWS Glue con Pendo
<a name="pendo-support"></a>

AWS Glue admite Pendo de la siguiente manera:

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

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

**Versiones de la API de Pendo compatibles**  
 v1 

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede acceso completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Pendo
<a name="pendo-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Pendo, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="pendo-configuring-min-requirements"></a>
+ Tener una cuenta de Pendo con una `apiKey` con `write access` habilitado.
+  La cuenta de Pendo debe disponer de acceso de API con una licencia válida. 

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Pendo. Si es una conexión típica, no necesita hacer nada más en Pendo.

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

Pendo admite la autenticación personalizada.

Para consultar la documentación pública de Pendo sobre la generación de las claves de API necesarias para la autorización personalizada, consulte [Authentication – Pendo REST API Documentation](https://engageapi.pendo.io/?bash#getting-started). 

Para configurar una conexión a Pendo:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 
   + En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `apiKey` como clave. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

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

   1. Al seleccionar un **Origen de datos**, elija Pendo.

   1. Proporcione la `instanceUrl` de la instancia de Pendo a la que se quiere conectar.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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`. 

1. En la configuración del trabajo de AWS Glue, proporcione `connectionName` como una conexión de red adicional.

# Lectura de entidades de Pendo
<a name="pendo-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de Pendo desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 
+ [Característica](https://developers.pendo.io/docs/?bash#feature)
+ [Guía](https://developers.pendo.io/docs/?bash#guide)
+ [Page](https://developers.pendo.io/docs/?bash#page)
+ [Informar](https://developers.pendo.io/docs/?bash#report)
+ [Datos del informe](https://developers.pendo.io/docs/?bash#return-report-contents-as-array-of-json-objects)
+ [Visitante](https://developers.pendo.io/docs/?bash#visitor)
+ [Cuenta de](https://developers.pendo.io/docs/?bash#entities)
+ [Evento](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Evento de característica](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Evento guía](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [Evento de página](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Evento de encuesta](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [Evento de seguimiento](https://developers.pendo.io/docs/?bash#events-grouped)


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Característica | No | No | No | Sí | No | 
| Guía | No | No | No | Sí | No | 
| Page | No | No | No | Sí | No | 
| Informar | No | No | No | Sí | No | 
| Datos del informe | No | No | No | Sí | No | 
| Visitante (API de agregación) | Sí | No | Sí | Sí | No | 
| Cuenta (API de agregación) | Sí | No | Sí | Sí | No | 
| Cuenta (API de agregación) | Sí | No | Sí | Sí | No | 
| Evento de característica (API de agregación) | Sí | No | Sí | Sí | Sí | 
| Evento de guía (API de agregación) | Sí | No | Sí | Sí | Sí | 
| Cuenta (API de agregación) | Sí | No | Sí | Sí | Sí | 
| Evento de página (API de agregación) | Sí | No | Sí | Sí | Sí | 
| Evento de encuesta (API de agregación) | Sí | No | Sí | Sí | Sí | 
| Evento de seguimiento (API de agregación) | Sí | No | Sí | Sí | Sí | 

 **Ejemplo** 

```
Pendo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.Pendo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "feature",
        "API_VERSION": "v1",
        "INSTANCE_URL": "instanceUrl"
    }
```

## Consultas de particionamiento
<a name="adobe-marketo-engage-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo DateTime, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

En la tabla siguiente, se describen los detalles de compatibilidad de campos de particiones de entidades:


| Nombre de la entidad | 
| --- | 
| Evento | 
|  Evento de característica  | 
| Evento de guía | 
| Evento de página | 
| Evento de encuesta | 
| Evento de seguimiento | 

Ejemplo:

```
pendo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.pendo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "event",
        "API_VERSION": "v1",
        "INSTANCE_URL": "instanceUrl"
        "NUM_PARTITIONS": "10",
        "PARTITION_FIELD": "appId"
        "LOWER_BOUND": "4656"
        "UPPER_BOUND": "7788"
    }
```

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

Existen las siguientes opciones para establecer conexión con Pendo:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Pendo. 
+ `INSTANCE_URL`(cadena): (obligatorio) una URL de instancia de Pendo válida con los siguientes valores permitidos:
  + [Predeterminado](https://app.pendo.io/)
  + [Europa](https://app.eu.pendo.io/)
  + [US1](https://us1.app.pendo.io/)
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Pendo Engage que desea utilizar. Por ejemplo: 3.0.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Limitaciones
<a name="pendo-connector-limitations"></a>

El conector de Pendo presenta las siguientes limitaciones:
+ No se admite la paginación en Pendo.
+ La filtración solo es compatible con los objetos de la API de agregación: (`Account`, `Event`, `Feature Event`, `Guide Events`, `Page Event`, `Poll Event`, `Track Event` y `Visitor`).
+ DateTimeRange es un parámetro de filtro obligatorio para los objetos de la API de agregación (`Event`, `Feature Event`, `Guide Events`, `Page Event`, `Poll Event,` y `Track Event`)
+ El periodo dayRange se redondeará hacia abajo hasta el comienzo del periodo en la zona horaria correspondiente. Por ejemplo, si se proporciona el filtro `2023-01-12T07:55:27.065Z`, este periodo se redondeará al inicio del período, es decir `2023-01-12T00:00:00Z`. 

# Conexión a Pipedrive
<a name="connecting-to-pipedrive"></a>

 Pipedrive es un CRM de administración de embudos de ventas diseñado para ayudar a las pequeñas empresas a administrar clientes potenciales, dar seguimiento a las actividades comerciales y cerrar más negocios. Pipedrive permite a los equipos de ventas de pequeñas empresas optimizar procesos y consolidar datos de ventas en una única herramienta unificada de CRM de ventas. Si es usuario de Pipedrive, puede conectar AWS Glue a la cuenta de Pipedrive. Tras ello, podrá utilizar Pipedrive como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Pipedrive y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Pipedrive](pipedrive-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](pipedrive-configuring-iam-permissions.md)
+ [Configuración de Pipedrive](pipedrive-configuring.md)
+ [Configuración de las conexiones de Pipedrive](pipedrive-configuring-connections.md)
+ [Lectura de entidades de Pipedrive](pipedrive-reading-from-entities.md)
+ [Referencia de opciones de conexión de Pipedrive](pipedrive-connection-options.md)
+ [Limitaciones](pipedrive-connector-limitations.md)

# Compatibilidad de AWS Glue con Pipedrive
<a name="pipedrive-support"></a>

AWS Glue es compatible con Pipedrive de la siguiente manera:

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

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

**Versiones de la API de Pipedrive compatibles**  
 v1. 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Pipedrive
<a name="pipedrive-configuring"></a>

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

## Requisitos mínimos
<a name="pipedrive-configuring-min-requirements"></a>
+  Tener una cuenta de Pipedrive. 
+  La cuenta de Pipedrive debe estar habilitada para el acceso de API. 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Pipedrive. Si es una conexión típica, no necesita hacer nada más en Pipedrive. 

# Configuración de las conexiones de Pipedrive
<a name="pipedrive-configuring-connections"></a>

 Pipedrive admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2. 
+  Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, confiar en una aplicación conectada propiedad de AWS Glue en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de la instancia de Pipedrive. La consola de AWS Glue redirigirá al usuario a Pipedrive, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Pipedrive. 
+  Los usuarios deberían optar por crear una aplicación conectada propia en Pipedrive y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Pipedrive para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 
+  Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso permanecerá válido durante una hora y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 
+  Para obtener más información, consulte la [documentación sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth](https://developers.pipedrive.com/docs/api/v1/Oauth). 

Para configurar una conexión a Pipedrive:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  En el caso de aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET como clave. 

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

   1.  En Conexiones de datos, elija **Crear conexión**. 

   1. Al seleccionar un **Origen de datos**, elija Pipedrive.

   1. Proporcione la **URL de la instancia** de Pipedrive.

   1.  Seleccione el rol de 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.  Proporcione el ID de cliente de la aplicación cliente administrada por el usuario de Pipedrive a la que se desea conectar. 

   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`. Elija **Siguiente**. 

1.  Proporcione el **connectionName** y elija **Siguiente**. 

1.  En la página siguiente, elija **Crear conexión**. Se le pedirá que inicie sesión en Pipedrive. Indique su nombre de usuario y la contraseña y elija **Iniciar sesión**. 

1.  Una vez que haya iniciado sesión, seleccione **Continuar a la aplicación**. La conexión está lista para usarse. 

1.  En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**. 

# Lectura de entidades de Pipedrive
<a name="pipedrive-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Pipedrive del que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Actividades | Sí | Sí | No | Sí | Sí | 
| Tipo de actividad | No | No | No | Sí | No | 
| Registros de llamadas | No | No | No | Sí | No | 
| Divisas | Sí | Sí | No | Sí | No | 
| Acuerdos | Sí | Sí | Sí | Sí | Sí | 
| Leads | Sí | Sí | Sí | Sí | No | 
| Fuentes de clientes potenciales | No | Sí | No | Sí | No | 
| Etiquetas de clientes potenciales | No | No | No | No | No | 
| Notas | Sí | Sí | Sí | Sí | Sí | 
| Organización | Sí | Sí | No | Sí | Sí | 
| Conjuntos de permisos | Sí | No | No | Sí | No | 
| Personas | Sí | Sí | Sí | Sí | Sí | 
| Canalizaciones | No | Sí | No | Sí | No | 
| Productos | Sí | Sí | No | Sí | Sí | 
| Roles | No | Sí | No | Sí | No | 
| Etapas | Sí | Sí | No | Sí | No | 
| Usuarios | No | No | No | Sí | No | 

 **Ejemplo** 

```
pipedrive_read= glueContext.create_dynamic_frame.from_options(
    connection_type="PIPEDRIVE",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "activites",
        "API_VERSION": "v1"
    }
```

 **Detalles de entidades y campos de Pipedrive** 

 Lista de entidades: 
+  Actividades: [ https://developers.pipedrive.com/docs/api/v1/Activities ](https://developers.pipedrive.com/docs/api/v1/Activities) 
+  Tipo de actividad: [ https://developers.pipedrive.com/docs/api/v1/ActivityTypes ](https://developers.pipedrive.com/docs/api/v1/ActivityTypes) 
+  Registros de llamadas: [ https://developers.pipedrive.com/docs/api/v1/CallLogs ](https://developers.pipedrive.com/docs/api/v1/CallLogs) 
+  Divisas: [ https://developers.pipedrive.com/docs/api/v1/Currencies ](https://developers.pipedrive.com/docs/api/v1/Currencies) 
+  Negocios: [ https://developers.pipedrive.com/docs/api/v1/Deals ](https://developers.pipedrive.com/docs/api/v1/Deals) 
+  Clientes potenciales: [ https://developers.pipedrive.com/docs/api/v1/Leads ](https://developers.pipedrive.com/docs/api/v1/Leads) 
+  Fuentes de clientes potenciales: [ https://developers.pipedrive.com/docs/api/v1/LeadSources ](https://developers.pipedrive.com/docs/api/v1/LeadSources) 
+  Etiquetas de clientes potenciales: [ https://developers.pipedrive.com/docs/api/v1/LeadLabels ](https://developers.pipedrive.com/docs/api/v1/LeadLabels) 
+  Notas: [ https://developers.pipedrive.com/docs/api/v1/Notes ](https://developers.pipedrive.com/docs/api/v1/Notes) 
+  Organizaciones: [ https://developers.pipedrive.com/docs/api/v1/Organizations ](https://developers.pipedrive.com/docs/api/v1/Organizations) 
+  Conjuntos de permisos: [ https://developers.pipedrive.com/docs/api/v1/PermissionSets ](https://developers.pipedrive.com/docs/api/v1/PermissionSets) 
+  Personas: [ https://developers.pipedrive.com/docs/api/v1/Persons ](https://developers.pipedrive.com/docs/api/v1/Persons) 
+  Embudos de ventas: [ https://developers.pipedrive.com/docs/api/v1/Pipelines ](https://developers.pipedrive.com/docs/api/v1/Pipelines) 
+  Productos: [ https://developers.pipedrive.com/docs/api/v1/Products ](https://developers.pipedrive.com/docs/api/v1/Products) 
+  Roles: [ https://developers.pipedrive.com/docs/api/v1/Roles ](https://developers.pipedrive.com/docs/api/v1/Roles) 
+  Etapas: [ https://developers.pipedrive.com/docs/api/v1/Stages ](https://developers.pipedrive.com/docs/api/v1/Stages) 
+  Usuarios: [ https://developers.pipedrive.com/docs/api/v1/Users ](https://developers.pipedrive.com/docs/api/v1/Users) 


| Entidad | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | 
| Actividades, negocios, notas, organización, personas y productos. | Date | '=' | 
|  | Entero | '=' | 
|  | Cadena | '=' | 
|  | Booleano | '=' | 

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

 En Pipedrive, solo un campo (due\$1date) de la entidad Actividades admite la partición basada en campos. Se trata de un campo de fecha. 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 **Ejemplo** 

```
pipedrive_read = glueContext.create_dynamic_frame.from_options(
    connection_type="PIPEDRIVE",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "activites",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "due_date"
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z"
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Referencia de opciones de conexión de Pipedrive
<a name="pipedrive-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Pipedrive:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Pipedrive. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de Rest de Pipedrive que desea usar. Ejemplo: v1. 
+  `INSTANCE_URL`(cadena): (obligatorio) URL de la instancia en la que el usuario desea ejecutar las operaciones. Ejemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Limitaciones
<a name="pipedrive-connector-limitations"></a>

El conector de Pipedrive presenta las siguientes limitaciones:
+ Pipedrive admite la partición basada en campos únicamente para una entidad (Actividades).
+ Pipedrive admite la partición basada en registros para las entidades Actividades, Negocios, Notas, Personas, Organizaciones y Productos.
+ En la entidad Negocios, el campo de estado como filtro devolverá todos los registros si se usa un valor de filtro no válido.
+ En la entidad Negocios, no se admite la ordenación por múltiples campos.
+ Para obtener datos de rendimiento, utilizamos una cuenta de AWS local. Sin embargo, debido a la limitación en la actualización del token de acceso a nivel local, el trabajo de AWS Glue falla al procesar 1 GB de datos. Como consecuencia, hemos optimizado la prueba de rendimiento con 179 MB de datos, y los resultados anteriores se basan en esta optimización. No obstante, hemos observado que, a medida que aumenta la cantidad de particiones, el punto de conexión SaaS tarda más tiempo en comparación con una única partición. Hemos consultado con el equipo de soporte de Pipedrive sobre este comportamiento, y nos informaron que Pipedrive limita silenciosamente las solicitudes y retrasa la respuesta. Por lo tanto, al ejecutar el trabajo de AWS Glue con conjuntos de datos grandes o al llamar varias veces al mismo punto de conexión de la API, se puede producir un problema de tiempo de espera debido a la implementación de la API de Pipedrive. Sin embargo, los tiempos de respuesta del conector y de la capa intermedia disminuyen como se esperaba a medida que aumenta la cantidad de particiones.

# Conexión a Productboard
<a name="connecting-to-productboard"></a>

Productboard es un sistema de administración de productos que ayuda a los equipos encargados de ellos a lanzar al mercado los productos adecuados con mayor rapidez. Más de 3000 empresas modernas orientadas al producto, como Zendesk, UiPath y Microsoft, utilizan Productboard para comprender lo que realmente necesitan los usuarios, priorizar qué desarrollar a continuación y alinear a todos en torno a su hoja de ruta.

**Topics**
+ [Compatibilidad de AWS Glue con Productboard](productboard-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](productboard-configuring-iam-permissions.md)
+ [Configuración de Productboard](productboard-configuring.md)
+ [Configuración de las conexiones a Productboard](productboard-configuring-connections.md)
+ [Lectura de entidades de Productboard](productboard-reading-from-entities.md)
+ [Opciones de conexión a Productboard](productboard-connection-options.md)
+ [Creación de una cuenta de Productboard](productboard-create-account.md)
+ [Limitaciones](productboard-connector-limitations.md)

# Compatibilidad de AWS Glue con Productboard
<a name="productboard-support"></a>

AWS Glue es compatible con Productboard de la siguiente manera:

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

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

**Versiones de la API de Productboard compatibles**  
 v1 

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede acceso completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Productboard
<a name="productboard-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Productboard, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="productboard-configuring-min-requirements"></a>
+ Tener una cuenta de Productboard con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Creating a Productboard account](productboard-create-account.md). 
+  Debe tener una cuenta de AWS creada con el servicio de acceso a AWS Glue. 
+ Contar con los detalles de autenticación de una cuenta de Productboard: el token JWT si quiere utilizar la autenticación personalizada o el ID y el secreto de cliente si quiere utilizar OAuth2.0.
+ Si el usuario quiere utilizar `OAuth2.0`, [registre la aplicación en Productboard](https://app.productboard.com/oauth2/applications/new) y configúrela. Para ello, siga las instrucciones que se encuentran en la documentación para desarrolladores [How to integrate with Productboard via OAuth2](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation).

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Productboard. Si se trata de una conexión típica, no necesita hacer nada más en Productboard.

# Configuración de las conexiones a Productboard
<a name="productboard-configuring-connections"></a>

 

Productboard admite la autenticación personalizada y `OAuth2.0`. En el caso de `OAuth2.0`, Productboard admite el tipo de concesión `AUTHORIZATION_CODE`.
+ Este tipo de concesión se considera un `OAuth` de “tres patas”, ya que depende de redirigir a los usuarios al servidor de autorización de terceros para autenticarlos. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, depender de una aplicación conectada propiedad de AWS Glue, en la que no necesita proporcionar ninguna información relacionada con `OAuth`, excepto su ID de cliente y secreto de cliente de Productboard. La consola de AWS Glue redirigirá al usuario a Productboard, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Productboard.
+ Los usuarios aún pueden optar por crear su propia aplicación conectada en Productboard y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Productboard para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para ver la documentación pública de Productboard sobre la creación de una aplicación conectada para el flujo `AUTHORIZATION_CODE OAuth`, consulte la documentación para desarrolladores [How to integrate with Productboard via OAuth2](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation). 

Para configurar una conexión a Productboard:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 
   + Para la autenticación `OAuth`, en el caso de una aplicación conectada administrada por el cliente: el secreto debe contener el secreto del cliente de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave. 
   + Para `Custom auth`, en el caso de una aplicación conectada administrada por el cliente: el secreto debe contener el `JWT token` de la aplicación conectada con `access_token` como clave. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

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

   1. Al seleccionar un **Origen de datos**, elija Productboard. 

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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 tipo de autenticación para conectarse al origen de datos:
      + Para la autenticación `OAuth`: proporcione el `Token URL`, así como el `User Managed Client Application ClientId` de la aplicación de Productboard.

   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`. 

1. En la configuración del trabajo de AWS Glue, proporcione `connectionName` como una conexión de red adicional.

# Lectura de entidades de Productboard
<a name="productboard-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de Productboard desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 
+ [Informes de abuso ](https://productboard.com/developer/marketing/api/campaign-abuse/)
+ [Automation](https://productboard.com/developer/marketing/api/automation/list-automations/)
+ [Campañas de](https://productboard.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Detalles de los clics](https://productboard.com/developer/marketing/api/link-clickers/)
+ [Listas](https://productboard.com/developer/marketing/api/link-clickers/)
+ [Miembros](https://productboard.com/developer/marketing/api/list-segment-members/)
+ [Detalles de aperturas](https://productboard.com/developer/marketing/api/list-members/)
+ [Segmentos](https://productboard.com/developer/marketing/api/list-segments/)
+ [Almacenes](https://productboard.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Cancelación de suscripción](https://productboard.com/developer/marketing/api/unsub-reports/)


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
|  Características  | Sí | Sí | No | Sí | Sí | 
|  Componentes  | No | Sí | No | Sí | No | 
|  Productos  | No | Sí | No | Sí | No | 
|  Estados de las características  | No | Sí | No | Sí | Sí | 
|  Definiciones de campo personalizado  | No | Sí | No | Sí | No | 
|  Valores de campo personalizado  | Sí | Sí | No | Sí | No | 

 **Ejemplo** 

```
Productboard_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Productboard",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "feature",
        "API_VERSION": "1"
    }
```

 **Detalles de entidades y campos de Productboard** 
+ [Características](https://developer.productboard.com/#tag/features)
+ [Componentes](https://developer.productboard.com/#tag/components)
+ [Estados de las características](https://developer.productboard.com/#tag/statuses)
+ [Productos en la](https://developer.productboard.com/#tag/products)
+ [Definiciones de campo personalizado](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFields)
+ [Valores de campo personalizado](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFieldsValues)

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

Existen las siguientes opciones para establecer conexión con Productboard:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Productboard. 
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Productboard Engage que desea utilizar. Por ejemplo: 3.0.
+ `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.

# Creación de una cuenta de Productboard
<a name="productboard-create-account"></a>

1. Vaya a la [página de registro de Productboard](https://app.productboard.com/), ingrese su dirección de correo electrónico y contraseña y, a continuación, seleccione **Iniciar sesión**.

1. En el campo **Nombre de la cuenta**, ingrese el nombre de la cuenta de Productboard y, a continuación, active la casilla **Acepto la política de privacidad**.

1. En la página **Cree ahora el espacio de trabajo**, en el campo **URL del espacio de trabajo**, ingrese la URL del nuevo espacio de trabajo. A continuación, elija **Continuar** para pasar a la página siguiente y proporcionar el resto de los detalles.

   Esto crea la cuenta de prueba. La cuenta de prueba es gratuita durante 15 días. Una vez que venza el periodo de prueba, podrá comprar un plan de pago. Anote la dirección de correo electrónico, contraseña y URL del espacio de trabajo. Necesitará esta información para acceder a la cuenta en el futuro.

**Cómo registrar una aplicación de `OAuth2.0`**

1. Vaya a la [página de inicio de sesión de Productboard](https://login.productboard.com/?locale=en), ingrese la dirección de correo electrónico y contraseña y, a continuación, seleccione **Iniciar sesión**. 

1. Seleccione el icono **Usuario** en la esquina superior derecha y, a continuación, elija **Cuenta y facturación** en el menú desplegable.

1. Seleccione **Extras** y elija **Aplicaciones registradas** en el menú desplegable.

1. Busque la opción **Registrar una aplicación** y selecciónela.

1. Escriba la información siguiente:
   + **Nombre de la aplicación**: nombre de la aplicación. 
   + **Empresa/organización**: nombre de la empresa u organización.
   + **Sitio web de la aplicación**: sitio web de la aplicación.
   + **URI de redireccionamiento**: un patrón de URI de redireccionamiento es una ruta de URI (o una lista de rutas separadas por comas) a la que Productboard puede redirigir (si se solicita) cuando finaliza el flujo de inicio de sesión. Por ejemplo: ., `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Seleccione **Crear**. 

1. Ahora aparecerán el **ID de cliente** y el **secreto de cliente**. Cópielos y guárdelos en un lugar seguro. A continuación, seleccione **Listo**. 
**nota**  
Las cadenas de ID de cliente y secreto de cliente son las credenciales utilizadas para establecer una conexión con este conector cuando se utiliza AppFlow o AWS Glue.

**Cómo recuperar credenciales de CustomAuth**

1. Vaya a la [página de inicio de sesión de Productboard](https://app.productboard.com/), ingrese la dirección de correo electrónico y la contraseña y, a continuación, seleccione **Iniciar sesión**.

   Será redirigido a la página de inicio.

1. En la página de inicio, vaya a **Configuración del espacio de trabajo** > **Integraciones** > **API públicas** > **Token de acceso**.
**nota**  
Si la sección **API públicas** no aparece, es posible que su cuenta esté en el plan Essentials. Para acceder a los tokens de la API, se requiere al menos un plan Pro. Las características y los nombres de los planes pueden estar sujetos a cambios. Para obtener más información sobre los paquetes, consulte [Precios de Productboard](https://www.productboard.com/pricing/).

1. Elija **\$1** para generar un nuevo token y asegúrese de guardarlo de forma segura para consultarlo en el futuro.

**Creación de credenciales de `OAuth2.0`**

Para utilizar la autenticación `OAuth2.0` con el conector de Productboard, debe registrar la aplicación en la plataforma de Productboard y generar tanto el `Client ID` como el `Client Secret`.

1. Vaya a la [página de inicio de sesión de Productboard](https://app.productboard.com/), ingrese la dirección de correo electrónico y la contraseña y, a continuación, seleccione **Iniciar sesión**.

1. Para registrar una nueva aplicación OAuth2 en la cuenta de Productboard, vaya a la página de [Productboard](to register new OAuth2 application with your Productboard account).

1. Complete los campos obligatorios y seleccione los ámbitos necesarios para cada entidad a la que desee acceder. 
**nota**  
Ha seleccionado los siguientes cuatro ámbitos, que son obligatorios para las seis entidades compatibles.

1. **La URL de redireccionamiento** debe tener el siguiente formato: `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`
**nota**  
Las URL de redireccionamiento de Appflow están sujetas a cambios. Cuando estén disponibles, actualice las URL de redireccionamiento de la plataforma de AWS Glue.

1. Ahora aparecerán el **ID de cliente** y el **secreto de cliente**. Cópielos y guárdelos en un lugar seguro. 

1. Puede configurar y verificar `OAuth2`. Para ello, siga los pasos que se indican en la documentación para desarrolladores de [How to Integrate with Productboard via OAuth2](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation).

# Limitaciones
<a name="productboard-connector-limitations"></a>

El conector de Productboard presenta las siguientes limitaciones:
+ Productboard no admite la partición basada en campos ni en registros.

# Conexión a QuickBooks
<a name="connecting-to-data-quickbooks"></a>

QuickBooks es una aplicación de contabilidad líder dirigida a pequeñas y medianas empresas. Las aplicaciones de contabilidad QuickBooks se remontan a la década de 1980, cuando fueron lanzadas como uno de los primeros productos de Intuit y, en consecuencia, originalmente se desarrollaron como software de escritorio. En la actualidad, QuickBooks ofrece diversas aplicaciones de contabilidad y gestión financiera empresarial, disponibles tanto como software instalable como en su versión SaaS basada en la nube. Como usuario de QuickBooks, puede conectar AWS Glue a la cuenta de QuickBooks. A continuación, puede utilizar QuickBooks como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre QuickBooks y los servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con QuickBooks
<a name="quickbooks-support"></a>

AWS Glue admite QuickBooks de la siguiente manera:

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

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

**Versiones de la API de QuickBooks compatibles**  
Se admiten las siguientes versiones de la API de QuickBooks:
+ v3

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="quickbooks-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 QuickBooks
<a name="quickbooks-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de QuickBooks.
+ La cuenta de QuickBooks está habilitada para el acceso a la API.

Para obtener más información, consulte los siguientes temas en la documentación de QuickBooks:
+ [Creación de una cuenta de Intuit](https://quickbooks.intuit.com/learn-support/en-us/help-article/account-management/create-intuit-user-account/L62kSFEOM_US_en_US)
+ [Cómo crear y comenzar a desarrollar la aplicación](https://developer.intuit.com/app/developer/qbo/docs/get-started/start-developing-your-app)

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

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

QuickBooks admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth 2. El tipo de concesión determina cómo se comunica AWS Glue con QuickBooks para solicitar el acceso a los datos.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue.
+ Los usuarios aún pueden optar por crear su propia aplicación conectada en QuickBooks y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá QuickBooks para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de QuickBooks sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Configuración de OAuth 2.0](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0).

Para configurar una conexión a QuickBooks:

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 QuickBooks.

   1. Proporcione la URL de instancia y el ID de la empresa de la instancia QuickBooks a la que se desea 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 a partir de entidades de QuickBooks
<a name="quickbooks-reading-from-entities"></a>

**Requisito previo**

Un objeto de QuickBooks desde el que desea leer.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Cuenta | Sí | Sí | Sí | Sí | Sí | 
| Factura | Sí | Sí | Sí | Sí | Sí | 
| Información de la empresa | No | No | No | Sí | No | 
| Cliente | Sí | Sí | Sí | Sí | Sí | 
| Empleado | Sí | Sí | Sí | Sí | Sí | 
| Estimación | Sí | Sí | Sí | Sí | Sí | 
| Factura | Sí | Sí | Sí | Sí | Sí | 
| Elemento | Sí | Sí | Sí | Sí | Sí | 
| Pago | Sí | Sí | Sí | Sí | Sí | 
| Preferencias | No | No | No | Sí | No | 
| Pérdidas y ganancias | Sí | No | No | Sí | No | 
| Agencia fiscal | Sí | Sí | Sí | Sí | Sí | 
| Proveedores | Sí | Sí | Sí | Sí | Sí | 

**Ejemplo:**

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v3"
    }
```

**Detalles de entidades y campos de QuickBooks**:

Para obtener más información acerca de las entidades y los detalles de los campos, consulte:
+ [Cuenta](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account)
+ [Factura](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/bill)
+ [CompanyInfo](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/companyinfo)
+ [Cliente](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/customer)
+ [Empleado](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/employee)
+ [Estimación](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/estimate)
+ [Factura](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice)
+ [Elemento](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/item)
+ [Pago](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/payment)
+ [Preferencias](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/preferences)
+ [ProfitAndLoss](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/profitandloss)
+ [TaxAgency](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/taxagency)
+ [Vendor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/vendor)

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

**Partición basada en campos**:

En QuickBooks, los campos de tipo de datos Integer y DateTime admiten la partición basada en campos.

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas SQL de Spark.

  Ejemplos de valor válido:

  ```
  "2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "REALMID": "12345678690123456789",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v3",
        "PARTITION_FIELD": "MetaData_CreateTime"
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z"
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z"
        "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:

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

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

Las siguientes son opciones de conexión para QuickBooks:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en QuickBooks.
+ `INSTANCE_URL`(Cadena): (obligatorio) una URL de instancia de QuickBooks válida.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de QuickBooks que desea usar.
+ `REALM_ID`(Cadena): un identificador que identifica a una empresa individual de QuickBooks 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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Limitaciones y notas del conector de QuickBooks
<a name="quickbooks-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de QuickBooks:
+ En la API de `taxAgency`, el orden por filtrado no funciona como se esperaba.

# Conexión a una API de REST
<a name="connecting-to-data-rest-api"></a>

 AWS Glue le permite configurar un ConnectionType de la AWS Glue que se puede usar para conectar la AWS Glue a cualquier origen de datos basado en la API de REST. Se puede utilizar como un origen de datos en los trabajos de ETL. Se pueden ejecutar estos trabajos para transferir datos entre el origen de datos basado en la API de REST y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con la API de REST](rest-api-support.md)
+ [Políticas que contienen las operaciones de la API para registrar los tipos de conexiones y crear y usar conexiones](rest-api-configuring-iam-permissions.md)
+ [Configuración de ConnectionType de la API de REST](rest-api-configuring.md)
+ [Configuración de una conexión de la API de REST](rest-api-configuring-connections.md)
+ [Instructivo: Creación de un recurso ConnectionType y una conexión de la API de REST](rest-api-example.md)
+ [Limitaciones](rest-api-limitations.md)

# Compatibilidad de AWS Glue con la API de REST
<a name="rest-api-support"></a>

AWS Glue admite la API de REST de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de un origen de datos basado en la API de REST.

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

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

 En el siguiente ejemplo de la política de IAM se describen los permisos necesarios para registrar, crear, administrar y utilizar conexiones de la API de REST con los trabajos de ETL de la AWS Glue. Si va a crear un nuevo rol, cree una política que contenga lo siguiente: 

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

También puede usar las siguientes políticas de IAM para permitir el acceso:
+ [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.

Si se proporcionan opciones de red al crear una conexión de la API de REST, también se deben incluir las siguientes acciones en el rol de IAM:

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

# Configuración de ConnectionType de la API de REST
<a name="rest-api-configuring"></a>

 Antes de poder utilizar la AWS Glue para transferir datos desde el origen de datos basado en la API de REST, debe cumplir estos requisitos: 

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

Los requisitos mínimos son los siguientes:
+  Se ha configurado y registrado un tipo de conexión de la API de REST de la AWS Glue. Consulte [Conectarse a las API de REST](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html). 
+  Si se utilizan las credenciales del cliente OAuth2, el código de autorización o el JWT, se debe configurar la aplicación cliente en consecuencia. 

 Si se cumplen estos requisitos, estará listo para conectar la AWS Glue al origen de datos basado en la API de REST. Por lo general, no se necesitan más configuraciones en el lado de la API de REST. 

# Configuración de una conexión de la API de REST
<a name="rest-api-configuring-connections"></a>

 Para configurar un conector de la API de REST de AWS Glue, debe configurar un tipo de conexión de la AWS Glue. Este tipo de conexión contiene detalles sobre las propiedades de funcionamiento del origen de datos de REST e interpreta aspectos como la autenticación, las solicitudes, las respuestas, la paginación, las validaciones y las entidades/los metadatos. Para obtener una lista completa de las propiedades necesarias para un tipo de conexión REST de AWS Glue, consulte la API [RegisterConnectionType](https://docs.aws.amazon.com/glue/latest/webapi/API_DescribeConnectionType.html) y los pasos para [conectarse a las API de REST](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html). 

 Al crear el conector de la API de REST, se necesita la siguiente política para permitir las acciones pertinentes: 

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

# Instructivo: Creación de un recurso ConnectionType y una conexión de la API de REST
<a name="rest-api-example"></a>

**Conexión a la API de REST de Foo**

 Crearemos un recurso ConnectionType de la API de REST de la AWS Glue y una conexión de la AWS Glue correspondiente para la API de REST de Foo. Esta API tiene las siguientes propiedades (que se pueden recuperar de la documentación de la API de REST). 
+  **URL de la instancia**: https://foo.cloud.com/rest/v1. 
+  **Tipo de autenticación**: OAuth2 (credenciales de cliente). 
+  **Método de REST**: GET. 
+  **Tipo de paginación**: compensación con las propiedades “limit” y “offset” situadas en el parámetro de consulta de la solicitud. 
+ **Entidades compatibles**:
  +  **Bar**: ruta relativa [/bar.json]. 
  +  **Baz**: ruta relativa [/baz.json]. 

 Una vez obtenidos todos los detalles, podemos empezar a crear la conexión de la AWS Glue a la API de REST de Foo. 

**Para crear una conexión de la API de REST**:

1.  Cree el tipo de conexión de la API de REST en la AWS Glue al llamar a la API de RegisterConnectionType mediante la API, la CLI o el SDK de AWS. Esto creará un nuevo recurso ConnectionType en la AWS Glue. 

   ```
   {
       "ConnectionType": "REST-FOO-CONNECTOR",
       "IntegrationType": "REST",
       "Description": "AWS Glue Connection Type for the FOO REST API",
       "ConnectionProperties": {
           "Url": {
               "Name": "Url",
               "Required": true,
               "DefaultValue": "https://foo.cloud.com/rest/v1",
               "PropertyType": "USER_INPUT"
           }
       },
       "ConnectorAuthenticationConfiguration": {
           "AuthenticationTypes": ["OAUTH2"],
           "OAuth2Properties": {
               "OAuth2GrantType": "CLIENT_CREDENTIALS"
           }
       },
       "RestConfiguration": {
           "GlobalSourceConfiguration": {
           "RequestMethod": "GET",
           "ResponseConfiguration": {
               "ResultPath": "$.result",
               "ErrorPath": "$.error.message"
           },
           "PaginationConfiguration": {
               "OffsetConfiguration": {
                   "OffsetParameter": {
                       "Key": "offset",
                       "PropertyLocation": "QUERY_PARAM"
                   },
                   "LimitParameter": {
                       "Key": "limit",
                       "PropertyLocation": "QUERY_PARAM",
                       "DefaultValue": "50"
                   }
               }
           }
       },
       "ValidationEndpointConfiguration": {
           "RequestMethod": "GET",
           "RequestPath": "/bar.json?offset=1&limit=10"
       },
       "EntityConfigurations": {
           "bar": {
               "SourceConfiguration": {
                   "RequestMethod": "GET",
                   "RequestPath": "/bar.json",
                   "ResponseConfiguration": {
                       "ResultPath": "$.result",
                       "ErrorPath": "$.error.message"
                   }
               },
               "Schema": {
                   "name": {
                       "Name": "name",
                       "FieldDataType": "STRING"
                   },
                   "description": {
                       "Name": "description",
                       "FieldDataType": "STRING"
                   },
                   "id": {
                       "Name": "id",
                       "FieldDataType": "STRING"
                   },
                   "status": {
                       "Name": "status",
                       "FieldDataType": "STRING"
                   }
               }
           }
       }
   }
   }
   ```

1.  En AWS Secrets Manager, crear un secreto. El secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave. 
**nota**  
Debe crear un secreto por cada conexión en la AWS Glue.

1.  Cree la conexión de la AWS Glue al llamar a la API CreateConnection mediante la API, la CLI o el SDK de AWS. 

   1.  Haga referencia al nombre del tipo de conexión REST del paso 1 como “ConnectionType”. 

   1.  Proporcione la InstanceURL y cualquier otra propiedad de ConnectionProperties que se haya definido durante el proceso de registro de ConnectionType de la AWS Glue. 

   1.  Elija uno de los tipos de autenticación configurados. La API de REST de Foo usa OAuth2 con el tipo de concesión ClientCredentials. 

   1.  Proporcione **SecretArn** y otras **AuthenticationProperties** que estén configuradas. Por ejemplo, se ha configurado `OAUTH2` como AuthenticationType, por lo que se establecer “OAuth2Properties” en CreateConnectionInput. Esto requerirá propiedades como “OAuth2GrantType”, “TokenURL” y “OAuth2ClientApplication”. 

1.  Realice la solicitud CreateConnection que creará la conexión de la AWS Glue. 

   ```
   {
       "ConnectionInput": {
           "Name": "ConnectionFooREST",
           "ConnectionType": "REST-FOO-CONNECTOR",
           "ConnectionProperties": {},
           "ValidateCredentials": true,
           "AuthenticationConfiguration": {
               "AuthenticationType": "OAUTH2",
               "SecretArn": "arn:aws:secretsmanager:<region>:<accountId>:secret:<secretId>",
               "OAuth2Properties": {
                   "OAuth2GrantType": "CLIENT_CREDENTIALS",
                   "TokenUrl": "https://foo.cloud.com/oauth/token",
                   "OAuth2ClientApplication": {
                       "UserManagedClientApplicationClientId": "your-managed-client-id"
                   }
               }
           }
       }
   }
   ```

# Limitaciones
<a name="rest-api-limitations"></a>

Las siguientes son limitaciones para el conector de la API de REST:
+  El conector de la API de REST solo está disponible a través de la API, la CLI o el SDK de AWS. No se pueden configurar los conectores de REST a través de la consola. 
+  El AWS Glue REST ConnectionType solo se puede configurar para LEER datos del origen de datos basado en la API de REST. La conexión solo se puede utilizar como FUENTE en los trabajos de ETL de AWS Glue. 
+  No se admiten filtrado ni creación de particiones. 
+  No se admite la selección de campos. 

# Conexión a Salesforce
<a name="connecting-to-data-salesforce"></a>

Salesforce proporciona un software de administración de relaciones con los clientes (CRM) que le ayuda con las ventas, el servicio al cliente, el comercio electrónico y mucho más. Si es usuario de Salesforce, puede conectar AWS Glue a su cuenta de Salesforce. A continuación, puede utilizar Salesforce como origen o destino de datos en sus trabajos de ETL. Ejecute estos trabajos para transferir datos entre Salesforce y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Salesforce](salesforce-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](salesforce-configuring-iam-permissions.md)
+ [Configuración de Salesforce](salesforce-configuring.md)
+ [Aplicar el perfil Administrador del sistema](#salesforce-configuring-apply-system-admin-profile)
+ [Configuración de conexiones de Salesforce](salesforce-configuring-connections.md)
+ [Lectura desde Salesforce](salesforce-reading-from-entities.md)
+ [Escritura en Salesforce](salesforce-writing-to.md)
+ [Opciones de conexión de Salesforce](salesforce-connection-options.md)
+ [Limitaciones del conector de Salesforce](salesforce-connector-limitations.md)
+ [Configuración del flujo de códigos de autorización de Salesforce](salesforce-setup-authorization-code-flow.md)
+ [Configuración del flujo OAuth del portador JWT para Salesforce](salesforce-setup-jwt-bearer-oauth.md)

# Compatibilidad de AWS Glue con Salesforce
<a name="salesforce-support"></a>

AWS Glue admite Salesforce de la siguiente manera:

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

**¿Es compatible como destino?**  
Sí. Puede usar los trabajos de ETL de AWS Glue para escribir registros en Salesforce.

**Versiones compatibles de la API de Salesforce**  
Las siguientes versiones de la API de Salesforce son compatibles
+ v58.0
+ v59.0
+ v60.0

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

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

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

****  

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

------

También puede usar las siguientes políticas de IAM para permitir el acceso:
+ [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.

Si se proporcionan opciones de red al crear una conexión de Salesforce, también debe incluir las siguientes acciones en el rol de IAM:

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

****  

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

------

 Para las conexiones de Salesforce sin ETL, consulte los [requisitos previos de ETL cero.](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html) 

 Para las conexiones de Salesforce sin ETL, consulte los [requisitos previos de ETL cero.](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html) 

# Configuración de Salesforce
<a name="salesforce-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos hacia o desde Salesforce, debe cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Debe tener una cuenta de Salesforce.
+ Su cuenta de Salesforce está habilitada para el acceso a la API. El acceso a la API está habilitado de forma predeterminada para las ediciones Enterprise, Unlimited, Developer y Performance.

Si cumple estos requisitos, lo tiene todo listo para conectar AWS Glue a su cuenta de Salesforce. AWS Glue administra los requisitos restantes con la aplicación conectada administrada por AWS.

## La aplicación conectada administrada por AWS para Salesforce
<a name="salesforce-configuring-connected-app"></a>

La aplicación conectada administrada por AWS le permite crear conexiones de Salesforce en menos pasos. En Salesforce, una aplicación conectada es un marco que autoriza a aplicaciones externas, como AWS Glue, a acceder a sus datos de Salesforce mediante OAuth 2.0. Para usar la aplicación conectada administrada por AWS, cree una conexión de Salesforce mediante la consola de AWS Glue. Al configurar la conexión, defina el **Tipo de concesión OAuth** en **Código de autorización** y deje seleccionada la casilla **Utilizar la aplicación de cliente administrada por AWS**.

Al guardar la conexión, se le redirigirá a Salesforce para iniciar sesión y aprobar el acceso de AWS Glue a su cuenta de Salesforce.

## Aplicar el perfil Administrador del sistema
<a name="salesforce-configuring-apply-system-admin-profile"></a>

 En Salesforce, siga los pasos para aplicar el perfil de administrador del sistema: 

1.  En Salesforce, vaya a **Configuración > Aplicaciones conectadas > Uso de OAuth de aplicaciones conectadas**. 

1.  En la lista de aplicaciones conectadas, busque AWS Glue y seleccione **Instalar**. Si es necesario, seleccione **Desbloquear**. 

1.  Vaya a**Configuración > Administrar aplicaciones conectadas y seleccione AWS Glue**. En Políticas de OAuth, seleccione **Los usuarios aprobados por el administrador están preautorizados** y seleccione el perfil **Administrador del sistema**. Esta acción restringe el acceso a AWS Glue únicamente a los usuarios con el perfil Administrador del sistema. 

## Aplicar el perfil Administrador del sistema
<a name="salesforce-configuring-apply-system-admin-profile"></a>

 En Salesforce, siga los pasos para aplicar el perfil de administrador del sistema: 

1.  En Salesforce, vaya a **Configuración > Aplicaciones conectadas > Uso de OAuth de aplicaciones conectadas**. 

1.  En la lista de aplicaciones conectadas, busque AWS Glue y seleccione **Instalar**. Si es necesario, seleccione **Desbloquear**. 

1.  Vaya a**Configuración > Administrar aplicaciones conectadas y seleccione AWS Glue**. En Políticas de OAuth, seleccione **Los usuarios aprobados por el administrador están preautorizados** y seleccione el perfil **Administrador del sistema**. Esta acción restringe el acceso a AWS Glue únicamente a los usuarios con el perfil Administrador del sistema. 

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

Para configurar una conexión de Salesforce:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para el tipo de concesión JWT\$1TOKEN, el secreto debe contener la clave JWT\$1TOKEN con su valor.

   1. Para el tipo de concesión AuthorizationCode:

      1. En el caso de una aplicación conectada administrada de AWS, es necesario proporcionar un secreto vacío o un secreto con algún valor temporal.

      1. En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener la aplicación conectada de `Consumer Secret` con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como la clave.

   1. Nota: Debe crear un secreto para su 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**, seleccione Salesforce.

   1. Proporcione el valor INSTANCE\$1URL de la instancia de Salesforce a la que desea conectarse.

   1. Proporcione el entorno de Salesforce.

   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 tipo de concesión de OAuth2 que desee utilizar para las conexiones. El tipo de concesión determina cómo se comunica AWS Glue con Salesforce para solicitar el acceso a sus datos. Su elección afecta a los requisitos que debe cumplir antes de crear la conexión. Puede elegir uno de estos tipos:
      + **Tipo de concesión JWT\$1BEARER**: este tipo de concesión funciona bien en escenarios de automatización, ya que permite crear un token web JSON (JWT) por adelantado con los permisos de un usuario concreto en la instancia de Salesforce. El creador tiene el control sobre el tiempo de validez del JWT. AWS Glue puede usar el JWT para obtener un token de acceso que se utiliza para llamar a las API de Salesforce.

        Este flujo requiere que el usuario haya creado una aplicación conectada en su instancia de Salesforce que permita emitir tokens de acceso basados en JWT para los usuarios.

        Para obtener información sobre cómo crear una aplicación conectada para el flujo OAuth del portador de JWT, consulte [OAuth 2.0 JWT bearer flow for server-to-server integration](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm). Para configurar el flujo portador de JWT con la aplicación conectada a Salesforce, consulte [Configuración del flujo OAuth del portador JWT para Salesforce](salesforce-setup-jwt-bearer-oauth.md).
      + **Tipo de concesión AUTHORIZATION\$1CODE**: este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede utilizar de forma predeterminada una aplicación conectada de AWS Glue (aplicación de AWS Glue administrada por el cliente), en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de su instancia de Salesforce. La consola de AWS Glue redirigirá al usuario a Salesforce, donde deberá iniciar sesión y permitir a AWS Glue que los permisos solicitados accedan a su instancia de Salesforce.

        Los usuarios aún pueden optar por crear su propia aplicación conectada en Salesforce y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, se les continuará redirigiendo a Salesforce para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.

        Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.

        Para obtener más información sobre cómo crear una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Configuración del flujo de códigos de autorización de Salesforce](salesforce-setup-authorization-code-flow.md).

   1. Seleccione el elemento `secretName` que desee usar para esta conexión en AWS Glue para guardar los tokens de OAuth 2.0.

   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`.

1. Si proporciona opciones de red, conceda también al rol de IAM los siguientes permisos:

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

****  

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

------

## Configuración de conexiones de Salesforce con la CLI de AWS
<a name="salesforce-configuring-connections-cli"></a>

Puede crear conexiones de Salesforce mediante la CLI de AWS:

```
aws glue create-connection --connection-input \
"{\"Name\": \"salesforce-conn1\",\"ConnectionType\": \"SALESFORCE\",\"ConnectionProperties\": {\"ROLE_ARN\": \"arn:aws:iam::123456789012:role/glue-role\",\"INSTANCE_URL\": \"https://example.my.salesforce.com\"},\"ValidateCredentials\": true,\"AuthenticationConfiguration\": {\"AuthenticationType\": \"OAUTH2\",\"SecretArn\": \"arn:aws:secretsmanager:us-east-1:123456789012:secret:salesforce-conn1-secret-IAmcdk\",\"OAuth2Properties\": {\"OAuth2GrantType\": \"JWT_BEARER\",\"TokenUrl\": \"https://login.salesforce.com/services/oauth2/token\"}}}" \
--endpoint-url https://glue.us-east-1.amazonaws.com \
--region us-east-1
```

# Lectura desde Salesforce
<a name="salesforce-reading-from-entities"></a>

**Requisito previo**

Un objeto de Salesforce del que le gustaría leer. Necesitará el nombre del objeto, como `Account`, `Case` o `Opportunity`.

**Ejemplo:**

```
salesforce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0"
    }
)
```

## Consultas de particionamiento
<a name="salesforce-reading-partitioning-queries"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para los campos Marca de tiempo o Fecha, el conector acepta el formato de marca de tiempo de Spark que se usa en las consultas de Spark SQL.

  Ejemplos de valores válidos:

  ```
  "TIMESTAMP \"1707256978123\""
  "TIMESTAMP '2018-01-01 00:00:00.000 UTC'"
  "TIMESTAMP \"2018-01-01 00:00:00 Pacific/Tahiti\"" 
  "TIMESTAMP \"2018-01-01 00:00:00\""
  "TIMESTAMP \"-123456789\" Pacific/Tahiti"
  "TIMESTAMP \"1702600882\""
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.
+  `TRANSFER_MODE`: admite dos modos: `SYNC` y `ASYNC`. El valor predeterminado es `SYNC`. Cuando se establece en `ASYNC`, se utilizará Bulk API 2.0 Query para el procesamiento. 

Ejemplo:

```
salesforce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0",
        "PARTITION_FIELD": "SystemModstamp",
        "LOWER_BOUND": "TIMESTAMP '2021-01-01 00:00:00 Pacific/Tahiti'",
        "UPPER_BOUND": "TIMESTAMP '2023-01-10 00:00:00 Pacific/Tahiti'",
        "NUM_PARTITIONS": "10",
        "TRANSFER_MODE": "ASYNC" 
    }
)
```

## Opción FILTER\$1PREDICATE
<a name="salesforce-filter-predicate"></a>

**FILTER\$1PREDICATE**: es un parámetro opcional. Esta opción se utiliza para el filtro de consultas.

Ejemplos de **FILTER\$1PREDICATE**:

```
     Case 1: FILTER_PREDICATE with single criterion
     Examples: 	
       LastModifiedDate >= TIMESTAMP '2025-04-01 00:00:00 Pacific/Tahiti'
       LastModifiedDate <= TIMESTAMP "2025-04-01 00:00:00"
       LastModifiedDate >= TIMESTAMP '2018-01-01 00:00:00.000 UTC'
       LastModifiedDate <= TIMESTAMP "-123456789 Pacific/Tahiti"
       LastModifiedDate <= TIMESTAMP "1702600882"

     Case 2: FILTER_PREDICATE with multiple criteria
     Examples: 
       LastModifiedDate >= TIMESTAMP '2025-04-01 00:00:00 Pacific/Tahiti' AND Id = "0012w00001CotGiAAJ"
       LastModifiedDate >= TIMESTAMP "1702600882" AND Id = "001gL000002i26MQAQ"

     Case 3: FILTER_PREDICATE single criterion with LIMIT
     Examples: 
       LastModifiedDate >= TIMESTAMP "1702600882" LIMIT 2

     Case 4: FILTER_PREDICATE with LIMIT
     Examples: 
       LIMIT 2
```

# Escritura en Salesforce
<a name="salesforce-writing-to"></a>

**Requisitos previos**

Un objeto de Salesforce en el que le gustaría escribir. Necesitará el nombre del objeto, como `Account`, `Case` o `Opportunity`.

El conector de Salesforce admite cuatro operaciones de escritura:
+ INSERT
+ UPSERT
+ UPDATE
+ DELETE

Al utilizar la operación de escritura `UPSERT`, debe proporcionar la opción `ID_FIELD_NAMES` para especificar el campo de ID externo de los registros.

 También se pueden agregar opciones de conexión: 
+  `TRANSFER_MODE`: admite dos modos: `SYNC` y `ASYNC`. El valor predeterminado es `SYNC`. Cuando se establece en `ASYNC`, se utilizará Bulk API 2.0 Ingest para el procesamiento. 
+  `FAIL_ON_FIRST_ERROR`: el valor predeterminado es `FALSE`, lo que significa que el trabajo de AWS Glue continuará procesando todos los datos incluso si hay algunos registros de escritura con error. Cuando se establece en `TRUE`, el trabajo de AWS Glue presentará fallas si hay algún registro de escritura con error y no continuará el procesamiento. 

**Ejemplo**

```
salesforce_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0",
        "WRITE_OPERATION": "INSERT",
        "TRANSFER_MODE": "ASYNC",
        "FAIL_ON_FIRST_ERROR": "true"
    }
)
```

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

A continuación, encontrará las opciones de conexión que se admiten en el conector de Salesforce:
+ `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre de su objeto en Salesforce.
+ `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Salesforce que desea utilizar.
+ `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.

  Al proporcionar un predicado de filtro, solo el operador `AND` es compatible. Otros operadores, como `OR` y `IN` no son compatibles actualmente.
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `IMPORT_DELETED_RECORDS`(cadena): predeterminado: FALSO. Se usa para leer. Para obtener los registros eliminados durante la consulta.
+ `WRITE_OPERATION`(cadena): predeterminado: INSERT. Se utiliza para escribir. El valor debe ser INSERT, UPDATE, UPSERT, DELETE.
+ `ID_FIELD_NAMES`(cadena): predeterminado: nulo. Necesario para UPDATE y UPSERT.

# Limitaciones del conector de Salesforce
<a name="salesforce-connector-limitations"></a>

Las siguientes son limitaciones para el conector de Salesforce:
+ Solo admitimos Spark SQL; Salesforce SOQL no es compatible.
+ No se admiten los marcadores de trabajo.
+ Todos los nombres de campo de Salesforce distinguen entre mayúsculas y minúsculas. Al escribir en Salesforce, los datos deben coincidir con las mayúsculas y minúsculas de los campos definidos en Salesforce.

# Configuración del flujo de códigos de autorización de Salesforce
<a name="salesforce-setup-authorization-code-flow"></a>

Consulte la documentación pública de Salesforce para habilitar el flujo de códigos de autorización de OAuth 2.0.

Para configurar la aplicación conectada:

1. Active la casilla **Habilitar la configuración de OAuth**.

1. En el campo de texto **URL de devolución de llamada**, introduzca una o más URL de redireccionamiento para AWS Glue.

   Las URL de redireccionamiento tienen el formato siguiente:

   https://*region*.console.aws.amazon.com/gluestudio/oauth

   En esta URL, la *región* es el código de la región AWS en la que se utiliza AWS Glue para transferir datos desde Salesforce. Por ejemplo, el código de la región del Este de EE. UU. (Norte de Virginia) es `us-east-1`. Para esa región, la URL es la siguiente:

   https://us-east-1.console.aws.amazon.com/gluestudio/oauth

   Para las regiones de AWS que admite AWS Glue, consulte [Cuotas y puntos de conexión de AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html) en la *Referencia general de AWS*.

1. Active la casilla **Solicitar secreto para el flujo del servidor web**.

1. En la lista **Ámbitos de OAuth disponibles**, añada los siguientes ámbitos:
   + Administración de los datos de los usuarios a través de las API (api)
   + Acceso a permisos personalizados (custom\$1permissions)
   + Acceso al servicio de URL de identidad (ID, perfil, correo electrónico, dirección, teléfono)
   + Acceso a los identificadores de usuario únicos (openid)
   + Realización de solicitudes en cualquier momento (refresh\$1token, offline\$1access)

1. Establezca la política de token de actualización para la aplicación conectada, de forma que el **token de actualización sea válido hasta que se revoque**. De lo contrario, los trabajos devolverán un error cuando el token de actualización caduque. Para obtener más información sobre cómo comprobar y editar la política de token de actualización, consulte [Manage OAuth Access Policies for a Connected App](https://help.salesforce.com/articleView?id=connected_app_manage_oauth.htm) en la documentación de Salesforce.

# Configuración del flujo OAuth del portador JWT para Salesforce
<a name="salesforce-setup-jwt-bearer-oauth"></a>

Consulte la documentación pública de Salesforce para activar la integración de servidor a servidor con los [Tokens web JSON de OAuth 2.0](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm).

Una vez que haya creado un JWT y configurado la aplicación conectada de forma adecuada en Salesforce, podrá crear una nueva conexión de Salesforce con la clave `JWT_TOKEN` establecida en el Secreto de Secrets Manager. Establezca el tipo de concesión de OAuth en **Token del portador de JWT** al crear la conexión.

# Conexión a Salesforce Marketing Cloud
<a name="connecting-to-data-salesforce-marketing-cloud"></a>

Salesforce Marketing Cloud es un proveedor de software de automatización y análisis de marketing para marketing por correo electrónico, teléfono móvil, redes sociales y en línea. También ofrece servicios de consultoría e implementación. Como usuario de Salesforce Marketing Cloud, puede conectar AWS Glue a su cuenta de Salesforce Marketing Cloud. A continuación, puede utilizar Salesforce Marketing Cloud como un destino u origen de datos en sus trabajos de ETL. Ejecute estos trabajos para transferir datos entre Salesforce Marketing Cloud y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Salesforce Marketing Cloud](salesforce-marketing-cloud-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](salesforce-marketing-cloud-configuring-iam-permissions.md)
+ [Configuración de Salesforce Marketing Cloud](salesforce-marketing-cloud-configuring.md)
+ [Configuración de las conexiones de Salesforce Marketing Cloud](salesforce-marketing-cloud-configuring-connections.md)
+ [Lectura de entidades de Salesforce Marketing Cloud](salesforce-marketing-cloud-reading-from-entities.md)
+ [Escritura en entidades de Salesforce Marketing Cloud](salesforce-marketing-cloud-writing-to-entities.md)
+ [Opciones de conexión de Salesforce Marketing Cloud](salesforce-marketing-cloud-connection-options.md)
+ [Limitaciones y notas del conector de Salesforce Marketing Cloud](salesforce-marketing-cloud-connector-limitations.md)

# Compatibilidad de AWS Glue con Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-support"></a>

AWS Glue es compatible con Salesforce Marketing Cloud de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Salesforce Marketing Cloud.

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

**Versiones de la API de Salesforce Marketing Cloud**  
Son compatibles las siguientes versiones de la API de Salesforce Marketing Cloud:
+ v1

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="salesforce-marketing-cloud-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 Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Salesforce Marketing Cloud, debe cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Debe tener una cuenta de Salesforce Marketing Cloud. Para obtener más información, consulte [Creación de una cuenta de Salesforce Marketing Cloud](#salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-account).
+ Su cuenta de Salesforce Marketing Cloud debe estar habilitada para el acceso a la API. El acceso a la API está habilitado de forma predeterminada para las ediciones Enterprise, Unlimited, Developer y Performance.

Si cumple estos requisitos, tendrá todo listo para conectar AWS Glue a su cuenta de Salesforce Marketing Cloud. Para las conexiones típicas, no es necesario que haga nada más en Salesforce Marketing Cloud.

## Creación de una cuenta de Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-account"></a>

En el caso de Salesforce Marketing Cloud, debe contactar con el proveedor para crear la cuenta. Si usted o su empresa tienen una asociación con Salesforce, contacte con el administrador de cuentas de Salesforce para solicitar una licencia de Salesforce Marketing Cloud. De lo contrario, puede solicitar el contacto de un representante de Salesforce de la siguiente manera: 

1. Vaya a https://www.salesforce.com/in/products/marketing-cloud/overview/ y elija **Registrarse**.

1. Seleccione el enlace **Contacto** en la parte superior derecha de la página.

1. Ingrese la información necesaria en el formulario y elija **Continuar**.

Un representante de Salesforce se pondrá en contacto con usted para hablar sobre sus requisitos.

## Creación de un proyecto y credenciales de OAuth 2.0
<a name="salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-project-oauth"></a>

Obtención de un proyecto y las credenciales de OAuth 2.0:

1. Inicie sesión en la [instancia de Salesforce Marketing Cloud](https://mc.login.exacttarget.com/hub-cas/login) con su nombre de usuario y contraseña y autentíquese con su número de teléfono móvil registrado.

1. Haga clic en su perfil en la esquina superior derecha y, a continuación, vaya a **Configuración**.

1. En **Herramientas de plataforma**, elija **Aplicaciones** y, a continuación, elija **Paquetes instalados**.  
![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/sfmc-platform-tools.png)

1. En la página **Paquetes instalados**, haga clic en **Nuevo** en la esquina superior derecha. Proporcione el nombre y la descripción del paquete.

   Guarde el paquete. Una vez guardado, podrá ver los detalles del paquete.

1. En la página **Detalles** del paquete, en la sección **Componente**, elija **Agregar componente**.   
![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/sfmc-add-component.png)

1. Seleccione el **Tipo de componente** como “Integración de API” y haga clic en **Siguiente**.

1. Seleccione el **Tipo de integración** como “Servidor a servidor” (que tiene las credenciales de cliente del tipo otorgado por OAuth) y haga clic en **Siguiente**.

1. Agregue los ámbitos en función de sus requisitos y haga clic en **Guardar**.

# Configuración de las conexiones de Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring-connections"></a>

Salesforce Marketing Cloud admite el tipo de concesión CREDENCIALES DEL CLIENTE para OAuth2.
+ Este tipo de concesión se considera OAuth 2.0 de doble vía, ya que los clientes lo utilizan para obtener un token de acceso fuera del contexto de un usuario. AWS Glue puede utilizar el ID de cliente y el secreto de cliente para autenticar las API de Salesforce Marketing Cloud que los servicios personalizados que defina proporcionen.
+ Cada servicio personalizado pertenece a un usuario exclusivo de la API con un conjunto de roles y permisos que autorizan al servicio a realizar acciones específicas. Un token de acceso está asociado a un único servicio personalizado.
+ Este tipo de concesión da lugar a un token de acceso de corta duración, que se puede renovar mediante una llamada a un punto de conexión de identidad.
+ Para consultar la documentación pública de Salesforce Marketing Cloud para OAuth 2.0 con credenciales de cliente, consulte [Configuración del entorno de desarrollo para paquetes mejorados](https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/mc-dev-setup-enhanced.html).

Para configurar una conexión de Salesforce Marketing Cloud:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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 Salesforce Marketing Cloud.

   1. Proporcione el `Subdomain Endpoint` de Salesforce Marketing Cloud al que se desea 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`.

# Lectura de entidades de Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-reading-from-entities"></a>

**Requisito previo**

Un objeto de Salesforce Marketing Cloud desde el cual le gustaría leer. Necesitará el nombre del objeto, como `Activity` o `Campaigns`. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Interfaz | Se puede filtrar | Admite límite | Admite Ordenar por | Admite SELECCIONAR \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | --- | 
| Devolución de llamadas para notificaciones de eventos | REST | No | No | No | Sí | No | 
| Lista de semillas | REST | No | Sí | No | Sí | No | 
| Configuración | REST | Sí | Sí | No | Sí | No | 
| Verificación de dominio | REST | Sí | Sí | Sí | Sí | No | 
| Etiquetas anidadas de objetos | REST | Sí | No | No | Sí | No | 
| Contacto | REST | No | Sí | No | Sí | No | 
| Suscripción a notificaciones de eventos | REST | No | No | No | Sí | No | 
| Mensajería | REST | No | Sí | No | Sí | No | 
| Actividad | SOAP | No | No | No | Sí | Sí | 
| Evento de devolución | SOAP | No | No | No | Sí | Sí | 
| Evento de clic | SOAP | No | No | No | Sí | Sí | 
| Área de contenido | SOAP | No | No | No | Sí | Sí | 
| Extensión de datos | SOAP | No | Sí | No | Sí | Sí | 
| Correo electrónico | SOAP | No | Sí | No | Sí | Sí | 
| Evento de correo electrónico reenviado | SOAP | No | Sí | No | Sí | Sí | 
| Evento de consentimiento de reenvío de correo electrónico | SOAP | No | Sí | No | Sí | Sí | 
| Enlace | SOAP | No | Sí | No | Sí | Sí | 
| Envío de enlace | SOAP | No | Sí | No | Sí | Sí | 
| Enumeración | SOAP | No | Sí | No | Sí | Sí | 
| Suscriptor de lista | SOAP | No | Sí | No | Sí | Sí | 
| Evento de no envío | SOAP | No | Sí | No | Sí | Sí | 
| Evento de apertura | SOAP | No | Sí | No | Sí | Sí | 
| Send | SOAP | No | Sí | No | Sí | Sí | 
| Evento de envío | SOAP | No | Sí | No | Sí | Sí | 
| Suscriptor | SOAP | No | Sí | No | Sí | Sí | 
| Evento de encuesta | SOAP | No | Sí | No | Sí | Sí | 
| Evento de subscripción anulada | SOAP | No | Sí | No | Sí | Sí | 
| Eventos de auditoría | REST | No | Sí | Sí | Sí | No | 
| Campañas | REST | No | Sí | Sí | Sí | No | 
| Interacciones | REST | No | Sí | Sí | Sí | No | 
| Activos de contenido | REST | No | Sí | Sí | Sí | No | 

**Ejemplo de REST**:

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Campaigns",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Ejemplo de SOAP**:

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Activity",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://**********************.soap.marketingcloudapis.com"
    }
)
```

**Detalles de la entidad y el campo de Salesforce Marketing Cloud**:

Las siguientes tablas describen las entidades de Salesforce Marketing Cloud. Hay entidades REST con metadatos estáticos y entidades SOAP con metadatos dinámicos.

**Entidades REST con metadatos estáticos**:

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

**Entidades SOAP con metadatos dinámicos**:

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

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

En Salesforce Marketing Cloud, los campos de tipo de datos Entero y Fecha y hora admiten la partición basada en campos.

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo de marca de tiempo, aceptamos el formato de marca de tiempo de Spark que se usa en las consultas de Spark SQL.

  Ejemplos de valor válido:

  ```
  “2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "ListSubscriber",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "CreatedDate",
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z",
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z",
        "NUM_PARTITIONS": "10"
    }
)
```

# Escritura en entidades de Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-writing-to-entities"></a>

**Requisitos previos**
+ Un objeto de Salesforce Marketing en el que desea escribir. Deberá especificar el nombre del objeto, por ejemplo, `List` o `Campaigns` o cualquiera de las demás entidades que se indican en la siguiente tabla.
+ El conector de Salesforce Marketing Cloud admite tres operaciones de escritura:
  + INSERT
  + UPSERT
  + UPDATE

  Al utilizar las operaciones de escritura `UPDATE` y `UPSERT`, debe proporcionar la opción `ID_FIELD_NAMES` para especificar el campo de ID externo de los registros. 

**Entidades compatibles para el destino**:


| Entidad | Priority (Prioridad) | Interfaz (REST, SOAP, etc.) | Se puede insertar | Se puede actualizar | Se puede actualizar o insertar | 
| --- | --- | --- | --- | --- | --- | 
| Campañas | P0 | REST | Sí | Sí: individual | N | 
| Activos de contenido | P0 | REST | Sí: individual, masivo | Sí: individual | N | 
| Contacto | P1 | REST | Sí | Sí: individual | N | 
| Verificación de dominio | P1 | REST | Sí: individual | Sí: individual, masivo | N | 
| Devolución de llamadas para notificaciones de eventos | P1 | REST | Sí | Sí: individual | N | 
| Suscripción a notificaciones de eventos | P1 | REST | Sí | Sí: individual | N | 
| Mensajería | P1 | REST | Sí | N | N | 
| Etiqueta anidada de objeto | P2 | REST | Sí | Sí: individual | N | 
| Lista de semillas | P1 | REST | Sí | Sí: individual | N | 
| Configuración | P1 | REST | Sí | Sí: individual | N | 
| Extensión de datos | P0 | SOAP | Sí: individual | Sí: individual | Sí: individual | 
| Correo electrónico | P0 | SOAP | Sí: individual | Sí: individual | N | 
| Enumeración | P0 | SOAP | Sí: individual | Sí: individual | N | 
| Send | P0 | SOAP | Sí: individual | N | N | 
| Suscriptor | P0 | SOAP | Sí: individual | Sí: individual | N | 

**Ejemplo de operación INSERT para REST**:

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Campaigns",
        "API_VERSION": "v1",
        "writeOperation" : "INSERT",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Ejemplo de operación INSERT para SOAP**:

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "List",
        "API_VERSION": "v1",
        "writeOperation" : "INSERT",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Ejemplo de operación UPDATE para REST**:

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Campaigns",
        "API_VERSION": "v1",
        "writeOperation" : "UPDATE",
         "ID_FIELD_NAMES": "id",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Ejemplo de operación UPDATE para SOAP**:

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "List",
        "API_VERSION": "v1",
        "writeOperation" : "UPDATE",
         "ID_FIELD_NAMES": "id",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Ejemplo de operación UPSERT para SOAP**:

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "DataExtension/Insert-***E/6*******3",
        "API_VERSION": "v1",
        "writeOperation" : "UPSERT",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

# Opciones de conexión de Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-connection-options"></a>

Las siguientes son opciones de conexión para Salesforce Marketing Cloud:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Salesforce Marketing Cloud.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de SOAP y de Salesforce Marketing Cloud Rest que quiere utilizar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `WRITE_OPERATION`(cadena): predeterminado: INSERT. Se utiliza para escribir. El valor debe ser INSERT, UPDATE, UPSERT.
+ `ID_FIELD_NAMES`(cadena): predeterminado: nulo. Necesario para UPDATE/UPSERT.

# Limitaciones y notas del conector de Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Salesforce Marketing Cloud:
+ Al utilizar el filtro en el campo de tipo de datos DateTime, debe pasar el valor en el formato «aaaa-mm-ddthh:mm:ssz».
+ En la vista previa de datos, el valor booleano del tipo de datos aparece en blanco.
+ Para las entidades SOAP, puede definir un máximo de dos filtros, y para las entidades REST, solo puede definir un filtro, lo que restringe las pruebas de particionamiento con filtros.
+ Se han observado varios comportamientos inesperados desde el lado del SaaS: el campo `Link.Alias` de la entidad `linksend` no admite el operador CONTAINS (por ejemplo, `Link.Alias CONTAINS "ViewPrivacyPolicy"`) y los operadores de filtro para las entidades de extensión de datos (como EQUALS y GREATER THAN) no devuelven los resultados esperados.
+ La API de SOAP ClickEvent de SFMC tarda en reflejar los registros recién creados, por lo que es posible que no estén disponibles de inmediato en la respuesta de la API.

  Ejemplo: si crea 5 registros nuevos de ClickEvent el **2025-01-10T a las 14:30:00** y los obtiene de inmediato mediante la API de SOAP, es posible que la respuesta no incluya los 5 registros. Es posible que pasen hasta 5 minutos antes de que los registros recién creados aparezcan en la respuesta de la API. Este retraso también puede afectar tanto a la recuperación de datos como a las ejecuciones programadas.
+ Se admiten dos formatos de DateTime diferentes: **2025-03-11T04:46:00** (sin milisegundos) **y 2025-03-11T04:46:00.000Z** cuando se realizan operaciones de escritura en AWS Glue (con milisegundos).
+ Para la entidad Suscripción a notificaciones de eventos, solo se puede crear una suscripción para una URL de devolución de llamada verificada y se pueden tener hasta 200 suscripciones por devolución de llamada.
+ Para la entidad Devolución de llamadas para notificaciones de eventos, se puede crear un máximo de 50 registros por cuenta.

# Conexión a Salesforce Commerce Cloud
<a name="connecting-to-salesforce-commerce-cloud"></a>

 La API B2C Commerce es un conjunto de API de RESTful diseñadas para interactuar con instancias de B2C Commerce. Se conoce por varios nombres: API Salesforce Commerce, el acrónimo SCAPI o simplemente API Commerce.

 La API permite a los desarrolladores crear una amplia variedad de aplicaciones: desde tiendas en línea completas hasta herramientas personalizadas para comerciantes, con el fin de ampliar las funciones de Business Manager. La API se encuentra disponible sin costo adicional para todos los clientes de B2C Commerce. 

 La API se divide en dos grupos principales de API: API para compradores y API para administradores. Además, dentro de cada grupo, se dividen en familias de API y en grupos más pequeños centrados en funcionalidades relacionadas. 

**Topics**
+ [Compatibilidad de AWS Glue con Salesforce Commerce Cloud](salesforce-commerce-cloud-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](salesforce-commerce-cloud-configuring-iam-permissions.md)
+ [Configuración de Salesforce Commerce Cloud](salesforce-commerce-cloud-configuring.md)
+ [Configuración de las conexiones de Salesforce Commerce Cloud](salesforce-commerce-cloud-configuring-connections.md)
+ [Lectura de entidades de Salesforce Commerce Cloud](salesforce-commerce-cloud-reading-from-entities.md)
+ [Referencia de opciones de conexión de Salesforce Commerce Cloud](salesforce-commerce-cloud-connection-options.md)
+ [Limitaciones](salesforce-commerce-cloud-connector-limitations.md)

# Compatibilidad de AWS Glue con Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-support"></a>

AWS Glue es compatible con Salesforce Commerce Cloud de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Salesforce Commerce Cloud.

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

**Versiones compatibles de la API de Salesforce Commerce Cloud**  
 v1. 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede 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 Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-configuring"></a>

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

## Requisitos mínimos
<a name="salesforce-commerce-cloud-configuring-min-requirements"></a>
+  Tener una aplicación cliente de Salesforce Commerce Cloud con el ID y el secreto de cliente. 
+  La cuenta de Salesforce Commerce Cloud debe estar habilitada para el acceso a la API. 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Salesforce Commerce Cloud. Si es una conexión típica, no es necesario que haga nada más en Salesforce Commerce Cloud. 

# Configuración de las conexiones de Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-configuring-connections"></a>

 Salesforce Commerce Cloud admite el tipo de concesión CREDENCIALES DEL CLIENTE para OAuth2. 
+  Este tipo de concesión se considera OAuth 2.0 de dos patas, ya que los clientes lo utilizan para obtener un token de acceso fuera del contexto de un usuario. AWS Glue puede utilizar el ID de cliente y el secreto de cliente para autenticar las API de Salesforce Commerce Cloud que los servicios personalizados que defina proporcionen. 
+  Cada servicio personalizado pertenece a un usuario exclusivo de la API con un conjunto de roles y permisos que autorizan al servicio a realizar acciones específicas. Un token de acceso está asociado a un único servicio personalizado. 
+  Este tipo de concesión da lugar a un token de acceso de corta duración, que se puede renovar mediante una llamada al punto de conexión de identidad. 
+  Para más información sobre la documentación de Salesforce Commerce Cloud acerca de la generación de credenciales de cliente, consulte la [documentación de Salesforce](https://developer.salesforce.com/docs/commerce/commerce-api/guide/authorization.html). 

Para configurar una conexión de Salesforce Commerce Cloud:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  En el caso de aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET como clave. 

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

   1.  En Conexiones de datos, elija **Crear conexión**. 

   1. Al seleccionar un **Origen de datos**, seleccione Salesforce Commerce Cloud.

   1. Proporcione el **código abreviado**, **el ID de la organización** y el **ID de sitio** de Salesforce Commerce Cloud.

   1. Seleccione la URL de dominio de Salesforce Commerce Cloud de la cuenta de Salesforce Commerce Cloud.

   1.  Seleccione el rol de 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.  Proporcione los alcances de OAuth (opcional) y el ID de cliente de la aplicación cliente administrada por el usuario de Salesforce Commerce Cloud a la que se desea conectar. 

   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`. 

1.  En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**. 

# Lectura de entidades de Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Salesforce Commerce Cloud desde el cual le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Asignaciones | Sí | Sí | Sí | Sí | Sí | 
| Campañas | Sí | Sí | Sí | Sí | Sí | 
| Catálogos | Sí | Sí | Sí | Sí | Sí | 
| Categorías | Sí | Sí | Sí | Sí | Sí | 
| Cupones | Sí | Sí | Sí | Sí | Sí | 
| Certificados de regalo | Sí | Sí | Sí | Sí | Sí | 
| Productos | Sí | Sí | Sí | Sí | Sí | 
| Promociones | Sí | Sí | Sí | Sí | Sí | 
| Grupos de código fuente | Sí | Sí | Sí | Sí | Sí | 

 **Ejemplo** 

```
salesforce_commerce_cloud_read = glueContext.create_dynamic_frame.from_options(
     connection_type="SalesforceCommerceCloud",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "campaign",
         "API_VERSION": "v1"      
     }
)
```

 **Detalles de entidades y campos de Salesforce Commerce Cloud**: 

 Lista de entidades: 
+  Asignaciones: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/assignments ]( https://developer.salesforce.com/docs/commerce/commerce-api/references/assignments) 
+  Campañas: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/campaigns ](https://developer.salesforce.com/docs/commerce/commerce-api/references/campaigns) 
+  Catálogos: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs ](https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs) 
+  Categorías: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs?meta=searchCategories ](https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs?meta=searchCategories) 
+  Certificados de regalo: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/gift-certificates ](https://developer.salesforce.com/docs/commerce/commerce-api/references/gift-certificates) 
+  Productos: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/products ](https://developer.salesforce.com/docs/commerce/commerce-api/references/products) 
+  Promociones: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/promotions ](https://developer.salesforce.com/docs/commerce/commerce-api/references/promotions) 
+  Grupos de código fuente: [ https://developer.salesforce.com/docs/commerce/commerce-api/references/source-code-groups ](https://developer.salesforce.com/docs/commerce/commerce-api/references/source-code-groups) 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles sobre la compatibilidad de los campos de partición por entidad se presentan en la siguiente tabla. 


| Entidad | Campo de partición | DataType | 
| --- | --- | --- | 
| Campañas | lastModified | DateTime | 
| Campañas | startDate | DateTime | 
| Campañas | endDate | DateTime | 
| Catálogos | creationDate | DateTime | 
| Categorías | creatiionDate | DateTime | 
| Certificados de regalo | merchantId | Cadena | 
| Certificados de regalo | creatiionDate | DateTime | 
| Productos | creatiionDate | DateTime | 
| Productos | lastModified | DateTime | 
| Grupos de código fuente | creationDate | DateTime | 
| Grupos de código fuente | startTime | DateTime | 
| Grupos de código fuente | endTime | DateTime | 

 **Ejemplo** 

```
 salesforceCommerceCloud_read = glueContext.create_dynamic_frame.from_options(
     connection_type="SalesforceCommerceCloud",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "coupons",
         "API_VERSION": "v1",
         "PARTITION_FIELD": "creationDate",
         "LOWER_BOUND": "2020-05-01T20:55:02.000Z",
         "UPPER_BOUND": "2024-07-11T20:55:02.000Z",
         "NUM_PARTITIONS": "10"
     }
)
```

# Referencia de opciones de conexión de Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Salesforce Commerce Cloud:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Salesforce Commerce Cloud. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Salesforce Commerce Cloud que desea utilizar. Ejemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Limitaciones
<a name="salesforce-commerce-cloud-connector-limitations"></a>

Las siguientes son limitaciones para el conector de Salesforce Commerce Cloud:
+ El filtro Contiene no funciona como se esperaba al particionar.
+ La entidad de Zonas CDN no admite instancias de entorno de prueba y solo es compatible con los tipos de instancia Desarrollo y Producción. Para obtener más información, consulte [ https://help.salesforce.com/s/articleView?id=cc.b2c\$1embedded\$1cdn\$1overview.htm ](https://help.salesforce.com/s/articleView?id=cc.b2c_embedded_cdn_overview.htm).
+ En Salesforce Commerce Cloud, no hay ningún punto de conexión de API para obtener metadatos dinámicos. Por lo tanto, no se contempla la compatibilidad con los campos personalizados en las entidades Producto y Categoría.
+ El identificador del sitio es un parámetro de consulta obligatorio. Debe transmitir el valor del ID del sitio a través de la configuración del conector personalizado. Para obtener más información, consulte [Base URL and Request Formation ](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html).
+ Puede aplicar filtros en un máximo de dos campos (excluido Niveles, si está presente) en una única solicitud de API, con la combinación de diferentes operadores indicada en la siguiente tabla.    
<a name="salesforce-commerce-cloud-limitations-filters"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/salesforce-commerce-cloud-connector-limitations.html)
+ En algunas entidades, el tipo de dato de los campos al recuperarlos es diferente del que se usa cuando se configuran como campos que se pueden buscar. Como resultado, no se admite la característica de filtrado para estos campos. La siguiente tabla proporciona detalles sobre estos campos.     
<a name="salesforce-commerce-cloud-limitations-filters-provision"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/salesforce-commerce-cloud-connector-limitations.html)

# Conexión a Salesforce Marketing Cloud Account Engagement
<a name="connecting-to-data-salesforce-marketing-cloud-account-engagement"></a>

Salesforce Marketing Cloud Account Engagement es una solución de automatización de marketing que ayuda a las empresas a crear conexiones significativas, generar más canalizaciones y permitir que los representantes de ventas logren más acuerdos. Si es usuario de Salesforce Marketing Cloud Account Engagement, puede conectar AWS Glue a su cuenta de Salesforce Marketing Cloud Account Engagement. Puede utilizar Salesforce Marketing Cloud Account Engagement como origen de datos en sus trabajos de ETL. Ejecute estos trabajos para transferir datos de Salesforce Marketing Cloud Account Engagement a servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](salesforce-marketing-cloud-account-engagement-configuring-iam-permissions.md)
+ [Configuración de Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-configuring.md)
+ [Configuración de las conexiones de Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-configuring-connections.md)
+ [Lectura de entidades de Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-reading-from-entities.md)
+ [Opciones de conexión de Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-connection-options.md)
+ [Limitaciones y notas del conector de Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-connector-limitations.md)

# Compatibilidad de AWS Glue con Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-support"></a>

Compatibilidad de AWS Glue con Salesforce Marketing Cloud Account Engagement de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Salesforce Marketing Cloud Account Engagement en modo sincrónico o asincrónico.

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

**Versiones de la API de Salesforce Marketing Cloud Account Engagement**  
Son compatibles las siguientes versiones de la API de Salesforce Marketing Cloud Account Engagement:
+ v5

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="salesforce-marketing-cloud-account-engagement-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 Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Salesforce Marketing Cloud Account Engagement, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="salesforce-marketing-cloud-account-engagement-configuring-min-requirements"></a>

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de marketing de Salesforce.
+ Tener un plan de participación de Account Engagement para la cuenta de Salesforce. 
+ Haber sincronizado el usuario de Salesforce con el usuario de Account Engagement.
+ Haber creado una nueva aplicación conectada en Administrador de aplicaciones para obtener las credenciales de OAuth.

Si cumple estos requisitos, lo tiene todo listo para conectar AWS Glue a su cuenta de Salesforce Marketing Cloud Account Engagement.

# Configuración de las conexiones de Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-configuring-connections"></a>

El tipo de concesión determina cómo se comunica AWS Glue con Salesforce Marketing Cloud Account Engagement para solicitar el acceso a sus datos. Su elección afecta a los requisitos que debe cumplir antes de crear la conexión. Salesforce Marketing Cloud Account Engagement solo admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth 2.0.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue.
+ Los usuarios aún pueden optar por crear su propia aplicación conectada en Salesforce Marketing Cloud Account Engagement y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Salesforce Marketing Cloud Account Engagement para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para ver la documentación pública de Salesforce Marketing Cloud Account Engagement sobre la creación de una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Autenticación](https://developer.salesforce.com/docs/marketing/pardot/guide/version5overview.html#authentication).

Para configurar una conexión de Salesforce Marketing Cloud Account Engagement, haga lo siguiente:

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**, seleccione Salesforce Marketing Cloud Account Engagement.

   1. Proporcione el elemento `INSTANCE_URL` de la instancia de Salesforce Marketing Cloud Account Engagement a la que quiere conectarse.

   1. Proporcione el elemento `PARDOT_BUSINESS_UNIT_ID` de la instancia de Salesforce Marketing Cloud Account Engagement a la que quiere conectarse.

   1. Seleccione la **URL de código de autorización** correspondiente en el menú desplegable.

   1. Seleccione la **URL del token** correspondiente en el menú desplegable.

   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. Proporcione el ID de cliente de la aplicación cliente administrada por el usuario (el ID de cliente de la aplicación conectada).

   1. Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens. El secreto seleccionado debe tener una clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` cuyo valor sea el secreto del cliente de la aplicación conectada.

   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`.

1. En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**.

# Lectura de entidades de Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-reading-from-entities"></a>

**Requisito previo**

Un objeto de Salesforce Marketing Cloud Account Engagement desde el cual le gustaría leer. Necesitará el nombre del objeto.

**Entidades compatibles para el origen sincrónico:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Campaña | Sí | Sí | Sí | Sí | Sí | 
| Dynamic Content | Sí | Sí | Sí | Sí | Sí | 
| Correo electrónico | Sí | Sí | Sí | Sí | Sí | 
| Plantilla de correo electrónico | Sí | Sí | Sí | Sí | Sí | 
| Programa Engagement Studio | Sí | Sí | Sí | Sí | Sí | 
| Contenido de carpeta | Sí | Sí | Sí | Sí | Sí | 
| Página de destino | Sí | Sí | Sí | Sí | Sí | 
| Historia del ciclo de vida | Sí | Sí | Sí | Sí | Sí | 
| Etapa del ciclo de vida | Sí | Sí | Sí | Sí | Sí | 
| Enumeración | Sí | Sí | Sí | Sí | Sí | 
| Correo electrónico de listado | Sí | Sí | Sí | Sí | Sí | 
| Suscripción al listado | Sí | Sí | Sí | Sí | Sí | 
| Oportunidad | Sí | Sí | Sí | Sí | Sí | 
| Posible cliente | Sí | Sí | Sí | Sí | Sí | 
| Cuenta de posible cliente | Sí | Sí | Sí | Sí | Sí | 
| Usuario | Sí | Sí | Sí | Sí | Sí | 

**Ejemplo:**

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SalesforcePardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5"
    }
   )
```

**Entidades compatibles para el origen asincrónico**:


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Campaña | Sí | No | No | Sí | No | 
| Dynamic Content | Sí | No | No | Sí | No | 
| Plantilla de correo electrónico | Sí | No | No | Sí | No | 
| Página de destino | Sí | No | No | Sí | No | 
| Historia del ciclo de vida | Sí | No | No | Sí | No | 
| Etapa del ciclo de vida | Sí | No | No | Sí | No | 
| Lista | Sí | No | No | Sí | No | 
| Correo electrónico de listado | Sí | No | No | Sí | No | 
| Suscripción al listado | Sí | No | No | Sí | No | 
| Oportunidad | Sí | No | No | Sí | No | 
| Posible cliente | Sí | No | No | Sí | No | 
| Cuenta de posible cliente | Sí | No | No | Sí | No | 
| Usuario | Sí | No | No | Sí | No | 

**Ejemplo:**

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SalesforcePardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5",
        "TRANSFER_MODE": "ASYNC"
    }
   )
```

**Detalles de la entidad y el campo de Salesforce Marketing Cloud Account Engagement**:

Para ver los detalles de los campos de las siguientes entidades, vaya a [Salesforce Marketing Cloud Account Engagement API](https://developer.salesforce.com/docs/marketing/pardot), seleccione **Guías**, desplácese hacia abajo hasta **Open Source API Wrappers**, expanda **Version 5 Docs** en el menú y elija una entidad.

Lista de entidades:
+ Campaña
+ Dynamic Content
+ Correo electrónico
+ Plantilla de correo electrónico
+ Programa Engagement Studio
+ Contenido de carpeta
+ Página de destino
+ Historia del ciclo de vida
+ Etapa del ciclo de vida
+ Enumeración
+ Correo electrónico de listado
+ Suscripción al listado
+ Oportunidad
+ Posible cliente
+ Cuenta de posible cliente
+ Usuario

Además de los campos que mencionamos anteriormente, el modo asíncrono admite campos filtrables específicos para cada entidad, como se muestra en la siguiente tabla.


| Entidad | Campos filtrables adicionales admitidos en Asincrónico | 
| --- | --- | 
| Campaña | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Dynamic Content | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Plantilla de correo electrónico | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Programa Engagement Studio | - | 
| Página de destino | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Historia del ciclo de vida | createdAfter, createdBefore | 
| Etapa del ciclo de vida | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Enumeración | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Correo electrónico de listado | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Suscripción al listado | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Oportunidad | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Posible cliente | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Cuenta de posible cliente | createdAfter, createdBefore, deleted | 
| Usuario | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 

Para obtener más información sobre los campos adicionales, consulte [Salesforce Export API](https://developer.salesforce.com/docs/marketing/pardot/guide/export-v5.html#procedures)

Tenga en cuenta las siguientes consideraciones para el conector:
+ El valor del campo `delete` en las entidades puede ser `false` (predeterminado) `true` o `all`.

## Consultas de partición
<a name="salesforce-marketing-cloud-account-engagement-reading-partitioning-queries"></a>

**Partición basada en filtros**:

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo DateTime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas de Spark SQL.

  Ejemplos de valor válido:

  ```
  "2022-01-01T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.
+ `PARTITION_BY`: el tipo de partición que se hará. En caso de partición basada en campos, se debe pasar “FIELD”.

Ejemplo:

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcepardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2022-01-01T01:01:01.000Z"
        "UPPER_BOUND": "2024-01-01T01:01:01.000Z"
        "NUM_PARTITIONS": "10",
        "PARTITION_BY": "FIELD"
    }
   )
```

# Opciones de conexión de Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-connection-options"></a>

Las siguientes son opciones de conexión para Salesforce Marketing Cloud Account Engagement:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Salesforce Marketing Cloud Account Engagement.
+ `PARDOT_BUSINESS_UNIT_ID`: (obligatorio) se utiliza para crear una conexión. El ID de unidad de negocio de la instancia de Salesforce Marketing Cloud Account Engagement a la que quiere conectarse.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Salesforce Marketing Cloud Account Engagement que quiere utilizar.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto.
+ `FILTER_PREDICATE`(cadena)
  + En modo sincrónico, predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL.
  + En modo asincrónico, predeterminado: valor de `DateTime` actual (según la zona horaria del usuario) - 1 año. Se usa para leer.
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. Una URL válida de instancia de Salesforce Marketing Cloud Account Engagement.
+ `PARTITION_BY`(cadena): (obligatorio) se usa para lectura. El tipo de partición que se hará. En caso de partición basada en campos, se debe pasar “FIELD”.
+ `TRANSFER_MODE`(Cadena): (Opcional) Valor que se utilizará para ejecutar un trabajo en modo ASINCRÓNICO; si no se proporciona esta opción, el trabajo se ejecutará en modo SINCRÓNICO.

# Limitaciones y notas del conector de Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-connector-limitations"></a>

Se aplican las siguientes notas y limitaciones:
+ Cuando se aplican un límite y una partición, el límite prevalece sobre la partición.
+ Según los documentos de la API, `SalesforceMarketingCloudEngagement` aplicó un RateLimit a las solicitudes diarias y simultáneas. Para más información, consulte [Rate Limits](https://developer.salesforce.com/docs/marketing/pardot/guide/overview.html?q=limitation#rate-limits).
+ La API de exportación está sujeta al límite diario de llamadas a la API de Account Engagement y al límite de llamadas simultáneas a la API de Account Engagement de su cuenta.
+ Al igual que en una cola, las llamadas a la API de exportación/asincrónicas se ejecutan de forma secuencial para cada cuenta. Las exportaciones más antiguas se procesan antes que las exportaciones más recientes.
+ La partición no es compatible con el modo asíncrono.
+ El número de campos seleccionados especificados en las llamadas a la API de exportación/asincrónicas no puede superar los 150.
+ La entidad **Prospect** admite más de 150 campos, pero solo se pueden seleccionar 150 campos a la vez. Si se selecciona `Select All`, se excluirán algunos campos. Para recuperar los datos de estos campos excluidos, debe incluirlos en la opción `Selected Fields`.

  La siguiente es la lista de campos excluidos en `SELECT_ALL`: `updatedBy.firstName`, `updatedBy.lastName`, `updatedBy.jobTitle`, `updatedBy.roleName`, `updatedBy.salesforceId`, `updatedBy.createdAt`, `updatedBy.updatedAt`, `updatedBy.isDeleted`, `updatedBy.createdById`, `updatedBy.updatedById`, `updatedBy.tagReplacementLanguage`
+ Los campos de colección no se pueden exportar para la API asíncrona. Por ejemplo, en Lista de correos electrónicos no se admiten los campos `senderOptions` y `replyToOptions`.
+ Para todas las entidades, el filtro es obligatorio. Si no se proporciona ningún filtro, el predicado de filtro predeterminado se establece en el campo `Created After` con un valor de la fecha y hora actual (ajustado a su zona horaria) menos un año.
+ Según las limitaciones de Salesforce Marketing Cloud Account Engagement, en Asincrónico, el intervalo máximo para obtener datos es de 1 año. Si se proporciona una consulta para más de 1 año, el trabajo generará un error. 
+ En la actualidad, hay un error en Salesforce Pardot. Cuando el trabajo incluye un solo campo que no contiene ningún dato, el valor del campo no devuelve el resultado correcto y, en su lugar, se devuelve varias veces el nombre del campo. El equipo de Salesforce Pardot está al tanto del problema y está trabajando activamente en una solución.

# Conexión a SAP HANA en AWS Glue Studio
<a name="connecting-to-data-saphana"></a>

 AWS Glue proporciona soporte integrado para SAP HANA. AWS Glue Studio proporciona una interfaz visual para conectarse a SAP HANA, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

 AWS Glue Studio crea una conexión unificada para SAP HANA. Para obtener más información, consulte [Consideraciones](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Crear una conexión SAP HANA](creating-saphana-connection.md)
+ [Crear un nodo de origen de SAP HANA](creating-saphana-source-node.md)
+ [Crear un nodo de destino de SAP HANA](creating-saphana-target-node.md)
+ [Opciones avanzadas](#creating-saphana-connection-advanced-options)

# Crear una conexión SAP HANA
<a name="creating-saphana-connection"></a>

Para conectarse a SAP HANA desde AWS Glue, tendrá que crear y almacenar sus credenciales de SAP HANA en un AWS Secrets Manager secreto y, a continuación, asociar ese secreto a una conexión de AWS Glue de SAP HANA. Deberá configurar la conectividad de red entre su servicio SAP HANA y AWS Glue.

**Requisitos previos**:
+ Si su servicio SAP HANA está en una Amazon VPC, configure Amazon VPC para permitir que su trabajo de AWS Glue se comunique con el servicio SAP HANA sin que el tráfico atraviese la Internet pública.

  En Amazon VPC, identifique o cree una **VPC**, una **subred** y un **grupo de seguridad** que AWS Glue utilizará al ejecutar el trabajo. Además, debe asegurarse de que Amazon VPC esté configurada para permitir el tráfico de red entre su punto de conexión SAP HANA y esta ubicación. Su trabajo deberá establecer una conexión TCP con su puerto JDBC de SAP HANA. Para obtener más información sobre los puertos de SAP HANA, consulte la [documentación de SAP HANA](https://help.sap.com/docs/HANA_SMART_DATA_INTEGRATION/7952ef28a6914997abc01745fef1b607/88e2e8bded9e4041ad3ad87dc46c7b55.html?locale=en-US). Según el diseño de la red, esto puede requerir cambios en las reglas de los grupos de seguridad, las ACL de red, las puertas de enlace de NAT y las conexiones entre pares.

**Para configurar una conexión a SAP HANA:**

1. En AWS Secrets Manager, cree un secreto con sus credenciales de SAP HANA. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, genere un par para la clave `username/USERNAME` con el valor *saphanaUsername*.
   + Al seleccionar **pares clave/valor**, genere un par para la clave `password/PASSWORD` con el valor *saphanaPassword*.

1. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en [Adición de una conexión de AWS Glue](console-connections.md). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el uso futuro en AWS Glue. 
   + Al seleccionar un **tipo de conexión**, seleccione SAP HANA.
   + Al proporcionar la **URL de SAP HANA**, proporcione la URL de su instancia.

     Las URL de JDBC de SAP HANA tienen el formato `jdbc:sap://saphanaHostname:saphanaPort/?databaseName=saphanaDBname,ParameterName=ParameterValue`

     AWS Glue requiere los siguientes parámetros de URL de JDBC: 
     + `databaseName` — Una base de datos predeterminada en SAP HANA a la que conectarse.
   + Al seleccionar un **secreto AWS**, proporcione un *secretName*.

Tras crear una conexión con AWS Glue SAP HANA, deberá realizar los siguientes pasos antes de ejecutar su trabajo de AWS Glue:
+ Otorga permiso al rol de IAM asociado al trabajo de AWS Glue para leer el *secretName*.

# Crear un nodo de origen de SAP HANA
<a name="creating-saphana-source-node"></a>

## Requisitos previos necesarios
<a name="creating-saphana-source-node-prerequisites"></a>
+ Una conexión AWS Glue SAP HANA, configurada con un AWS Secrets Manager secreto, tal y como se describe en la sección anterior, [Crear una conexión SAP HANA](creating-saphana-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de SAP HANA de la que le gustaría leer, *tableName*, o consultar *targetQuery*.

  Se puede especificar una tabla con un nombre de tabla y un nombre de esquema de SAP HANA, en la forma `schemaName.tableName`. El nombre del esquema y el separador "." no son necesarios si la tabla está en el esquema predeterminado, "public". Esto se llama *tableIdentifier*. Tenga en cuenta que la base de datos se proporciona como un parámetro de URL de JDBC en `connectionName`.

## Agregar un origen de datos de SAP HANA
<a name="creating-saphana-source-node-add"></a>

**Para agregar un nodo de **Origen de datos: SAP HANA**:**

1.  Elija la conexión para el origen de datos de SAP HANA. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de SAP HANA**. Para obtener más información, consulte la sección [Crear una conexión SAP HANA](creating-saphana-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1.  Elija una opción de **origen de SAP HANA**: 
   +  **Elija una sola tabla**: acceda a todos los datos de una sola tabla. 
   +  **Ingresar una consulta personalizada**: permite acceder a un conjunto de datos de varias tablas en función del consulta personalizada. 

1.  Si eligió una sola tabla, ingrese *tableName*. 

    Si eligió **Introducir una consulta personalizada**, introduzca una consulta SQL SELECT. 

1.  En las **propiedades personalizadas de SAP HANA**, ingrese los parámetros y valores según sea necesario. 

# Crear un nodo de destino de SAP HANA
<a name="creating-saphana-target-node"></a>

## Requisitos previos necesarios
<a name="creating-saphana-target-node-prerequisites"></a>
+ Una conexión AWS Glue SAP HANA, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Crear una conexión SAP HANA](creating-saphana-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de SAP HANA en la que le gustaría escribir, *tableName*.

  Se puede especificar una tabla con un nombre de tabla y un nombre de esquema de SAP HANA, en la forma `schemaName.tableName`. El nombre del esquema y el separador "." no son necesarios si la tabla está en el esquema predeterminado, "public". Esto se llama *tableIdentifier*. Tenga en cuenta que la base de datos se proporciona como un parámetro de URL de JDBC en `connectionName`.

## Agregar un destino de datos de SAP HANA
<a name="creating-saphana-target-node-add"></a>

**Para añadir un nodo de **destino de datos: SAP HANA**:**

1.  Elija la conexión para el origen de datos de SAP HANA. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de SAP HANA**. Para obtener más información, consulte la sección [Crear una conexión SAP HANA](creating-saphana-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Configure el **nombre de la tabla** proporcionando *tableName*.

1.  En las **propiedades personalizadas de Teradata**, ingrese los parámetros y valores según sea necesario. 

## Opciones avanzadas
<a name="creating-saphana-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de SAP HANA. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte [Conexiones SAP HANA](aws-glue-programming-etl-connect-saphana-home.md). 

# Conexión a SAP OData
<a name="connecting-to-data-sap-odata"></a>

SAP OData es un protocolo web estándar que se utiliza para consultar y actualizar los datos presentes en SAP mediante ABAP (programación avanzada de aplicaciones empresariales), que aplica y aprovecha tecnologías web como HTTP para proporcionar acceso a la información desde una variedad de aplicaciones, plataformas y dispositivos externos. Con el producto, puede acceder a todo lo que necesita para integrarse sin problemas con su sistema, aplicación o datos de SAP.

**Topics**
+ [Compatibilidad de AWS Glue con SAP OData](sap-odata-support.md)
+ [Creación de conexiones de](sap-odata-creating-connections.md)
+ [Creación de un trabajo de SAP OData](sap-odata-creating-job.md)
+ [Escribir en SAP OData](sap-odata-writing.md)
+ [Uso del script de administración de estado de SAP OData](sap-odata-state-management-script.md)
+ [Particiones para entidades que no sean ODP](sap-odata-non-odp-entities-partitioning.md)
+ [Opciones de conexión de SAP OData](sap-odata-connection-options.md)
+ [Detalles de la entidad y del campo de SAP OData](sap-odata-entity-field-details.md)

# Compatibilidad de AWS Glue con SAP OData
<a name="sap-odata-support"></a>

AWS Glue es compatible con SAP OData de la siguiente manera:

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

**¿Es compatible como destino?**  
Sí. Puede usar los trabajos de ETL de AWS Glue para escribir registros en SAP OData.

**Versiones de la API de SAP OData compatibles**  
Las siguientes versiones de la API de SAP OData son compatibles:
+ 2.0

**Orígenes compatibles**  
Se admiten los siguientes orígenes:
+ Orígenes de ODP (Aprovisionamiento de datos operativos):
  + Extractores BW (DataSources)
  + Vistas CDS
  + SLT
+ Orígenes que no sean ODP, por ejemplo:
  + Servicios de vistas CDS
  + Servicios basados en RFC
  + Servicios ABAP personalizados

**Componentes SAP admitidos**  
Los requisitos mínimos son los siguientes:
+ Debe habilitar el servicio de catálogo para la detección de servicios.
  + Configure los orígenes de datos de aprovisionamiento de datos operativos (ODP) para la extracción en el SAP Gateway de su sistema SAP.
  + **OData V2.0**: puede habilitar los servicios de catálogo de OData V2.0 en SAP Gateway mediante la transacción `/IWFND/MAINT_SERVICE`.
  + Habilite los servicios OData V2.0 en su SAP Gateway mediante la transacción `/IWFND/MAINT_SERVICE`.
  + El servicio SAP OData debe admitir opciones de paginación o consulta del lado del cliente, como `$top` y `$skip`. También debe admitir la opción de consulta del sistema `$count`.
  + Debe proporcionar la autorización requerida para que el usuario de SAP descubra los servicios y extraiga datos mediante los servicios OData de SAP. Consulte la documentación de seguridad proporcionada por SAP.
+ Si desea utilizar OAuth 2.0 como mecanismo de autorización, debe habilitar OAuth 2.0 para el servicio OData y registrar el cliente OAuth según la documentación de SAP.
+ Para generar un servicio OData basado en orígenes de datos ODP, SAP Gateway Foundation debe instalarse localmente en su pila de ERP/BW o en una configuración de hub.
  + Para sus aplicaciones de ERP/BW, la pila SAP NetWeaver AS ABAP debe ser de la versión 7.50 SP02 o superior.
  + Para el sistema hub (SAP Gateway), el SAP NetWeaver AS ABAP del sistema hub debe ser de la versión 7.50 SP01 o superior para la configuración de hub remoto.
+ Para orígenes que no sean ODP, la versión de la pila de SAP NetWeaver debe ser 7.40 SP02 o posterior.

**Métodos de autenticación compatibles**  
Se admiten los siguientes métodos de autenticación:
+ Autenticación básica
+ OAuth 2.0

# Requisitos previos
<a name="sap-odata-prerequisites"></a>

Antes de iniciar un trabajo AWS Glue de extracción de datos de SAP OData mediante la conexión de SAP OData, complete los siguientes requisitos previos:
+ El servicio OData de SAP correspondiente debe estar activado en el sistema SAP para garantizar que el origen de datos esté disponible para su consumo. Si el servicio OData no está activado, el trabajo de Glue no podrá acceder a los datos de SAP ni extraerlos.
+ Los mecanismos de autenticación apropiados, como la autenticación básica (personalizada) u OAuth 2.0, deben configurarse en SAP para garantizar que el trabajo AWS Glue pueda establecer una conexión con el servicio OData de SAP correctamente.
+ Configure las políticas de IAM para conceder los permisos adecuados al trabajo AWS Glue para acceder a SAP, Secrets Manager y otros recursos de AWS involucrados en el proceso.
+ Si el sistema SAP está alojado en una red privada, la conectividad de la VPC debe configurarse para garantizar que el trabajo AWS Glue pueda comunicarse de forma segura con SAP sin exponer datos confidenciales a través de la Internet pública.

AWS Secrets Manager se puede utilizar para almacenar información confidencial de forma segura, como las credenciales de SAP, que el trabajo AWS Glue puede recuperar de forma dinámica en el tiempo de ejecución. Este enfoque elimina la necesidad de una codificación rígida de las credenciales, lo que mejora la seguridad y la flexibilidad.

Los siguientes requisitos previos proporcionan una guía paso a paso sobre cómo configurar cada componente para una integración fluida entre AWS Glue y SAP OData.

**Topics**
+ [Activación de SAP OData](sap-odata-activation.md)
+ [Políticas de IAM](sap-odata-configuring-iam-permissions.md)
+ [Conectividad/Conexión de VPC](sap-odata-connectivity-vpc-connection.md)
+ [Autenticación SAP](sap-odata-authentication.md)
+ [AWS Secrets Manager para almacenar su secreto de autenticación](sap-odata-aws-secret-manager-auth-secret.md)

# Activación de SAP OData
<a name="sap-odata-activation"></a>

Siga los pasos que se describen a continuación para realizar la conexión SAP OData:

## Orígenes de ODP
<a name="sap-odata-odp-sources"></a>

Antes de poder transferir desde un proveedor ODP, deberá cumplir los siguientes requisitos:
+ Tiene una instancia de SAP NetWeaver AS ABAP.
+ Su instancia de SAP NetWeaver contiene un proveedor ODP del que desea transferir datos. Los proveedores ODP incluyen:
  + SAP DataSources (código de transacción RSO2)
  + Vistas de SAP Core Data Services ABAP CDS
  + Sistemas SAP BW o SAP BW/4HANA (InfoObject, DataStore Object)
  + Replicación en tiempo real de tablas y vistas de bases de datos desde SAP Source System mediante SAP Landscape Replication Server (SAP SLT)
  + Vistas de información de SAP HANA en orígenes basados en SAP ABAP
+ Su instancia de SAP NetWeaver tiene el componente SAP Gateway Foundation.
+ Ha creado un servicio OData que extrae datos de su proveedor ODP. Para crear el servicio OData, utilice SAP Gateway Service Builder. Para acceder a los datos de ODP, Amazon AppFlow llama a este servicio mediante la API de OData. Para obtener más información, consulte [Generación de un servicio para extraer datos de ODP mediante OData](https://help.sap.com/docs/SAP_BPC_VERSION_BW4HANA/dd104a87ab9249968e6279e61378ff66/69b481859ef34bab9cc7d449e6fff7b6.html?version=11.0) en la documentación de SAP BW/4HANA.
+ Para generar un servicio OData basado en orígenes de datos ODP, SAP Gateway Foundation debe instalarse localmente en su pila de ERP/BW o en una configuración de hub.
  + Para sus aplicaciones de ERP/BW, la pila SAP NetWeaver AS ABAP debe ser de la versión 7.50 SP02 o superior.
  + Para el sistema hub (SAP Gateway), el SAP NetWeaver AS ABAP del sistema hub debe ser de la versión 7.50 SP01 o superior para la configuración de hub remoto.

## Fuentes que no sean ODP
<a name="sap-odata-non-odp-sources"></a>
+ La versión de la pila de SAP NetWeaver debe ser 7.40 SP02 o posterior.
+ Debe habilitar el servicio de catálogo para la detección de servicios.
  + **OData V2.0**: puede habilitar los servicios de catálogo de OData V2.0 en su SAP Gateway mediante la transacción `/IWFND/MAINT_SERVICE`.
+ El servicio SAP OData debe admitir opciones de paginación o consulta del lado del cliente, como `$top` y `$skip`. También debe admitir la opción de consulta del sistema `$count`.
+ Para OAuth 2.0, debe habilitar OAuth 2.0 para el servicio OData y registrar el cliente OAuth según la documentación de SAP y configurar la redirección de URL autorizada de la siguiente manera:
  + `https://<region>.console.aws.amazon.com/gluestudio/oauth`, sustituyendo `<region>` por la región en la que se ejecuta AWS Glue, por ejemplo: us-east-1. 
  + Debe habilitar una configuración segura para conectarse a través de HTTPS.
+ Debe proporcionar una autorización requerida para que el usuario de SAP descubra los servicios y extraiga datos mediante los servicios OData de SAP. Consulte la documentación de seguridad proporcionada por SAP.

# Políticas de IAM
<a name="sap-odata-configuring-iam-permissions"></a>

## Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="sap-odata-policies-api-operations"></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": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue"
      ],
      "Resource": "*"
    }
  ]
}
```

------

El rol debe conceder acceso a todos los recursos que utiliza el trabajo como, por ejemplo, Amazon S3. 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.
+ [SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite): proporciona acceso de lectura y escritura a AWS Secrets Manager a través de la Consola de administración de AWS. Nota: Esto excluye las acciones de IAM, así que combínelas con `IAMFullAccess`, en caso de que se requiera una configuración de rotación.

**Políticas de IAM/permisos necesarios para configurar la VPC**

Se requieren los siguientes permisos de IAM al utilizar la conexión de VPC para crear la Conexión a AWS Glue. Para obtener más información, consulte [crear una política de IAM para AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html).

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

****  

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

------

# Conectividad/Conexión de VPC
<a name="sap-odata-connectivity-vpc-connection"></a>

Pasos para la conexión de VPC:

1. Utilice la conexión de VPC existente o cree una nueva siguiendo la [Documentación de Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html).

1. Asegúrese de tener una puerta de enlace NAT que dirija el tráfico a Internet.

1. Elija el punto de conexión de VPC como puerta de enlace de Amazon S3 para crear la conexión.

1. Habilite la resolución de DNS y el nombre de host de DNS para utilizar los servicios de DNS de AWS proporcionados.

1. Vaya a la VPC creada y agregue los puntos de conexión necesarios para diferentes servicios como STS, AWS Glue o Secret Managers.

   1. Seleccione Crear punto de conexión.

   1. Para Categoría de servicio, elija Servicios de AWS.

   1. En Nombre del servicio, elija el nombre del servicio con el que se va a conectar.

   1. Elija VPC y Habilitar el nombre de DNS.

   1. Puntos de conexión de VPC necesarios para la conexión de VPC:

      1. [STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sts_vpc_endpoint_create.html)

      1. [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/vpc-interface-endpoints.html)

      1. [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

## Configuración del grupo de seguridad
<a name="sap-odata-security-group-configuration"></a>

El grupo de seguridad debe permitir que el tráfico llegue a su puerto de escucha desde la VPC de AWS Glue para que AWS Glue pueda conectarse a él. Una práctica recomendada es restringir el rango de direcciones IP de origen tanto como sea posible. 

AWS Glue requiere un grupo de seguridad especial que permita todo el tráfico entrante desde sí mismo. Puede crear una regla con autorreferencia que permita todo el tráfico que se origine en el grupo de seguridad. Puede modificar un grupo de seguridad existente y especificar el grupo de seguridad como origen.

Abra la comunicación desde los puertos HTTPS del punto de conexión de la URL (ya sea un NLB o una instancia SAP).

## Opciones de conectividad
<a name="sap-odata-connectivity-options"></a>
+ Conexión HTTPS con NLB interno y externo, certificado SSL de la entidad de certificación (CA), SSL no certificado autofirmado
+ Conexión HTTPS con certificado SSL de instancia SAP de la autoridad de certificación (CA), no certificado SSL autofirmado

# Autenticación SAP
<a name="sap-odata-authentication"></a>

El conector SAP admite los métodos de autenticación CUSTOM (se trata de la autenticación SAP BASIC) y OAUTH.

## Autenticación personalizada
<a name="sap-odata-custom-authentication"></a>

AWS Glue admite Custom (autenticación básica) como método para establecer conexiones con sus sistemas SAP, lo que permite el uso de un nombre de usuario y una contraseña para un acceso seguro. Este tipo de autenticación funciona bien en escenarios de automatización, ya que permite utilizar el nombre de usuario y la contraseña por adelantado con los permisos de un usuario en particular en la instancia de SAP OData. AWS Glue puede usar el nombre de usuario y la contraseña para autenticar las API de SAP OData. En AWS Glue, la autorización básica se implementa como autorización personalizada.

Para ver la documentación pública de SAP OData sobre el flujo de autenticación básica, consulte [HTTP Basic Authentication](https://help.sap.com/docs/SAP_SUCCESSFACTORS_PLATFORM/d599f15995d348a1b45ba5603e2aba9b/5c8bca0af1654b05a83193b2922dcee2.html).

## Autenticación OAuth 2.0
<a name="sap-odata-oauth-2.0-authentication"></a>

AWS Glue también es compatible con OAuth 2.0 como mecanismo de autenticación seguro para establecer conexiones con sus sistemas SAP. Esto permite una integración perfecta, al tiempo que garantiza el cumplimiento de los estándares de autenticación modernos y mejora la seguridad del acceso a los datos.

## Tipo de concesión AUTHORIZATION\$1CODE
<a name="sap-odata-authentication-code-grant-type"></a>

El tipo de concesión determina cómo se comunica AWS Glue con SAP OData para solicitar el acceso a sus datos. SAP OData solo admite el tipo de concesión `AUTHORIZATION_CODE`. Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. 

Los usuarios aún pueden optar por crear su propia aplicación conectada en SAP OData y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá SAP OData para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.

Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.

Para ver la documentación pública de SAP OData sobre la creación de una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Authentication Using OAuth 2.0](https://help.sap.com/docs/ABAP_PLATFORM_NEW/e815bb97839a4d83be6c4fca48ee5777/2e5104fd87ff452b9acb247bd02b9f9e.html).

# AWS Secrets Manager para almacenar su secreto de autenticación
<a name="sap-odata-aws-secret-manager-auth-secret"></a>

Tendrá que almacenar los secretos de la conexión de OData de SAP en AWS Secrets Manager, configurar los permisos necesarios para la recuperación tal y como se especifica en la sección [Políticas de IAM](sap-odata-configuring-iam-permissions.md) y utilizarlos al crear una conexión.

Utilice la Consola de administración de AWS de AWS Secrets Manager para crear un secreto para su origen de SAP. Para obtener más información, consulte [Crear un secreto de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). Los detalles en AWS Secrets Manager deben incluir los elementos presentes en el siguiente código. 

## Secreto de autenticación personalizado
<a name="sap-odata-custom-auth-secret"></a>

Tendrá que ingresar su nombre de usuario del sistema SAP en lugar de *<su nombre de usuario de SAP>* y su contraseña en lugar de *<su contraseña de nombre de usuario de SAP>* y True o False. En este contexto, cambiar `basicAuthDisableSSO` a `true` desactiva el inicio de sesión único (SSO) para las solicitudes de autenticación básica, exigiendo credenciales de usuario explícitas para cada solicitud. Por el contrario, establecerlo en `false` permite el uso de las sesiones de SSO existentes, si están disponibles.

```
{
   "basicAuthUsername": "<your SAP username>",
   "basicAuthPassword": "<your SAP username password>",
   "basicAuthDisableSSO": "<True/False>",
   "customAuthenticationType": "CustomBasicAuth"
}
```

## Secreto de OAuth 2.0
<a name="sap-odata-oauth-2.0-secret"></a>

En caso de que utilice OAuth 2.0 como mecanismo de autenticación, el secreto en AWS Secrets Manager debe tener el **ClientId de la aplicación cliente gestionada por el usuario** con el siguiente formato. Tendrá que ingresar su secreto de cliente SAP en lugar de <su secreto de cliente>.

```
{"USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "<your client secret>"
}
```

# Creación de conexiones de
<a name="sap-odata-creating-connections"></a>

Configuración de una conexión de SAP OData:

1. Inicie sesión en la consola de administración de AWS y abra la [consola de AWS Glue](https://console.aws.amazon.com/glue). En el AWS Glue Studio, siga los pasos que se indican a continuación para crear una conexión:

   1. En el panel izquierdo, haga clic en Conexiones de datos.

   1. Haga clic en Crear conexión.

   1. Seleccione **SAP OData** en **Elegir origen de datos**

   1. Proporcione la **URL del host de la aplicación** de la instancia de SAP OData a la que quiere conectarse. Esta URL del host de la aplicación debe ser accesible a través de Internet pública para una conexión que no sea de VPC.

   1. Proporcione la **Ruta del servicio de aplicación** de la instancia de SAP OData a la que quiere conectarse. Es la misma que la ruta del servicio de catálogo. Por ejemplo: `/sap/opu/odata/iwfnd/catalogservice;v=2`. AWS Glue no acepta una ruta de objeto específica.

   1. Proporcione el **Número de cliente** de la instancia de SAP OData a la que quiere conectarse. Los valores admitidos son [001-999].. Ejemplo: 010

   1. Proporcione el **Número de puerto** de la instancia de SAP OData a la que quiere conectarse. Ejemplo: 443

   1. Proporcione el **Idioma de inicio de sesión** de la instancia de SAP OData a la que quiere conectarse. Ejemplo: EN

   1. Seleccione el rol de AWS IAM que AWS Glue pueda asumir y que tenga los permisos descritos en la sección [Políticas de IAM](sap-odata-configuring-iam-permissions.md).

   1. Seleccione el **Tipo de autenticación** que quiere utilizar para esta conexión en AWS Glue de la lista del menú desplegable: OAUTH2 o CUSTOM

      1. CUSTOM: seleccione el secreto que creó tal como se especifica en la sección [AWS Secrets Manager para almacenar su secreto de autenticación](sap-odata-aws-secret-manager-auth-secret.md).

      1. OAUTH 2.0: ingrese las siguientes entradas solo en el caso de OAuth 2.0:

         1. En **ClientId de la aplicación cliente gestionada por el usuario**, ingrese su ID de cliente.

         1. `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` (su secreto de cliente) en el AWS Secrets Manager que creó en la sección [AWS Secrets Manager para almacenar su secreto de autenticación](sap-odata-aws-secret-manager-auth-secret.md).

         1. En **URL del código de autorización**, ingrese la URL del código de autorización.

         1. En **URL de los tokens de autorización**, ingrese la URL del token de autorización.

         1. En **Ámbitos de OAuth**, introduzca sus ámbitos de OAuth separados por espacios. Ejemplo: `/IWFND/SG_MED_CATALOG_0002 ZAPI_SALES_ORDER_SRV_0001`

   1. Seleccione las opciones de red si quiere usar su red. Para obtener más información, consulta [Conectividad/Conexión de VPC](sap-odata-connectivity-vpc-connection.md).

1. Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`. Para obtener más información, consulte [Políticas de IAM](sap-odata-configuring-iam-permissions.md).

1. Elija **Probar conexión** y pruebe su conexión. Si la prueba de conexión es satisfactoria, haga clic en siguiente, ingrese el nombre de su conexión y guárdela. La funcionalidad de prueba de conexión no está disponible si ha elegido Opciones de red (VPC). 

# Creación de un trabajo de SAP OData
<a name="sap-odata-creating-job"></a>

Consulte [Creación de trabajos de Visual ETL con AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html)

# Orígenes de aprovisionamiento de datos operativos (ODP)
<a name="sap-odata-operational-data-provisioning-sources"></a>

El aprovisionamiento de datos operativos (ODP) proporciona una infraestructura técnica que puede utilizar para respaldar la extracción y replicación de datos para diversas aplicaciones de destino y admite mecanismos delta en estos escenarios. En el caso de un procedimiento delta, los datos de un origen (proveedor de ODP) se escriben automáticamente en una cola delta (cola delta operativa, ODQ) mediante un proceso de actualización, o se pasan a la cola delta mediante una interfaz de extracción. Un proveedor de ODP puede ser un DataSource (extractores), vistas de ABAP Core Data Services (vistas de ABAP CDS), SAP BW o SAP BW/4HANA, SAP Landscape Transformation Replication Server (SLT) y vistas de información de SAP HANA (vistas de cálculo). Las aplicaciones de destino (denominadas “suscriptores” de ODQ o, más generalmente, “consumidores de ODP”) recuperan los datos de la cola delta y continúan procesándolos.

## Carga completa
<a name="sap-odata-full-load"></a>

En el contexto de las entidades OData y ODP de SAP, una **carga completa** se refiere al proceso de extraer todos los datos disponibles de una entidad ODP en una sola operación. Esta operación recupera el conjunto de datos completo del sistema de origen, lo que garantiza que el sistema de destino tenga una copia completa y actualizada de los datos de la entidad. Las cargas completas se suelen utilizar para orígenes que no admiten cargas incrementales o cuando es necesario actualizar el sistema de destino.

**Ejemplo**

Puede establecer la marca `ENABLE_CDC` de forma explícita en false al crear el DynamicFrame. Nota: `ENABLE_CDC` es false de forma predeterminada. Si no quiere inicializar la cola delta, no tiene que enviar esta marca ni establecerla en true. Si no se establece esta marca en true, se realizará una extracción de carga completa.

```
sapodata_df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "false"
    }, transformation_ctx=key)
```

## Carga incremental
<a name="sap-odata-incremental-load"></a>

Una **carga incremental** en el contexto de las entidades ODP (Aprovisionamiento de datos operativos) implica extraer solo los datos nuevos o modificados (deltas) del sistema de origen desde la última extracción de datos, evitando el reprocesamiento de los registros ya procesados. Este enfoque mejora considerablemente la eficiencia, reduce los volúmenes de transferencia de datos, mejora el rendimiento, garantiza la sincronización efectiva entre sistemas y minimiza el tiempo de procesamiento, especialmente en el caso de conjuntos de datos grandes que cambian con frecuencia.

# Transferencias incrementales basadas en tokens Delta
<a name="sap-odata-incremental-transfers"></a>

Para habilitar la transferencia incremental mediante la Captura de datos de cambios (CDC) para las entidades habilitadas para ODP que la admiten, siga estos pasos:

1. Cree el trabajo de transferencia incremental en modo script.

1. Al crear el marco de datos o el DynamicFrame de Glue, debe pasar la opción `"ENABLE_CDC": "True"`. Esta opción garantiza que recibirá un token Delta de SAP, que podrá utilizar para recuperar posteriormente los datos modificados.

El token Delta estará presente en la última fila del marco de datos, en la columna DELTA\$1TOKEN. Este token puede utilizarse como opción de conexión en llamadas posteriores para recuperar de forma incremental el siguiente conjunto de datos.

**Ejemplo**
+ Establecemos la marca `ENABLE_CDC` en `true` al crear el DynamicFrame. Nota: `ENABLE_CDC` es `false` de forma predeterminada. Si no quiere inicializar la cola delta, no necesita enviar esta marca ni establecerla como verdadera. No establecer esta marca como verdadera resultará en una extracción de carga completa.

  ```
  sapodata_df = glueContext.create_dynamic_frame.from_options(
      connection_type="SAPOData",
      connection_options={
          "connectionName": "connectionName",
          "ENTITY_NAME": "entityName",
          "ENABLE_CDC": "true"
      }, transformation_ctx=key)
  
  # Extract the delta token from the last row of the DELTA_TOKEN column
  delta_token_1 = your_logic_to_extract_delta_token(sapodata_df) # e.g., D20241029164449_000370000
  ```
+ El token delta extraído puede pasarse como opción para recuperar nuevos eventos.

  ```
  sapodata_df_2 = glueContext.create_dynamic_frame.from_options(
      connection_type="SAPOData",
      connection_options={
          "connectionName": "connectionName",
          "ENTITY_NAME": "entityName",
          // passing the delta token retrieved in the last run
          "DELTA_TOKEN": delta_token_1
      } , transformation_ctx=key)
  
  # Extract the new delta token for the next run
  delta_token_2 = your_logic_to_extract_delta_token(sapodata_df_2)
  ```

Tenga en cuenta que el último registro, en el que `DELTA_TOKEN` está presente, no es un registro transaccional del origen y solo existe con la finalidad de pasar el valor del token delta.

Además de `DELTA_TOKEN`, se devuelven los siguientes campos en cada fila del marco de datos. 
+ **GLUE\$1FETCH\$1SQ**: se trata de un campo de secuencia, generado a partir de la marca de tiempo de EPOC en el orden en que se recibió el registro, y es único para cada registro. Se puede utilizar si necesita conocer o establecer el orden de los cambios en el sistema de origen. Este campo solo estará presente para las entidades habilitadas para ODP.
+ **DML\$1STATUS**: esto mostrará `UPDATED` para todos los registros recién insertados y actualizados a partir del origen y `DELETED` para los registros que se hayan eliminado del origen.

Para obtener más información sobre cómo gestionar el estado y reutilizar el token delta para recuperar los registros modificados a través de un ejemplo, consulte la sección [Uso del script de administración de estado de SAP OData](sap-odata-state-management-script.md).

## Invalidación del token Delta
<a name="sap-odata-invalidation"></a>

Un token delta está asociado a la colección de servicios y a un usuario. Si se inicia una nueva extracción inicial con `“ENABLE_CDC” : “true”` para la misma colección de servicios y para el mismo usuario, el servicio OData de SAP invalidará todos los tokens delta anteriores emitidos como resultado de una inicialización anterior. Invocar el conector con un token delta caducado provocará una excepción: 

`Could not open data access via extraction API RODPS_REPL_ODP_OPEN` 

# Servicios OData (orígenes que no son ODP)
<a name="sap-odata-non-odp-services"></a>

## Carga completa
<a name="sap-odata-non-odp-full-load"></a>

Para los sistemas que no son ODP (Aprovisionamiento de datos operativos), una **carga completa** implica extraer todo el conjunto de datos del sistema de origen y cargarlo en el sistema de destino. Dado que los sistemas que no son ODP no son compatibles de por sí con mecanismos avanzados de extracción de datos, como los deltas, el proceso es sencillo, pero puede requerir muchos recursos en función del tamaño de los datos.

## Carga incremental
<a name="sap-odata-non-odp-incremental-load"></a>

Para los sistemas o entidades que no admiten el **ODP (Aprovisionamiento de datos operativos)**, la transferencia incremental de datos se puede gestionar manualmente mediante la implementación de un mecanismo basado en marcas de tiempo para seguir y extraer los cambios.

**Transferencias incrementales basadas en marca temporal**

Para las entidades no habilitadas para ODP (o para las entidades habilitadas para ODP que no usan la marca ENABLE\$1CDC), puede usar una opción `filteringExpression` en el conector para indicar el intervalo de `datetime` para el que se quiere recuperar los datos. Este método se basa en un campo de fecha y hora en los datos que representa cuándo se creó o modificó cada registro por última vez.

**Ejemplo**

Recuperar registros que se modificaron después de 2024-01-01T00:00:00.000

```
sapodata_df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "filteringExpression": "LastChangeDateTime >= 2024-01-01T00:00:00.000"
    }, transformation_ctx=key)
```

Nota: En este ejemplo, `LastChangeDateTime` es el campo que representa cuándo se modificó por última vez cada registro. El nombre real del campo puede variar en función de la entidad específica de SAP OData.

Para obtener un nuevo subconjunto de datos en las siguientes ejecuciones, debe actualizar la opción `filteringExpression` con una nueva marca de tiempo. Normalmente, sería el valor máximo de la marca de tiempo de los datos recuperados anteriormente.

**Ejemplo**

```
max_timestamp = get_max_timestamp(sapodata_df)  # Function to get the max timestamp from the previous run
next_filtering_expression = f"LastChangeDateTime > {max_timestamp}"

# Use this next_filtering_expression in your next run
```

En la siguiente sección, proporcionaremos un enfoque automatizado para gestionar estas transferencias incrementales basadas en marcas de tiempo, lo que elimina la necesidad de actualizar manualmente la expresión de filtrado entre ejecuciones.

# Escribir en SAP OData
<a name="sap-odata-writing"></a>

 En esta sección se describe cómo escribir datos en su servicio SAP OData mediante el conector de AWS Glue para SAP OData. 

**Requisitos previos**
+ Acceso a un servicio de SAP OData
+ Un objeto de SAP OData EntitySet en el que le gustaría escribir. Necesitará el nombre del objeto.
+ Credenciales de SAP OData válidas y una conexión válida
+ Permisos adecuados, tal como se describe en las políticas de [IAM](https://docs.aws.amazon.com/glue/latest/dg/sap-odata-configuring-iam-permissions.html)

El conector de SAP OData admite dos operaciones de escritura:
+ INSERT
+ UPDATE

Al usar la operación de escritura UPDATE, debe proporcionar ID\$1FIELD\$1NAMES para especificar el campo de ID externo de los registros.

**Ejemplo:**

```
sapodata_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="sapodata",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "WRITE_OPERATION": "INSERT"
    }
```

# Uso del script de administración de estado de SAP OData
<a name="sap-odata-state-management-script"></a>

Para utilizar el script de administración de estado de SAP OData en el trabajo de AWS Glue, haga lo siguiente:
+ Descargue el script de gestión de estado: `s3://aws-blogs-artifacts-public/artifacts/BDB-4789/sap_odata_state_management.zip ` desde el bucket público de Amazon S3.
+ Cargue el script en un bucket de Amazon S3 al que el trabajo de AWS Glue tenga permiso de acceso.
+ Referencia al script de su trabajo de AWS Glue: al crear o actualizar su trabajo de AWS Glue, pase la opción `'--extra-py-files'` para hacer referencia a la ruta del script en el bucket de Amazon S3. Por ejemplo: `--extra-py-files s3://your-bucket/path/to/sap_odata_state_management.py`
+ Importe y use la biblioteca de administración de estados en los scripts del trabajo de AWS Glue.

## Ejemplo de transferencias incrementales basadas en tokens Delta
<a name="sap-odata-delta-token-incremental-transfer"></a>

A continuación, se muestra un ejemplo de cómo usar el script de administración de estados para transferencias incrementales basadas en token delta:

```
from sap_odata_state_management import StateManagerFactory, StateManagerType, StateType

# Initialize the state manager
state_manager = StateManagerFactory.create_manager(
    manager_type=StateManagerType.JOB_TAG,
    state_type=StateType.DELTA_TOKEN,
    options={
        "job_name": args['JOB_NAME'],
        "logger": logger
    }
)

# Get connector options (including delta token if available)
key = "SAPODataNode"
connector_options = state_manager.get_connector_options(key)

# Use the connector options in your Glue job
df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "true",
        **connector_options
    }
)

# Process your data here...

# Update the state after processing
state_manager.update_state(key, sapodata_df.toDF())
```

## Ejemplo de transferencias incrementales basadas en marca temporal
<a name="sap-odata-timestamp-incremental-transfer"></a>

A continuación, se muestra un ejemplo de cómo usar el script de administración de estados para transferencias incrementales basadas en token delta:

```
from sap_odata_state_management import StateManagerFactory, StateManagerType, StateType

# Initialize the state manager
state_manager = StateManagerFactory.create_manager(
    manager_type=StateManagerType.JOB_TAG,
    state_type=StateType.DELTA_TOKEN,
    options={
        "job_name": args['JOB_NAME'],
        "logger": logger
    }
)

# Get connector options (including delta token if available)
key = "SAPODataNode"
connector_options = state_manager.get_connector_options(key)

# Use the connector options in your Glue job
df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "true",
        **connector_options
    }
)

# Process your data here...

# Update the state after processing
state_manager.update_state(key, sapodata_df.toDF())
```

En ambos ejemplos, el script de administración del estado administra las complejidades del almacenamiento del estado (ya sea un token delta o una marca de tiempo) entre las ejecuciones de los trabajos. Recupera automáticamente el último estado conocido al obtener las opciones del conector y actualiza el estado después del procesamiento, lo que garantiza que cada trabajo que se ejecute solo procese datos nuevos o modificados.

# Particiones para entidades que no sean ODP
<a name="sap-odata-non-odp-entities-partitioning"></a>

En Apache Spark, el particionamiento se refiere a la forma en que los datos se dividen y distribuyen entre los nodos de trabajo de un clúster para su procesamiento paralelo. Cada partición es un fragmento lógico de datos que una tarea puede procesar de forma independiente. El particionamiento es un concepto fundamental en Spark que afecta directamente al rendimiento, la escalabilidad y la utilización de los recursos. Los trabajos de AWS Glue utilizan el mecanismo de particionamiento de Spark para dividir el conjunto de datos en fragmentos más pequeños (particiones) que se pueden procesar en paralelo en los nodos de trabajo del clúster. Tenga en cuenta que el particionamiento no se aplica a las entidades ODP.

Para obtener más información, consulte [AWS GlueTrabajos de Spark y PySpark](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html).

**Requisitos previos**

Un Objeto de SAP OData desde el cual desearía leer. Necesitará el nombre del objeto/EntitySet. Por ejemplo: ` /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder `.

**Ejemplo**

```
sapodata_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder"
    }, transformation_ctx=key)
```

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

### Partición basada en campos
<a name="sap-odata-field-based-partitioning"></a>

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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. Los campos Entero, Fecha y hora y Fecha admiten la partición basada en campos en el conector SAP OData.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido.

   En cualquier campo cuyo tipo de dato sea DateTime, se acepta el formato de marca de tiempo de Spark que se utiliza en las consultas de Spark SQL.

  Ejemplos de valores válidos: `"2000-01-01T00:00:00.000Z"` 
+ `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.
+ `PARTITION_BY`: el tipo de particionamiento que se va a realizar, `FIELD` se debe pasar en caso de particionamiento basado en Campos.

**Ejemplo**

```
sapodata= glueContext.create_dynamic_frame.from_options(
    connection_type="sapodata",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet",
        "PARTITION_FIELD": "validStartDate"
        "LOWER_BOUND": "2000-01-01T00:00:00.000Z"
        "UPPER_BOUND": "2020-01-01T00:00:00.000Z"
        "NUM_PARTITIONS": "10",
        "PARTITION_BY": "FIELD"
    }, transformation_ctx=key)
```

### Partición basada en registros
<a name="sap-odata-record-based-partitioning"></a>

La consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

La partición basada en registros solo se admite para entidades que no son de ODP, ya que la paginación en las entidades de ODP se admite a través del siguiente token o token de omisión.
+ `PARTITION_BY`: el tipo de particionamiento que se va a realizar. `COUNT` se debe pasar en caso de particionamiento basado en registros.

**Ejemplo**

```
sapodata= glueContext.create_dynamic_frame.from_options(
    connection_type="sapodata",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet",
        "NUM_PARTITIONS": "10",
        "PARTITION_BY": "COUNT"
    }, transformation_ctx=key)
```

# Limitaciones/Avisos
<a name="sap-odata-limitations"></a>
+ Las entidades ODP no son compatibles con la partición basada en registros, ya que la paginación se gestiona mediante un token de omisión o token delta. En consecuencia, para la partición basada en registros, el valor predeterminado de maxConcurrency se establece en “null”, independientemente de la entrada del usuario.
+ Cuando se aplican un límite y una partición, el límite prevalece sobre el particionamiento.

# Opciones de conexión de SAP OData
<a name="sap-odata-connection-options"></a>

Las siguientes son opciones de conexión para SAP OData:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en SAP OData.

  Por ejemplo: /sap/opu/odata/sap/API\$1SALES\$1ORDER\$1SRV/A\$1SalesOrder
+ `API_VERSION`(cadena): (opcional) Se usa para leer. Versión de la API de REST de SAP OData que quiere usar. Ejemplo: 2.0.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto.

  Por ejemplo: SalesOrder
+ `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL.

  Por ejemplo: `SalesOrder = "10"`
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL.

  Por ejemplo: `SELECT * FROM /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder`
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.

  Por ejemplo: `ValidStartDate`
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.

  Por ejemplo: `"2000-01-01T00:00:00.000Z"`
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.

  Por ejemplo: `"2024-01-01T00:00:00.000Z"`
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): la URL del host de la aplicación de la instancia de SAP.

  Por ejemplo: `https://example-externaldata.sierra.aws.dev`
+ `SERVICE_PATH`(cadena): la ruta del servicio de la aplicación de la instancia de SAP.

  Por ejemplo: `/sap/opu/odata/iwfnd/catalogservice;v=2`
+ `CLIENT_NUMBER`(cadena): el número de cliente de la aplicación de la instancia de SAP.

  Por ejemplo: 100
+ `PORT_NUMBER`(cadena). Valor predeterminado: el número de puerto de la aplicación de la instancia de SAP.

  Por ejemplo: 443
+ `LOGON_LANGUAGE`(cadena): idioma de inicio de sesión de la aplicación de instancias de SAP.

  Por ejemplo: `EN`
+ `ENABLE_CDC`(cadena): define si se debe ejecutar un trabajo con CDC habilitado, es decir, con el seguimiento de los cambios.

  Por ejemplo: `True/False`
+ `DELTA_TOKEN`(cadena): ejecuta una extracción de datos incremental basada en el token Delta válido proporcionado. 

  Por ejemplo: `D20241107043437_000463000`
+ `PAGE_SIZE`(entero): define el tamaño de la página para consultar los registros. El tamaño de página predeterminado es 50 000. Cuando se especifica un tamaño de página, SAP devuelve solo el número definido de registros por llamada a la API, en lugar del conjunto de datos completo. El conector seguirá proporcionando el número total de registros y gestionará la paginación utilizando el tamaño de página que especificó. Si necesita un tamaño de página mayor, puede elegir cualquier valor de hasta 500 000, el cual es el máximo permitido. Se ignorará cualquier tamaño de página especificado superior a 500 000. En su lugar, el sistema utilizará el tamaño de página máximo permitido. Puede especificar el tamaño de página en la interfaz de usuario de AWS Glue Studio agregando una opción de conexión `PAGE_SIZE` con el valor que desee. 

  Por ejemplo: `20000`

# Detalles de la entidad y del campo de SAP OData
<a name="sap-odata-entity-field-details"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/sap-odata-entity-field-details.html)

# Conexión a SendGrid
<a name="connecting-to-data-sendgrid"></a>

SendGrid es una plataforma de comunicación con el cliente para correos electrónicos transaccionales y de marketing.
+ El conector de SendGrid ayuda a crear y administrar listas de contactos y a crear campañas de marketing por correo electrónico.
+ SendGrid permite a empresas en línea, organizaciones sin ánimo de lucro y otras entidades en línea crear y enviar mensajes de correo electrónico de marketing dirigidos a grandes audiencias, así como supervisar la interacción con dichos mensajes.

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

# Compatibilidad de AWS Glue con SendGrid
<a name="sendgrid-support"></a>

AWS Glue admite SendGrid de la siguiente manera:

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

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

**Versiones de la API de SendGrid compatibles**  
Se admiten las siguientes versiones de la API de SendGrid:
+ v3

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="sendgrid-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 SendGrid
<a name="sendgrid-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de SendGrid con una clave de API.
+ La cuenta de SendGrid debe tener acceso a la API con una licencia válida.

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

# Configuración de las conexiones a SendGrid
<a name="sendgrid-configuring-connections"></a>

SendGrid admite la autenticación personalizada.

Para consultar la documentación pública de SendGrid sobre la generación de las claves de API necesarias para la autenticación personalizada, consulte [Autenticación](https://www.twilio.com/docs/sendgrid/api-reference/how-to-use-the-sendgrid-v3-api/authentication).

Para configurar una conexión a SendGrid:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `api_key` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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 SendGrid.

   1. Proporcione la `INSTANCE_URL` de la instancia de SendGrid 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 entidades de SendGrid
<a name="sendgrid-reading-from-entities"></a>

**Requisito previo**

Un objeto de SendGrid desde el que desea leer. Necesitará el nombre del objeto, como `lists`, `singlesends` o `segments`.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Listas | No | Sí | No | Sí | No | 
| Envíos únicos | Sí | Sí | No | Sí | No | 
| Estadísticas y automatizaciones de campañas de marketing | Sí | Sí | No | Sí | No | 
| Estadísticas de la campaña de marketing: envíos únicos | Sí | Sí | No | Sí | No | 
| Segmentos | Sí | No | No | Sí | No | 
| Contactos | Sí | No | No | Sí | No | 
| Categoría | No | No | No | Sí | No | 
| Estadísticas | Sí | No | No | Sí | No | 
| Anular la suscripción de grupos | Sí | No | No | Sí | No | 

**Ejemplo:**

```
sendgrid_read = glueContext.create_dynamic_frame.from_options(
    connection_type="sendgrid",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "lists",
        "API_VERSION": "v3",
        "INSTANCE_URL": "instanceUrl"
    }
```

**Detalles de la entidad y el campo de SendGrid**:

Entidades con metadatos estáticos:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/sendgrid-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="sendgrid-reading-partitioning-queries"></a>

SendGrid no admite la partición basada en filtros ni la partición basada en registros.

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

Las siguientes son opciones de conexión para SendGrid:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en SendGrid.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de SendGrid que desea usar.
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. Una URL de instancia de SendGrid válida.
+ `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.

# Limitaciones de SendGrid
<a name="sendgrid-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a SendGrid:
+ La extracción incremental solo es compatible con la entidad Estadísticas en el campo `start_date` y con la entidad Contacto en el campo `event_timestamp`.
+ La paginación solo es compatible con las entidades Estadísticas de campaña de marketing (automatizaciones), Estadísticas de campaña de marketing (envíos únicos), Envíos únicos y Listas.
+ En la entidad Estadísticas, `start_date` es un parámetro de filtro obligatorio.
+ Una clave de API con acceso restringido no puede admitir el acceso de lectura para la API de correo electrónico y las entidades de estadísticas. Utilice una clave de API con acceso pleno. Para obtener más información, consulte [Información general de la API](https://www.twilio.com/docs/sendgrid/api-reference/api-keys/create-api-keys#api-overview).

# Conexión a ServiceNow
<a name="connecting-to-data-servicenow"></a>

ServiceNow es una plataforma SaaS basada en la nube para automatizar los flujos de trabajo de administración de TI. La plataforma ServiceNow se integra fácilmente con otras herramientas, lo que permite a los usuarios administrar proyectos, equipos e interacciones con los clientes mediante una variedad de aplicaciones y complementos. Como usuario de ServiceNow, puede conectar AWS Glue a su cuenta de ServiceNow. Tras ello, podrá utilizar ServiceNow como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre ServiceNow y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con ServiceNow](servicenow-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](servicenow-configuring-iam-permissions.md)
+ [Configuración de ServiceNow](servicenow-configuring.md)
+ [Configuración de conexiones a ServiceNow](servicenow-configuring-connections.md)
+ [Lectura de entidades de ServiceNow](servicenow-reading-from-entities.md)
+ [Opciones de conexión a ServiceNow](servicenow-connection-options.md)
+ [Limitaciones y notas del conector de ServiceNow](servicenow-connector-limitations.md)

# Compatibilidad de AWS Glue con ServiceNow
<a name="servicenow-support"></a>

AWS Glue es compatible con ServiceNow de la siguiente manera:

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

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

**Versiones de la API de ServiceNow compatibles**  
Las siguientes versiones de la API de ServiceNow son compatibles:
+ v2

Para conocer la compatibilidad de entidades por versión específica, consulte Entidades admitidas para el origen.

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="servicenow-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 ServiceNow
<a name="servicenow-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de ServiceNow con correo electrónico y contraseña. Para obtener más información, consulte [Creación de una cuenta de ServiceNow](#servicenow-configuring-creating-servicenow-account).
+ La cuenta de ServiceNow debe estar habilitada para el acceso de API. La API de ServiceNow se puede utilizar sin ningún costo adicional.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de ServiceNow.

## Creación de una cuenta de ServiceNow
<a name="servicenow-configuring-creating-servicenow-account"></a>

Para crear una cuenta de ServiceNow:

1. Diríjase a la página de registro de servicenow.com, introduzca sus datos y haga clic en **Continuar**.

1. Una vez que reciba un código de verificación en su correo electrónico registrado, introdúzcalo y seleccione **Verificar**.

1. Configure la autenticación multifactor u omita este paso.

Se crea la cuenta y ServiceNow muestra su perfil.

## Crear una instancia de desarrollador de ServiceNow
<a name="servicenow-configuring-creating-servicenow-developer-instance"></a>

Solicite una instancia de desarrollador después de iniciar sesión en ServiceNow.

1. En la [página de inicio de sesión de ServiceNow](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), introduzca las credenciales de su cuenta.

1. Seleccione el **Programa para desarrolladores de ServiceNow**.  
![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/servicenow-dev-program.png)

1. Seleccione **Solicitar instancia** en la esquina superior derecha.

1. Introduzca sus responsabilidades laborales. Indique que está de acuerdo con las condiciones de uso y seleccione **Finalizar la configuración**.

1. Una vez creada la instancia, anote la URL y las credenciales de la instancia.

## Recuperar credenciales de autenticación básica
<a name="servicenow-configuring-basic-auth"></a>

Para recuperar las credenciales de autenticación básica para una cuenta gratuita:

1. En la [página de inicio de sesión de ServiceNow](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), introduzca las credenciales de su cuenta.

1. En la página de inicio, elija la sección de edición de perfil (esquina superior derecha) y seleccione **Administrar contraseña de instancia**.

1. Recupere las credenciales de inicio de sesión, como el nombre de usuario, la contraseña y la URL de la instancia.

**nota**  
Si está habilitada la MFA para la cuenta, añada el token de la MFA al final de la contraseña del usuario en la autenticación básica: <nombredeusuario>:<contraseña><token de MFA>

Para obtener más información, consulte [Compilación de aplicaciones](https://docs.servicenow.com/bundle/xanadu-application-development/page/build/custom-application/concept/build-applications.html) en la documentación de ServiceNow.

## Creación de credenciales de OAuth 2.0
<a name="servicenow-configuring-basic-auth"></a>

Para usar OAuth2.0 en el conector de ServiceNow, debe crear un cliente entrante para generar el ID de cliente y el secreto del cliente:

1. En la [página de inicio de sesión de ServiceNow](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), introduzca las credenciales de su cuenta.

1. En la página de inicio, elija **Iniciar compilación**.

1. En la página de App Engine Studio, busque **Registro de aplicaciones**.

1. Seleccione **Nuevo** en la esquina superior derecha.

1. Elija la opción **Crear un punto de conexión de la API de OAuth para clientes externos**.

1. Realice los cambios necesarios en la configuración de OAuth y seleccione **Actualizar**.

   Ejemplo de URL de redirección: https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Seleccione la aplicación cliente de OAuth recién creada para recuperar el ID de cliente y el secreto del cliente.

1. Guarde el ID de cliente y el secreto del cliente para su posterior procesamiento.

Para configurar OAuth en una cuenta de desarrollador que no sea de producción:

1. Use el tema [Crear un perfil de autenticación](https://docs.servicenow.com/bundle/washingtondc-platform-security/page/integrate/authentication/task/create-an-authentication-profile.html) de la documentación de ServiceNow para crear un perfil de autenticación.

1. En el perfil de autenticación de OAuth, seleccione **Tipo** como OAuth y seleccione el cliente entrante creado anteriormente para configurar la **Entidad de OAuth**.

1. Si hay varios clientes, debe crear varios perfiles de autenticación para establecer la entidad OAuth requerida en el perfil de autenticación.

1. Si no se configuró, cree una política de acceso a la API de REST para dar acceso a la API TABLE. Consulte [Crear una política de acceso a la API de REST](https://docs.servicenow.com/bundle/washingtondc-platform-security/page/integrate/authentication/task/create-api-access-policy.html).

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

El tipo de concesión determina cómo AWS Glue se comunica con ServiceNow para solicitar el acceso a los datos. Su elección afecta a los requisitos que debe cumplir antes de crear la conexión. ServiceNow solo admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth 2.0.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a ServiceNow, donde deberá iniciar sesión y otorgar a AWS Glue los permisos solicitados para acceder a la instancia de ServiceNow.
+ Los usuarios aún pueden optar por crear una aplicación conectada propia en ServiceNow y proporcionar un identificador de cliente y un secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá ServiceNow para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de ServiceNow sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Configuración de OAuth](https://docs.servicenow.com/bundle/vancouver-platform-security/page/administer/security/task/t_SettingUpOAuth.html).

Para configurar una conexión a ServiceNow:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la autenticación básica, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USERNAME` y `PASSWORD` como clave.

   1. Para un tipo de concesión de código de autorización, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto por cada 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 el **Tipo de conexión**, elija ServiceNow.

   1. Proporcione el valor INSTANCE\$1URL de la instancia de ServiceNow a la que se desea 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 **Tipo de autenticación** que quiere utilizar para esta conexión en AWS Glue.

      1. Autenticación básica: este tipo de autenticación funciona bien en escenarios de automatización, ya que permite utilizar el nombre de usuario y la contraseña desde el comienzo con los permisos de un usuario en particular en la instancia de ServiceNow. AWS Glue puede usar el nombre de usuario y la contraseña para autenticar las API de ServiceNow. Introduzca las siguientes entradas solo en el caso de la autenticación básica: `Username` y `Password`.

      1. OAuth 2: ingrese las siguientes entradas solo en el caso de OAuth 2: `ClientId`, `ClientSecret`, `Authorization URL` y `Authorization Token URL`.

   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`.

# Lectura de entidades de ServiceNow
<a name="servicenow-reading-from-entities"></a>

**Requisito previo**

Un objeto de tablas de ServiceNow desde el cual desearía leer. Necesitará el nombre del objeto, como pa\$1bucket o incident.

**Ejemplo:**

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2"
        "instanceUrl": "https://<instance-name>.service-now.com"
    }
)
```

**Detalles de la entidad y del campo de ServiceNow**:

Para las siguientes entidades, ServiceNow proporciona puntos de conexión para obtener los metadatos de forma dinámica, de modo que la compatibilidad del operador se capture según el tipo de datos de cada entidad.

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

**nota**  
El tipo de datos de estructura se convierte en un tipo de datos de cadena en la respuesta del conector.

**nota**  
`DML_STATUS` es un atributo adicional definido por el usuario que se utiliza para hacer un seguimiento de los registros CREADOS o ACTUALIZADOS.

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

**Partición basada en campos**:

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/servicenow-reading-from-entities.html)
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo DateTime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas de Spark SQL.

  Ejemplos de valor válido:

  ```
  "2024-01-30T06:47:51.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

En la tabla siguiente, se describen los detalles de compatibilidad de campos de particiones de entidades:

Ejemplo:

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2",
        "instanceUrl": "https://<instance-name>.service-now.com"
        "PARTITION_FIELD": "sys_created_on"
        "LOWER_BOUND": "2024-01-30T06:47:51.000Z"
        "UPPER_BOUND": "2024-06-30T06:47:51.000Z"
        "NUM_PARTITIONS": "10"
    }
```

**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 divide en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

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

Ejemplo:

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2",
        "instanceUrl": "https://<instance-name>.service-now.com"
        "NUM_PARTITIONS": "2"
    }
```

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

Estas son las opciones para establecer la conexión con ServiceNow:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en ServiceNow.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de ServiceNow que desea usar. Por ejemplo: v1,v2,v3,v4.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. Por ejemplo: 2024-01-30T06:47:51.000Z.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. Por ejemplo: 2024-06-30T06:47:51.000Z.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. Por ejemplo, 10.
+ `INSTANCE_URL`(cadena): (obligatorio) una URL de instancia de ServiceNow válida con el formato https://<nombre-de-instancia>.servicenow.com.
+ `PAGE_SIZE`(entero): define el tamaño de la página para consultar los registros. El tamaño de página predeterminado es 1000. Cuando se especifica un tamaño de página, ServiceNow devuelve solo el número definido de registros por llamada a la API, en lugar del conjunto de datos completo. El conector seguirá proporcionando el número total de registros y gestionará la paginación utilizando el tamaño de página que especificó. Si necesita un tamaño de página mayor, puede elegir cualquier valor de hasta 10 000, que es el máximo permitido. Se ignorará cualquier tamaño de página especificado superior a 10 000. En su lugar, el sistema utilizará el tamaño de página máximo permitido. Puede especificar el tamaño de página en la interfaz de usuario de AWS Glue Studio agregando una opción de conexión `PAGE_SIZE` con el valor que desee. Por ejemplo, 5000.

# Limitaciones y notas del conector de ServiceNow
<a name="servicenow-connector-limitations"></a>

Las siguientes son limitaciones o notas del conector de ServiceNow:
+ Según la [documentación de SaaS](https://www.servicenow.com/docs/bundle/washingtondc-application-development/page/build/applications/reference/r_GlobalDefaultFields.html), `sys_created_on`, `sys_updated_on` y `sys_mod_count` son campos generados por el sistema. El conector se basa en las API de SaaS para proporcionar estos campos en el cuerpo de la respuesta.
  + Si SaaS no genera estos campos para ninguna entidad, no se puede admitir la partición basada en filtros.
+ Si las API de SaaS no devuelven los campos `sys_created_on` y `sys_updated_on` de la respuesta, `DML_STATUS` no se pueden calcular.
+ Mejore el rendimiento y la eficiencia de lectura
  + El conector ServiceNow ahora clasifica automáticamente los registros en orden ascendente por el campo `sys_id` (debe estar presente en los metadatos) cuando el usuario no especifica ninguna cláusula ORDER BY. En este caso, los registros se paginarán mediante la nueva paginación optimizada basada en conjuntos de claves.
  + Si se especifica la cláusula ORDER BY, no se utilizará la nueva optimización y los registros se obtendrán mediante el método existente (paginación definida por el usuario con Order By y basada en Offset-Limit).

# Conexión a Slack en AWS Glue Studio
<a name="connecting-to-data-slack"></a>

 Slack es una aplicación de comunicación empresarial que permite a los usuarios enviar mensajes y archivos adjuntos a través de varios canales públicos y privados. Si es usuario de Slack, puede conectar AWS Glue a su cuenta de Slack. Luego, puede usar Slack como origen de datos en sus trabajos de ETL. Ejecute estos trabajos para transferir datos entre Slack y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Slack](slack-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](slack-configuring-iam-permissions.md)
+ [Configuración de Slack](slack-configuring.md)
+ [Configuración de las conexiones de Slack](slack-configuring-connections.md)
+ [Lectura desde entidades de Slack](slack-reading-from-entities.md)
+ [Opciones de conexión de Slack](slack-connection-options.md)
+ [Limitaciones](slack-limitations.md)
+ [Creación de una nueva cuenta de Slack y configuración de la aplicación cliente](slack-new-account-creation.md)

# Compatibilidad de AWS Glue con Slack
<a name="slack-support"></a>

AWS Glue es compatible con Slack de la siguiente manera:

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

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

**Versiones de la API de Slack compatibles**  
 Slack API v2. 

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

 En el siguiente ejemplo de política se describen los permisos de 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, Amazon 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): concede 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 Slack
<a name="slack-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos hacia o desde Slack, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="slack-configuring-min-requirements"></a>
+  Debe tener una cuenta de Slack. Para obtener más información, consulte [Creación de una nueva cuenta de Slack y configuración de la aplicación cliente](slack-new-account-creation.md). 

 Si cumple estos requisitos, lo tendrá todo listo para conectar AWS Glue a su cuenta de Slack. 

# Configuración de las conexiones de Slack
<a name="slack-configuring-connections"></a>

 Slack admite el tipo de concesión `AUTHORIZATION_CODE` para OAuth 2. 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Slack, donde deberá iniciar sesión y permitir a AWS Glue que los permisos solicitados accedan a su instancia de Slack. 

 Los usuarios aún pueden optar por crear su propia aplicación conectada en Slack y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Slack para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso caduca una hora después de su creación. Se puede obtener un nuevo token de acceso mediante el token de actualización. 

 Para obtener más información sobre cómo crear una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Slack API](https://api.slack.com/quickstart). 

Para configurar una conexión de Slack, haga lo siguiente:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Debe crear un secreto para la conexión en AWS Glue. 

   1.  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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**, seleccione Slack.

   1. Proporcione el entorno de Slack.

   1.  Seleccione el rol de 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`. 

# Lectura desde entidades de Slack
<a name="slack-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Slack desde el que desea leer. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| conversaciones | Sí | Sí | No | Sí | Sí | 

 **Ejemplo** 

```
slack_read = glueContext.create_dynamic_frame.from_options(
    connection_type="slack",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversations/C058W38R5J8"
    }
)
```

 **Detalles de la entidad y el campo de Slack** 


| Entidad | Campo | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | --- | 
| conversaciones | attachments | Enumeración | N/D | 
| conversaciones | bot\$1id | Cadena | N/D | 
| conversaciones | blocks | Enumeración | N/D | 
| conversaciones | client\$1msg\$1id | Cadena | N/D | 
| conversaciones | is\$1starred | Booleano | N/D | 
| conversaciones | last\$1read | Cadena | N/D | 
| conversaciones | latest\$1reply | Cadena | N/D | 
| conversaciones | reactions | Enumeración | N/D | 
| conversaciones | replies | Enumeración | N/D | 
| conversaciones | reply\$1count | Entero | N/D | 
| conversaciones | reply\$1users | Enumeración | N/D | 
| conversaciones | reply\$1users\$1count | Entero | N/D | 
| conversaciones | subscribed | Booleano | N/D | 
| conversaciones | subtype | Cadena | N/D | 
| conversaciones | texto | Cadena | N/D | 
| conversaciones | team | Cadena | N/D | 
| conversaciones | thread\$1ts | Cadena | N/D | 
| conversaciones | ts | Cadena | EQUAL\$1TO, BETWEEN, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL\$1TO, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL\$1TO | 
| conversaciones | type | Cadena | N/D | 
| conversaciones | usuario | Cadena | N/D | 
| conversaciones | inviter | Cadena | N/D | 
| conversaciones | root | Struct | N/D | 
| conversaciones | is\$1locked | Booleano | N/D | 
| conversaciones | files | Enumeración | N/D | 
| conversaciones | sala | Struct | N/D | 
| conversaciones | carga | Booleano | N/D | 
| conversaciones | display\$1as\$1bot | Booleano | N/D | 
| conversaciones | channel | Cadena | N/D | 
| conversaciones | no\$1notifications | Booleano | N/D | 
| conversaciones | permalink | Cadena | N/D | 
| conversaciones | pinned\$1to | Enumeración | N/D | 
| conversaciones | pinned\$1info | Struct | N/D | 
| conversaciones | edited | Struct | N/D | 
| conversaciones | app\$1id | Cadena | N/D | 
| conversaciones | bot\$1profile | Struct | N/D | 
| conversaciones | metadatos | Struct | N/D | 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplo de valor válido: `"2024-07-01T00:00:00.000Z"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de particionamiento por entidad se muestran en la siguiente tabla. 


| Nombre de la entidad | Campo de partición | Tipo de datos | 
| --- | --- | --- | 
| conversaciones | ts | Cadena | 

 **Ejemplo** 

```
slack_read = glueContext.create_dynamic_frame.from_options(
    connection_type="slack",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversations/C058W38R5J8",
        "PARTITION_FIELD": "ts"
        "LOWER_BOUND": "2022-12-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-09-23T15:00:00.000Z"
        "NUM_PARTITIONS": "2"
    }
)
```

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

Las siguientes son opciones de conexión para Slack:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de entidad compatible. Ejemplo: `conversations/C058W38R5J8`. 
+  `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Campos que quiere 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. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Limitaciones
<a name="slack-limitations"></a>

Las siguientes son limitaciones para el conector de Slack:
+  No se admite la partición basada en registros, ya que el conector no proporciona ningún medio para obtener el número total de registros (mensajes) disponibles en una conversación determinada. 

# Creación de una nueva cuenta de Slack y configuración de la aplicación cliente
<a name="slack-new-account-creation"></a>

**Creación de una cuenta de Slack**

1. Abra la [página de inicio de Slack](https://slack.com/intl/en-in/) para crear una cuenta. 

1. Elija **REGISTRARSE CON UNA DIRECCIÓN DE CORREO ELECTRÓNICO**. Escriba su ID de correo electrónico y elija **Continuar**.

1. Ingrese el código de seis caracteres enviado a su dirección de correo electrónico y se abrirá la página para crear un espacio de trabajo o unirse a uno existente.

1. Seleccione **Crear un espacio de trabajo** para crear un espacio de trabajo nuevo. Se abrirá una página para que responda algunas preguntas como parte del proceso de configuración.
   + Nombre de la empresa
   + Su nombre
   + Adición de compañeros por correo electrónico
   + ¿En qué trabaja su equipo? (Este será el nombre del canal)

1. Rellene los campos de entrada de estas preguntas y continúe. Su cuenta ya está lista para su uso.



**Creación de una aplicación para desarrolladores de Slack**

1. Inicie sesión en su cuenta de Slack e inicie sesión en su espacio de trabajo de Slack.

1. En el menú del espacio de trabajo, seleccione **Herramientas y configuración** y, a continuación, seleccione **Administrar aplicaciones**.

1. En el menú Directorio de aplicaciones de Slack, seleccione **Crear**.

1. En la página **Sus aplicaciones**, seleccione **Crear una aplicación**.

1. En la página **Crear una aplicación**, seleccione **Desde cero**.

1. En el cuadro de diálogo **Asignar nombre a la aplicación y elegir el espacio de trabajo** que se abre, agregue un nombre de aplicación y **elija un espacio de trabajo en el que implementar su aplicación**. A continuación, seleccione **Crear aplicación**.

1. Tenga en cuenta que su ID de cliente y secreto se muestran en las credenciales de la aplicación.

1. En la barra lateral de OAuth y permisos, vaya a Ámbitos y elija **Agregar un ámbito de OAuth**. Puede agregar las URL de redireccionamiento a la aplicación para configurarlas, generar automáticamente el botón “Agregar a Slack” o distribuir la aplicación. Desplácese hasta la sección URL de redireccionamiento, seleccione **Agregar nueva URL de redireccionamiento** y guarde. 

1. A continuación, desplácese hasta la sección de Tokens de OAuth para su espacio de trabajo y seleccione **Instalar en el espacio de trabajo**.

1. En el cuadro de diálogo que se abre para informarle de que la aplicación que ha creado solicita permiso para acceder al espacio de trabajo de Slack al que quería conectarse, seleccione **Permitir**.

1. Al finalizar correctamente, la consola mostrará la pantalla Tokens de OAuth para su espacio de trabajo.

1. En la pantalla Tokens de OAuth para su espacio de trabajo, copie y guarde el token de OAuth que usará para conectarse a AWS Glue

1. A continuación, recuperará el ID de su equipo de Slack. En el menú del espacio de trabajo de Slack, seleccione **Herramientas y configuración** y, a continuación, seleccione **Administrar aplicaciones**. Encontrará el ID de su equipo en la URL de la página que se abre.

1. Para distribuir la aplicación de manera pública y activarla, vaya al botón **Administrar distribución** de la barra lateral. Desplácese hacia abajo hasta la sección Compartir aplicación con otros espacios de trabajo y elija **Eliminar información con codificación rígida**. Dé su consentimiento y seleccione **Distribución pública activa**. 

1. La aplicación ahora se distribuye de manera pública. Para acceder a las API de la entidad, la aplicación debe agregarse a todos los canales de espacio de trabajo desde los que el usuario quiera acceder.

1. Inicie sesión en su cuenta de Slack y abra el espacio de trabajo a cuyo canal necesita acceder.

1. En el espacio de trabajo, abra el canal al que quiere acceder la aplicación y elija el título del canal. Seleccione la pestaña **Integraciones** en el elemento emergente y agregue la aplicación. De esta forma, la aplicación se integra con el canal para tener acceso a su API.

   El ID de cliente de OAuth 2.0 debe tener una o más URL de redireccionamiento autorizadas. Las URL de redireccionamiento tienen el formato siguiente:
**nota**  
 Las URL de redireccionamiento de AppFlow están sujetas a cambios. Las URL de redireccionamiento posteriores para la plataforma de AWS Glue están disponibles. El ID de cliente y el secreto del cliente provienen de la configuración de su ID de cliente de OAuth 2.0.     
<a name="slack-redirect-url-detail"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/slack-new-account-creation.html)

# Conexión a Smartsheet
<a name="connecting-to-smartsheet"></a>

Smartsheet es un producto SaaS de colaboración y administración del trabajo. En esencia, Smartsheet permite a los usuarios utilizar objetos similares a hojas de cálculo para crear, almacenar y utilizar datos empresariales.

**Topics**
+ [Compatibilidad de AWS Glue con Smartsheet](smartsheet-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](smartsheet-configuring-iam-permissions.md)
+ [Configuración de Smartsheet](smartsheet-configuring.md)
+ [Configuración de las conexiones a Smartsheet](smartsheet-configuring-connections.md)
+ [Cómo leer de entidades de Smartsheet](smartsheet-reading-from-entities.md)
+ [Opción de conexión a Smartsheet](smartsheet-connection-options.md)
+ [Creación de una cuenta de Smartsheet](smartsheet-create-account.md)
+ [Limitaciones](smartsheet-connector-limitations.md)

# Compatibilidad de AWS Glue con Smartsheet
<a name="smartsheet-support"></a>

AWS Glue es compatible con Smartsheet de la siguiente manera:

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

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

**Versiones de la API de Smartsheet compatibles**  
 v2.0 

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

En el siguiente ejemplo de política se describen los permisos de AWS 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, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan 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): concede acceso completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Smartsheet
<a name="smartsheet-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Smartsheet, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="smartsheet-configuring-min-requirements"></a>
+ Tener una cuenta de Smartsheet con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Cómo crear una cuenta de Smartsheet](smartsheet-create-account.md). 
+ La cuenta de Smartsheet tiene acceso a la API con una licencia válida.
+ La cuenta de Smartsheet tiene un plan de precios **Pro** para la entidad `Sheets` y un plan de precios Enterprise con el complemento de informes de eventos para la entidad `Events`.

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

# Configuración de las conexiones a Smartsheet
<a name="smartsheet-configuring-connections"></a>

 Smartsheet admite el tipo de concesión `AUTHORIZATION_CODE` para OAuth2. 

Este tipo de concesión se considera un `OAuth` “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Los usuarios aún pueden optar por crear una aplicación conectada propia en Smartsheet y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Smartsheet para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

Para obtener documentación pública de Smartsheet sobre la creación de una aplicación conectada para el flujo AUTHORIZATION\$1CODE OAuth, consulte [API de Smartsheet](https://smartsheet.redoc.ly/#section/OAuth-Walkthrough). 

Para configurar una conexión a Smartsheet:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 

   En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

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

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

   1. Proporcione la `instanceUrl` de Smartsheet a la que se desea conectar.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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 entidades de Smartsheet
<a name="smartsheet-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de `Smartsheet` desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Listar hoja | Sí | Sí | No | Sí | No | 
| Metadatos de fila | Sí | Sí | No | Sí | No | 
| Metadatos de hoja | No | No | No | Sí | No | 
| Datos de hoja | Sí | Sí | Sí | Sí | No | 
| Evento | Sí | Sí | No | Sí | No | 

 **Ejemplo** 

```
Smartsheet_read = glueContext.create_dynamic_frame.from_options(
    connection_type="smartsheet",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "list-sheets",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://api.smartsheet.com"
    })
```

 **Detalles de entidades y campos de Smartsheet** 

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

**Entidades con metadatos dinámicos:**

Para la siguiente entidad, Smartsheet proporciona un punto de conexión para obtener los metadatos de forma dinámica, de modo que la compatibilidad con el operador se capture a nivel del tipo de datos.


| Entidad |  Tipo de datos  | Operadores admitidos | 
| --- | --- | --- | 
|  Datos de la hoja  |  Cadena  | N/D | 
| Datos de la hoja |  Largo  | "=" | 
| Datos de la hoja | Entero | N/D | 
| Datos de la hoja | DateTime | > | 

 **Ejemplo** 

```
Smartsheet_read = glueContext.create_dynamic_frame.from_options(
    connection_type="smartsheet",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "list-sheets",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://api.smartsheet.com"
    }
```

# Opción de conexión a Smartsheet
<a name="smartsheet-connection-options"></a>

Las siguientes son opciones de conexión para Smartsheet:
+ `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Smartsheet. 
+ `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Smartsheet que desea usar. Por ejemplo, v2.0. 
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. URL de la instancia de Smartsheet.
+ `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. 

# Creación de una cuenta de Smartsheet
<a name="smartsheet-create-account"></a>

1. Para registrarse y obtener una cuenta de Smartsheet, acceda a la [página de registro de Smartsheet](https://app.smartsheet.com/home). 

1. Seleccione **Crear una** para crear una cuenta nueva o inicie sesión con la cuenta registrada de Google, Microsoft o Apple.

1.   Ingrese la dirección de correo electrónico laboral cuando se le solicite.   

1.   Elija **Continuar** y, si es necesario, verifique su identidad.  

1. Abra el correo electrónico de confirmación de Smartsheet y seleccione el enlace de confirmación para verificar la cuenta. 

   Quedará suscrito al plan de prueba de forma predeterminada. 

1. En la esquina inferior izquierda, elija el icono **Cuenta** y seleccione **Agregar licencias/Ampliar** para mejorar el plan de precios.
**nota**  
Esto es necesario para acceder al **Informe de eventos**, que es un complemento del plan **Enterprise**.

1. En el plan **Enterprise**, elija **Contáctenos** para solicitar una actualización de cuenta al equipo de soporte.

1. En el formulario de solicitud de soporte, proporcione los detalles requeridos y sus requisitos para actualizar el plan.

   Esto completa la actualización al plan **Enterprise**.

**Creación de credenciales de `OAuth2.0`**

1. Después de actualizar el plan de precios de la cuenta para obtener acceso a las **Herramientas para desarrolladores**, acceda a [Desarrolladores de Smartsheet](https://developers.smartsheet.com/). 

   Recibirá un correo electrónico de activación.

1. Abra un correo electrónico de activación de Smartsheet y elija el enlace de activación para activar las herramientas para desarrolladores en la cuenta. 

   La herramienta para desarrolladores permite crear la aplicación.

1. Abra la página de inicio de la cuenta de Smartsheet y seleccione **Cuenta** para comprobar el acceso.

1. Elija **Herramientas para desarrolladores** en la lista de servicios e ingrese los detalles del **Perfil de desarrollador**.

1. Elija **Crear nueva aplicación**.

1. Ingrese los siguientes datos en el formulario de registro de la aplicación:
   + **Nombre**: el nombre de la aplicación.
   + **Descripción**: descripción de la aplicación.
   + **URL**: URL que permite lanzar la aplicación o la URL de la página de destino.
   + **Contacto/soporte**: información de contacto del equipo de soporte.
   + **URL de redireccionamiento**: URL (también conocida como URL de devolución de llamada) de la aplicación que recibirá las credenciales de [OAuth 2.0](https://.console.aws.amazon.com/appflow/oauth). 

1. Seleccione **Save**.

   Smartsheet asigna un ID de cliente y un secreto de cliente a la aplicación. Registre estos valores para los siguientes pasos. También puede volver a buscarlos más tarde en la sección **Herramientas para desarrolladores**.

# Limitaciones
<a name="smartsheet-connector-limitations"></a>

Smartsheet no admite la partición basada en campos o registros.

# Conexión a Snapchat Ads en AWS Glue Studio
<a name="connecting-to-data-snapchat-ads"></a>

 Snapchat es una aplicación y un servicio multimedia de mensajería instantánea desarrollado por Snap Inc., originalmente Snapchat Inc. Una de las principales características de Snapchat es que las imágenes y los mensajes suelen estar disponibles solo durante un breve periodo de tiempo antes de que sus destinatarios no puedan acceder a ellos. El marketing de Snapchat consiste en publicaciones por las que las empresas pueden pagar para ofrecerlas a los usuarios de Snapchat. 

**Topics**
+ [Compatibilidad de AWS Glue con anuncios de Snapchat](snapchat-ads-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](snapchat-ads-configuring-iam-permissions.md)
+ [Configuración de Snapchat Ads](snapchat-ads-configuring.md)
+ [Configuración de conexiones de Snapchat Ads](snapchat-ads-configuring-connections.md)
+ [Lectura desde entidades de Snapchat Ads](snapchat-ads-reading-from-entities.md)
+ [Opciones de conexión de Snapchat Ads](snapchat-ads-connection-options.md)
+ [Creación de una cuenta de Snapchat Ads y configuración de la aplicación cliente](connecting-to-data-snapchat-ads-new-account.md)
+ [Creación de una aplicación en la cuenta de Snapchat Ads](connecting-to-data-snapchat-ads-managed-client-application.md)

# Compatibilidad de AWS Glue con anuncios de Snapchat
<a name="snapchat-ads-support"></a>

AWS Glue es compatible con Snapchat Ads de la siguiente manera:

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

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

**Versiones de la API de Snapchat Ads compatibles**  
 v1. 

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

 En el siguiente ejemplo de política se describen los permisos de AWS 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, Amazon 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): concede 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 Snapchat Ads
<a name="snapchat-ads-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Snapchat Ads, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="snapchat-ads-configuring-min-requirements"></a>
+  Tener una cuenta de Snapchat Ads. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Snapchat Ads y configuración de la aplicación cliente](connecting-to-data-snapchat-ads-new-account.md). 
+  Haber creado una aplicación OAuth 2 en su cuenta de Snapchat Ads. Esta integración proporciona las credenciales que AWS Glue utiliza para acceder a sus datos de forma segura cuando hace llamadas autenticadas a su cuenta. Para obtener más información, consulte [Creación de una aplicación en la cuenta de Snapchat Ads](connecting-to-data-snapchat-ads-managed-client-application.md). 

 Si cumple estos requisitos, lo tendrá todo listo para conectar AWS Glue a su cuenta de Snapchat Ads. En Snapchat Ads, una aplicación conectada es un marco que autoriza a aplicaciones externas, como AWS Glue, a acceder a sus datos de Snapchat Ads. 

# Configuración de conexiones de Snapchat Ads
<a name="snapchat-ads-configuring-connections"></a>

 Snapchat Ads solo admite el tipo de concesión `AUTHORIZATION_CODE`. 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede utilizar de forma predeterminada una aplicación conectada de AWS Glue (aplicación cliente administrada por AWS Glue), en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de su instancia de Snapchat Ads. La consola de AWS Glue redirigirá al usuario a Snapchat Ads, donde deberá iniciar sesión y permitir a AWS Glue que los permisos solicitados accedan a su instancia de Snapchat Ads. 

 Los usuarios aún pueden optar por crear su propia aplicación conectada en Snapchat Ads y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este caso, aún se abrirá Snapchat Ads para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso caduca una hora después de su creación. Se puede obtener un nuevo token de acceso mediante el token de actualización. 

 Para obtener más información sobre cómo crear una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Ads API](https://marketingapi.snapchat.com/docs/#authentication). 

Configuración de una conexión con Snapchat Ads:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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**, seleccione Snapchat Ads.

   1. Proporcione el entorno de Snapchat Ads.

   1.  Seleccione el rol de 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`. 

# Lectura desde entidades de Snapchat Ads
<a name="snapchat-ads-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Snapchat Ads desde el que desea leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Organización | No | No | No | Sí | No | 
| Cuenta de anuncios | No | No | No | Sí | No | 
| Creatividad | No | No | No | Sí | No | 
| Multimedia | No | No | No | Sí | No | 
| Campaña | Sí | No | No | Sí | No | 
| Anuncio en cuenta de anuncios | Sí | No | No | Sí | No | 
| Anuncio en campaña | No | No | No | Sí | No | 
| Equipo de anuncios | Sí | No | No | Sí | No | 
| Segmento | No | No | No | Sí | No | 

 **Ejemplo** 

```
snapchatads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="snapchatAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v1"
    }
)
```

 **Detalles de la entidad y el campo de Snapchat Ads** 

 Snapchat Ads carga dinámicamente los campos disponibles en la entidad seleccionada. Según el tipo de datos de los campos, se admiten los operadores de filtro siguientes. 


| Tipo de datos de los campos | Operadores de filtro admitidos | 
| --- | --- | 
| Booleano | = | 

 **Consultas de partición** 
+  Partición basada en campos: no se admite. 
+  Partición basada en registros: no se admite. 

# Opciones de conexión de Snapchat Ads
<a name="snapchat-ads-connection-options"></a>

Las siguientes son opciones de conexión para Snapchat Ads:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de la entidad de Snapchat Ads. Ejemplo: ` campaign `. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. API de REST de Snapchat Ads que desea utilizar. El valor será v1, ya que Snapchat Ads actualmente solo admite la versión 1. 
+  `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Lista de columnas separadas por comas que quiere seleccionar para la entidad seleccionada. 
+  `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. 

# Creación de una cuenta de Snapchat Ads y configuración de la aplicación cliente
<a name="connecting-to-data-snapchat-ads-new-account"></a>

**Topics**
+ [Suscripción a Snapchat Ads](#snapchat-ads-sign-up)
+ [Pasos para crear una cuenta de Snapchat Ads](#snapchat-ads-create-ad-account)

## Suscripción a Snapchat Ads
<a name="snapchat-ads-sign-up"></a>

**Suscripción a Snapchat Ads:**

1.  Vaya a [Ads Manager de Snapchat](https://ads.snapchat.com/). Seleccione **Registrarse** junto a **¿Nuevo en Snapchat?**. 

1.  En la pantalla **Crear cuenta**, siga las instrucciones para ingresar el nombre de su empresa, correo electrónico, contraseña, etc. Elija **Siguiente**. 

1.  En la pantalla **Crear perfil**, ingrese los valores para Nombre de usuario y Sitio web (opcional) y seleccione **Crear cuenta**. Esto le dará la opción de agregar una foto de perfil y una biografía en la pantalla **Editar perfil**. Elija **Confirmar**. 

1.  En la pantalla **Información empresarial**, rellene los campos obligatorios, como País, Moneda, Número de teléfono, GSTIN, etc., y seleccione **Siguiente** para completar el proceso de creación de la cuenta. 

## Pasos para crear una cuenta de Snapchat Ads
<a name="snapchat-ads-create-ad-account"></a>

**Creación de una cuenta de Snapchat Ads:**

1.  Inicie sesión en **Ads Manager**. A continuación, haga clic en la barra de navegación de la esquina superior y seleccione **Cuentas de anuncios**. 

1.  Seleccione **\$1 Nueva cuenta de anuncios**. Ingrese los detalles de su anunciante: 
   +  Seleccione si es una agencia que compra anuncios en nombre de un anunciante o no. Si selecciona “Sí”, es posible que se rechace su anuncio si usa parámetros de segmentación como la segmentación por edad, sexo o código postal. La segmentación por edad mínima se puede aplicar a personas de hasta 21 años. 
   +  Seleccione si en su cuenta de anuncios se publicarán anuncios de vivienda, crédito o empleo. Si selecciona “Sí”, es posible que se rechace su anuncio si usa parámetros de segmentación como la segmentación por edad, sexo o código postal. La segmentación por edad mínima se puede aplicar a personas de hasta 21 años. 
   +  Seleccione si va a utilizar la cuenta de anuncios para anuncios políticos. Si publica un anuncio político, ingrese la organización política o el grupo de defensa patrocinador que paga el anuncio. Si no escribe correctamente la organización política, es posible que se rechacen sus anuncios. También tendrá que rellenar el “formulario de revisión de anuncios políticos”, enlazado obligatoriamente, antes de enviar anuncios. 

1.  Seleccione **Detalles de la cuenta** y rellene la información de su cuenta publicitaria:     
<a name="snapchat-ads-account-details"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/connecting-to-data-snapchat-ads-new-account.html)

1.  Elija **Crear cuenta**. Se creará su cuenta de anuncios y podrá encontrarla en la sección Cuentas de anuncios de Ads Manager. Para empezar a publicar anuncios, tendrá que ingresar un método de pago. También puede agregar miembros a su cuenta de anuncios. 

1.  Seleccione si desea utilizar un método de pago existente o crear uno nuevo. A continuación, seleccione **Guardar método de pago**. 

1.  Seleccione cualquier [miembro que haya invitado](https://businesshelp.snapchat.com/s/article/manage-members?language=en_US) a su empresa para agregarlo a la cuenta de anuncios. Para obtener más información sobre los roles y los permisos que se pueden asignar, consulte [ Roles and Permissions Overview](https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US). Los miembros que se agreguen podrán iniciar sesión en Ads Manager y acceder a esta cuenta de anuncios. Cuando haya terminado, guarde sus miembros. 

 Para obtener más información sobre las cuentas de anuncios, consulte [https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US](https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US)https://businesshelp.snapchat.com/s/article/roles-permissions?language=en\$1US 

# Creación de una aplicación en la cuenta de Snapchat Ads
<a name="connecting-to-data-snapchat-ads-managed-client-application"></a>

 Para activar el acceso a la API de marketing de Snapchat, asegúrese de tener configurada una cuenta empresarial. A continuación, siga los pasos que se indican a continuación: 

1.  Inicie sesión en Ads Manager. A continuación, seleccione el menú de la esquina superior izquierda, seleccione **Panel de control empresarial** y, a continuación, **Detalles del negocio**. 

1.  Elija **\$1 Aplicación OAuth**. 

1.  Ingrese el nombre de su aplicación y agregue la siguiente URL como URI de Snap Redirect: `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth`. Por ejemplo, si utiliza la región us-west-1, la URL sería `https://us-west-1.console.aws.amazon.com/gluestudio/oauth) and choose Create OAuth App`. Elija **Crear aplicación OAuth**. 

1.  Aparecerán las credenciales de su aplicación (ID de cliente y secreto de cliente). Guárdelos, ya que se necesitan para crear una conexión. 

# Conectarse a Snowflake en AWS Glue Studio
<a name="connecting-to-data-snowflake"></a>

**nota**  
 Puede usar AWS Glue para Spark para leer y escribir en tablas de Snowflake en AWS Glue 4.0 y versiones posteriores. Para configurar una conexión de Snowflake con trabajos de AWS Glue mediante programación, consulte [Conexiones Redshift](aws-glue-programming-etl-connect-redshift-home.md). 

 AWS Glue proporciona soporte integrado para Snowflake. AWS Glue Studio proporciona una interfaz visual para conectarse a Snowflake, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

 AWS Glue Studio crea una conexión unificada para Snowflake. Para obtener más información, consulte [Consideraciones](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Crear una conexión con Snowflake](creating-snowflake-connection.md)
+ [Creación de un nodo de origen de Snowflake](creating-snowflake-source-node.md)
+ [Creación de un nodo de destino de Snowflake](creating-snowflake-target-node.md)
+ [Opciones avanzadas](#creating-snowflake-connection-advanced-options)

# Crear una conexión con Snowflake
<a name="creating-snowflake-connection"></a>

**nota**  
 Las conexiones unificadas (conexión v2) estandarizan todas las conexiones de modo que utilicen claves `USERNAME`, `PASSWORD` para las credenciales de autenticación básica. Aún puede crear una conexión v1 a través de la API con secretos que contengan `sfUser`, `sfPassword`. 

 Al agregar un **origen de datos: nodo Snowflake** en AWS Glue Studio, puede elegir una conexión de Snowflake en AWS Glue existente o crear una nueva conexión. Debe elegir un tipo de conexión `SNOWFLAKE` y no un tipo de conexión `JDBC` configurado para conectarse a Snowflake. Utilice el siguiente procedimiento para crear una conexión con Snowflake en AWS Glue:

**Crear una conexión con Snowflake**

1. En Snowflake, genere un usuario *snowflakeUser* y una contraseña *snowflakePassword*. 

1. Determine con qué almacén de Snowflake interactuará este usuario, *snowflakeWarehouse*. Configúrelo como `DEFAULT_WAREHOUSE` para *snowflakeUser* en Snowflake o recuérdelo para el siguiente paso.

1. En AWS Secrets Manager, cree un secreto con sus credenciales de Snowflake. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html#create_secret_cli) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, cree un par para *snowflakeUser* con la clave `sfUser`.
   + Al seleccionar **pares clave/valor**, cree un par para *snowflakePassword* con la clave `sfPassword`.
   + *Al seleccionar **pares clave/valor**, cree un par para snowflakeWarehouse * con la clave `sfWarehouse`. Esto no es necesario si hay un valor predeterminado en Snowflake. 

1. En el catálogo de datos de AWS Glue, cree una conexión mediante los pasos que se indican en [Agregar una conexión en AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/console-connections.html). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el siguiente paso. 
   + Al seleccionar un **tipo de conexión**, seleccione Snowflake.
   + Al seleccionar la **URL de Snowflake**, proporcione el nombre de host de la instancia de Snowflake. La URL utilizará un nombre de host en el formulario `account_identifier.snowflakecomputing.com`.
   + Al seleccionar un **secreto AWS**, proporcione un *secretName*.

# Creación de un nodo de origen de Snowflake
<a name="creating-snowflake-source-node"></a>

## Permisos necesarios
<a name="creating-snowflake-source-node-permissions"></a>

 los trabajos de AWS Glue Studio que utilizan orígenes de datos de Snowflake requieren permisos adicionales. Para obtener más información sobre cómo agregar permisos a los trabajos de ETL, consulte [Revisar los permisos de IAM necesarios para los](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job) trabajos de ETL. 

 las conexiones de `SNOWFLAKE` en AWS Glue utilizan un secreto de AWS Secrets Manager para proporcionar información sobre las credenciales. Sus roles de vista previa de datos y trabajos en AWS Glue Studio deben tener permiso para leer este secreto.

## Agregar un origen de datos de Snowflake
<a name="creating-snowflake-source-node-add"></a>

**Requisitos previos**:
+ Un secreto de AWS Secrets Manager para sus credenciales de Snowflake
+ Una conexión del catálogo de datos de AWS Glue tipo Snowflake

**Para agregar un nodo de **Origen de datos: Snowflake**:**

1.  Elija la conexión para el origen de datos de Snowflake. Esto supone que la conexión ya existe y que puede seleccionar entre las conexiones existentes. Si necesita crear una conexión, elija **Crear conexión de Snowflake**. Para más información, consulte [Información general sobre el uso de conectores y conexiones](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. La información sobre la conexión está visible, como la URL, los grupos de seguridad, la subred, la zona de disponibilidad, la descripción y las marcas horarias creadas (UTC) y actualizadas por última vez (UTC). 

1.  Elija una opción de origen de Snowflake: 
   +  **Elija una sola tabla**: esta es la tabla que contiene los datos a los que desea acceder desde una sola tabla de Snowflake. 
   +  **Ingresar una consulta personalizada**: permite acceder a un conjunto de datos de varias tablas de Snowflake en función de la consulta personalizada. 

1.  Si ha elegido una sola tabla, ingrese el nombre de un esquema de Snowflake. 

    O bien, elija **Ingresar consulta personalizada**. Elija esta opción para acceder a un conjunto de datos personalizado desde varias tablas de Snowflake. Al elegir esta opción, ingrese la consulta Snowflake. 

1.  En las opciones de **rendimiento y seguridad** (opcional), 
   +  **Habilite la función desplegable de consultas**: elija si quiere transferir el trabajo a la instancia de Snowflake. 

1.  En las **propiedades personalizadas de Snowflake** (opcional), ingrese los parámetros y valores según sea necesario. 

# Creación de un nodo de destino de Snowflake
<a name="creating-snowflake-target-node"></a>

## Permisos necesarios
<a name="creating-snowflake-target-node-permissions"></a>

 los trabajos de AWS Glue Studio que utilizan orígenes de datos de Snowflake requieren permisos adicionales. Para obtener más información sobre cómo agregar permisos a los trabajos de ETL, consulte [Revisar los permisos de IAM necesarios para los](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job) trabajos de ETL. 

 las conexiones de `SNOWFLAKE` en AWS Glue utilizan un secreto de AWS Secrets Manager para proporcionar información sobre las credenciales. Sus roles de vista previa de datos y trabajos en AWS Glue Studio deben tener permiso para leer este secreto.

## Agregar un destino de datos de Snowflake
<a name="creating-snowflake-target-node-add"></a>

**Crear de un nodo de destino de Snowflake:**

1.  Elija una tabla Snowflake existente como destino o ingrese un nombre de tabla nuevo. 

1.  Al utilizar el nodo **destino de datos: Snowflake**, puede elegir entre las siguientes opciones: 
   +  **APPEND**: si ya existe una tabla, coloque todos los datos nuevos en la tabla como un inserto. Si la tabla no existe, créela y, a continuación, inserte todos los datos nuevos. 
   +  **MERGE**: AWS Glue actualizará o anexará datos a la tabla de destino en función de las condiciones que especifique. 

      Elija opciones: 
     + **Elegir claves y acciones sencillas**: elija las columnas que se usarán como claves de coincidencia entre los orígenes de datos y el conjunto de destinos de datos. 

       Especifique las siguientes opciones cuando coincidan:
       + Actualice el registro del conjunto de datos de destino con los datos de origen.
       + Elimine el registro del conjunto de datos de destino.

       Especifique las siguientes opciones cuando no coincidan:
       + Inserte los datos de origen como una nueva fila en el conjunto de datos de destino.
       + No hacer nada.
     + **Ingrese una instrucción MERGE personalizada**: a continuación, puede elegir **Validar la instrucción MERGE** para comprobar si la instrucción es válida o no.
   +  **TRUNCATE**: si ya existe una tabla, trunque los datos de la tabla al borrar primero el contenido de la tabla de destino. Si el truncado se realiza correctamente, inserte todos los datos. Si la tabla no existe, créela y, a continuación, inserte todos los datos. Si el truncado no es exitoso, la operación producirá un error. 
   +  **DROP**: si una tabla ya existe, elimine los metadatos y los datos de la tabla. Si el borrado se realiza correctamente, inserte todos los datos. Si la tabla no existe, créela y, a continuación, inserte todos los datos. Si el descarte no es exitoso, la operación producirá un error. 

## Opciones avanzadas
<a name="creating-snowflake-connection-advanced-options"></a>

Consulte las [conexiones de Snowflake](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-snowflake-home.html) en la guía para desarrolladores de AWS Glue. 

# Conexión a Stripe en AWS Glue Studio
<a name="connecting-to-data-stripe"></a>

 Stripe es una plataforma de procesamiento de pagos y tarjetas de crédito en línea para empresas. La plataforma Stripe permite a las empresas aceptar pagos en línea, crear suscripciones (facturación periódica) para su comercio electrónico y configurar una cuenta pendiente para recibir los pagos. Stripe también admite pagos de varios participantes, lo que permite a las empresas configurar su sitio web y cobrar los pagos y, posteriormente, abonarlos a vendedores o proveedores de servicios a través de una cuenta “conectada”. 

**Topics**
+ [Compatibilidad de AWS Glue con Stripe](stripe-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](stripe-configuring-iam-permissions.md)
+ [Configuración de Stripe](stripe-configuring.md)
+ [Configuración de las conexiones de Stripe](stripe-configuring-connections.md)
+ [Lectura desde entidades de Stripe](stripe-reading-from-entities.md)
+ [Opciones de conexión de Stripe](stripe-connection-options.md)
+ [Limitaciones](stripe-limitations.md)
+ [Creación de una nueva cuenta de Stripe y configuración de la aplicación cliente](stripe-new-account-creation.md)

# Compatibilidad de AWS Glue con Stripe
<a name="stripe-support"></a>

AWS Glue admite Stripe de la siguiente manera:

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

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

**Versiones de la API de Slack compatibles**  
 v1. 

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

 En el siguiente ejemplo de política se describen los permisos de 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": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, Amazon 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): concede 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 Stripe
<a name="stripe-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Stripe, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="stripe-configuring-min-requirements"></a>
+  Tener una cuenta de Stripe con correo electrónico y contraseña. Para obtener más información, consulte [Creación de una nueva cuenta de Stripe y configuración de la aplicación cliente](stripe-new-account-creation.md). 
+  Su cuenta de Stripe está habilitada para el acceso a la API. La API de Stripe se puede utilizar sin ningún costo adicional. 

 Si cumple estos requisitos, lo tendrá todo listo para conectar AWS Glue a su cuenta de Stripe. 

# Configuración de las conexiones de Stripe
<a name="stripe-configuring-connections"></a>

 Stripe admite la autenticación personalizada. Para más información sobre cómo generar las claves de API necesarias para la autorización personalizada, consulte la [documentación de la API de REST de Stripe](https://docs.stripe.com/api/authentication). 

Para configurar una conexión de Stripe:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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**, seleccione Stripe.

   1.  Seleccione el rol de 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`. 

# Lectura desde entidades de Stripe
<a name="stripe-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Stripe desde el que desea leer. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Saldo | No | No | No | Sí | No | 
| Transacciones de saldo | Sí | Sí | No | Sí | Sí | 
| Cargos | Sí | Sí | No | Sí | Sí | 
| Disputas | Sí | Sí | No | Sí | Sí | 
| Enlaces a los archivos | Sí | Sí | No | Sí | Sí | 
| PaymentIntents | Sí | Sí | No | Sí | Sí | 
| SetupIntents | Sí | Sí | No | Sí | Sí | 
| Pagos | Sí | Sí | No | Sí | Sí | 
| Reembolsos | Sí | Sí | No | Sí | Sí | 
| Productos | Sí | Sí | No | Sí | Sí | 
| Precios | Sí | Sí | No | Sí | Sí | 
| Cupones | Sí | Sí | No | Sí | Sí | 
| Códigos de promoción | Sí | Sí | No | Sí | Sí | 
| Códigos fiscales | No | Sí | No | Sí | No | 
| Cuotas fiscales | Sí | Sí | No | Sí | Sí | 
| Cuotas de envío | Sí | Sí | No | Sí | Sí | 
| Sesiones | Sí | Sí | No | Sí | Sí | 
| Notas de crédito | Sí | Sí | No | Sí | Sí | 
| Cliente | Sí | Sí | No | Sí | Sí | 
| Facturas | Sí | Sí | No | Sí | Sí | 
| Elementos de la factura | Sí | Sí | No | Sí | No | 
| Planes | Sí | Sí | No | Sí | Sí | 
| Cuotas | Sí | Sí | No | Sí | No | 
| Suscripciones | Sí | Sí | No | Sí |  | 
| Elementos de suscripción | No | Sí | No | Sí | No | 
| Esquemas de suscripción | Sí | Sí | No | Sí | Sí | 
| Cuentas | No | Sí | No | Sí | Sí | 
| Tarifas de la aplicación | Sí | Sí | No | Sí | Sí | 
| Especificaciones de país | No | Sí | No | Sí | No | 
| Transferencias | Sí | Sí | No | Sí | Sí | 
| Advertencias anticipadas de fraude | Sí | Sí | No | Sí | Sí | 
| Tipos de informes | No | No | No | Sí | No | 

 **Ejemplo** 

```
stripe_read = glueContext.create_dynamic_frame.from_options(
    connection_type="stripe",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupons",
        "API_VERSION": "v1"
    }
)
```

 **Detalles de la entidad y del campo de Stripe** 


| Entidad | Campo | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | --- | 
| Saldo |  |  |  | 
|  | available | Enumeración |  | 
|  | connect\$1reserved | Enumeración |  | 
|  | pendiente | Enumeración |  | 
|  | livemode | Booleano |  | 
|  | objeto | Cadena |  | 
|  | instant\$1available | Enumeración |  | 
|  | issuing | Struct |  | 
| Transacciones de saldo |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero |  | 
|  | available\$1on | DateTime | =, >=, <=,<,> | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena |  | 
|  | Descripción | Cadena |  | 
|  | exchange\$1rate | BigDecimal |  | 
|  | fee | Entero |  | 
|  | fee\$1details | Enumeración |  | 
|  | net | Entero |  | 
|  | reporting\$1category | Cadena |  | 
|  | origen | Cadena | = | 
|  | status | Cadena |  | 
|  | type | Cadena | = | 
|  | cross\$1border\$1classification | Cadena |  | 
| Cargos |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero | =, <, > | 
|  | amount\$1captured | Entero |  | 
|  | amount\$1refunded | Entero |  | 
|  | aplicación | Cadena |  | 
|  | application\$1fee | Cadena |  | 
|  | application\$1fee\$1amount | Entero |  | 
|  | balance\$1transaction | Cadena |  | 
|  | billing\$1details | Struct |  | 
|  | calculated\$1statement\$1descriptor | Cadena |  | 
|  | captured | Booleano |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena |  | 
|  | cliente | Cadena | = | 
|  | Descripción | Cadena |  | 
|  | destination | Cadena |  | 
|  | dispute | Cadena |  | 
|  | disputed | Booleano | = | 
|  | failure\$1balance\$1transaction | Cadena |  | 
|  | failure\$1code | Cadena |  | 
|  | failure\$1message | Cadena |  | 
|  | fraud\$1details | Struct |  | 
|  | factura | Cadena |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | on\$1behalf\$1of | Cadena |  | 
|  | orden | Cadena |  | 
|  | outcome | Struct |  | 
|  | paid | Booleano |  | 
|  | payment\$1intent | Cadena | = | 
|  | payment\$1method | Cadena |  | 
|  | payment\$1method\$1details | Struct |  | 
|  | receipt\$1email | Cadena |  | 
|  | receipt\$1number | Cadena |  | 
|  | receipt\$1url | Cadena |  | 
|  | refunded | Booleano | = | 
|  | reembolsos | Struct |  | 
|  | revisión | Cadena |  | 
|  | shipping | Struct |  | 
|  | origen | Struct |  | 
|  | source\$1transfer | Cadena |  | 
|  | statement\$1descriptor | Cadena |  | 
|  | statement\$1descriptor\$1suffix | Cadena |  | 
|  | status | Cadena |  | 
|  | transfer | Cadena |  | 
|  | transfer\$1data | Struct |  | 
|  | transfer\$1group | Cadena | = | 
| Disputas |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero | =, <, > | 
|  | balance\$1transaction | Cadena |  | 
|  | balance\$1transactions | Enumeración |  | 
|  | cargo | Cadena | = | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena |  | 
|  | evidence | Struct |  | 
|  | evidence\$1details | Struct |  | 
|  | is\$1charge\$1refundable | Booleano |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | payment\$1intent | Cadena | = | 
|  | razón | Cadena | = | 
|  | status | Cadena |  | 
|  | payment\$1method\$1details | Struct |  | 
| Enlaces a los archivos |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | expired | Booleano | = | 
|  | expires\$1at | DateTime |  | 
|  | archivo | Cadena | = | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | url | Cadena |  | 
| PaymentIntents |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero |  | 
|  | amount\$1capturable | Entero |  | 
|  | amount\$1details | Struct |  | 
|  | amount\$1received | Entero |  | 
|  | aplicación | Cadena |  | 
|  | application\$1fee\$1amount | Entero |  | 
|  | automatic\$1payment\$1methods | Struct |  | 
|  | canceled\$1at | DateTime |  | 
|  | cancellation\$1reason | Cadena |  | 
|  | capture\$1method | Cadena |  | 
|  | client\$1secret | Cadena |  | 
|  | confirmation\$1method | Cadena |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena |  | 
|  | cliente | Cadena | = | 
|  | Descripción | Cadena |  | 
|  | factura | Cadena |  | 
|  | last\$1payment\$1error | Struct |  | 
|  | latest\$1charge | Cadena |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | next\$1action | Struct |  | 
|  | on\$1behalf\$1of | Cadena |  | 
|  | payment\$1method | Cadena |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | Enumeración |  | 
|  | payment\$1method\$1configuration\$1details | Struct |  | 
|  | En proceso | Struct |  | 
|  | receipt\$1email | Cadena |  | 
|  | revisión | Cadena |  | 
|  | setup\$1future\$1usage | Cadena |  | 
|  | shipping | Struct |  | 
|  | origen | Cadena |  | 
|  | statement\$1descriptor | Cadena |  | 
|  | statement\$1descriptor\$1suffix | Cadena |  | 
|  | status | Cadena |  | 
|  | transfer\$1data | Struct |  | 
|  | transfer\$1group | Cadena |  | 
| SetupIntents |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | aplicación | Cadena |  | 
|  | cancellation\$1reason | Cadena |  | 
|  | client\$1secret | Cadena |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | cliente | Cadena | = | 
|  | Descripción | Cadena |  | 
|  | flow\$1directions | Enumeración |  | 
|  | last\$1setup\$1error | Struct |  | 
|  | latest\$1attempt | Cadena |  | 
|  | livemode | Booleano |  | 
|  | mandate | Cadena |  | 
|  | metadatos | Struct |  | 
|  | next\$1action | Struct |  | 
|  | on\$1behalf\$1of | Cadena |  | 
|  | payment\$1method | Cadena |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | Enumeración |  | 
|  | single\$1use\$1mandate | Cadena |  | 
|  | status | Cadena |  | 
|  | uso | Cadena |  | 
|  | automatic\$1payment\$1methods | Struct |  | 
| Pagos |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero | =, <, > | 
|  | arrival\$1date | DateTime | =, >=, <=,<,> | 
|  | automatic | Booleano |  | 
|  | balance\$1transaction | Cadena |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena |  | 
|  | Descripción | Cadena | = | 
|  | destination | Cadena |  | 
|  | failure\$1balance\$1transaction | Cadena |  | 
|  | failure\$1code | Cadena |  | 
|  | failure\$1message | Cadena |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | method | Cadena |  | 
|  | original\$1payout | Cadena |  | 
|  | reversed\$1by | Cadena |  | 
|  | reconciliation\$1status | Cadena |  | 
|  | source\$1type | Cadena |  | 
|  | statement\$1descriptor | Cadena |  | 
|  | status | Cadena |  | 
|  | type | Cadena |  | 
|  | application\$1fee | Cadena |  | 
|  | application\$1fee\$1amount | Entero |  | 
| Reembolsos |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero |  | 
|  | balance\$1transaction | Cadena |  | 
|  | cargo | Cadena | = | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena |  | 
|  | metadatos | Struct |  | 
|  | destination\$1details | Struct |  | 
|  | payment\$1intent | Cadena | = | 
|  | razón | Cadena |  | 
|  | receipt\$1number | Cadena |  | 
|  | source\$1transfer\$1reversal | Cadena |  | 
|  | status | Cadena |  | 
|  | transfer\$1reversal | Cadena |  | 
| Productos |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | activa | Booleano | = | 
|  | atributos | Enumeración |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | default\$1price | Cadena |  | 
|  | Descripción | Cadena |  | 
|  | images | Enumeración |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | nombre | Cadena |  | 
|  | package\$1dimensions | Struct |  | 
|  | shippable | Booleano |  | 
|  | statement\$1descriptor | Cadena |  | 
|  | tax\$1code | Cadena |  | 
|  | type | Cadena | = | 
|  | unit\$1label | Cadena |  | 
|  | updated | DateTime |  | 
|  | url | Cadena |  | 
|  | características | Enumeración |  | 
| Precios |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | activa | Booleano | = | 
|  | billing\$1scheme | Cadena |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena | = | 
|  | custom\$1unit\$1amount | Struct |  | 
|  | livemode | Booleano |  | 
|  | lookup\$1key | Cadena |  | 
|  | metadatos | Struct |  | 
|  | nickname | Cadena |  | 
|  | producto | Cadena | = | 
|  | recurring | Struct |  | 
|  | tax\$1behavior | Cadena |  | 
|  | tiers\$1mode | Cadena |  | 
|  | transform\$1quantity | Struct |  | 
|  | type | Cadena | = | 
|  | unit\$1amount | Entero |  | 
|  | unit\$1amount\$1decimal | Cadena |  | 
| Cupones |  |  |  | 
|  | Id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | amount\$1off | Entero |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena | = | 
|  | Duración | Cadena | = | 
|  | duration\$1in\$1months | Entero | =,<,> | 
|  | livemode | Booleano |  | 
|  | max\$1redemptions | Entero | =, <, > | 
|  | metadatos | Struct |  | 
|  | nombre | Cadena |  | 
|  | percent\$1off | Doble | = | 
|  | redeem\$1by | DateTime | =, >=, <=, <, > | 
|  | times\$1redeemed | Entero |  | 
|  | válido | Booleano |  | 
| Códigos de promoción |  |  |  | 
|  | Id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | activa | Booleano | = | 
|  | code | Cadena | = | 
|  | coupon | Struct |  | 
|  | created | DateTime | =,>=,<=,<,> | 
|  | cliente | Cadena |  | 
|  | expires\$1at | DateTime |  | 
|  | livemode | Booleano |  | 
|  | max\$1redemptions | Entero |  | 
|  | metadatos | Struct |  | 
|  | restricciones | Struct |  | 
|  | times\$1redeemed | Entero |  | 
| Códigos fiscales |  |  |  | 
|  | Id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | Descripción | Cadena |  | 
|  | nombre | Cadena |  | 
| Cuotas fiscales |  |  |  | 
|  | Id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | activa | Booleano | = | 
|  | país | Cadena |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | Descripción | Cadena |  | 
|  | display\$1name | Cadena |  | 
|  | inclusive | Booleano | = | 
|  | jurisdiction | Cadena |  | 
|  | jurisdiction\$1level | Cadena |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | percentage | Doble |  | 
|  | effective\$1percentage | Doble |  | 
|  | estado | Cadena |  | 
|  | tax\$1type | Cadena |  | 
| Cuotas de envío |  |  |  | 
|  | Id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | activa | Booleano | = | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | delivery\$1estimate | Struct |  | 
|  | display\$1name | Cadena |  | 
|  | fixed\$1amount | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | tax\$1behavior | Cadena |  | 
|  | tax\$1code | Cadena |  | 
|  | type | Cadena |  | 
| Sesiones |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | after\$1expiration | Struct |  | 
|  | allow\$1promotion\$1codes | Booleano |  | 
|  | amount\$1subtotal | Entero |  | 
|  | amount\$1total | Entero |  | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1address\$1collection | Cadena |  | 
|  | cancel\$1url | Cadena |  | 
|  | client\$1reference\$1id | Cadena |  | 
|  | consent | Struct |  | 
|  | consent\$1collection | Struct |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | divisa | Cadena |  | 
|  | custom\$1text | Struct |  | 
|  | cliente | Cadena |  | 
|  | customer\$1creation | Cadena |  | 
|  | customer\$1details | Struct |  | 
|  | customer\$1email | Cadena |  | 
|  | expires\$1at | DateTime |  | 
|  | factura | Cadena |  | 
|  | invoice\$1creation | Struct |  | 
|  | livemode | Booleano |  | 
|  | locale | Cadena |  | 
|  | metadatos | Struct |  | 
|  | mode | Cadena |  | 
|  | payment\$1intent | Cadena | = | 
|  | payment\$1link | Cadena |  | 
|  | payment\$1method\$1collection | Cadena |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | Enumeración |  | 
|  | payment\$1status | Cadena |  | 
|  | phone\$1number\$1collection | Struct |  | 
|  | recovered\$1from | Cadena |  | 
|  | setup\$1intent | Cadena |  | 
|  | shipping\$1address\$1collection | Struct |  | 
|  | shipping\$1cost | Struct |  | 
|  | shipping\$1details | Struct |  | 
|  | shipping\$1options | Enumeración |  | 
|  | status | Cadena |  | 
|  | submit\$1type | Cadena |  | 
|  | Suscripción  | Cadena |  | 
|  | success\$1url | Cadena |  | 
|  | tax\$1id\$1collection | Struct |  | 
|  | total\$1details | Struct |  | 
|  | url | Cadena |  | 
|  | ui\$1mode | Cadena |  | 
| Notas de crédito |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | divisa | Cadena |  | 
|  | cliente | Cadena | = | 
|  | customer\$1balance\$1transaction | Cadena |  | 
|  | discount\$1amount | Entero |  | 
|  | discount\$1amounts | Enumeración |  | 
|  | factura | Cadena | = | 
|  | lines | Struct |  | 
|  | livemode | Booleano |  | 
|  | memo | Cadena |  | 
|  | metadatos | Struct |  | 
|  | número | Cadena |  | 
|  | out\$1of\$1band\$1amount | Entero |  | 
|  | pdf | Cadena |  | 
|  | razón | Cadena |  | 
|  | refund | Cadena |  | 
|  | status | Cadena |  | 
|  | subtotal | Entero |  | 
|  | subtotal\$1excluding\$1tax | Entero |  | 
|  | tax\$1amounts | Enumeración |  | 
|  | total | Entero |  | 
|  | total\$1excluding\$1tax | Entero |  | 
|  | type | Cadena |  | 
|  | voided\$1at | DateTime |  | 
|  | amount\$1shipping | Entero |  | 
|  | effective\$1at | DateTime |  | 
|  | shipping\$1cost | Struct |  | 
| Cliente |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | dirección | Struct |  | 
|  | balance | Entero |  | 
|  | created | DateTime |  | 
|  | divisa | Cadena | =, >=, <=, <, > | 
|  | default\$1source | Cadena |  | 
|  | delinquent | Booleano | = | 
|  | Descripción | Cadena |  | 
|  | discount | Struct |  | 
|  | correo electrónico | Cadena | = | 
|  | invoice\$1prefix | Cadena |  | 
|  | invoice\$1settings | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | nombre | Cadena |  | 
|  | next\$1invoice\$1sequence | Entero |  | 
|  | phone | Cadena |  | 
|  | preferred\$1locales | Enumeración |  | 
|  | shipping | Struct |  | 
|  | tax\$1exempt | Cadena |  | 
|  | test\$1clock | Cadena |  | 
| Facturas |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | account\$1country | Cadena |  | 
|  | account\$1name | Cadena |  | 
|  | account\$1tax\$1ids | Enumeración |  | 
|  | amount\$1due | Entero |  | 
|  | amount\$1paid | Entero |  | 
|  | amount\$1remaining | Entero |  | 
|  | aplicación | Cadena |  | 
|  | application\$1fee\$1amount | Entero |  | 
|  | attempt\$1count | Entero |  | 
|  | attempted | Booleano | = | 
|  | auto\$1advance | Booleano | = | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1reason | Cadena |  | 
|  | cargo | Cadena |  | 
|  | collection\$1method | Cadena | = | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | divisa | Cadena |  | 
|  | custom\$1fields | Enumeración |  | 
|  | cliente | Cadena | = | 
|  | customer\$1address | Struct |  | 
|  | customer\$1email | Cadena |  | 
|  | customer\$1name | Cadena |  | 
|  | customer\$1phone | Cadena |  | 
|  | customer\$1shipping | Struct |  | 
|  | customer\$1tax\$1exempt | Cadena |  | 
|  | customer\$1tax\$1ids | Enumeración |  | 
|  | default\$1payment\$1method | Cadena |  | 
|  | default\$1source | Cadena |  | 
|  | default\$1tax\$1rates | Enumeración |  | 
|  | Descripción | Cadena |  | 
|  | discount | Struct |  | 
|  | discounts | Enumeración |  | 
|  | due\$1date | DateTime | =, >=, <=, <, > | 
|  | ending\$1balance | Entero |  | 
|  | footer | Cadena |  | 
|  | from\$1invoice | Struct |  | 
|  | hosted\$1invoice\$1url | Cadena |  | 
|  | invoice\$1pdf | Cadena |  | 
|  | last\$1finalization\$1error | Struct |  | 
|  | latest\$1revision | Cadena |  | 
|  | lines | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | next\$1payment\$1attempt | DateTime |  | 
|  | número | Cadena |  | 
|  | on\$1behalf\$1of | Cadena |  | 
|  | paid | Booleano | = | 
|  | paid\$1out\$1of\$1band | Booleano |  | 
|  | payment\$1intent | Cadena |  | 
|  | payment\$1settings | Struct |  | 
|  | period\$1end | DateTime | =, >=, <=, <, > | 
|  | period\$1start | DateTime | =, >=, <=, <, > | 
|  | post\$1payment\$1credit\$1notes\$1amount | Entero |  | 
|  | pre\$1payment\$1credit\$1notes\$1amount | Entero |  | 
|  | quote | Cadena |  | 
|  | receipt\$1number | Cadena |  | 
|  | rendering | Struct |  | 
|  | rendering\$1options | Struct |  | 
|  | starting\$1balance | Entero |  | 
|  | statement\$1descriptor | Cadena |  | 
|  | status | Cadena | = | 
|  | status\$1transitions | Struct |  | 
|  | Suscripción  | Cadena |  | 
|  | subscription\$1details | Struct |  | 
|  | subtotal | Entero | =, <, > | 
|  | subtotal\$1excluding\$1tax | Entero |  | 
|  | tax | Entero |  | 
|  | test\$1clock | Cadena |  | 
|  | total | Entero | =, <, > | 
|  | total\$1discount\$1amounts | Enumeración |  | 
|  | total\$1excluding\$1tax | Entero |  | 
|  | total\$1tax\$1amounts | Enumeración |  | 
|  | transfer\$1data | Struct |  | 
|  | webhooks\$1delivered\$1at | DateTime |  | 
|  | automatically\$1finalizes\$1at | DateTime |  | 
|  | effective\$1at | DateTime |  | 
|  | emisor | Struct |  | 
| Elementos de la factura |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero | =, <, > | 
|  | divisa | Cadena |  | 
|  | cliente | Cadena | = | 
|  | date | DateTime |  | 
|  | Descripción | Cadena |  | 
|  | discountable | Booleano |  | 
|  | discounts | Enumeración |  | 
|  | factura | Cadena | = | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | periodo | Struct |  | 
|  | plan | Struct |  | 
|  | precio | Struct |  | 
|  | proration | Booleano | = | 
|  | quantity | Entero |  | 
|  | Suscripción  | Cadena |  | 
|  | subscription\$1item | Cadena |  | 
|  | tax\$1rates | Enumeración |  | 
|  | test\$1clock | Cadena |  | 
|  | unit\$1amount | Entero |  | 
|  | unit\$1amount\$1decimal | Cadena |  | 
| Planes |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | activa | Booleano | = | 
|  | aggregate\$1usage | Cadena |  | 
|  | cantidad | Entero |  | 
|  | amount\$1decimal | Cadena |  | 
|  | billing\$1scheme | Cadena |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | divisa | Cadena | = | 
|  | intervalo | Cadena | = | 
|  | interval\$1count | Entero |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | nickname | Cadena |  | 
|  | producto | Cadena | = | 
|  | tiers\$1mode | Cadena |  | 
|  | transform\$1usage | Struct |  | 
|  | trial\$1period\$1days | Entero | =, <, > | 
|  | usage\$1type | Cadena |  | 
|  | medidor | Cadena |  | 
| Cuotas |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | amount\$1subtotal | Entero |  | 
|  | amount\$1total | Entero |  | 
|  | aplicación | Cadena |  | 
|  | application\$1fee\$1amount | Entero |  | 
|  | application\$1fee\$1percent | Doble |  | 
|  | automatic\$1tax | Struct |  | 
|  | collection\$1method | Cadena |  | 
|  | computed | Struct |  | 
|  | created | DateTime |  | 
|  | divisa | Cadena |  | 
|  | cliente | Cadena | = | 
|  | default\$1tax\$1rates | Enumeración |  | 
|  | Descripción | Cadena |  | 
|  | discounts | Enumeración |  | 
|  | expires\$1at | DateTime |  | 
|  | footer | Cadena |  | 
|  | from\$1quote | Struct |  | 
|  | header | Cadena |  | 
|  | factura | Cadena |  | 
|  | invoice\$1settings | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | número | Cadena |  | 
|  | on\$1behalf\$1of | Cadena |  | 
|  | status | Cadena | = | 
|  | status\$1transitions | Struct |  | 
|  | Suscripción  | Cadena |  | 
|  | subscription\$1data | Struct |  | 
|  | subscription\$1schedule | Cadena |  | 
|  | test\$1clock | Cadena |  | 
|  | total\$1details | Struct |  | 
|  | transfer\$1data | Struct |  | 
| Suscripciones |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | aplicación | Cadena |  | 
|  | application\$1fee\$1percent | Doble |  | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1cycle\$1anchor | DateTime |  | 
|  | billing\$1thresholds | Struct |  | 
|  | cancel\$1at | DateTime |  | 
|  | cancel\$1at\$1period\$1end | Booleano |  | 
|  | canceled\$1at | DateTime |  | 
|  | collection\$1method | Cadena | = | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | divisa | Cadena |  | 
|  | current\$1period\$1end | DateTime | =, >=, <= | 
|  | current\$1period\$1start | DateTime | =, >=, <= | 
|  | cliente | Cadena | = | 
|  | days\$1until\$1due | Entero |  | 
|  | default\$1payment\$1method | Cadena |  | 
|  | default\$1source | Cadena |  | 
|  | default\$1tax\$1rates | Enumeración |  | 
|  | Descripción | Cadena |  | 
|  | discount | Struct |  | 
|  | ended\$1at | DateTime |  | 
|  | items | Struct |  | 
|  | latest\$1invoice | Cadena |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | next\$1pending\$1invoice\$1item\$1invoice | DateTime |  | 
|  | pause\$1collection | Struct |  | 
|  | payment\$1settings | Struct |  | 
|  | pending\$1invoice\$1item\$1interval | Struct |  | 
|  | pending\$1setup\$1intent | Cadena |  | 
|  | pending\$1update | Struct |  | 
|  | plan | Struct |  | 
|  | quantity | Entero |  | 
|  | horario | Cadena |  | 
|  | start\$1date | DateTime |  | 
|  | status | Cadena | = | 
|  | test\$1clock | Cadena |  | 
|  | transfer\$1data | Struct |  | 
|  | trial\$1end | DateTime |  | 
|  | trial\$1start | DateTime |  | 
| Elementos de suscripción |  |  |  | 
|  | Id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | billing\$1thresholds | Struct |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | metadatos | Struct |  | 
|  | plan | Struct |  | 
|  | precio | Struct |  | 
|  | Suscripción  | Cadena |  | 
|  | tax\$1rates | Enumeración |  | 
|  | discounts | Enumeración |  | 
| Esquemas de suscripción |  |  |  | 
|  | objeto | Cadena |  | 
|  | aplicación | Cadena |  | 
|  | canceled\$1at | DateTime |  | 
|  | completed\$1at | DateTime |  | 
|  | created | DateTime |  | 
|  | current\$1phase | Struct |  | 
|  | cliente | Cadena | = | 
|  | default\$1settings | Struct |  | 
|  | end\$1behavior | Cadena |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | phases | Enumeración |  | 
|  | released\$1at | DateTime |  | 
|  | released\$1subscription | Cadena |  | 
|  | renewal\$1interval | Cadena |  | 
|  | status | Cadena |  | 
|  | Suscripción  | Cadena |  | 
|  | test\$1clock | Cadena |  | 
| Cuentas |  |  |  | 
|  | details\$1submitted | Booleano |  | 
|  | tos\$1acceptance | Struct |  | 
|  | type | Cadena |  | 
|  | metadatos | Struct |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | default\$1currency | Cadena |  | 
|  | capacidades | Struct |  | 
|  | charges\$1enabled | Booleano |  | 
|  | ajustes | Struct |  | 
|  | Requisitos | Struct |  | 
|  | payouts\$1enabled | Booleano |  | 
|  | future\$1requirements | Struct |  | 
|  | external\$1accounts | Struct |  | 
|  | controlador | Struct |  | 
|  | país | Cadena |  | 
|  | correo electrónico | Cadena |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | business\$1profile | Struct |  | 
|  | business\$1type | Cadena |  | 
|  | company | Struct |  | 
| Tarifas de la aplicación |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | inscrita | Cadena |  | 
|  | cantidad | Entero | =, <, > | 
|  | amount\$1refunded | Entero | =, <, > | 
|  | aplicación | Cadena |  | 
|  | balance\$1transaction | Cadena |  | 
|  | cargo | Cadena | = | 
|  | created | DateTime |  | 
|  | divisa | Cadena |  | 
|  | livemode | Booleano |  | 
|  | originating\$1transaction | Cadena |  | 
|  | refunded | Booleano | = | 
|  | reembolsos | Struct |  | 
|  | fee\$1source | Struct |  | 
| Especificaciones de país |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | default\$1currency | Cadena |  | 
|  | supported\$1bank\$1account\$1currencies | Struct |  | 
|  | supported\$1payment\$1currencies | Enumeración |  | 
|  | supported\$1payment\$1methods | Enumeración |  | 
|  | supported\$1transfer\$1countries | Enumeración |  | 
|  | verification\$1fields | Struct |  | 
| Transferencias |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | cantidad | Entero | =, <, > | 
|  | amount\$1reversed | Entero |  | 
|  | balance\$1transaction | Cadena |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | divisa | Cadena | = | 
|  | Descripción | Cadena |  | 
|  | destination | Cadena | = | 
|  | destination\$1payment | Cadena |  | 
|  | livemode | Booleano |  | 
|  | metadatos | Struct |  | 
|  | reversals | Struct |  | 
|  | reversed | Booleano |  | 
|  | source\$1transaction | Cadena |  | 
|  | source\$1type | Cadena |  | 
|  | transfer\$1group | Cadena | = | 
| Advertencias anticipadas de fraude |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | actionable | Booleano |  | 
|  | cargo | Cadena | = | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | fraud\$1type | Cadena |  | 
|  | livemode | Booleano |  | 
|  | payment\$1intent | Cadena | = | 
| Tipos de informes |  |  |  | 
|  | id | Cadena |  | 
|  | objeto | Cadena |  | 
|  | data\$1available\$1end | DateTime |  | 
|  | data\$1available\$1start | DateTime |  | 
|  | default\$1columns | Enumeración |  | 
|  | livemode | Booleano |  | 
|  | nombre | Cadena |  | 
|  | updated | DateTime |  | 
|  | versión | Entero |  | 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` 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. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplo de valor válido: `"2024-07-01T00:00:00.000Z"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de particionamiento por entidad se muestran en la siguiente tabla. 


| Nombre de la entidad | Campo de partición | Tipo de datos | 
| --- | --- | --- | 
| Transacciones de saldo | created | DateTime | 
| Cargos | created | DateTime | 
| Disputas | created | DateTime | 
| Enlaces a los archivos | created | DateTime | 
| PaymentIntents | created | DateTime | 
| SetupIntents | created | DateTime | 
| Pagos | created | DateTime | 
| Reembolsos | created | DateTime | 
| Productos | created | DateTime | 
| Precios | created | DateTime | 
| Cupones | created | DateTime | 
| Códigos de promoción | created | DateTime | 
| Cuotas fiscales | created | DateTime | 
| Cuotas de envío | created | DateTime | 
| Sesiones | created | DateTime | 
| Notas de crédito | created | DateTime | 
| Cliente | created | DateTime | 
| Facturas | created | DateTime | 
| Planes | created | DateTime | 
| Suscripciones | created | DateTime | 
| Esquemas de suscripción | created | DateTime | 
| Cuentas | created | DateTime | 
| Tarifas de la aplicación | created | DateTime | 
| Transferencias | created | DateTime | 
| Advertencias anticipadas de fraude | created | DateTime | 

 **Ejemplo** 

```
stripe_read = glueContext.create_dynamic_frame.from_options(
    connection_type="stripe",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupons",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "created"
        "LOWER_BOUND": "2024-05-01T20:55:02.000Z"
        "UPPER_BOUND": "2024-07-11T20:55:02.000Z"
        "NUM_PARTITIONS": "10"
    }
)
```

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

Las siguientes son opciones de conexión para Stripe:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Stripe. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Stripe que desea usar. Ejemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Limitaciones
<a name="stripe-limitations"></a>

Las siguientes son limitaciones para el conector de Stripe:
+  El conector solo admite la partición basada en campos. 
+  El conector no admite la partición basada en registros; no hay ninguna disposición para recuperar el recuento total de registros. 
+  El tipo de datos clave principal es una cadena, por lo que la partición basada en ID no es compatible con ningún conector. 

# Creación de una nueva cuenta de Stripe y configuración de la aplicación cliente
<a name="stripe-new-account-creation"></a>

**Creación de una cuenta de Stripe**

1. Elija en el enlace **https://dashboard.stripe.com/register**.

1. Ingrese su correo electrónico, nombre completo, contraseña y seleccione **Crear cuenta**.

1. Después de iniciar sesión con la cuenta, verifique la cuenta; para ello, elija **Abrir Gmail**.

1. Para verificar la cuenta, haga clic en el enlace de verificación recibido por correo electrónico.

1. Después de hacer clic en Verificar la dirección de correo electrónico, se abrirá otra página

1. Tras hacer clic en **Activar pagos** para activar la cuenta, se abrirá la página Activar pagos (**https://dashboard.stripe.com/welcome**). Asegúrese de rellenar todos los datos válidos y, a continuación, elija el botón **Continuar**.



**Creación de una aplicación para desarrolladores de Slack**

1. Inicie sesión en [Stripe](https://dashboard.stripe.com/login).

1. Elija **Desarrolladores** como se muestra en el extremo superior de la imagen de abajo.

1. Elija **Claves de API** en Desarrolladores.

1. Elija **Revelar clave de prueba** para obtener las claves de la API.

# Conexión a Teradata Vantage en AWS Glue Studio
<a name="connecting-to-data-teradata"></a>

 AWS Glue proporciona soporte integrado para Teradata Vantage. AWS Glue Studio proporciona una interfaz visual para conectarse a Teradata, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

 AWS Glue Studio crea una conexión unificada para Teradata Vantage. Para obtener más información, consulte [Consideraciones](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Crear una conexión Teradata Vantage](creating-teradata-connection.md)
+ [Crear un nodo de origen de Teradata](creating-teradata-source-node.md)
+ [Crear un nodo de destino de Teradata](creating-teradata-target-node.md)
+ [Opciones avanzadas](#creating-teradata-connection-advanced-options)

# Crear una conexión Teradata Vantage
<a name="creating-teradata-connection"></a>

Para conectarse a Teradata Vantage desde AWS Glue, tendrá que crear y almacenar sus credenciales de Teradata en un AWS Secrets Manager secreto y, a continuación, asociar ese secreto a una conexión de Teradata de AWS Glue.

**Requisitos previos**:
+ Si accede a su entorno de Teradata a través de Amazon VPC, configure Amazon VPC para permitir que su trabajo de AWS Glue se comunique con el entorno de Teradata. No recomendamos acceder al entorno de Teradata a través de la Internet pública.

  En Amazon VPC, identifique o cree una **VPC**, una **subred** y un **grupo de seguridad** que AWS Glue utilizará al ejecutar el trabajo. Además, debe asegurarse de que Amazon VPC esté configurada para permitir el tráfico de red entre su instancia de Teradata y esta ubicación. Su trabajo deberá establecer una conexión TCP con su puerto de cliente de Teradata. Para obtener más información sobre los puertos de Teradata, consulte la [documentación de Teradata](https://docs.teradata.com/r/Teradata-VantageTM-on-AWS-DIY-Installation-and-Administration-Guide/April-2020/Before-Deploying-Vantage-on-AWS-DIY/Security-Groups-and-Ports).

  Según el diseño de la red, la conectividad segura de la VPC puede requerir cambios en Amazon VPC y otros servicios de red. Para obtener más información sobre la conectividad de AWS, consulte las [Opciones de conectividad de AWS](https://docs.teradata.com/r/Teradata-VantageCloud-Enterprise/Get-Started/Connecting-Your-Environment/AWS-Connectivity-Options) en la documentación de Teradata.

**Para configurar una conexión de AWS Glue Teradata:**

1. En la configuración de Teradata, identifique o cree un usuario y la contraseña con la que AWS Glue se conectará, *teradataUser* y *teradataPassword*. Para obtener más información, consulte la [Información general de seguridad de Vantage](https://docs.teradata.com/r/Configuring-Teradata-VantageTM-After-Installation/January-2021/Security-Overview/Vantage-Security-Overview) en la documentación de Teradata.

1. En AWS Secrets Manager, cree un secreto con sus credenciales de Teradata. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, genere un par para la clave `user` con el valor *teradataUsername*.
   + Al seleccionar **pares clave/valor**, genere un par para la clave `password` con el valor *teradataPassword*.

1. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en [Adición de una conexión de AWS Glue](console-connections.md). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el siguiente paso. 
   + Al seleccionar un **tipo de conexión**, seleccione Teradata.
   + Al proporcionar la **URL de JDBC**, proporcione la URL de su instancia. También puede codificar determinados parámetros de conexión separados por comas en la URL de JDBC. La URL debe tener el siguiente formato: `jdbc:teradata://teradataHostname/ParameterName=ParameterValue,ParameterName=ParameterValue`

     Los parámetros de URL admitidos incluyen:
     + `DATABASE`— nombre de la base de datos del host a la que se accede de forma predeterminada.
     + `DBS_PORT`— el puerto de la base de datos, que se utiliza cuando se ejecuta en un puerto no estándar.
   + Al seleccionar un **Tipo de credencial**, seleccione **AWS Secrets Manager** y, a continuación, establezca **AWS Secret** en *secretName*.

1. En las siguientes situaciones, es posible que necesite una configuración adicional:
   + 

     Para las instancias de Teradata alojadas AWS en una VPC de Amazon
     + Deberá proporcionar la información de conexión de Amazon VPC a la conexión de AWS Glue que define sus credenciales de seguridad de Teradata. Al crear o actualizar la conexión, configure los **VPC**, **Subred** y los **grupos de seguridad** en **Opciones de red**.

# Crear un nodo de origen de Teradata
<a name="creating-teradata-source-node"></a>

## Requisitos previos necesarios
<a name="creating-teradata-source-node-prerequisites"></a>
+ Una conexión AWS Glue Teradata Vantage, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Crear una conexión Teradata Vantage](creating-teradata-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de Teradata de la que desee leer, *tableName* o consultar *targetQuery*.

## Agregar un origen de datos de Teradata
<a name="creating-teradata-source-node-add"></a>

**Para agregar un nodo de **Origen de datos: Teradata**:**

1.  Elija la conexión para el origen de datos de Teradata. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear una nueva conexión**. Para obtener más información, consulte la sección [Crear una conexión Teradata Vantage](creating-teradata-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1.  Elija una opción de **origen de Teradata**: 
   +  **Elija una sola tabla**: acceda a todos los datos de una sola tabla. 
   +  **Ingresar una consulta personalizada**: permite acceder a un conjunto de datos de varias tablas en función del consulta personalizada. 

1.  Si eligió una sola tabla, ingrese *tableName*. 

    Si eligió **Introducir una consulta personalizada**, introduzca una consulta SQL SELECT. 

1.  En las **propiedades personalizadas de Teradata**, ingrese los parámetros y valores según sea necesario. 

# Crear un nodo de destino de Teradata
<a name="creating-teradata-target-node"></a>

## Requisitos previos necesarios
<a name="creating-teradata-target-node-prerequisites"></a>
+ Una conexión AWS Glue Teradata Vantage, configurada con un AWS Secrets Manager secreto, como se describe en la sección anterior, [Crear una conexión Teradata Vantage](creating-teradata-connection.md).
+ Permisos adecuados en el trabajo para leer el secreto utilizado por la conexión.
+ Una tabla de Teradata a la que desearía escribir, *tableName*.

## Agregar un destino de datos de Teradata
<a name="creating-teradata-target-node-add"></a>

**Para añadir un **destino de datos: nodo de Teradata:****

1.  Elija la conexión para el origen de datos de Teradata. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de Teradata**. Para más información, consulte [Información general sobre el uso de conectores y conexiones](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Configure el **nombre de la tabla** proporcionando *tableName*.

1.  En las **propiedades personalizadas de Teradata**, ingrese los parámetros y valores según sea necesario. 

## Opciones avanzadas
<a name="creating-teradata-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de Teradata. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte [Conexiones Teradata Vantage](aws-glue-programming-etl-connect-teradata-home.md). 

# Conexión a Twilio
<a name="connecting-to-data-twilio"></a>

Twilio proporciona herramientas de comunicación programables para realizar y recibir llamadas telefónicas, enviar y recibir mensajes de texto y llevar a cabo otras funciones de comunicación mediante las API de sus servicios web. Las API de Twilio son la base tecnológica de la plataforma de comunicaciones. Estas API están respaldadas por una capa de software que conecta y optimiza las redes de comunicación globales, lo que permite a los usuarios realizar llamadas y enviar mensajes a cualquier persona, en cualquier lugar del mundo. Como usuario de Twilio, puede conectar AWS Glue a la cuenta de Twilio. A continuación, podrá utilizar Twilio como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Twilio y los servicios de AWS u otras aplicaciones compatibles.

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

# Compatibilidad de AWS Glue con Twilio
<a name="twilio-support"></a>

AWS Glue admite Twilio de la siguiente manera:

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

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

**Versiones de la API de Twilio compatibles**  
Las siguientes versiones de la API de Twilio son compatibles:
+ v1
+ 2010-04-01

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="twilio-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 Twilio
<a name="twilio-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Twilio, debe cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Twilio con nombre de usuario y contraseña.
+ La cuenta de Twilio debe estar habilitada para el acceso a la API.

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

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

Twilio admite el nombre de usuario y la contraseña para la autenticación básica. La autenticación básica es un método de autenticación simple en el que los clientes proporcionan credenciales directamente para acceder a los recursos protegidos. AWS Glue puede utilizar el nombre de usuario (SID de la cuenta) y la contraseña (token de autenticación) para autenticar las API de Twilio.

Para consultar la documentación pública de Twilio sobre el flujo de autenticación básica, consulte [Autenticación básica \$1 Twilio](https://www.twilio.com/docs/glossary/what-is-basic-authentication).

Para configurar una conexión a Twilio:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:
   + En la autenticación básica: el secreto debe contener el secreto del consumidor de la aplicación conectada junto con el **SID de la cuenta** (nombre de usuario) y el **token de autenticación** (contraseña).
**nota**  
Debe crear un secreto para las conexiones 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 Twilio.

   1. Proporcione la `[Edge\$1Location](https://www.twilio.com/docs/global-infrastructure/edge-locations)` de la instancia de Twilio 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 entidades de Twilio
<a name="twilio-reading-from-entities"></a>

**Requisito previo**

Un objeto de Twilio desde el que desea leer. Necesitará el nombre del objeto, como `SMS-Message` o `SMS-CountryPricing`.

**Entidades compatibles como origen:**


| Entidad | Interfaz | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | --- | 
| SMS-Message | REST | Sí | Sí | No | Sí | Sí | 
| SMS-CountryPricing | REST | No | No | No | Sí | No | 
| Voice-Call | REST | Sí | Sí | No | Sí | No | 
| Voice-Application | REST | Sí | Sí | No | Sí | No | 
| Voice-OutgoingCallerID | REST | Sí | Sí | No | Sí | No | 
| Voice-Queue | REST | Sí | Sí | No | Sí | No | 
| Conversations-Conversation | REST | Sí | Sí | No | Sí | No | 
| Conversations-User | REST | No | Sí | No | Sí | No | 
| Conversations-Role | REST | No | Sí | No | Sí | No | 
| Conversations-Configuration | REST | No | No | No | Sí | No | 
| Conversations-AddressConfiguration | REST | Sí | Sí | No | Sí | No | 
| Conversations-WebhookConfiguration | REST | No | No | No | Sí | No | 
| Conversations-ParticipantConversation | REST | No | No | No | Sí | No | 
| Conversations-Credential | REST | No | Sí | No | Sí | No | 
| Conversations-ConversationService | REST | No | Sí | No | Sí | No | 

**Ejemplo:**

```
twilio_read = glueContext.create_dynamic_frame.from_options(
    connection_type="twilio",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "sms-message",
        "API_VERSION": "2010-04-01",
        "Edge_Location": "sydney.us1"
    }
```

**Detalles de entidades y campos de Twilio**:

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

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

**Campos que admiten la partición**:

En Twilio, los campos de tipo de datos DateTime admiten la partición basada en campos.

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas SQL de Spark.

  Ejemplos de valor válido:

  ```
  "2024-05-01T20:55:02.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
twilio_read = glueContext.create_dynamic_frame.from_options(
    connection_type="twilio",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "sms-message",
        "API_VERSION": "2010-04-01",
        "PARTITION_FIELD": "date_sent"
        "LOWER_BOUND": "2024-05-01T20:55:02.000Z"
        "UPPER_BOUND": "2024-06-01T20:55:02.000Z"
        "NUM_PARTITIONS": "10"
    }
```

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

Las siguientes son opciones de conexión para Twilio:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Twilio.
+ `EDGE_LOCATION`(Cadena): (obligatorio) Una ubicación periférica de Twilio válida.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Twilio que desea usar. Twilio admite dos versiones de la API: “v1” y “01/04/2010”.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones de lectura.
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. Una URL de instancia de Twilio válida.

# Limitaciones y notas del conector de Twilio
<a name="twilio-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Twilio:
+ No se admite la partición basada en registros, ya que no hay ninguna provisión para recuperar el recuento total de registros de Twilio.
+ Los campos `date_sent`, `start_time` y `end_time` son del tipo de datos Datetime, pero al filtrarlos, solo admiten valores de fecha (no se tienen en cuenta los componentes de hora).
+ El filtrado de los campos “de” o “a” solo funciona si los valores no incluyen ningún prefijo (por ejemplo, un protocolo o una etiqueta). Si hay un prefijo, no funcionará el filtrado para el campo correspondiente. Por ejemplo, si transmite “a”: “whatsapp:\$114xxxxxxxxxx” como filtro, Twilio no devolverá ninguna respuesta. Tiene que transmitirlo como “a”: “\$114xxxxxxxx”, y devolverá los registros si existen.
+ El filtro del campo “identidad” es obligatorio al consultar la entidad `conversation-participant-conversation`.

# Conexión a Vertica en AWS Glue Studio
<a name="connecting-to-data-vertica"></a>

 AWS Glue proporciona soporte integrado para Vertica. AWS Glue Studio proporciona una interfaz visual para conectarse a Vertica, crear trabajos de integración de datos y ejecutarlos en el tiempo de ejecución de Spark sin servidor de AWS Glue Studio. 

 AWS Glue Studio crea una conexión unificada para Vertica. Para obtener más información, consulte [Consideraciones](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Crear una conexión Vertica](creating-vertica-connection.md)
+ [Crear un nodo de origen de Vertica](creating-vertica-source-node.md)
+ [Crear un nodo de destino de Vertica](creating-vertica-target-node.md)
+ [Opciones avanzadas](#creating-vertica-connection-advanced-options)

# Crear una conexión Vertica
<a name="creating-vertica-connection"></a>

**Requisitos previos**:
+ Un bucket o una carpeta de Amazon S3 para utilizar como almacenamiento temporario al leer y escribir en la base de datos, al que hace referencia *tempS3Path*.
**nota**  
Al utilizar Vertica en las vistas previas de los datos de los trabajos de AWS Glue, puede que los archivos temporales no se eliminen automáticamente de *tempS3Path*. Para garantizar la eliminación de los archivos temporales, finalice directamente la sesión de vista previa de datos al seleccionar **Finalizar sesión** en el panel **Vista previa de datos**.  
Si no puede garantizar que la sesión de vista previa de datos finalice directamente, considere configurar Amazon S3 Lifecycle para eliminar los datos antiguos. Recomendamos eliminar los datos de más de 49 horas, en función del tiempo máximo de ejecución del trabajo más un margen. Para obtener más información sobre la configuración de Amazon S3 Lifecycle, consulte [Administración del ciclo de vida del almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) en la documentación de Amazon S3.
+ Una política de IAM con los permisos adecuados para su ruta de Amazon S3 que pueda asociar a su puesto de trabajo de AWS Glue.
+ Si su instancia de Vertica está en una Amazon VPC, configure Amazon VPC para permitir que su trabajo de AWS Glue se comunique con la instancia de Vertica sin que el tráfico atraviese la Internet pública. 

  En Amazon VPC, identifique o cree una **VPC**, una **subred** y un **grupo de seguridad** que AWS Glue utilizará al ejecutar la tarea. Además, debe asegurarse de que Amazon VPC esté configurada para permitir el tráfico de red entre su instancia de Vertica y esta ubicación. Su trabajo tendrá que establecer una conexión TCP con el puerto de cliente de Vertica (el valor predeterminado es 5433). Según el diseño de la red, esto puede requerir cambios en las reglas de los grupos de seguridad, las ACL de red, las puertas de enlace de NAT y las conexiones entre pares.

**Para configurar una conexión a Vertica:**

1. En AWS Secrets Manager, cree un secreto con sus credenciales de Vertica, *verticaUsername* y *verticaPassword*. Para crear un secreto en Secrets Manager, siga el tutorial disponible en [Crear un secreto AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, *secretName*, para el siguiente paso. 
   + Al seleccionar **pares clave/valor**, genere un par para la clave `user` con el valor *verticaUsername*.
   + Al seleccionar **pares clave/valor**, genere un par para la clave `password` con el valor *verticaPassword*.

1. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en [Adición de una conexión de AWS Glue](console-connections.md). Tras crear la conexión, conserve el nombre de la conexión, *connectionName*, para el siguiente paso. 
   + Al seleccionar un **tipo de conexión**, seleccione Vertica.
   + Al seleccionar **Vertica Host**, proporcione el nombre de host de la instalación de Vertica.
   + Al seleccionar **Vertica Port**, proporcione el portal a través del cual está disponible su instalación de Vertica.
   + Al seleccionar un **secreto AWS**, proporcione un *secretName*.

1. En las siguientes situaciones, es posible que necesite una configuración adicional:
   + 

     Para las instancias de Vertica alojadas en AWS en una VPC de Amazon
     + Proporcione la información de conexión de Amazon VPC a la conexión de AWS Glue que define sus credenciales de seguridad de Vertica. Al crear o actualizar la conexión, configure los **VPC**, **Subred** y los **grupos de seguridad** en **Opciones de red**.

Deberá realizar los siguientes pasos antes de ejecutar su trabajo de AWS Glue:
+ Otorga permisos al rol de IAM asociado al trabajo de AWS Glue para *tempS3Path*.
+ Otorga permiso al rol de IAM asociado al trabajo de AWS Glue para leer el *secretName*.

# Crear un nodo de origen de Vertica
<a name="creating-vertica-source-node"></a>

## Requisitos previos necesarios
<a name="creating-vertica-source-node-prerequisites"></a>
+ Una conexión de catálogo de datos de tipo AWS Glue Vertica, *connectionName* y una ubicación temporal de Amazon S3, *tempS3Path*, como se describe en la sección anterior, [Crear una conexión Vertica](creating-vertica-connection.md).
+ *Una tabla de Vertica de la que le gustaría leer, *tableName* o consultar targetQuery*.

## Agregar un origen de datos de Vertica
<a name="creating-vertica-source-node-add"></a>

**Para agregar un nodo de **Origen de datos: Vertica**:**

1.  Elija la conexión para el origen de datos de Vertica. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de Vertica**. Para obtener más información, consulte la sección [Crear una conexión Vertica](creating-vertica-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Elija la **base de datos** que contiene la tabla.

1. Elija el **área de ensayo en Amazon S3** e introduzca un URI de S3A en *tempS3Path*.

1. Elija el **origen de Vertica.**
   +  **Elija una sola tabla**: acceda a todos los datos de una sola tabla. 
   +  **Ingresar una consulta personalizada**: permite acceder a un conjunto de datos de varias tablas en función del consulta personalizada. 

1.  Si ha elegido una sola tabla, ingrese *tableName* y, de manera opcional, seleccione un **esquema**. 

    Si eligió **Introducir una consulta personalizada**, introduzca una consulta SQL SELECT y, si lo desea, seleccione un **esquema**. 

1.  En las **propiedades personalizadas de Vertica**, ingrese los parámetros y valores según sea necesario. 

# Crear un nodo de destino de Vertica
<a name="creating-vertica-target-node"></a>

## Requisitos previos necesarios
<a name="creating-vertica-target-node-prerequisites"></a>
+ Una conexión de catálogo de datos de tipo AWS Glue Vertica, *connectionName* y una ubicación temporal de Amazon S3, *tempS3Path*, como se describe en la sección anterior, [Crear una conexión Vertica](creating-vertica-connection.md).

## Agregar un destino de datos de Vertica
<a name="creating-vertica-target-node-add"></a>

**Para añadir un nodo de **Destino de datos - Vertica**:**

1.  Elija la conexión para el origen de datos de Vertica. Dado que lo ha creado, debería estar disponible en el menú desplegable. Si es necesario crear una conexión, elija **Crear conexión de Vertica**. Para obtener más información, consulte la sección [Crear una conexión Vertica](creating-vertica-connection.md) anterior. 

    Una vez que haya elegido una conexión, puede ver las propiedades de la conexión mediante un clic en **Ver propiedades**. 

1. Elija la **base de datos** que contiene la tabla.

1. Elija el **área de ensayo en Amazon S3** e introduzca un URI de S3A en *tempS3Path*.

1. **Introduzca *tableName* y, si lo desea, seleccione un esquema**. 

1.  En las **propiedades personalizadas de Vertica**, ingrese los parámetros y valores según sea necesario. 

## Opciones avanzadas
<a name="creating-vertica-connection-advanced-options"></a>

Puede brindar opciones avanzadas al crear un nodo de Vertica. Estas opciones son las mismas que las disponibles cuando se programa AWS Glue para scripts de Spark.

Consulte [Conexiones Vertica](aws-glue-programming-etl-connect-vertica-home.md).

# 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.

# Conexión a Zendesk
<a name="connecting-to-data-zendesk"></a>

Zendesk es una solución de administración de centro de ayuda basada en la nube que ofrece herramientas personalizables para crear un portal de atención al cliente, una base de conocimientos y comunidades en línea.

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

# Compatibilidad de AWS Glue con Zendesk
<a name="zendesk-support"></a>

AWS Glue es compatible con Zendesk de la siguiente manera:

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

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

**Versiones compatibles de la API de Zendesk**  
Las siguientes versiones de la API de Zendesk son compatibles
+ v2

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="zendesk-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 Zendesk
<a name="zendesk-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Zendesk. Para obtener más información, consulte [Creación de una cuenta de Zendesk](#zendesk-configuring-creating-account).
+ La cuenta de Zendesk debe estar habilitada para el acceso de la API.
+ Su cuenta de Zendesk le permite instalar aplicaciones conectadas.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Zendesk.

## Creación de una cuenta de Zendesk
<a name="zendesk-configuring-creating-account"></a>

Para crear una cuenta de Zendesk:

1. Vaya a https://www.zendesk.com/in/register/

1. Introduzca los detalles, como su correo electrónico laboral, nombre, apellido, número de teléfono, cargo, nombre de la empresa, número de empleados de la empresa, contraseña e idioma preferido. A continuación, elija **Completar la inscripción de prueba**.

1. Después de que se cree la cuenta, complete el enlace de verificación que recibió para verificar su dirección de correo electrónico.

1. Una vez verificada la dirección de correo electrónico laboral, se le redirigirá a su cuenta de Zendesk. Elija la **opción Comprar Zendesk** para el plan de su elección. Nota: para el conector de Zendesk, se recomienda comprar el plan Suite Enterprise.

## Creación de una aplicación cliente y credenciales de OAuth 2.0
<a name="zendesk-configuring-creating-client-app"></a>

Para crear una aplicación cliente y credenciales de OAuth 2.0:

1. Inicie sesión en su cuenta de Zendesk donde desea que se cree la aplicación OAuth 2.0: https://www.zendesk.com/in/login/

1. Haga clic en el ícono del engranaje. Elija el enlace **Ir al centro de administración** para abrir la página del centro de administración.

1. Elija **Aplicaciones e integraciones** en la barra lateral izquierda y seleccione **API**>**API de Zendesk**.

1. En la página de la API de Zendesk, seleccione la pestaña **Clientes de OAuth**.

1. Elija **Añadir cliente de OAuth** en el lado derecho.

1. Complete los siguientes campos para crear un cliente:

   1. Nombre de cliente: especifique un nombre para la aplicación. Este es el nombre que verán los usuarios cuando se les pida que otorguen acceso a su aplicación y cuando consulten la lista de aplicaciones de terceros que tienen acceso a su cuenta de Zendesk.

   1. Descripción: opcional. Una breve descripción de la aplicación que los usuarios verán cuando se les pida que concedan acceso a ella.

   1. Empresa: opcional. El nombre de la empresa que verán los usuarios cuando se les pida que concedan acceso a su aplicación. La información les puede ayudar a entender a quién están concediendo el acceso.

   1. Logotipo: opcional. El logotipo que verán los usuarios cuando se les pida que concedan acceso a su aplicación. La imagen puede ser JPG, GIF o PNG. Para obtener mejores resultados, cargue una imagen cuadrada. Se ajustará el tamaño para adaptarlo a la página de autorización.

   1. Identificador único: el campo se completa automáticamente con una versión reformateada del nombre que introdujo para la aplicación. Si lo desea, puede cambiarlo.

   1. URL de redireccionamiento: introduzca la URL o las URL que Zendesk debe usar para enviar la decisión del usuario de conceder el acceso a su aplicación.

      Por ejemplo: https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Haga clic en **Guardar**.

1. Cuando la página se actualice, aparecerá un nuevo campo **Secreto** completado previamente en la parte inferior. Es el valor “client\$1secret” especificado en la especificación de OAuth2. Copie el valor Secreto en su portapapeles y guárdelo en un lugar seguro. Nota: Es posible que los caracteres sobrepasen el ancho del cuadro de texto, así que asegúrese de seleccionarlos todos antes de copiarlos.

1. Haga clic en **Guardar**.

# Configuración de las conexiones a Zendesk
<a name="zendesk-configuring-connections"></a>

El conector de Zendesk admite el tipo de concesión Código de autorización.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, confiar en una aplicación conectada propiedad de AWS Glue (aplicación cliente administrada por AWS Glue) en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de la instancia de Zendesk. La consola de AWS Glue redirigirá al usuario a Zendesk, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Zendesk.
+ Aún puede optar por crear una aplicación conectada propia en Zendas y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Zendesk para iniciar sesión y autorizar a AWS Glue para que acceda a los recursos.
+ Este tipo de concesión da como resultado un token acceso. El token de acceso nunca caduca.

Si desea consultar la documentación pública de Zendesk sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Tokens OAuth para tipos de concesión](https://developer.zendesk.com/api-reference/ticketing/oauth/grant_type_tokens/).

Para configurar una conexión a Freshdesk:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para el tipo de concesión AuthorizationCode: en el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`.

   1. Nota: Debe crear un secreto por cada 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 Zendesk.

   1. Proporcione la INSTANCE\$1URL del Zendesk al que se desea conectar.

   1. Proporcione el entorno de Zendesk.

   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`.

# Lectura desde entidades de Zendesk
<a name="zendesk-reading-from-entities"></a>

**Requisito previo**

Un objeto de Zendesk desde el que desea leer. Necesitará el nombre del objeto, como el ticket, el usuario o el artículo, tal y como se indica en la siguiente tabla.


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Ticket | Y | Y | Y | Y | N | 
| Usuario | Y | Y | Y | Y | N | 
| Organización | Y | Y | Y | Y | N | 
| Artículo | Y | Y | N | Y | N | 
| Evento de ticket | Y | Y | N | Y | N | 
| Evento de métrica de tickets | Y | Y | N | Y | N | 
| Comentario de tickets | Y | Y | Y | Y | N | 
| Campo de tickets | Y | Y | N | Y | N | 
| Métrica de tickets | Y | Y | N | Y | N | 
| Actividad de tickets | Y | Y | N | Y | N | 
| Omisión de tickets | N | Y | N | Y | N | 
| Grupo | Y | Y | Y | Y | N | 
| Pertenencia a grupos | N | Y | Y | Y | N | 
| Calificación de satisfacción | Y | Y | N | Y | N | 
| Visualización | Y | Y | Y | Y | N | 
| Desencadenador | Y | Y | Y | Y | N | 
| Categoría de activación | N | Y | Y | Y | N | 
| Macro | Y | Y | Y | Y | N | 
| Automatización | N | Y | Y | Y | N | 

**Ejemplo:**

```
Zendesk_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Zendesk",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v2"
    }
```

**Detalles de las entidades y los campos de Zendesk**:

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

**nota**  
Los tipos de datos de estructura y lista se convierten en tipos de datos de cadena en respuesta al conector.

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

Zendesk no admite particiones.

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

Existen las siguientes opciones para establecer conexión con Zendesk:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Zendesk.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Zendesk que desea usar. Por ejemplo: v2.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto. Por ejemplo: id, name, url, created\$1at
+ `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL. Por ejemplo: group\$1id = 100
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL. Por ejemplo: “SELECT id,url FROM users WHERE role=\$1"end-user\$1"”
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. El campo predeterminado es `update_at` para las entidades que admiten la API de exportación incremental (`created_at` para `ticket-events` y `time` para `ticket-metric-events`).
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. Opcional; el conector gestionará esta opción si no se incluye en la opción de trabajo. Valor predeterminado: 2024-05-01T20:55:02.000Z
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. Opcional; el conector gestionará esta opción si no se incluye en la opción de trabajo. Valor predeterminado: 1.
+ `IMPORT_DELETED_RECORDS`(cadena): predeterminado: FALSO. Se usa para leer. Para obtener los registros eliminados durante la consulta.
+ `ACCESS_TOKEN`: token de acceso que se utilizará en la solicitud.
+ `INSTANCE_URL`: URL de la instancia en la que el usuario quiere ejecutar las operaciones. Por ejemplo, https://\$1subdomain\$1/.zendesk.com

# Limitaciones
<a name="zendesk-limitations"></a>

El conector de Zendesk presenta las siguientes limitaciones:
+ La paginación basada en el desplazamiento limita el número de páginas que se pueden solicitar a 100, pero no se recomienda, ya que el número total de registros que se pueden solicitar es de 10 000. Sin embargo, la paginación basada en el cursor que se implementa para el conector de Zendesk supera esta limitación. La API de Zendesk solo admite el operador de filtro EQUAL\$1TO.

  Debido a esta limitación, el conector de Zendesk no admite la partición.
+ Para la entidad “Evento de ticket”, el límite de frecuencia es de 10 solicitudes por minuto. Al ejecutar un trabajo de ETL de AWS Glue, es posible que reciba un error 429 (demasiadas solicitudes).

# Conexión a Zoho CRM
<a name="connecting-to-data-zoho-crm"></a>

Zoho CRM actúa como un repositorio único para reunir las actividades de ventas, marketing y atención al cliente y optimizar los procesos, las políticas y las personas en una sola plataforma. Zoho CRM se puede personalizar fácilmente para satisfacer las necesidades específicas de cualquier tipo y tamaño de empresa.

La plataforma para desarrolladores de Zoho CRM ofrece la combinación perfecta de herramientas sencillas y programables para que las empresas automaticen el trabajo, integren los datos en toda la gama empresarial y creen soluciones personalizadas para la web y los dispositivos móviles.

**Topics**
+ [Compatibilidad de AWS Glue con Zoho CRM](zoho-crm-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](zoho-crm-configuring-iam-permissions.md)
+ [Configuración de Zoho CRM](zoho-crm-configuring.md)
+ [Configuración de conexiones de Zoho CRM](zoho-crm-configuring-connections.md)
+ [Lectura de entidades de Zoho CRM](zoho-crm-reading-from-entities.md)
+ [Opciones de conexión de Zoho CRM](zoho-crm-connection-options.md)
+ [Limitaciones y notas del conector de Zoho CRM](zoho-crm-connector-limitations.md)

# Compatibilidad de AWS Glue con Zoho CRM
<a name="zoho-crm-support"></a>

AWS Glue es compatible con Zoho CRM de la siguiente manera:

**¿Es compatible como origen?**  
Sí: sincrónica y asincrónica. Puede usar los trabajos de ETL de AWS Glue para consultar datos de Zoho CRM.

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

**Versiones de la API de Zoho CRM compatibles**  
Las siguientes versiones de la API de Zoho CRM son compatibles:
+ v7

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="zoho-crm-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 Zoho CRM
<a name="zoho-crm-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Zoho CRM, debe cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tiene una cuenta de Zoho CRM.
+ Su cuenta de Zoho CRM tiene acceso a la API.
+ Tiene un cliente de API registrado en la consola de API para obtener las credenciales de OAuth.

# Configuración de conexiones de Zoho CRM
<a name="zoho-crm-configuring-connections"></a>

El tipo de concesión determina cómo se comunica AWS Glue con Zoho CRM para solicitar el acceso a sus datos. Su elección afecta a los requisitos que debe cumplir antes de crear la conexión. Zoho CRM solo admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth 2.0.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Zoho CRM, donde deberá iniciar sesión y permitir a Glue que los permisos solicitados accedan a su instancia de Zoho CRM.
+ Los usuarios aún pueden optar por crear su propia aplicación conectada en Zoho CRM y proporcionar su propio ID, URL de autenticación, URL de token y URL de instancia al crear conexiones a través de la consola de AWS Glue. En este escenario, se abrirá Zoho CRM para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso seguirá siendo válido durante una hora y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para ver la documentación pública de Zoho CRM sobre la creación de una aplicación conectada para el flujo de OAuth con código de autorización, consulte [Authentication](https://www.zoho.com/crm/developer/docs/api/v7/oauth-overview.html).

Configuración de una conexión de Zoho CRM:

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**, seleccione Zoho CRM.

   1. Proporcione el elemento `INSTANCE_URL` de la instancia de Zoho CRM a la que quiere conectarse.

   1. Proporcione el ID de cliente de la aplicación cliente del usuario.

   1. Seleccione la **URL de autenticación** correspondiente en el menú desplegable.

   1. Seleccione la **URL del token** correspondiente en el menú desplegable.

   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`.

1. En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**.

# Lectura de entidades de Zoho CRM
<a name="zoho-crm-reading-from-entities"></a>

**Requisito previo**

Objetos de Zoho CRM desde los que desea leer. Necesitará el nombre del objeto.

**Entidades compatibles para el origen sincrónico:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Producto | Sí | Sí | Sí | Sí | Sí | 
| Cotización | Sí | Sí | Sí | Sí | Sí | 
| Orden de compra | Sí | Sí | Sí | Sí | Sí | 
| Solución | Sí | Sí | Sí | Sí | Sí | 
| Llame a | Sí | Sí | Sí | Sí | Sí | 
| Tarea | Sí | Sí | Sí | Sí | Sí | 
| Evento | Sí | Sí | Sí | Sí | Sí | 
| Factura | Sí | Sí | Sí | Sí | Sí | 
| Cuenta | Sí | Sí | Sí | Sí | Sí | 
| Contacto | Sí | Sí | Sí | Sí | Sí | 
| Proveedor | Sí | Sí | Sí | Sí | Sí | 
| Campaña | Sí | Sí | Sí | Sí | Sí | 
| Acuerdo | Sí | Sí | Sí | Sí | Sí | 
| Cliente potencial | Sí | Sí | Sí | Sí | Sí | 
| Módulo personalizado | Sí | Sí | Sí | Sí | Sí | 
| Pedido de ventas | Sí | Sí | Sí | Sí | Sí | 
| Libros de precios | Sí | Sí | Sí | Sí | Sí | 
| Caso | Sí | Sí | Sí | Sí | Sí | 

**Ejemplo:**

```
zoho_read = glueContext.create_dynamic_frame.from_options(
    connection_type="ZOHO",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v7",
        "INSTANCE_URL": "https://www.zohoapis.in/"
    }
```

**Entidades compatibles para el origen asincrónico**:


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Producto | Sí | No | No | Sí | No | 
| Cotización | Sí | No | No | Sí | No | 
| Orden de compra | Sí | No | No | Sí | No | 
| Solución | Sí | No | No | Sí | No | 
| Llame a | Sí | No | No | Sí | No | 
| Tarea | Sí | No | No | Sí | No | 
| Evento | Sí | No | No | Sí | No | 
| Factura | Sí | No | No | Sí | No | 
| Cuenta | Sí | No | No | Sí | No | 
| Contacto | Sí | No | No | Sí | No | 
| Proveedor | Sí | No | No | Sí | No | 
| Campaña | Sí | No | No | Sí | No | 
| Acuerdo | Sí | No | No | Sí | No | 
| Cliente potencial | Sí | No | No | Sí | No | 
| Módulo personalizado | Sí | No | No | Sí | No | 
| Pedido de ventas | Sí | No | No | Sí | No | 
| Libros de precios | Sí | No | No | Sí | No | 
| Caso | Sí | No | No | Sí | No | 

**Ejemplo:**

```
zoho_read = glueContext.create_dynamic_frame.from_options(
    connection_type="ZOHO",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v7",
        "INSTANCE_URL": "https://www.zohoapis.in/",
        "TRANSFER_MODE": "ASYNC"
    }
```

**Detalles de los campos de Zoho CRM**:

Zoho CRM proporciona puntos de conexión para obtener metadatos de forma dinámica para las entidades compatibles. Por lo tanto, la compatibilidad del operador se captura según el tipo de datos.

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

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

No se admite la partición en el modo asíncrono.

**Partición basada en filtros (modo sincrónico)**:

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar 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.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el formato de marca de tiempo de Spark que se utiliza en las consultas SQL de Spark.

  Ejemplos de valor válido:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
zoho_read = glueContext.create_dynamic_frame.from_options(
    connection_type="zohocrm",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v7",
        "PARTITION_FIELD": "Created_Time"
        "LOWER_BOUND": "2022-01-01T01:01:01.000Z"
        "UPPER_BOUND": "2024-01-01T01:01:01.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Opciones de conexión de Zoho CRM
<a name="zoho-crm-connection-options"></a>

Las siguientes son opciones de conexión para Zoho CRM:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de su objeto en Zoho CRM.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Zoho CRM que desea usar.
+ `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.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. Una URL de la instancia de Zoho CRM válida.
+ `TRANSFER_MODE`(Cadena): se usa para indicar si la consulta debe ejecutarse en modo asíncrono.

# Limitaciones y notas del conector de Zoho CRM
<a name="zoho-crm-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Zoho CRM:
+ Con la versión 7 de la API, puede obtener un máximo de 100 000 registros. Consulte la [documentación de Zoho](https://www.zoho.com/crm/developer/docs/api/v7/get-records.html).
+ En el caso de la entidad del evento, se muestra la etiqueta “Reunión”, tal y como se menciona en la [documentación de Zoho](https://www.zoho.com/crm/developer/docs/api/v7/modules-api.html).
+ Funcionalidad Seleccionar todo:
  + Puede obtener un máximo de 50 campos de SaaS para las llamadas GET y POST.
  + Si desea disponer de datos para algún campo específico que no pertenezca a los primeros 50 campos, tendrá que proporcionar manualmente la lista de campos seleccionados.
  + Si se seleccionan más de 50 campos, todos los campos que superen los 50 campos se recortarán y contendrán datos nulos en Amazon S3. 
  + En el caso de una expresión de filtro, si la lista de 50 campos proporcionada por el usuario no incluye “id” ni “Created\$1Time”, se generará una excepción personalizada para solicitar al usuario que incluya estos campos.
+ Los operadores de filtro pueden variar de un campo a otro a pesar de tener el mismo tipo de datos. Por lo tanto, debe especificar manualmente un operador diferente para cualquier campo que desencadene un error en la plataforma de SaaS. 
+ Funcionalidad Ordenar por:
  + Los datos solo se pueden ordenar por un único campo sin una expresión de filtro, mientras que los datos se pueden ordenar por varios campos cuando se aplica una expresión de filtro.
  + Si no se especifica ningún orden de clasificación para el campo seleccionado, los datos se recuperarán en orden ascendente de forma predeterminada. 
+ Las regiones compatibles con el conector de Zoho CRM son EE. UU., Europa, India, Australia y Japón.
+ [Limitaciones](https://www.zoho.com/crm/developer/docs/api/v7/bulk-read/limitations.html) de la funcionalidad de lectura asíncrona:
  + Las órdenes limitadas por y la partición no son compatibles en el modo asíncrono. 
  + En el modo asíncrono podemos transferir datos de hasta 500 páginas con 200 000 registros por página.
  + Durante un intervalo de un minuto, solo se permiten 10 solicitudes de descarga. Cuando se supera el límite de descargas, el sistema devuelve un error HTTP 429 y detiene todas las solicitudes de descarga por un minuto antes de que se pueda reanudar el procesamiento.
  + Tras completar el trabajo masivo, solo podrá acceder al archivo descargable durante un período de un día. Después de eso, no podrá acceder al archivo a través de puntos de conexión.
  + Se puede proporcionar un máximo de 200 campos seleccionados a través de un punto de conexión. Si especifica más de 200 campos de selección en un punto de conexión, el sistema exportará automáticamente todos los campos disponibles para ese módulo.
  + Sin importar en qué módulos se crearon los campos externos no son compatibles con las API de lectura masiva.
  + La clasificación y las cláusulas `Group_by` no se admiten a través de este punto de conexión de la API.
  + Los valores de los campos con datos de estado confidenciales solo se recuperarán cuando la opción **Restringir el acceso a los datos a través de la API** en la configuración de cumplimiento esté **desactivada**. Si la opción está habilitada, el valor aparecerá como **vacío** en el resultado.
  + Límites de filtrado/criterios
    + El número máximo de criterios que pueden utilizarse en una consulta es 25.
    + No se admite el filtrado ni los criterios en los campos de texto multilínea.

# Conexión a Zoom Meetings
<a name="connecting-to-data-zoom-meetings"></a>

Zoom Meetings es una plataforma de videoconferencia basada en la nube que se puede utilizar para reuniones de videoconferencia, audioconferencia, seminarios web, grabaciones de reuniones y chat en directo.

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

# Compatibilidad de AWS Glue con Zoom Meetings
<a name="zoom-meetings-support"></a>

AWS Glue admite Zoom Meetings de la siguiente manera:

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

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

**Versiones de la API de Zoom Meetings compatibles**  
Las siguientes versiones de la API de Zoom Meetings son compatibles:
+ v2

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="zoom-meetings-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 Zoom Meetings
<a name="zoom-meetings-configuring"></a>

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

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Zoom Meetings.
+ La cuenta de Zoom debe estar habilitada para el acceso de API.
+ Haber creado una aplicación OAuth 2 en la cuenta de Zoom Meetings. Esta integración proporciona las credenciales que AWS Glue utiliza para acceder a sus datos de forma segura cuando hace llamadas autenticadas a su cuenta. Para obtener más información, consulte [Configuración de la aplicación cliente Zoom Meetings](zoom-meetings-configuring-client-app.md).

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

# Configuración de la aplicación cliente Zoom Meetings
<a name="zoom-meetings-configuring-client-app"></a>

1. Inicie sesión en Zoom App Marketplace.

1. Elija **Desarrollar** > **Crear aplicación**.

1. Elija **Aplicación general** para una aplicación basada en OAuth 2.0.

1. En la página **Información básica**, agregue o actualice información sobre la aplicación, como el nombre de la aplicación, el modo en que se administra, las credenciales de la aplicación y la información de OAuth.

1. En la sección **Seleccione cómo se administra la aplicación**, confirme el modo en que desea que se administre la aplicación:

   1. **Administrada por el administrador**: los administradores de la cuenta agregan y administran la aplicación

   1. **Administrada por el usuario**: los usuarios individuales agregan y administran la aplicación. La aplicación solo tiene acceso a los datos autorizados del usuario.

1. **Credenciales de la aplicación**: el flujo de compilación genera automáticamente credenciales de aplicación (ID de cliente y secreto de cliente) para la aplicación.

1. En la sección Información de OAuth, configure OAuth para la aplicación.

   1. **URL de redireccionamiento de OAuth** (obligatorio): ingrese la URL de redirección o el punto de conexión para configurar OAuth entre la aplicación y Zoom.

   1. **Utilizar URL de modo estricto** (opcional)

   1. **Comprobación de subdominio** (opcional)

   1. **Listas de permitidos de OAuth** (obligatorio): agregue cualquier URL única que Zoom deba permitir como redirecciones válidas para los flujos de OAuth.

1. En la página **Ámbitos**, seleccione los métodos de la API de Zoom a los que la aplicación tiene permitido llamar. Los ámbitos definen qué información y capacidades están disponibles para el usuario. Seleccione los siguientes ámbitos detallados:
   + user:read:list\$1users:admin
   + zoom\$1rooms:read:list\$1rooms:admin
   + group:read:list\$1members:admin
   + group:read:administrator:admin
   + group:read:list\$1groups:admin
   + report:read:admin
   + role:read:list\$1roles, role:read:list\$1roles:admin

   Una vez agregados los ámbitos, seleccione **Continuar** y la aplicación estará lista para su uso.

Para obtener más información sobre la configuración de OAuth 2.0, consulte [Integraciones (aplicaciones OAuth)](https://developers.zoom.us/docs/integrations/).

# Configuración de las conexiones a Zoom Meetings
<a name="zoom-meetings-configuring-connections"></a>

Zoom Meetings admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2. El tipo de concesión determina cómo AWS Glue se comunica con Zoom Meetings para solicitar el acceso a los datos.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión debe proporcionar información relacionada con OAuth, como el ID de cliente y el secreto de cliente para la aplicación cliente de Zoom Meetings. La consola de AWS Glue redirigirá al usuario a Zoom, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Zoom Meetings.
+ Los usuarios aún pueden optar por crear una aplicación conectada propia en Zoom Meetings y proporcionar un ID de cliente y un secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este caso, aún se les redirigirá a Zoom Meetings para que inicien sesión y autoricen a AWS Glue a acceder a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para obtener documentación pública de Zoom Meetings sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Uso de OAuth 2.0](https://developers.zoom.us/docs/api/using-zoom-apis/#using-oauth-20).

Para configurar una conexión a Zoom Meetings:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para las conexiones 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 Zoom Meetings.

   1. Indique el entorno de Zoom Meetings al que se desea 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 Zoom Meetings
<a name="zoom-meetings-reading-from-entities"></a>

**Requisito previo**

Un objeto de Zoom Meetings del que desea leer. Necesitará el nombre del objeto, por ejemplo `Group` o `Zoom Rooms`.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Zoom Rooms | No | Sí | No | Sí | No | 
| Grupo | No | No | No | Sí | No | 
| Miembro del grupo | Sí | Sí | No | Sí | No | 
| Administrador de grupo | No | Sí | No | Sí | No | 
| Informe (diario) | Sí | No | No | Sí | No | 
| Roles | No | No | No | Sí | No | 
| Usuarios | Sí | Sí | No | Sí | No | 

**Ejemplo:**

```
zoom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="zoom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v2"
    }
)
```

**Detalles de entidades y campos de Zoom Meetings**:

Zoom Meetings carga dinámicamente los campos disponibles bajo la entidad seleccionada. Según el tipo de datos de los campos, se admiten los operadores de filtro siguientes.

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

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

Zoom Meetings no admite la partición basada en filtros ni la partición basada en registros.

# Opciones de conexión a Zoom Meetings
<a name="zoom-meetings-connection-options"></a>

A continuación se indican las opciones de conexión para Zoom Meetings:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre de la entidad de Zoom Meetings. Por ejemplo, `group`.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Zoom Meetings que desea utilizar. El valor será `v2`, ya que Zoom Meetings actualmente solo admite la versión v2.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Una lista separada por comas de las columnas que desea seleccionar para la entidad seleccionada.
+ `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.

# Limitaciones de Zoom Meetings
<a name="zoom-meetings-limitations"></a>

Las siguientes son limitaciones o notas correspondientes a Zoom Meetings:
+ Zoom Meetings no admite orderby.
+ Zoom Meetings no admite la partición basada en filtros porque no hay ningún campo que pueda satisfacer los criterios requeridos.
+ Zoom Meetings no es compatible con la partición basada en registros porque no admite el límite de paginación ni la paginación basada en desplazamiento.

# Agregar una conexión JDBC con sus propios controladores JDBC
<a name="console-connections-jdbc-drivers"></a>

 Puede utilizar su propio controlador JDBC cuando utilice una conexión JDBC. Si el controlador predeterminado utilizado por el rastreador AWS Glue no puede conectarse a una base de datos, puede utilizar su propio controlador JDBC. Por ejemplo, si desea utilizar el SHA-256 con su base de datos de Postgres y los controladores Postgres más antiguos no lo admiten, puede utilizar su propio controlador JDBC. 

## Orígenes de datos compatibles
<a name="w2aac25c27d135b5"></a>


| Orígenes de datos compatibles | Orígenes de datos no compatibles | 
| --- | --- | 
| MySQL | Snowflake | 
| Postgres |  | 
| Oracle |  | 
| Redshift |  | 
| SQL Server |  | 
| Aurora\$1 |  | 

 \$1Se admite si se utiliza el controlador JDBC nativo. No se pueden aprovechar todas las funciones del controlador. 

## Agregar un controlador JDBC a una conexión JDBC
<a name="w2aac25c27d135b9"></a>

**nota**  
 Si decide incorporar sus versiones de controladores JDBC, los rastreadores AWS Glue consumirán recursos en trabajos AWS Glue y en los buckets de Amazon S3 para garantizar que los controladores proporcionados se ejecuten en su entorno. El uso adicional de los recursos se reflejará en su cuenta. El costo de los rastreadores AWS Glue y los trabajos se incluye en la categoría AWS Glue de facturación. Además, proporcionar su propio controlador JDBC no significa que el rastreador pueda aprovechar todas las funciones del controlador. 

**Agregar su propio controlador JDBC a una conexión JDBC:**

1.  Agregue el archivo del controlador JDBC a una ubicación de Amazon S3. Puede crear un bucket o una carpeta o utilizar un bucket o una carpeta existente. 

1.  En la consola AWS Glue, seleccione **Conexiones** en el menú de la izquierda, en el **catálogo de datos** y luego cree una conexión nueva. 

1.  Rellene los campos de las **Propiedades de la conexión** y elija JDBC para **Tipo de conexión.** 

1.  En **Acceso a la conexión**, ingrese la **URL del JDBC** y **el nombre de la clase de controlador del JDBC**: *opcional*. El nombre de la clase de controlador debe corresponder a un origen de datos compatible con los rastreadores AWS Glue.   
![\[La captura de pantalla muestra un origen de datos con JDBC seleccionado y una conexión en la ventana Agregar un origen de datos.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/add-connection-connection-access.png)

1.  Elija la ruta de Amazon S3 en la que se encuentra el controlador JDBC en el campo **Ruta Amazon S3 del controlador JDBC**: *opcional.* 

1.  Rellene los campos correspondientes al tipo de credencial si ingresa un nombre de usuario y una contraseña o un secreto. Cuando haya terminado, elija **Crear conexión**. 
**nota**  
 Las pruebas de conexiones no son compatibles en la actualidad. Al rastrear el origen de datos con un controlador JDBC que haya proporcionado, el rastreador omite este paso. 

1.  Agregue la conexión recién creada a un rastreador. En la consola AWS Glue, seleccione **Rastreadores** en el menú de la izquierda, en el **Catálogo de datos** y cree un rastreador nuevo. 

1.  En el asistente **Agregar rastreadores**, en el paso 2, elija **Agregar un origen de datos**.   
![\[La captura de pantalla muestra un origen de datos con JDBC seleccionado y una conexión en la ventana Agregar un origen de datos.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/add-crawler-add-data-source.png)

1.  Elija **JDBC** como origen de datos y elija la conexión que se creó en los pasos anteriores. Control 

1.  Para utilizar su propio controlador JDBC con un rastreador AWS Glue, agregue los siguientes permisos a la función utilizada por el rastreador:
   +  Conceda permisos para las siguientes acciones de trabajos: `CreateJob`, `DeleteJob`, `GetJob`, `GetJobRun`, `StartJobRun`. 
   +  Conceda permisos para las acciones de IAM: `iam:PassRole` 
   +  Conceda permisos para todas las acciones de Amazon S3: `s3:DeleteObjects`, `s3:GetObject`, `s3:ListBucket`, `s3:PutObject`. 
   +  Conceda al director de servicio acceso al bucket o carpeta en la política de IAM. 

    Política de IAM de ejemplo: 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:GetObject",
           "s3:ListBucket",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/driver-parent-folder/driver.jar",
           "arn:aws:s3:::amzn-s3-demo-bucket"
         ]
       }
     ]
   }
   ```

------

    El rastreador de AWS Glue crea dos carpetas: \$1glue\$1job\$1crawler y \$1crawler.

   Si el archivo jar del controlador se encuentra en la carpeta `s3://amzn-s3-demo-bucket/driver.jar"`, agregue los siguientes recursos: 

   ```
   "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket/_glue_job_crawler/*",
     		 "arn:aws:s3:::amzn-s3-demo-bucket/_crawler/*"
               ]
   ```

   Si el archivo jar del controlador se encuentra en la carpeta `s3://amzn-s3-demo-bucket/tmp/driver/subfolder/driver.jar"`, agregue los siguientes recursos: 

   ```
   "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket/tmp/_glue_job_crawler/*",
     		"arn:aws:s3:::amzn-s3-demo-bucket/tmp/_crawler/*"
               ]
   ```

1.  Si utiliza una VPC, debe permitir el acceso al punto de conexión AWS Glue al crear el punto de conexión de la interfaz y agregarlo a la tabla de enrutamiento. Para obtener más información, consulte [Creación de un punto de conexión de VPC para AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/vpc-interface-endpoints.html#vpc-endpoint-create). 

1.  Si utiliza el cifrado en su catálogo de datos, cree el punto de conexión de la interfaz AWS KMS y agréguelo a la tabla de enrutamiento. Para obtener más información, consulte [Crear un punto de conexión de VPC para AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html#vpce-create-endpoint). 