

# Conexão com o SendGrid
<a name="connecting-to-data-sendgrid"></a>

O SendGrid é uma plataforma de comunicação com clientes para e-mails transacionais e de marketing.
+ O conector do SendGrid ajuda na criação e gerenciamento de listas de contatos e na criação de campanhas de marketing por e-mail.
+ O SendGrid permite que empresas online, organizações sem fins lucrativos e outras entidades online criem e enviem e-mails de marketing para grandes públicos e monitorem o engajamento com esses e-mails.

**Topics**
+ [Suporte do AWS Glue para SendGrid](sendgrid-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](sendgrid-configuring-iam-permissions.md)
+ [Configuração do SendGrid](sendgrid-configuring.md)
+ [Configuração de conexões do SendGrid](sendgrid-configuring-connections.md)
+ [Leitura de entidades do SendGrid](sendgrid-reading-from-entities.md)
+ [Opções de conexão do SendGrid](sendgrid-connection-options.md)
+ [Limitações do SendGrid](sendgrid-limitations.md)

# Suporte do AWS Glue para SendGrid
<a name="sendgrid-support"></a>

O AWS Glue oferece suporte ao SendGrid da seguinte forma:

**Compatível como fonte?**  
Sim. É possível usar trabalhos de ETL do AWS Glue para consultar dados do SendGrid.

**Compatível como destino?**  
Nº

**Versões da API do SendGrid com suporte**  
Versões da API do SendGrid com suporte:
+ v3

# Políticas que contêm as operações de API para criar e usar conexões
<a name="sendgrid-configuring-iam-permissions"></a>

O exemplo de política a seguir descreve as permissões necessárias do AWS IAM para criar e usar conexões. Se você estiver criando um novo perfil, crie uma política que contenha o seguinte:

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

****  

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

------

Se você não quiser usar o método acima, como alternativa use as seguintes políticas do IAM gerenciadas:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – Concede acesso a recursos que vários processos do AWS Glue exigem para fazer a execução em seu nome. Esses recursos incluem o AWS Glue, Amazon S3, IAM, CloudWatch Logs e Amazon EC2. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os processos do AWS Glue terão as permissões necessárias. Esta política geralmente é anexada a funções especificadas durante a definição de crawlers, trabalhos e endpoints de desenvolvimento.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): concede acesso total aos recursos do AWS Glue quando uma identidade à qual a política está anexada usa o Console de Gerenciamento da AWS. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os usuários poderão acessar todos os recursos do console. Esta política geralmente é anexada aos usuários do console do AWS Glue.

# Configuração do SendGrid
<a name="sendgrid-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do SendGrid, os seguintes requisitos deverão ser atendidos:

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

Estes são os requisitos mínimos:
+ Você tem uma conta do SendGrid com uma chave de API.
+ Sua conta do SendGrid tem acesso à API com uma licença válida.

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do SendGrid. Para conexões típicas, você não precisa fazer mais nada no SendGrid.

# Configuração de conexões do SendGrid
<a name="sendgrid-configuring-connections"></a>

O SendGrid oferece suporte a autenticação personalizada.

Para obter a documentação pública do SendGrid sobre a geração das chaves de API necessárias para autenticação personalizada, consulte [Autenticação](https://www.twilio.com/docs/sendgrid/api-reference/how-to-use-the-sendgrid-v3-api/authentication).

Para configurar uma conexão do SendGrid:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes:

   1. Para a aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `api_key`.

   1. Observação: é necessário criar um segredo para a sua conexão no AWS Glue.

1. No AWS Glue Glue Studio, crie uma conexão em **Conexões de dados** seguindo estas etapas:

   1. Ao selecionar um **Tipo de conexão**, escolha SendGrid.

   1. Forneça o `INSTANCE_URL` da instância do SendGrid à qual você deseja se conectar.

   1. Selecione o perfil do AWS IAM que o AWS Glue pode assumir e tem permissões para as seguintes ações:

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

****  

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

------

   1. Selecione o `secretName` que você deseja usar para essa conexão no AWS Glue para colocar os tokens.

   1. Selecione as opções de rede se quiser usar sua rede.

1. Conceda permissão ao perfil do IAM associado ao seu trabalho do AWS Glue para ler `secretName`.

# Leitura de entidades do SendGrid
<a name="sendgrid-reading-from-entities"></a>

**Pré-requisito**

Um objeto do SendGrid do qual você deseja ler. Você precisará do nome do objeto, como `lists`, `singlesends` ou `segments`.

**Entidades compatíveis quanto à origem**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Listas | Não | Sim | Não | Sim | Não | 
| Envios únicos | Sim | Sim | Não | Sim | Não | 
| Estatísticas de campanhas de marketing, Automações | Sim | Sim | Não | Sim | Não | 
| Estatísticas de campanhas de marketing, Envios únicos | Sim | Sim | Não | Sim | Não | 
| Segmentos | Sim | Não | Não | Sim | Não | 
| Contatos | Sim | Não | Não | Sim | Não | 
| Categoria | Não | Não | Não | Sim | Não | 
| Estatísticas | Sim | Não | Não | Sim | Não | 
| Cancelar inscrição em grupos | Sim | Não | Não | Sim | Não | 

**Exemplo:**

```
sendgrid_read = glueContext.create_dynamic_frame.from_options(
    connection_type="sendgrid",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "lists",
        "API_VERSION": "v3",
        "INSTANCE_URL": "instanceUrl"
    }
```

**Detalhes de entidade e campo do SendGrid**:

Entidades com metadados estáticos:

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

**nota**  
Os tipos de dados Struct e List são convertidos no tipo de dados String, e o tipo de dados DateTime é convertido em Timestamp na resposta dos conectores.

## Particionamento de consultas
<a name="sendgrid-reading-partitioning-queries"></a>

O SendGrid não oferece suporte ao particionamento baseado em filtros ou ao particionamento baseado em registros.

# Opções de conexão do SendGrid
<a name="sendgrid-connection-options"></a>

Estas são as opções de conexão do SendGrid:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no SendGrid.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do SendGrid que você deseja usar.
+ `INSTANCE_URL`(string): (obrigatório) usado para leitura. Um URL válido da instância do SendGrid.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto.
+ `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL.
+ `QUERY`(String): padrão: vazia. Usado para leitura. Consulta completa do Spark SQL.

# Limitações do SendGrid
<a name="sendgrid-limitations"></a>

A seguir estão as limitações ou notas do SendGrid:
+ Só há suporte para a extração incremental na entidade Estatísticas no campo `start_date`, e na entidade Contato no campo `event_timestamp`.
+ Só há suporte para paginação nas entidades Estatísticas da campanha de marketing (automações), Estatísticas da campanha de marketing (envios únicos), Envios únicos e Listas.
+ Para a entidade Estatísticas, `start_date` é um parâmetro de filtro obrigatório.
+ Uma chave de API com acesso restrito não pode oferecer suporte ao acesso de leitura para as entidades API de e-mail e Estatísticas. Use uma chave de API com acesso total. Para obter mais informações, consulte a [Visão geral da API](https://www.twilio.com/docs/sendgrid/api-reference/api-keys/create-api-keys#api-overview).