

# 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).