

# Adicionar uma conexão do AWS Glue
<a name="console-connections"></a>

 Você pode se conectar a fontes de dados no Spark AWS Glue de forma programática. Para obter mais informações, consulte . [Tipos e opções de conexão para ETL no AWS Glue para Spark](aws-glue-programming-etl-connect.md) 

É possível usar também o console do AWS Glue para adicionar, editar, excluir e testar conexões. Para obter informações sobre as conexões do AWS Glue, consulte [Conectar a dados](glue-connections.md).

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

# Conexão com o Adobe Analytics
<a name="connecting-to-adobe-analytics"></a>

O Adobe Analytics é uma plataforma robusta de análise de dados que coleta dados de experiências digitais multicanais que apoiam a jornada do cliente e fornecem ferramentas para analisar os dados. É uma plataforma comumente usada por profissionais de marketing e analistas de negócios para fins de análise de negócios. Se você usa o Adobe Analytics, pode conectar o AWS Glue à sua conta do Adobe Analytics. Em seguida, será possível usar o Adobe Analytics como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Adobe Analytics e os serviços da AWS ou outras aplicações com suporte.

**Topics**
+ [Suporte do AWS Glue para Adobe Analytics](adobe-analytics-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](adobeanalytics-configuring-iam-permissions.md)
+ [Configuração do Adobe Analytics](adobeanalytics-configuring.md)
+ [Configuração de conexões do Adobe Analytics](adobeanalytics-configuring-connections.md)
+ [Leitura de entidades do Adobe Analytics](adobeanalytics-reading-from-entities.md)
+ [Opções de conexão do Adobe Analytics](adobeanalytics-connection-options.md)
+ [Criação de uma conta do Adobe Analytics](adobeanalytics-create-account.md)
+ [Limitações](adobeanalytics-connector-limitations.md)

# Suporte do AWS Glue para Adobe Analytics
<a name="adobe-analytics-support"></a>

O AWS Glue oferece suporte ao Adobe Analytics da seguinte forma:

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

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

**Versões da API do Adobe Analytics com suporte**  
 v2.0 

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Adobe Analytics
<a name="adobeanalytics-configuring"></a>

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

## Requisitos mínimos
<a name="adobeanalytics-configuring-min-requirements"></a>
+ Você tem uma conta do Adobe Analytics com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Adobe Analytics](adobeanalytics-create-account.md). 
+  Sua conta do Adobe Analytics está habilitada para acesso à API. O acesso à API está ativado por padrão para as edições Select, Prime e Ultimate. 

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

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

 O Adobe Analytics oferece suporte ao tipo de concessão `AUTHORIZATION_CODE` para `OAuth2`.

Esse tipo de concessão é considerado um `OAuth` de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Os usuários ainda podem optar por criar sua própria aplicação conectada no Adobe Analytics e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Adobe Analytics para fazer login e autorizar o acesso do AWS Glue aos recursos. 

Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

 Para obter a documentação pública do Adobe Analytics sobre a criação de uma aplicação conectada para o fluxo OAuth AUTHORIZATION\$1CODE, consulte [APIs do Adobe Analytics](https://adobedocs.github.io/analytics-2.0-apis/). 

Para configurar uma conexão do Adobe Analytics:

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

   Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

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

   1. Forneça o `x_api_key, instanceUrl` do Adobe Analytics ao qual deseja se conectar.

   1. Selecione o perfil do 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 Adobe Analytics
<a name="adobeanalytics-reading-from-entities"></a>

 **Pré-requisitos** 

Um objeto do Adobe Analytics do qual você gostaria de ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Anotação | Sim | Sim | Sim | Sim | Não | 
| Métricas calculadas | Sim | Sim | Sim | Sim | Não | 
| Função de métricas calculadas | Sim | Não | Não | Sim | Não | 
| Compartilhamentos de metadados de componentes | Sim | Sim | Não | Sim | Não | 
| Intervalos de datas | Sim | Sim | Não | Sim | Não | 
| Dimensões | Sim | Não | Não | Sim | Não | 
| Métricas | Sim | Não | Não | Sim | Não | 
| Projetos | Sim | Não | Não | Sim | Não | 
| Item principal dos relatórios | Sim | Sim | Não | Sim | Não | 
| Segmentos | Sim | Sim | Sim | Sim | Não | 
| Logs de uso | Sim | Sim | Não | Sim | Não | 

 **Exemplo** 

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

 **Detalhes de entidade e campo do Adobe Analytics** 
+ [Anotações](https://adobedocs.github.io/analytics-2.0-apis/#/Annotations)
+ [Métricas calculadas](https://adobedocs.github.io/analytics-2.0-apis/#/Calculated%20Metrics)
+ [Metadados do componente](https://adobedocs.github.io/analytics-2.0-apis/#/Component%20Meta%20Data)
+ [Intervalos de datas](https://adobedocs.github.io/analytics-2.0-apis/#/Date%20Ranges)
+ [Dimensões](https://adobedocs.github.io/analytics-2.0-apis/#/Dimensions)
+ [Métricas](https://adobedocs.github.io/analytics-2.0-apis/#/Metrics)
+ [Projetos do](https://adobedocs.github.io/analytics-2.0-apis/#/Projects)
+ [Relatórios](https://adobedocs.github.io/analytics-2.0-apis/#/Reports)
+ [Segmentos](https://adobedocs.github.io/analytics-2.0-apis/#/Segments)
+ [Usuários](https://adobedocs.github.io/analytics-2.0-apis/#/Users)
+ [Logs de uso](https://adobedocs.github.io/analytics-2.0-apis/#/Usage%20Logs)

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

Estas são as opções de conexão do Adobe Analytics:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Adobe Analytics. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Adobe Analytics que você deseja usar. Por exemplo, v2.0. 
+  `X_API_KEY`(string): (obrigatório) usado para leitura/gravação. É necessário para autenticar o desenvolvedor ou a aplicação que faz solicitações à API. 
+  `SELECTED_FIELDS`(lista<string>): padrão: vazio (SELECT \$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: vazio. Usado para leitura. Consulta completa do Spark SQL. 

# Criação de uma conta do Adobe Analytics
<a name="adobeanalytics-create-account"></a>

1. Registre-se no programa de parceiros de intercâmbio acessando o [programa Adobe Partner](https://partners.adobe.com/exchangeprogram/creativecloud.html). 

1. Escolha **Participar do Programa de intercâmbio**. 

1. Registre-se ou crie uma conta usando seu endereço de e-mail corporativo. 

1. Na caixa de sugestões, selecione a empresa apropriada que tenha uma assinatura do produto Adobe Analytics. 

1. Certifique-se de que a conta seja registrada em uma organização válida (da lista disponível) que tenha uma assinatura ativa do Adobe Analytics. 

1. Após a aprovação da administração da empresa, ative sua conta clicando no link no e-mail de aprovação. 

**Verificação se a conta criada tem acesso ao serviço Adobe Analytics**

1. Faça login no [Adobe Admin Console](https://adminconsole.adobe.com/).

1. Verifique o nome da organização no canto superior direito da página para garantir que você tenha feito login na empresa correta.

1. Selecione **Produtos** e verifique se o Adobe Analytics está disponível.
**nota**  
Se nenhuma organização estiver disponível ou se o produto Adobe Analytics estiver esmaecido ou indisponível, é provável que sua conta não esteja associada a uma organização e/ou não tenha uma assinatura ativa do Adobe Analytics. Entre em contato com o administrador do sistema para solicitar acesso a esse serviço para sua conta.

**Criação de um projeto e de credenciais do `OAuth2.0`**

1. Faça login na conta do Adobe Analytics na qual você deseja que a [aplicação do OAuth 2.0](https://developer.adobe.com/developer-console/docs/guides/services/services-add-api-oauth/) seja criada.

1. Selecione **Projeto** e, em seguida, **Criar um novo projeto**. 

1. Para adicionar um projeto, selecione **Adicionar ao projeto** e, em seguida, selecione **API**.

1. Selecione **API do Adobe Analytics**.

1. Selecione **OAUTH** como autenticação do usuário.

1. Selecione **Web** como `OAUTH` e forneça o URI de redirecionamento. 

   Para o URI de redirecionamento e seu padrão, veja o seguinte:
   + URI de redirecionamento padrão do `OAuth 2.0`: um URI de redirecionamento padrão é o URL da página que a Adobe acessará durante o processo de autenticação. Por exemplo, ., `https://ap-southeast-2.console.aws.amazon.com/appflow/oauth` 
   + Padrão de URI de redirecionamento do OAuth 2.0: um padrão de URI de redirecionamento é um caminho de URI (ou uma lista de caminhos separados por vírgula) para o qual a Adobe pode redirecionar (se solicitado) quando o fluxo de login for concluído. Por exemplo, ., `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Adicione os seguintes escopos: 
   + `openid`
   + `read_organizations`
   + `additional_info.projectedProductContext`
   + `additional_info.job_function`

1. Escolha **Salvar credencial**.

1. Depois que a aplicação for criada, copie os valores `Client ID` e `Client Secret` para um arquivo de texto.

# Limitações
<a name="adobeanalytics-connector-limitations"></a>

Estas são as limitações do conector do Adobe Analytics:
+ O Adobe Analytics não oferece suporte ao particionamento baseado em campos e baseado em registros. Não há suporte para o particionamento baseado em campos, pois não é possível consultar os campos particionados. Não pode haver suporte ao particionamento baseado em registros, pois não há provisão para obter 'offset' para paginação.
+ Na entidade `Report Top Item`, os parâmetros de consulta `startDate` e `endDate` não estão funcionando conforme o esperado. A resposta não está sendo filtrada com base nesses parâmetros, o que está causando problemas com o filtro e o fluxo incremental dessa entidade. 
+ Para as entidades `Annotation`, `Calculated Metrics`, `Calculated Metrics Function`, `Date Ranges`, `Dimension`, `Metric`, `Project`, `Report Top Items` e `Segment`, o parâmetro de consulta `locale` especifica qual idioma deve ser usado para seções localizadas de respostas e não filtra os registros. Por exemplo, `locale="ja_JP"` exibirá os dados em japonês. 
+ Entidade `Report Top Item`: os filtros nos campos `dateRange` e `lookupNoneValues` não estão funcionando no momento. 
+ Entidade `Segment`: com o valor do filtro `includeType=“templates”`, os filtros em outros campos não estão funcionando. 
+ Entidade `Date Range`: o filtro no campo `curatedRsid` não está funcionando. 
+ Entidade `Metric entity`: o filtro no campo segmentável com valor "falso" fornece resultados para valores verdadeiros e falsos.

# Conexão com o Adobe Marketo Engage
<a name="connecting-to-data-adobe-marketo-engage"></a>

O Adobe Marketo Engage é uma plataforma de automação de marketing que permite aos profissionais de marketing gerenciar programas e campanhas multicanais personalizados para clientes atuais e potenciais.

**Topics**
+ [AWS Glue compatível com o Adobe Marketo Engage](adobe-marketo-engage-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](adobe-marketo-engage-configuring-iam-permissions.md)
+ [Configurar o Adobe Marketo Engage](adobe-marketo-engage-configuring.md)
+ [Configuração de conexões do Adobe Marketo Engage](adobe-marketo-engage-configuring-connections.md)
+ [Leitura de entidades do Adobe Marketo Engage](adobe-marketo-engage-reading-from-entities.md)
+ [Gravação em entidades do Adobe Marketo Engage](adobe-marketo-engage-writing-to-entities.md)
+ [Opções de conexão do Adobe Marketo Engage](adobe-marketo-engage-connection-options.md)
+ [Limitações e notas do conector do Adobe Marketo Engage](adobe-marketo-engage-connector-limitations.md)

# AWS Glue compatível com o Adobe Marketo Engage
<a name="adobe-marketo-engage-support"></a>

O AWS Glue é compatível com o Adobe Marketo Engage da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Adobe Marketo Engage.

**Compatível como destino?**  
Sim. Você pode usar tarefas de ETL do AWS Glue para gravar dados no Adobe Marketo.

**Versões da API compatíveis com o Adobe Marketo Engage**  
As seguintes versões da API do Adobe Marketo Engage são compatíveis:
+ v1

Para conferir a compatibilidade das entidades por versão específica, consulte as entidades compatíveis para a fonte.

# Políticas que contêm as operações de API para criar e usar conexões
<a name="adobe-marketo-engage-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.

# Configurar o Adobe Marketo Engage
<a name="adobe-marketo-engage-configuring"></a>

Para usar o AWS Glue para transferir dados do Adobe Marketo Engage, os seguintes requisitos deverão ser atendidos:

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

São requisitos mínimos:
+ Uma conta do Adobe Marketo Engage com credenciais de cliente.
+ Sua conta do Adobe Marketo Engage tem acesso de API com uma licença válida.

Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do Adobe Marketo Engage. Para conexões típicas, você não precisa fazer mais nada no Adobe Marketo Engage.

## Obtenção de credenciais do Outh 2.0
<a name="adobe-marketo-engage-configuring-creating-adobe-marketo-engage-oauth2-credentials"></a>

Para obter credenciais de API para que você possa fazer chamadas autenticadas para sua instância, consulte [API REST do Adobe Marketo](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api)

# Configuração de conexões do Adobe Marketo Engage
<a name="adobe-marketo-engage-configuring-connections"></a>

O Adobe Marketo Engage oferece suporte ao tipo de concessão CLIENT CREDENTIALS para OAuth2.
+ Esse tipo de concessão é considerado OAuth 2.0 de 2 pernas, pois é usado pelos clientes para obter um token de acesso fora do contexto de um usuário. O AWS Glue é capaz de usar o ID do cliente e o segredo do cliente para autenticar as APIs do Adobe Marketo Engage, que são fornecidas pelos serviços personalizados que você define.
+ Cada serviço personalizado é de propriedade de um usuário somente de API que tem um conjunto de perfis e permissões que autorizam o serviço a realizar ações específicas. Um token de acesso é associado a um único serviço personalizado.
+ Esse tipo de concessão resulta em um token de acesso de curta duração, que pode ser renovado com uma chamada a um endpoint de identidade.
+ Para obter a documentação pública do Adobe Marketo Engage sobre OAuth 2.0 com credenciais de cliente, consulte [Autenticação](https://developers.adobe-marketo-engage.com/rest-api/authentication/) no Guia do desenvolvedor do Adobe Marketo Engage.

Para configurar uma conexão do Adobe Marketo Engage:

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

   1. Nota: é preciso criar um segredo por conexão em 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 Adobe Marketo Engage.

   1. Forneça o `INSTANCE_URL` da instância do Adobe Marketo Engage à 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 Adobe Marketo Engage
<a name="adobe-marketo-engage-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Adobe Marketo Engage do qual você deseja ler. Você precisará do nome do objeto, como leads, atividades ou customobjects. As tabelas a seguir mostram as entidades compatíveis.

**Entidades compatíveis quanto à origem (síncronas)**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| leads | Sim | Sim | Não | Sim | Não | 
| atividades | Sim | Sim | Não | Sim | Não | 
| customobjects | Sim | Sim | Não | Sim | Não | 

**Entidades compatíveis quanto à origem (assíncronas)**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| leads | Sim | Não | Não | Sim | Sim | 
| atividades | Sim | Não | Não | Sim | Não | 
| customobjects | Sim | Não | Não | Sim | Sim | 

**Exemplo:**

```
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"
    }
```

**Detalhes da entidades e dos campos do Adobe Marketo Engage**:

**Entidades com metadados estáticos**: 

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

**Entidades com metadados dinâmicos**:

Para as entidades a seguir, o Adobe Marketo Engage fornece endpoints para buscar metadados dinamicamente, para que o suporte do operador seja capturado no nível do tipo de dados de cada entidade.

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

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

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo DateTime, aceitamos o valor no formato ISO.

  Exemplo de valor válido:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

A tabela a seguir descreve os detalhes do suporte do campo de particionamento da entidade:

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

Exemplo:

```
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"
    }
```

# Gravação em entidades do Adobe Marketo Engage
<a name="adobe-marketo-engage-writing-to-entities"></a>

**Pré-requisitos**
+ Um objeto do Adobe Marketo em que você gostaria de gravar. Você precisará do nome do objeto, como `leads` ou `customobjects`.
+ O conector do Adobe Marketo é compatível com três operações de gravação:
  + INSERT
  + UPSERT
  + UPDATE
+ Para operações de gravação `UPSERT` e `UPDATE`, você deve fornecer a opção `ID_FIELD_NAMES` para especificar o campo ID para os registros. Ao trabalhar com a entidade `leads`, use `email` como `ID_FIELD_NAMES` para operações `UPSERT` e `id` para operações `UPDATE`. Para a entidade `customobjects`, use `marketoGUID` como `ID_FIELD_NAMES` para as operações `UPDATE` e `UPSERT`.

**Entidades compatíveis para destino (Síncrono)**


| Nome da entidade | Será compatível como conector de destino | Pode ser inserido | Pode ser atualizado | Pode ser upserted | 
| --- | --- | --- | --- | --- | 
| leads | Sim | Sim (em massa) | Sim (em massa) | Sim (em massa) | 
| customobjects | Sim | Sim (em massa) | Sim (em massa) | Sim (em massa) | 

**Exemplo:**

**Operação 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"
    }
```

**Operação 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 as entidades `leads` e `customobjects`, o Adobe Marketo fornece endpoints para buscar metadados dinamicamente, de forma que os campos graváveis sejam identificados na resposta da API do Marketo.

# Opções de conexão do Adobe Marketo Engage
<a name="adobe-marketo-engage-connection-options"></a>

Confira abaixo as opções de conexão do Adobe Marketo Engage:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Adobe Marketo Engage.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API REST do Adobe Marketo Engage que você deseja usar. Por exemplo: v1.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `TRANSFER_MODE`(String): padrão: SYNC. Usado para leitura assíncrona.
+ `WRITE_OPERATION`(string): padrão: INSERT. Usado para gravação. O valor deve ser INSERT, UPDATE e UPSERT.
+ `ID_FIELD_NAMES`(string): padrão: null. Necessário para UPDATE e UPSERT.

# Limitações e notas do conector do Adobe Marketo Engage
<a name="adobe-marketo-engage-connector-limitations"></a>

Estas são as limitações ou notas do conector do Adobe Marketo Engage:
+ 'sinceDatetime' e 'activityTypeId' são parâmetros de filtro obrigatórios para a entidade Sync Activities.
+ As assinaturas recebem 50.000 chamadas de API por dia (que são reiniciadas diariamente às 00:00 CST). Uma capacidade diária adicional pode ser adquirida como parte de uma assinatura do Adobe Marketo Engage. Para referência, consulte [API REST do Adobe Marketo](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api).
+ O período máximo para o filtro do intervalo de datas (`createdAt` ou `updatedAt`) é de 31 dias. Para referência, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ As assinaturas recebem no máximo 10 trabalhos de extração em lote na fila a qualquer momento. Para referência, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ Por padrão, os trabalhos de extração são limitados a 500 MB por dia (que são redefinidos diariamente às 00:00 CST). Uma capacidade diária adicional pode ser adquirida como parte de uma assinatura do Adobe Marketo Engage. Para referência, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ O número máximo de trabalhos de exportação simultâneos é 2. Para referência, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ O número máximo de trabalhos de exportação em fila (incluindo os trabalhos que estão sendo exportados atualmente) é 10. Para referência, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ O tamanho máximo de arquivo permitido é de 1 GB para extrair de um trabalho em lote.
+ Depois que um trabalho assíncrono for criado, o período de retenção do arquivo será de 7 dias antes da expiração. Para referência, consulte [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ `createdAt` ou `updatedAt` são parâmetros de filtro obrigatórios para a entidade Async Leads.
+ `createdAt` é um parâmetro de filtro obrigatório para a entidade Async Activities.
+ `updatedAt` é um parâmetro de filtro obrigatório para a entidade Async Custom Object.
+ Ao usar conectores SaaS do AWS Glue, os usuários não conseguem identificar quais registros específicos falharam durante uma operação de gravação nas plataformas SaaS de destino em casos de falhas parciais.
+ Ao usar operações de gravação SYNC, quaisquer campos com valores nulos no arquivo de entrada serão automaticamente descartados e não serão enviados para a plataforma SaaS.
+ Você pode criar ou atualizar até 300 registros em um lote para gravação SYNC.

Para obter mais informações, consulte [Práticas recomendadas de integração do Adobe Marketo Engage](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/marketo-integration-best-practices) e [Extração em lote](https://https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-activity-extract).

# Conectar ao Amazon Redshift no AWS Glue Studio
<a name="connecting-to-data-redshift"></a>

**nota**  
 Você pode usar o AWS Glue para Spark para ler e gravar tabelas nos Amazon Redshift bancos de dados do AWS Glue Studio. Para configurar Amazon Redshift com AWS Glue trabalhos de forma programática, consulte [Conexões do Redshift](aws-glue-programming-etl-connect-redshift-home.md). 

 O AWS Glue fornece suporte integrado para o Amazon Redshift. O AWS Glue Studio fornece uma interface visual para se conectar ao Amazon Redshift, criar trabalhos de integração de dados e executá-los no runtime do AWS Glue Studio Spark sem servidor. 

**Topics**
+ [Criar uma conexão do Amazon Redshift](creating-redshift-connection.md)
+ [Criar um nó de origem do Amazon Redshift](creating-redshift-source-node.md)
+ [Criar um nó de destino do Amazon Redshift](creating-redshift-target-node.md)
+ [Opções avançadas](creating-redshift-connection-advanced-options.md)

# Criar uma conexão do Amazon Redshift
<a name="creating-redshift-connection"></a>

## Permissões necessárias
<a name="creating-redshift-connection-permissions"></a>

 São necessárias permissões adicionais para usar clusters do Amazon Redshift clusters e ambientes sem servidor do Amazon Redshift. Para obter mais informações sobre como adicionar permissões a trabalhos de ETL, consulte [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 
+  redshift:DescribeClusters 
+  redshift-serverless:ListWorkgroups 
+  redshift-serverless:ListNamespaces 

## Visão geral
<a name="w2aac25c27c13c11b5"></a>

 Ao adicionar uma conexão do Amazon Redshift, você pode escolher uma do Amazon Redshift existente ou criar uma nova conexão ao adicionar um nó **Fonte de dados - Redshift** no AWS Glue Studio. 

 O AWS Glue oferece suporte a clusters do Amazon Redshift e ambientes sem servidor do Amazon Redshift. Quando você cria uma conexão, os ambientes sem servidor do Amazon Redshift exibem o rótulo **serverless** ao lado da opção de conexão. 

 Para obter mais informações sobre como criar uma conexão do Amazon Redshift, consulte [ Moving data to and from Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using). 

# Criar um nó de origem do Amazon Redshift
<a name="creating-redshift-source-node"></a>

## Permissões necessárias
<a name="creating-redshift-source-node-permissions"></a>

 Trabalhos do AWS Glue Studio usando fontes de dados do Amazon Redshift exigem permissões adicionais. Para obter mais informações sobre como adicionar permissões a trabalhos de ETL, consulte [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 As seguintes permissões são necessárias para usar uma conexão com Amazon Redshift. 
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 
+  redshift-data:DescribeTable 
+  redshift-data:ExecuteStatement 
+  redshift-data:DescribeStatement 
+  redshift-data:GetStatementResult 

## Adicionar de uma fonte de dados do Amazon Redshift
<a name="creating-redshift-source-node-add"></a>

**Para adicionar um nó **fonte de dados - Amazon Redshift**:**

1.  Escolha o tipo de acesso ao Amazon Redshift: 
   +  Conexão direta de dados (recomendada): escolha essa opção se quiser acessar seus dados do Amazon Redshift diretamente. Essa é a opção recomendada e também a padrão. 
   +  Data Catalog tables: escolha essa opção se você tiver tabelas do catálogo de dados que deseja usar. 

1.  Se você escolher Conexão de dados direta, escolha a conexão para sua fonte de dados do Amazon Redshift. Isso pressupõe que a conexão já exista e que você possa selecionar entre as conexões existentes. Se precisar criar uma conexão, escolha **Criar conexão com o Redshift**. Para obter mais informações, consulte [Visão geral do uso de conectores e conexões](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. As informações sobre a conexão estão visíveis, incluindo URL, grupos de segurança, sub-rede, zona de disponibilidade, descrição e timestamps de criação (UTC) e última atualização (UTC). 

1.  Escolha uma opção de origem do Amazon Redshift: 
   +  **Escolher uma única tabela**: essa é a tabela que contém os dados que você deseja acessar de uma única tabela do Amazon Redshift. 
   +  **Inserir consulta personalizada**: permite que você acesse um conjunto de dados de várias tabelas do Amazon Redshift com base na sua consulta personalizada. 

1.  Se você escolheu uma única tabela, escolha o esquema do Amazon Redshift. A lista de esquemas disponíveis para escolha é determinada pela tabela selecionada. 

    Ou escolha **Inserir consulta personalizada**. Escolha essa opção para acessar um conjunto de dados personalizado de várias tabelas do Amazon Redshift. Ao escolher essa opção, insira a consulta do Amazon Redshift. 

    Ao se conectar a um ambiente Amazon Redshift sem servidor, adicione a seguinte permissão à consulta personalizada: 

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

    Você pode escolher **Inferir esquema** para ler o esquema com base na consulta que você inseriu. Você também pode escolher **Abrir editor de consultas do Redshift** para inserir uma consulta do Amazon Redshift. Para obter mais informações, acesse [Consultar um banco de dados usando o editor de consultas](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor.html). 

1.  Em **Desempenho e segurança**, escolha o diretório de teste do Amazon S3 e o perfil do IAM. 
   +  **Diretório de teste do Amazon S3**: escolha o local do Amazon S3 para armazenar temporariamente os dados do teste. 
   +  **Perfil do IAM**: escolha o perfil do IAM que pode gravar no local do Amazon S3 que você selecionou. 

1.  Em **Parâmetros personalizados do Redshift - opcional**, insira o parâmetro e o valor. 

# Criar um nó de destino do Amazon Redshift
<a name="creating-redshift-target-node"></a>

## Permissões necessárias
<a name="creating-redshift-target-node-permissions"></a>

 Trabalhos do AWS Glue Studio usando destino de dados do Amazon Redshift exigem permissões adicionais. Para obter mais informações sobre como adicionar permissões a trabalhos de ETL, consulte [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 As seguintes permissões são necessárias para usar uma conexão com Amazon Redshift. 
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 

## Adicionar um nó de destino do Amazon Redshift
<a name="w2aac25c27c13c15b5"></a>

**Para criar um nó de destino do Amazon Redshift:**

1.  Escolha uma tabela existente do Amazon Redshift como destino ou insira um novo nome de tabela. 

1.  Ao usar o nó de destino **Destino de dados: Redshift**, você pode escolher entre as seguintes opções: 
   +  **APPEND**: se uma tabela já existir, despejar todos os novos dados na tabela como uma inserção. Se a tabela não existir, criar e inserir todos os novos dados. 

      Além disso, marque a caixa se quiser atualizar (UPSERT) os registros existentes na tabela de destino. A tabela deve existir primeiro, caso contrário, a operação falhará. 
   +  **MERGE**: o AWS Glue atualizará ou anexará dados à sua tabela de destino com base nas condições que você especificar. 
**nota**  
 Para usar a ação de mesclagem no AWS Glue, você deve habilitar a funcionalidade de mesclagem do Amazon Redshift. Para obter instruções sobre como habilitar a mesclagem para sua instância do Amazon Redshift, consulte [MERGE (pré-visualização)](https://docs.aws.amazon.com/redshift/latest/dg/r_MERGE.html). 

      Escolha as opções: 
     + **Escolher chaves e ações simples**: escolha as colunas a serem usadas como chaves de correspondência entre os dados de origem e seu conjunto de dados de destino. 

       Especifique as seguintes opções quando correspondidas:
       + Atualizar o registro em seu conjunto de dados de destino com os dados da fonte.
       + Excluir o registro em seu conjunto de dados de destino.

       Especifique as seguintes opções quando não correspondidas:
       + Inserir os dados de origem como uma nova linha em seu conjunto de dados de destino.
       + Não executar nenhuma ação.
     + **Inserir declaração MERGE personalizada**: você pode então escolher **Validar declaração de Merge** para verificar se a declaração é válida ou inválida.
   +  **TRUNCATE**: se uma tabela já existir, truncar os dados da tabela limpando primeiro o conteúdo da tabela de destino. Se o truncamento for bem-sucedido, inserir todos os dados. Se a tabela não existir, criar a tabela e inserir todos os novos dados. Se o truncamento não tiver sucesso, a operação falhará. 
   +  **DROP**: se uma tabela já existir, excluir os metadados e os dados da tabela. Se a exclusão for bem-sucedida, inserir todos os dados. Se a tabela não existir, criar a tabela e inserir todos os novos dados. Se o drop não tiver sucesso, a operação falhará. 
   +  **CREATE**: Criar uma nova tabela com o nome padrão. Se o nome da tabela já existir, criar uma nova tabela com um aposto do nome de `job_datetime` para fins de exclusividade. Isso inserirá todos os dados na nova tabela. Se a tabela existir, o nome final da tabela terá o aposto anexado. Se a tabela não existir, uma tabela será criada. Em ambos os casos, uma nova tabela será criada. 

# Opções avançadas
<a name="creating-redshift-connection-advanced-options"></a>

 Consulte [Using the Amazon Redshift Spark connector AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using). 

# Conexão com o Asana
<a name="connecting-to-asana"></a>

O Asana é uma solução de colaboração em equipe baseada na nuvem que ajuda as equipes a organizar, planejar e concluir tarefas e projetos. Se você é usuário do Asana, sua conta contém dados sobre seus espaços de trabalho, projetos, tarefas, equipes e muito mais. É possível transferir dados do Asana para determinados serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para Asana
<a name="asana-support"></a>

O AWS Glue oferece suporte ao Asana da seguinte forma:

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

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

**Versões da API do Asana com suporte**  
 1,0 

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Asana
<a name="asana-configuring"></a>

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

## Requisitos mínimos
<a name="asana-configuring-min-requirements"></a>
+ Você tem uma conta Asana com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Asana](asana-create-account.md). 
+ Você deve ter uma conta da AWS criada com acesso de serviço ao AWS Glue. 
+ Certifique-se de ter criado um dos recursos a seguir na sua conta do Asana: 
  + Uma aplicação para desenvolvedores que ofereça suporte à autenticação `OAuth 2.0`. Para obter mais instruções, consulte [OAuth](https://developers.asana.com/docs/oauth) na documentação dos desenvolvedores do Asana. Como alternativa, consulte [Criação de uma conta do Asana](asana-create-account.md). 
  + Um token de acesso pessoal Para obter mais informações, consulte o Token de acesso pessoal[https://developers.asana.com/docs/personal-access-token](https://developers.asana.com/docs/personal-access-token) na documentação dos desenvolvedores do Asana. 

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

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

O Asana oferece suporte ao tipo de concessão `AUTHORIZATION_CODE` para `OAuth2`. 

Esse tipo de concessão é considerado um `OAuth` de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Os usuários podem optar por criar sua própria aplicação conectada no Asana e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Asana para fazer login e autorizar o acesso do AWS Glue aos recursos. 

Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

Para obter a documentação pública da Asana sobre como criar uma aplicação conectada para o fluxo `AUTHORIZATION_CODE OAuth`, consulte [APIs do Asana](https://developers.asana.com/docs/oauth). 

Para configurar uma conexão do Asana:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes: 
   + Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
   + 
**nota**  
É necessário criar um segredo para a conexão no AWS Glue.

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

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

   1. Forneça o ambiente do Asana.

   1. Selecione o perfil do 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 inserir 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 Asana
<a name="asana-reading-from-entities"></a>

 **Pré-requisitos** 

Um objeto do Asana do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades com suporte para a fonte** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
|  Espaço de trabalho  | Não | Sim | Não | Sim | Não | 
| Tag | Não | Sim | Não | Sim | Não | 
| Usuário | Não | Sim | Não | Sim | Não | 
|  Portfólio  | Não | Sim | Não | Sim | Não | 
| Team | Não | Sim | Não | Sim | Não | 
| Projeto | Sim | Sim | Não | Sim | Não | 
| Seção | Não | Sim | Não | Sim | Não | 
| Tarefa  | Sim | Não | Não | Sim | Sim | 
| Objetivo | Sim | Sim | Não | Sim | Não | 
|  AuditLogEvent  | Sim | Sim | Não | Sim | Não | 
|  Atualização de status  | Sim | Sim | Não | Sim | Não | 
|  Campo personalizado  | Não | Sim | Não | Sim | Não | 
|  Resumo do projeto  | Sim | Não | Não | Sim | Sim | 

 **Exemplo** 

```
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"
    }
```

 **Detalhes de entidade e campo do Asana** 
+ [Espaço de trabalho](https://developers.asana.com/docs/workspaces)
+ [Etiqueta](https://developers.asana.com/docs/tags)
+ [Usuário](https://developers.asana.com/docs/users)
+ [Portfólio](https://developers.asana.com/docs/portfolios)
+ [Equipe](https://developers.asana.com/docs/teams)
+ [Projeto](https://developers.asana.com/docs/get-all-projects-in-a-workspace)
+ [Seção](https://developers.asana.com/docs/get-sections-in-a-project)
+ [Tarefa](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)
+ [Atualização de status](https://developers.asana.com/reference/status-updates)
+ [Campo personalizado](https://developers.asana.com/reference/custom-fields)
+ [Resumo do projeto](https://developers.asana.com/reference/project-briefs)

 **Particionamento de consultas** 

Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+ `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

  Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `2024-06-07T13:30:00.134Z`. 
+ `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela a seguir. 


| Entity Name | Campo de particionamento | Tipo de dado | 
| --- | --- | --- | 
| Tarefa |  created\$1at  | DateTime | 
| Tarefa |  modified\$1at  | DateTime | 

 **Exemplo** 

```
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"
    }
```

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

Estas são as opções de conexão do Asana:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Asana. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Asana que você deseja usar. Por exemplo: 1.0. 
+  `SELECTED_FIELDS`(lista<string>): padrão: vazio (SELECT \$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: vazio. Usado para leitura. Consulta completa do Spark SQL. 
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Criação de uma conta do Asana
<a name="asana-create-account"></a>

1. Cadastre-se para obter uma [conta do Asana](https://asana.com/create-account) e escolha **Inscrever-se**.

1. Depois de fazer login, você será redirecionado para a página [Configuração da conta](https://app.asana.com/0/account_setup). Execute as etapas a seguir:
   + Revise o formulário de configuração da conta.
   + Preencha todos os detalhes relevantes para criar sua conta do Asana.
   + Verifique novamente as informações para garantir a precisão.

1. Escolha **Criar conta** ou **Enviar** (o texto exato do botão pode variar) para finalizar a configuração da sua conta.

**Criação de uma aplicação no Asana para `OAuth2.0`**

1. Faça login na conta do Asana usando suas [Credenciais de cliente do Asana](https://app.asana.com/-/login). 

1. Escolha o ícone do seu perfil de usuário no canto superior direito e selecione **Minhas configurações** no menu suspenso.

1. Selecione a guia **Aplicações** e, em seguida, selecione **Gerenciar aplicações do desenvolvedor**.

1. Selecione **Criar nova aplicação** e insira os detalhes relevantes. 

1. Escolha **Criar aplicações**.

1. Na página **Minhas aplicações**: 

   1. Selecione **OAuth** e, na seção **Credenciais da aplicação**, anote seu ID do cliente e o segredo do cliente.

   1. Na seção **URLs de redirecionamento**, adicione os URLs de redirecionamento necessárias.
**nota**  
Insira o URI de redirecionamento usando este formato: `https://{aws-region-code}.console.aws.amazon.com/gluestudio/oauth`. Exemplo: para a região Leste dos EUA (Norte da Virgínia), use `https://us-east-1.console.aws.amazon.com/gluestudio/oauth`

**Criação da aplicação no Asana para o token `PAT`**

1. Faça login na conta do Asana usando suas [Credenciais de cliente do Asana](https://app.asana.com/-/login). 

1. Clique no ícone do seu perfil de usuário no canto superior direito e selecione **Minhas configurações de perfil** no menu suspenso.

1. Selecione a guia **Aplicações** e, em seguida, selecione **Contas de serviço**.

1. Selecione **Criar nova aplicação** e insira os detalhes relevantes. 

1. Escolha **Adicionar conta de serviço**.

1. A próxima página exibe seu token. Copie-o e armazene-o com segurança. 
**Importante**  
Esse token só será exibido uma vez. Certifique-se de copiá-lo e armazená-lo com segurança. 

# Limitações
<a name="asana-connector-limitations"></a>

Estas são as limitações do conector do Asana:
+ As contas de serviço em domínios corporativos só podem acessar endpoints da API de log de auditoria. A autenticação com o token de acesso pessoal de uma conta de serviço é necessária para acessar esses endpoints.
+ A entidade Goal só pode ser acessada para contas de usuário com plano Premium ou superior.
+ `Audit Log Event Entity`: no conector, os campos `start_at` e `end_at` são combinados em um único campo "start\$1end\$1at" para oferecer suporte a filtragem e transferência incremental.
+ Não pode haver suporte ao particionamento para o campo `Date`, embora ele ofereça suporte a operadores maior ou igual a e menor ou igual a. Cenário: foi criado um trabalho com `partitionField` como `due_on` (tipo de dados: data), `lowerBound` como `2019-09-14`, `upperBound` como `2019-09-16` e `numPartition` como `2`. A parte do filtro do URL do endpoint é criada da seguinte forma:
  + partição1: due\$1on.before=2019-09-14&due\$1on.after=2019-09-14
  + partição2: due\$1on.before=2019-09-15&due\$1on.after=2019-09-15 Output:
  + Na partição1, obtemos dados com due\$1date como 2019-09-14 e 2019-09-15
  + Na partição2, obtemos os mesmos dados com due\$1date de 2019-09-15 (que estava na partição1) junto com outros dados, causando duplicação de dados.
+ Não pode haver suporte para a filtragem e o particionamento no mesmo campo, pois um erro de solicitação inválida é gerado pela extremidade do SaaS.
+ A entidade Tarefa exige no mínimo 1 campo nos critérios de filtro. Há uma limitação no Asana em que a paginação não é identificada sem a classificação dos registros com base em um campo baseado em tempo. Portanto, o campo Created\$1at é usado junto com a paginação para distinguir o próximo conjunto de registros. O campo Created\$1at é marcado como obrigatório no filtro, com um valor padrão de 2000-01-01T00:00:00Z se não for fornecido. Para obter mais informações sobre paginação, consulte [Tarefas em um espaço de trabalho](https://developers.asana.com/reference/searchtasksforworkspace).

# Conectar ao Azure Cosmos DB no AWS Glue Studio
<a name="connecting-to-data-azurecosmos"></a>

 O AWS Glue oferece suporte integrado ao Azure Cosmos DB. O AWS Glue Studio fornece uma interface visual para conectar ao Azure Cosmos DB para NoSQL, criar trabalhos de integração de dados e executá-los no runtime Spark do AWS Glue Studio sem servidor. 

**Topics**
+ [Criar uma conexão do Azure Cosmos DB](creating-azurecosmos-connection.md)
+ [Criar um nó de origem do Azure Cosmos DB](creating-azurecosmos-source-node.md)
+ [Criar um nó de destino do Azure Cosmos DB](creating-azurecosmos-target-node.md)
+ [Opções avançadas](#creating-azurecosmos-connection-advanced-options)

# Criar uma conexão do Azure Cosmos DB
<a name="creating-azurecosmos-connection"></a>

**Pré-requisitos**:
+ No Azure, será necessário identificar ou gerar uma chave do Azure Cosmos DB para uso pelo AWS Glue, `cosmosKey`. Para obter mais informações, consulte [Acesso seguro a dados no Azure Cosmos DB](https://learn.microsoft.com/en-us/azure/cosmos-db/secure-access-to-data?tabs=using-primary-key) na documentação do Azure.

**Para configurar uma conexão com o Azure Cosmos DB:**

1. No AWS Secrets Manager, crie um segredo usando sua chave do Azure Cosmos DB. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `spark.cosmos.accountKey` com o valor *cosmosKey*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para uso futuro em AWS Glue. 
   + Ao selecionar um **Tipo de conexão**, selecione Azure Cosmos DB.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

# Criar um nó de origem do Azure Cosmos DB
<a name="creating-azurecosmos-source-node"></a>

## Pré-requisitos necessários
<a name="creating-azurecosmos-source-node-prerequisites"></a>
+ Uma conexão AWS Glue Azure Cosmos DB configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão do Azure Cosmos DB](creating-azurecosmos-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Um contêiner do Azure Cosmos DB para NoSQL do qual você gostaria de ler. Você precisará de informações de identificação para o contêiner.

  Um contêiner do Azure Cosmos para NoSQL é identificado por seu banco de dados e contêiner. É necessário fornecer os nomes do banco de dados, *cosmosDBName* e do contêiner, *cosmosContainerName*, ao se conectar à API do Azure Cosmos para NoSQL.

## Adicionar uma fonte de dados do Azure Cosmos DB
<a name="creating-azurecosmos-source-node-add"></a>

**Para adicionar um nó de **Fonte de dados – Azure Cosmos DB**:**

1.  Escolha a conexão para sua fonte de dados do Azure Cosmos DB. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão do Azure Cosmos DB**. Para mais informações, consulte a seção [Criar uma conexão do Azure Cosmos DB](creating-azurecosmos-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Escolha o **Nome do banco de dados do Cosmos DB**: forneça o nome do banco de dados do qual você deseja ler, *cosmosDBName*.

1. Escolha **Contêiner do Azure Cosmos DB**: forneça o nome do contêiner do qual você deseja ler, *cosmosContainerName*.

1. Opcionalmente, escolha **Consulta personalizada do Azure Cosmos DB**: forneça uma consulta SQL SELECT para recuperar informações específicas do Azure Cosmos DB.

1.  Em **Propriedades personalizadas do Azure Cosmos**, insira parâmetros e valores conforme necessário. 

# Criar um nó de destino do Azure Cosmos DB
<a name="creating-azurecosmos-target-node"></a>

## Pré-requisitos necessários
<a name="creating-azurecosmos-target-node-prerequisites"></a>
+ Uma conexão AWS Glue Azure Cosmos DB configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão do Azure Cosmos DB](creating-azurecosmos-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do Azure Cosmos DB em que você deseja escrever. Você precisará de informações de identificação para o contêiner. **É necessário criar o contêiner antes de chamar o método de conexão.**

  Um contêiner do Azure Cosmos para NoSQL é identificado por seu banco de dados e contêiner. É necessário fornecer os nomes do banco de dados, *cosmosDBName* e do contêiner, *cosmosContainerName*, ao se conectar à API do Azure Cosmos para NoSQL.

## Adicionar um destino de dados do Azure Cosmos DB
<a name="creating-azurecosmos-target-node-add"></a>

**Para adicionar um nó de **Destino de dados – Azure Cosmos DB**:**

1.  Escolha a conexão para sua fonte de dados do Azure Cosmos DB. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão do Azure Cosmos DB**. Para mais informações, consulte a seção [Criar uma conexão do Azure Cosmos DB](creating-azurecosmos-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Escolha o **Nome do banco de dados do Cosmos DB**: forneça o nome do banco de dados do qual você deseja ler, *cosmosDBName*.

1. Escolha **Contêiner do Azure Cosmos DB**: forneça o nome do contêiner do qual você deseja ler, *cosmosContainerName*.

1.  Em **Propriedades personalizadas do Azure Cosmos**, insira parâmetros e valores conforme necessário. 

## Opções avançadas
<a name="creating-azurecosmos-connection-advanced-options"></a>

É possível fornecer opções avançadas ao criar um nó do Azure Cosmos DB. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte [Conexões do Azure Cosmos DB](aws-glue-programming-etl-connect-azurecosmos-home.md). 

# Conectar ao Azure SQL no AWS Glue Studio
<a name="connecting-to-data-azuresql"></a>

 O AWS Glue oferece suporte integrado ao Azure SQL. O AWS Glue Studio fornece uma interface visual para conectar ao Azure SQL, criar trabalhos de integração de dados e executá-los no runtime Spark do AWS Glue Studio sem servidor. 

**Topics**
+ [Criar uma conexão do Azure SQL](creating-azuresql-connection.md)
+ [Criar um nó de origem do Azure SQL](creating-azuresql-source-node.md)
+ [Criar um nó de destino do Azure SQL](creating-azuresql-target-node.md)
+ [Opções avançadas](#creating-azuresql-connection-advanced-options)

# Criar uma conexão do Azure SQL
<a name="creating-azuresql-connection"></a>

Para se conectar ao Azure SQL via AWS Glue, será necessário criar e armazenar sua credenciais do Azure SQL em um segredo do AWS Secrets Manager e, em seguida, associar esse segredo a uma conexão do Azure SQL AWS Glue.

**Para configurar uma conexão com o Azure SQL:**

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do Azure SQL. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `user` com o valor *azuresqlUsername*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `password` com o valor *azuresqlPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para uso futuro em AWS Glue. 
   + Ao selecionar um **Tipo de conexão**, selecione Azure SQL.
   + Ao fornecer o **URL do Azure SQL**, forneça um URL de endpoint do JDBC.

      Essa lista deve estar no seguinte formato: `jdbc:sqlserver://databaseServerName:databasePort;databaseName=azuresqlDBname;`.

     O AWS Glue requer as seguintes propriedades de URL: 
     + `databaseName`: um banco de dados padrão no Azure SQL ao qual se conectar.

     Para obter mais informações sobre URLs de JDBC para instâncias gerenciadas Azure SQL, consulte a [Documentação da Microsoft](https://learn.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=azuresqldb-mi-current).
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

# Criar um nó de origem do Azure SQL
<a name="creating-azuresql-source-node"></a>

## Pré-requisitos necessários
<a name="creating-azuresql-source-node-prerequisites"></a>
+ Uma conexão AWS Glue Azure SQL configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão do Azure SQL](creating-azuresql-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do Azure SQL da qual você deseja ler, *tableName*.

  Uma tabela do Azure SQL é identificada por seu banco de dados, esquema e nome da tabela. É necessário fornecer o nome do banco de dados e o nome da tabela ao se conectar ao Azure SQL. Você também deverá fornecer o esquema se ele não for o padrão, "public". O banco de dados é fornecido por meio de uma propriedade de URL em *connectionName*, esquema e nome da tabela via `dbtable`.

## Adicionar uma fonte de dados do Azure SQL
<a name="creating-azuresql-source-node-add"></a>

**Para adicionar um nó de **Fonte de dados – Azure SQL**:**

1.  Escolha a conexão para sua fonte de dados do Azure SQL. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão do Azure SQL**. Para mais informações, consulte a seção [Criar uma conexão do Azure SQL](creating-azuresql-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1.  Escolha uma opção de **Fonte do Azure SQL**: 
   +  **Escolher uma única tabela**: acesse todos os dados de uma única tabela. 
   +  **Inserir consulta personalizada**: acesse um conjunto de dados de várias tabelas com base em sua consulta personalizada. 

1.  Se você escolheu uma única tabela, insira *tableName*. 

    Se você escolheu **Inserir consulta personalizada**, insira uma consulta TransactSQL SELECT. 

1.  Em **Propriedades personalizadas do Azure SQL**, insira parâmetros e valores conforme necessário. 

# Criar um nó de destino do Azure SQL
<a name="creating-azuresql-target-node"></a>

## Pré-requisitos necessários
<a name="creating-azuresql-target-node-prerequisites"></a>
+ Uma conexão AWS Glue Azure SQL configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão do Azure SQL](creating-azuresql-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do Azure SQL em que você deseja escrever, *tableName*.

  Uma tabela do Azure SQL é identificada por seu banco de dados, esquema e nome da tabela. É necessário fornecer o nome do banco de dados e o nome da tabela ao se conectar ao Azure SQL. Você também deverá fornecer o esquema se ele não for o padrão, "public". O banco de dados é fornecido por meio de uma propriedade de URL em *connectionName*, esquema e nome da tabela via `dbtable`.

## Adicionar um destino de dados do Azure SQL
<a name="creating-azuresql-target-node-add"></a>

**Para adicionar um nó de **Destino de dados – Azure SQL**:**

1.  Escolha a conexão para sua fonte de dados do Azure SQL. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão do Azure SQL**. Para mais informações, consulte a seção [Criar uma conexão do Azure SQL](creating-azuresql-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Configure o **nome da tabela** fornecendo o *tableName*.

1.  Em **Propriedades personalizadas do Azure SQL**, insira parâmetros e valores conforme necessário. 

## Opções avançadas
<a name="creating-azuresql-connection-advanced-options"></a>

É possível fornecer opções avançadas ao criar um nó do Azure SQL. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte [Conexões do Azure SQL](aws-glue-programming-etl-connect-azuresql-home.md). 

# Conexão ao Raiser’s Edge NXT da Blackbaud
<a name="connecting-to-data-blackbaud"></a>

O Blackbaud Raiser’s Edge NXT é uma solução completa de software para arrecadação de fundos e gerenciamento de doadores baseada em nuvem criada especificamente para organizações sem fins lucrativos e todas as comunidades dedicadas a causas sociais. Esse conector foi criado com base na API SKY do Blackbaud Raiser’s Edge NXT e oferece operações para ajudar no gerenciamento de entidades encontradas no Raiser’s Edge NXT.

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

# Suporte do AWS Glue para o Blackbaud Raiser’s Edge NXT
<a name="blackbaud-support"></a>

O AWS Glue oferece suporte ao Blackbaud Raiser’s Edge NXT da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Blackbaud Raiser’s Edge NXT.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Blackbaud Raiser’s Edge NXT**  
Estas são as versões compatíveis da API do Blackbaud Raiser’s Edge NXT:
+ v1

# Políticas que contêm as operações de API para criar e usar conexões
<a name="blackbaud-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 Blackbaud Raiser’s Edge NXT
<a name="blackbaud-configuring"></a>

Antes de usar o AWS Glue para transferir dados do Blackbaud Raiser’s Edge NXT, os seguintes requisitos deverão ser atendidos:

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Blackbaud Raiser's Edge NXT.
+ Você gerou um token de acesso na conta do Blackbaud Raiser's Edge NXT com o escopo apropriado de leitura/gravação atribuído para acessar as APIs. Para obter mais informações, consulte [Authorization](https://developer.blackbaud.com/skyapi/docs/authorization).

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Blackbaud Raiser’s Edge NXT.

# Configuração de conexões do Blackbaud Raiser’s Edge NXT
<a name="blackbaud-configuring-connections"></a>

O Blackbaud Raiser’s Edge NXT oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Blackbaud Raiser’s Edge NXT, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Blackbaud Raiser’s Edge NXT.
+ Os usuários podem optar por criar sua própria aplicação conectada no Blackbaud Raiser’s Edge NXT e fornecer seus próprios ID do cliente, chave de assinatura e URL de instância ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Blackbaud Raiser’s Edge NXT para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Blackbaud Raiser’s Edge NXT sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Authorization](https://developer.blackbaud.com/skyapi/docs/authorization).

Para configurar uma conexão do Blackbaud Raiser’s Edge NXT:

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 chave da API da aplicação conectada com `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como a chave.

   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 uma **Fonte de dados**, selecione o Blackbaud Raiser’s Edge NXT.

   1. Forneça o `INSTANCE_URL` da conta do Blackbaud Raiser's Edge NXT à qual você deseja se conectar.

   1. Forneça o `clientId` da aplicação cliente gerenciada pelo usuário.

   1. Forneça a chave de assinatura associada à sua conta.

   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 Blackbaud Raiser’s Edge NXT
<a name="blackbaud-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Blackbaud Raiser’s Edge NXT do qual você deseja ler. Você precisará do nome do objeto.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Endereço do constituinte | Sim | Sim | Não | Sim | Sim | 
| Educação do constituinte | Sim | Sim | Não | Sim | Sim | 
| Endereço de e-mail do constituinte | Sim | Sim | Não | Sim | Sim | 
| Telefone do constituinte | Sim | Sim | Não | Sim | Sim | 
| Observação do constituinte | Sim | Sim | Não | Sim | Sim | 
| Relacionamento do constituinte | Sim | Sim | Não | Sim | Sim | 
| Presença on-line do constituinte | Sim | Sim | Não | Sim | Sim | 
| Oportunidade | Sim | Sim | Não | Sim | Sim | 
| Recurso | Sim | Sim | Não | Sim | Sim | 
| Campaign | Sim | Sim | Não | Sim | Sim | 
| Fundo | Sim | Sim | Não | Sim | Sim | 
| Pacote | Sim | Sim | Não | Sim | Sim | 
| Lote da doação | Sim | Sim | Não | Sim | Não | 
| Participante do evento | Sim | Sim | Sim | Sim | Sim | 
| Atribuição de arrecadação de fundos para constituintes | Não | Não | Não | Sim | Não | 
| Doação | Sim | Sim | Sim | Sim | Sim | 
| Associação | Sim | Sim | Não | Sim | Sim | 
| Ação | Sim | Sim | Não | Sim | Não | 
| Constituinte | Sim | Sim | Sim | Sim | Sim | 
| Bens do constituinte | Sim | Sim | Não | Sim | Sim | 
| Event | Sim | Sim | Sim | Sim | Sim | 
| Campo personalizado da doação | Sim | Sim | Não | Sim | Sim | 

**Exemplo:**

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

## Detalhes das entidades e dos campos do Blackbaud Raiser’s Edge NXT
<a name="blackbaud-reading-entity-field-details"></a>

Para obter mais informações sobre os detalhes das entidades e dos campos, consulte:
+ [Ação](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Action)
+ [Constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Constituent)
+ [Endereço do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Address)
+ [Associação do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Membership)
+ [Atribuição de arrecadação de fundos para constituintes](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#FundraiserAssignment)
+ [Educação do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Education)
+ [Endereço de e-mail do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#EmailAddress)
+ [Telefone do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Phone)
+ [Observação do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Note)
+ [Presença on-line do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#OnlinePresence)
+ [Relacionamento do constituinte](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Relationship)
+ [Evento](https://developer.blackbaud.com/skyapi/renxt/event/entities#Event)
+ [Participante do evento](https://developer.blackbaud.com/skyapi/renxt/event/entities#Participant)
+ [Recurso](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Appeal)
+ [Campanha](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Campaign)
+ [Fundo](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Fund)
+ [Pacote](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Package)
+ [Doação](https://developer.blackbaud.com/skyapi/renxt/gift/entities#Gift)
+ [Campo personalizado da doação](https://developer.blackbaud.com/skyapi/renxt/gift/entities#CustomField)
+ [Lote da doação](https://developer.blackbaud.com/skyapi/renxt/gift-batch/entities#GiftBatch)
+ [Oportunidade](https://developer.blackbaud.com/skyapi/renxt/opportunity/entities#Opportunity)
+ [Códigos do constituinte](https://developer.sky.blackbaud.com/api#api=56b76470069a0509c8f1c5b3)

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

**Particionamento com base em campo**:

O Blackbaud Raiser’s Edge NXT não oferece suporte ao particionamento baseado em campos ou em registros.

**Particionamento com base em registros**:

É possível fornecer a opção adicional `NUM_PARTITIONS` do Spark se quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.

No particionamento baseado em registros, o número total de registros presentes é consultado na API do Blackbaud Raiser’s Edge NXT e dividido pelo número `NUM_PARTITIONS` fornecido. O número resultante de registros é então buscado simultaneamente por cada subconsulta.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

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

# Opções de conexão do Blackbaud Raiser's Edge NXT
<a name="blackbaud-connection-options"></a>

Estas são as opções de conexão do Blackbaud Raiser’s Edge NXT:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Blackbaud Raiser’s Edge NXT.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Blackbaud Raiser’s Edge NXT que você deseja usar.
+ `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.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. Exemplo de valor: 10.
+ `SUBSCRIPTION_KEY`(string): (obrigatório) o padrão é vazio. Usado para leitura. Chave de assinatura associada à conta de um desenvolvedor.

# Limitações do Blackbaud Raiser's Edge NXT
<a name="blackbaud-connection-limitations"></a>

Estas são as limitações ou observações do Blackbaud Raiser’s Edge NXT:
+ O SaaS oferece suporte apenas ao operador `EQUAL_TO`, que retorna resultados criados ou modificados na data especificada ou após ela. Além disso, o campo “id” é um tipo de dados String. Também não há a identificação de campos não anuláveis. Sendo assim, não há suporte para o particionamento baseado em campos.
+ Apenas a entidade `Event` oferece suporte à extração incremental com frequências diárias, mensais e semanais.
+ A entidade Constituent Fundraiser Assignment retorna no máximo 20 registros.
+ Particionamento com base em registros:
  + Sem suporte para as entidades `Action`, `Constituent Fundraiser Assignment` ou `Gift Batch`.
  + Apenas as entidades `Event` e `Event Participant` oferecem suporte ao particionamento baseado em registros com o predicado de filtro. Se um predicado de filtro for usado com qualquer outra entidade com suporte ao particionamento baseado em registros, uma exceção será lançada.
+ Na entidade `Gift Custom Field`, o campo “valor” deverá ser usado em conjunto com o campo “categoria”. Caso contrário, será gerada uma resposta não filtrada. Sendo assim, para obrigar o usuário a inserir o campo “categoria” ao filtrar com o campo “valor”, uma exceção será lançada se o requisito mencionado acima não for atendido.
+ Os campos `date_added` e `last_modified` de todas as entidades aplicáveis não oferecem suporte a nenhum operador comparativo. Eles aceitam apenas o operador de igualdade. Além disso, não há nenhum campo que possa ser combinado com os campos mencionados acima para fornecer um intervalo de registros. Portanto, esses campos são apenas consultáveis e não oferecem suporte à transferência incremental.
+ O campo `added_by` na entidade `Gift Batch` não será considerado filtrável, pois é possível que ele não gere os resultados corretos.
+ Há uma latência de aproximadamente 30 minutos para que os registros sejam recuperados por meio do endpoint `/GET Gift List` após a inserção dos dados na entidade `Gift`.
+ O suporte para transferência incremental foi descontinuado para a entidade Gift devido a limitações por parte da fonte de dados. 
+ Existe uma latência de dez minutos para o campo de status na entidade Opportunity.
+ A entidade `Fundraiser Assignment` tem `Constituent` como entidade dependente. O conector carrega no máximo 5 mil IDs para escolher, de modo a evitar que o tamanho da resposta exceda o tamanho máximo permitido da carga útil.

# Conexão ao CircleCI
<a name="connecting-to-data-circleci"></a>

O CircleCI é uma plataforma de integração e entrega contínuas. A conta do CircleCI contém dados sobre seus projetos, pipelines, fluxos de trabalho e muito mais. Se você usa o CircleCI, pode conectar o AWS Glue à conta do CircleCI. Em seguida, será possível usar o CircleCI como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o CircleCI e serviços da AWS ou outras aplicações compatíveis.

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

# Suporte do AWS Glue para o CircleCI
<a name="circleci-support"></a>

O AWS Glue oferece suporte ao CircleCI da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do CircleCI.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do CircleCI**  
Estas são as versões compatíveis da API do CircleCI:
+ v2

# Políticas que contêm as operações de API para criar e usar conexões
<a name="circleci-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 CircleCI
<a name="circleci-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta no CircleCI que contém os dados que deseja transferir. 
+ Nas configurações de usuário da conta, você criou um token de API pessoal. Para obter mais informações, consulte [Creating a personal API token](https://circleci.com/docs/managing-api-tokens/#creating-a-personal-api-token).
+ Você fornece o token de API pessoal para o AWS Glue ao criar a conexão.

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do CircleCI.

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

O CircleCI oferece suporte à autenticação personalizada.

Para configurar uma conexão do CircleCI:

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 chave da API da aplicação conectada com `Circle-Token` como a chave.

   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 uma **Fonte de dados**, selecione o CircleCI.

   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 CircleCI
<a name="circleci-reading-from-entities"></a>

**Pré-requisito**

Um objeto do CircleCI do qual você deseja ler. Você precisará do nome do objeto.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Contexto | Sim | Não | Não | Sim | Não | 
| Métrica de resumo da organização | Sim | Não | Não | Sim | Não | 
| Pipeline | Não | Não | Não | Sim | Não | 
| Fluxo de trabalho do pipeline | Sim | Não | Não | Sim | Não | 
| Ramificação do projeto | Sim | Não | Não | Sim | Não | 
| Teste instável do projeto | Não | Não | Não | Sim | Não | 
| Métrica de resumo do projeto | Sim | Não | Não | Sim | Não | 
| Programação | Não | Não | Não | Sim | Não | 
| Séries temporais de trabalhos do fluxo de trabalho | Sim | Não | Não | Sim | Não | 
| Métrica e tendência do fluxo de trabalho | Sim | Não | Não | Sim | Não | 
| Execução recente do fluxo de trabalho | Sim | Não | Não | Sim | Não | 
| Métrica de resumo do fluxo de trabalho | Sim | Não | Não | Sim | Não | 
| Métrica de teste do fluxo de trabalho | Sim | Não | Não | Sim | Não | 

**Exemplo:**

```
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"
    }
```

## Detalhes das entidades e dos campos do CircleCI
<a name="circleci-reading-from-entities-field-details"></a>

Para obter mais informações sobre os detalhes das entidades e dos campos, consulte:
+ [Contextos](https://circleci.com/docs/api/v2/#operation/listContexts)
+ [Métricas de resumo do projeto](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowsPageData)
+ [Séries temporais de trabalhos do fluxo de trabalho](https://circleci.com/docs/api/v2/#operation/getJobTimeseries)
+ [Métricas de resumo da organização](https://circleci.com/docs/api/v2/#operation/getOrgSummaryData)
+ [Ramificações do projeto](https://circleci.com/docs/api/v2/#operation/getAllInsightsBranches)
+ [Testes instáveis do projeto](https://circleci.com/docs/api/v2/#operation/getFlakyTests)
+ [Execuções recentes do fluxo de trabalho](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowRuns)
+ [Métricas de resumo do fluxo de trabalho](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowMetrics)
+ [Métricas e tendências do fluxo de trabalho](https://circleci.com/docs/api/v2/#operation/getWorkflowSummary)
+ [Métricas de teste do fluxo de trabalho](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowTestMetrics)
+ [Pipelines](https://circleci.com/docs/api/v2/#operation/listPipelinesForProject)
+ [Fluxos de trabalho do pipeline](https://circleci.com/docs/api/v2/#operation/listWorkflowsByPipelineId)
+ [Programações](https://circleci.com/docs/api/v2/#operation/listSchedulesForProject)

Entidades com metadados estáticos:

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

**nota**  
Os tipos de dados Struct e List são convertidos no tipo de dados String na resposta do conector.

**Particionamento de consultas**

O CircleCI não oferece suporte ao particionamento baseado em campos ou em registros.

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

Estas são as opções de conexão do CircleCI:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no CircleCI.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do CircleCI que você deseja usar.
+ `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 CircleCI
<a name="circleci-connection-limitations"></a>

Estas são as limitações ou observações do CircleCI:
+ O CircleCI não oferece suporte ao particionamento baseado em campos ou em registros.
+ Os campos de filtro que contiverem “-” (hífen) só funcionarão se estiverem entre backticks (crase). Por exemplo: `workflow-name` = "abc"
+ Não é possível oferecer suporte ao tipo de VCS GitLab porque não existe uma forma programática de recuperar o “ID do projeto” necessário para o caminho da entidade GitLab VCS.

# Conexão ao Datadog
<a name="connecting-to-datadog"></a>

O Datadog é uma plataforma de monitoramento e análise para aplicações em escala de nuvem, incluindo infraestrutura, aplicações, serviços e ferramentas.

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

# Suporte do AWS Glue para o Datadog
<a name="datadog-support"></a>

O AWS Glue oferece suporte ao Datadog da seguinte forma:

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

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

**Versões da API do Datadog com suporte**  
 
+ v1
+ v2

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Datadog
<a name="datadog-configuring"></a>

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

## Requisitos mínimos
<a name="datadog-configuring-min-requirements"></a>
+ Você tem uma conta do Datadog com DD-API-KEY e DD-APPLICATION-KEY. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Datadog](datadog-create-account.md). 
+  Sua conta do Datadog tem acesso à API com uma licença válida.

   

O Datadog oferece suporte aos seis URLs a seguir. Todos os clientes da API do Datadog são configurados por padrão para consumir as APIs do site Datadog US1. Se você estiver no site Datadog EU, você deve selecionar o URL https://api.datadoghq.eu com a `DD-API-KEY` e `DD-APPLICATION-KEY` do site Datadog EU para acessar as APIs. Da mesma forma, para outros sites, você deverá selecionar os respectivos URLs com a `DD-API-KEY and DD-APPLICATION-KEY` do respectivo site. 
+ URL da API US1: [https://api.datadoghq.com](https://api.datadoghq.com)https://api.datadoghq.com
+ URL da API EU: [https://api.datadoghq.eu](https://api.datadoghq.eu)
+ URL da API US3: [https://api.us3.datadoghq.com](https://api.us3.datadoghq.com) 
+ URL da API US5: [https://api.us5.datadoghq.com](https://api.us5.datadoghq.com)
+ URL da API S1-FED: [https://api.ddog-gov.com](https://api.ddog-gov.com)
+ URL da API do Japão: [https://api.ap1.datadoghq.com](https://api.ap1.datadoghq.com)

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Datadog.

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

O Datadog oferece suporte à autenticação personalizada. A seguir estão as etapas para configurar a conexão do Datadog:

Para configurar uma conexão do Datadog:

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

   Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com `API_KEY` e `APPLICATION_KEY` como chaves. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

   1. Ao selecionar um **Tipo de conexão**, selecione Datadog.

   1. Forneça o `Instance_Url` do Datadog ao qual você deseja se conectar.

   1. Selecione o perfil do 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 Datadog
<a name="datadog-reading-from-entities"></a>

 **Pré-requisitos** 

Um objeto do Datadog do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
|  Série temporal de métricas  | Sim | Não | Não | Sim | Não | 
|  Consultas de log  | Sim | Sim | Sim | Sim | Não | 

 **Exemplo** 

```
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`"
    }
```

 **Detalhes de entidades e campos do Datadog** 

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

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

Estas são as opções de conexão do Datadog:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Datadog.
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Datadog que você deseja usar. A versão `v1` oferece suporte à entidade `metrics-timeseries`, enquanto a versão `v2` oferece suporte à entidade `log-queries`.
+  `INSTANCE_URL`(string): (obrigatório) usado para leitura. URL da instância do Datadog. O URL da instância do Datadog varia de acordo com a região. 
+  `SELECTED_FIELDS`(lista<string>): padrão: vazio (SELECT \$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: vazio. Usado para leitura. Consulta completa do Spark SQL. 

# Criação de uma conta do Datadog
<a name="datadog-create-account"></a>

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

1. Escolha **COMEÇAR GRATUITAMENTE**.

1. Insira as informações necessárias e cadastre-se. 

1. Instale o **Instalador do agente do Datadog** conforme sugerido. 

1. Certifique-se de que a conta seja registrada em uma organização válida (da lista disponível) que tenha uma assinatura ativa do Datadog. 

1. Depois de fazer login na sua conta do Datadog, passe o mouse sobre seu nome de usuário no canto superior direito para ver os detalhes das **Chaves**:

   1. Para obter sua chave de API, escolha **Chaves de API**.

   1. Para obter sua chave de aplicação, escolha **Chaves de aplicação**.

# Limitações
<a name="datadog-connector-limitations"></a>

Estas são as limitações do conector do Datadog:
+ O Datadog não oferece suporte ao particionamento baseado em campos ou baseado em registros.
+ `from` é um parâmetro de filtro obrigatório para a entidade `Log Queries`.
+ `from_to_date` e `query` são parâmetros de filtro obrigatórios para a entidade `Metrics Timeseries`.

# Conexão ao Docusign Monitor
<a name="connecting-to-data-docusign-monitor"></a>

O Docusign Monitor ajuda as organizações a proteger seus contratos com o monitoramento de atividades 24 horas por dia. A API do Monitor fornece essas informações de rastreamento de atividades diretamente às pilhas de segurança ou ferramentas de visualização de dados existentes, permitindo às equipes detectar atividades não autorizadas, investigar incidentes e responder rapidamente às ameaças verificadas. Ele também oferece a flexibilidade de que as equipes de segurança precisam para personalizar painéis e alertas a fim de atender às necessidades específicas dos negócios.

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

# Suporte do AWS Glue para o Docusign Monitor
<a name="docusign-monitor-support"></a>

O AWS Glue oferece suporte ao Docusign Monitor da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Docusign Monitor.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Docusign Monitor**  
Estas são as versões compatíveis da API do Docusign Monitor:
+ v2.0

# Políticas que contêm as operações de API para criar e usar conexões
<a name="docusign-monitor-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 Docusign Monitor
<a name="docusign-monitor-configuring"></a>

Antes de usar o AWS Glue para transferir dados do Docusign Monitor aos destinos compatíveis, os seguintes requisitos deverão ser atendidos:

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Docusign na qual usa o produto de software Docusign no Docusign Monitor.
+ No console do desenvolvedor da sua conta do Docusign, você criou uma aplicação de integração OAuth 2.0 para o AWS Glue.

  Essa aplicação fornece as credenciais de cliente que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [OAuth 2.0](https://developers.docusign.com/platform/webhooks/connect/validation-and-security/oauth-connect/) na documentação do Docusign Monitor.

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Docusign Monitor.

# Configuração de conexões do Docusign Monitor
<a name="docusign-monitor-configuring-connections"></a>

O Docusign Monitor oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE.
+ Esse tipo de concessão é considerado um OAuth de três pernas, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue.
+ Os usuários podem optar por criar sua própria aplicação conectada no Docusign Monitor e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Docusign Monitor para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Docusign Monitor sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [OAuth for Docusign Connect](https://developers.docusign.com/platform/webhooks/connect/validation-and-security/oauth-connect/).

Para configurar uma conexão do Docusign Monitor:

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 chave da API da aplicação conectada com `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como a chave.

   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. Em **Conexões**, escolha **Criar conexão**.

   1. Ao selecionar uma **Fonte de dados**, selecione o Docusign Monitor.

   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. Forneça o **ClientId da aplicação cliente gerenciada pelo usuário** da aplicação Docusign Monitor.

   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 Docusign Monitor
<a name="docusign-monitor-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Docusign Monitor do qual você deseja ler.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Monitorar dados | Sim | Sim | Não | Sim | Não | 

**Exemplo:**

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

## Detalhes das entidades e dos campos do Docusign Monitor
<a name="docusign-monitor-reading-from-entities-field-details"></a>

Entidades com metadados estáticos:

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

**Particionamento de consultas**

O Docusign Monitor não oferece suporte ao particionamento baseado em campos ou em registros.

# Opções de conexão do Docusign Monitor
<a name="docusign-monitor-connection-options"></a>

Estas são as opções de conexão do Docusign Monitor:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Docusign Monitor.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Docusign Monitor que você deseja usar.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto.
+ `QUERY`(string): padrão: vazio. Usado para leitura. Consulta completa do Spark SQL.
+ `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL.

# Limitações do Docusign Monitor
<a name="docusign-monitor-connection-limitations"></a>

Estas são as limitações ou observações do Docusign Monitor:
+ Quando um filtro é aplicado usando o campo `cursor`, a API recupera registros dos próximos sete dias a partir da data especificada.
+ Se nenhum filtro for fornecido, a API recuperará os registros dos sete dias anteriores à data atual da solicitação da API.
+ O Docusign Monitor não oferece suporte ao particionamento baseado em campos ou em registros.
+ O Docusign Monitor não oferece suporte ao recurso Ordenar por.

# Conexão ao Domo
<a name="connecting-to-data-domo"></a>

O Domo é uma ferramenta de painéis baseada na nuvem. Com a plataforma de aplicações corporativas do Domo, a base necessária para expandir o Domo já está pronta, permitindo que você crie suas soluções personalizadas com mais rapidez.

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

# Suporte do AWS Glue para o Domo
<a name="domo-support"></a>

O AWS Glue oferece suporte ao Domo da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Domo.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Domo**  
Estas são as versões compatíveis da API do Domo:
+ v1

# Políticas que contêm as operações de API para criar e usar conexões
<a name="domo-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 Domo
<a name="domo-configuring"></a>

Antes de usar o AWS Glue para transferir dados do Domo aos destinos compatíveis, os seguintes requisitos deverão ser atendidos:

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Domo habilitada para acesso à API.
+ Você tem uma aplicação na conta do desenvolvedor do Domo que fornece as credenciais de cliente que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Criação de uma aplicação de desenvolvedor do Domo](#domo-configuring-creating-developer-app).

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Domo.

## Criação de uma aplicação de desenvolvedor do Domo
<a name="domo-configuring-creating-developer-app"></a>

Para obter o ID e o segredo do cliente, crie uma conta de desenvolvedor.

1. Acesse a [página de login do desenvolvedor do Domo](https://developer.domo.com/manage-clients).

1. Escolha **Fazer login**.

1. Forneça o nome do domínio e clique em **Continue**.

1. Passe o mouse sobre **My Account** e escolha **New Client**.

1. Forneça o nome e a descrição, selecione o escopo (“data”) e escolha **Create**.

1. Recupere o **Client Id** e o **Client Secret** gerados para o novo cliente criado.

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

O Domo oferece suporte ao tipo de concessão CLIENT\$1CREDENTIALS para OAuth2.
+ Esse tipo de concessão é considerado um OAuth de “duas pernas”, pois somente a aplicação cliente faz a própria autenticação no servidor, sem o envolvimento do usuário.
+ Os usuários podem optar por criar sua própria aplicação conectada no Domo e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue.
+ Para obter a documentação pública do Domo sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [OAuth Authentication](https://developer.domo.com/portal/1845fc11bbe5d-api-authentication).

Para configurar uma conexão do Domo:

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 o token de acesso da aplicação conectada, `client_id` e `client_secret`.

   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. Em **Conexões**, escolha **Criar conexão**.

   1. Ao selecionar uma **Fonte de dados**, selecione o Domo.

   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 Domo
<a name="domo-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Domo do qual você deseja ler. Você precisará do nome do objeto, como Conjunto de dados ou Políticas de permissões de dados. A tabela a seguir mostra as entidades compatíveis.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Data Set | Sim | Sim | Sim | Sim | Sim | 
| Políticas de permissões de dados | Não | Não | Não | Sim | Não | 

**Exemplo:**

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

## Detalhes das entidades e dos campos do Domo
<a name="domo-reading-from-entities-field-details"></a>

Entidades com metadados estáticos:

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

Para as entidades a seguir, o Domo fornece endpoints para buscar metadados dinamicamente, para que o suporte do operador seja capturado no nível do tipo de dados da entidade.

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

## Particionamento de consultas
<a name="domo-reading-from-partitioning"></a>

**Particionamento com base em campo**

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo DateTime, aceitamos o valor no formato ISO.

  Exemplo de valor válido:

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

  Para o campo de Data, aceitamos o valor no formato ISO.

  Exemplo de valor válido:

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.

  Exemplo de valor válido:

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS`: o número de partições.

Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na seguinte tabela:

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

Exemplo:

```
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"
    }
```

**Particionamento com base em registros**

É possível fornecer a opção adicional `NUM_PARTITIONS` do Spark se quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.

No particionamento baseado em registros, o número total de registros presentes é consultado no Domo e dividido pelo número `NUM_PARTITIONS` fornecido. O número resultante de registros é então buscado simultaneamente por cada subconsulta.

Exemplo:

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

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

Estas são as opções de conexão do Domo:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Domo.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Domo que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(String): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(String): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(String): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Limitações do Domo
<a name="domo-connection-limitations"></a>

Estas são as limitações ou observações do Domo:
+ Devido a uma limitação do SDK, a filtragem não funciona conforme o esperado para os campos consultáveis que começam com “\$1” (por exemplo: \$1BATCH\$1ID).
+ Devido a uma limitação da API, a filtragem funciona para a data anterior à data que você informar. Isso também afeta a extração incremental. Para contornar essa limitação, selecione uma data de acordo com seu fuso horário em relação ao UTC, para obter os dados para a data necessária.

# Conexão ao Dynatrace
<a name="connecting-to-data-dynatrace"></a>

O Dynatrace é uma plataforma que oferece analytics e automação para observabilidade e segurança abrangentes. Sua especialidade é monitorar e otimizar a performance de aplicações, a infraestrutura e a experiência dos usuários.

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

# Suporte do AWS Glue para o Dynatrace
<a name="dynatrace-support"></a>

O AWS Glue oferece suporte ao Dynatrace da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Dynatrace.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Dynatrace**  
Estas são as versões compatíveis da API do Dynatrace:
+ v2

# Políticas que contêm as operações de API para criar e usar conexões
<a name="dynatrace-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 Dynatrace
<a name="dynatrace-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Dynatrace.
+ Você gerou um token de acesso na conta do Dynatrace com o escopo apropriado de leitura/gravação atribuído para acessar as APIs. Para obter mais informações, consulte [Generate a token](https://docs.dynatrace.com/docs/discover-dynatrace/references/dynatrace-api/basics/dynatrace-api-authentication#create-token).

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Dynatrace.

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

O Dynatrace oferece suporte à autenticação personalizada.

Para configurar uma conexão do Dynatrace:

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 chave da API da aplicação conectada com `apiToken` como a chave.

   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 uma **Fonte de dados**, selecione o Dynatrace.

   1. Forneça o `INSTANCE_URL` da conta do Dynatrace à 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 Dynatrace
<a name="dynatrace-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Dynatrace do qual você deseja ler. Você precisará do nome do objeto, como “problema”.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Problema | Sim | Sim | Sim | Sim | Não | 

**Exemplo:**

```
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"
    }
```

**Detalhes das entidades e dos campos do Dynatrace**:

O Dynatrace fornece endpoints para buscar metadados dinamicamente para entidades compatíveis. Portanto, o suporte do operador é capturado no nível do tipo de dados.

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

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

O Dynatrace não oferece suporte ao particionamento baseado em campos ou em registros.

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

Estas são as opções de conexão do Dynatrace:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Dynatrace.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Dynatrace que você deseja usar.
+ `INSTANCE_URL`(string): usado para leitura. Um URL de instância válida do Dynatrace.
+ `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 Dynatrace
<a name="dynatrace-connection-limitations"></a>

Estas são as limitações ou observações do Dynatrace:
+ O Dynatrace não oferece suporte ao particionamento baseado em campos ou em registros.
+ Para o recurso Selecionar tudo, se você fornecer o “campo” no filtro, ele não permitirá mais de dez registros por página.
+ O tamanho máximo aceito para a página é 500. Se você selecionar qualquer um dos campos [`evidenceDetails, impactAnalysis, recentComments`] ao criar o fluxo, serão mostrados por padrão dez registros por página.

# Conexão com o Facebook Ads
<a name="connecting-to-data-facebook-ads"></a>

O Facebook Ads é uma poderosa plataforma de publicidade digital usada por empresas de todos os tamanhos para atingir seu público-alvo e cumprir objetivos variados de marketing. A plataforma permite que os anunciantes criem anúncios personalizados que podem ser exibidos em toda a família de aplicações e serviços do Facebook, incluindo o Facebook e o Messenger. Com seus recursos avançados de segmentação, o Facebook Ads permite que as empresas atinjam dados demográficos, interesses, comportamentos e locais específicos.

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

# Suporte do AWS Glue para o Facebook Ads
<a name="facebook-ads-support"></a>

O AWS Glue oferece suporte ao Facebook Ads da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Facebook Ads.

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

**Versões da API do Facebook Ads compatíveis**  
As seguintes versões da API do Facebook Ads são compatíveis:
+ v17.0
+ v18.0
+ v19.0
+ v20.0

# Políticas que contêm as operações de API para criar e usar conexões
<a name="facebook-ads-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 Facebook Ads
<a name="facebook-ads-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Facebook Ads, você precisa atender aos seguintes requisitos:

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

Estes são os requisitos mínimos:
+ As contas padrão do Facebook são acessadas diretamente pelo Facebook.
+ A autenticação do usuário é necessária para gerar o token de acesso.
+ O conector do SDK do Facebook Ads implementará o fluxo do *OAuth para tokens de acesso do usuário*.
+ Estamos usando o OAuth2.0 para autenticar nossas solicitações de API para o Facebook Ads. Essa autenticação baseada na Web se enquadra na arquitetura autenticação multifator (MFA), que é um superconjunto de 2FA.
+ O usuário precisa conceder permissões para acessar os endpoints. Para acessar os dados do usuário, a autorização do endpoint é processada por meio de [permissões](https://developers.facebook.com/docs/permissions) e [recursos](https://developers.facebook.com/docs/features-reference).

## Obtenção de credenciais do Outh 2.0
<a name="facebook-ads-configuring-creating-facebook-ads-oauth2-credentials"></a>

Para obter credenciais de API para que você possa fazer chamadas autenticadas para instâncias, consulte [API REST](https://developers.facebook-ads.com/rest-api/) no Facebook Ads Developer Guide.

# Configuração de conexões do Facebook Ads
<a name="facebook-ads-configuring-connections"></a>

O Facebook Ads é compatível com o tipo de concessão AUTHORIZATION\$1CODE para OAuth2.
+ Esse tipo de concessão é considerado um OAuth de três pernas, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Facebook Ads e fornecer os próprios ID e segredo de cliente quando criarem conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Facebook Ads para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de acesso. Um token de usuário do sistema prestes a expirar é válido por 60 dias a partir de uma data gerada ou atualizada. Para criar continuidade, o desenvolvedor deve atualizar o token de acesso em até 60 dias. Se isso não for feito, o token de acesso será perdido e será exigido que o desenvolvedor obtenha um novo token para recuperar o acesso à API. Consulte [Atualizar token de acesso](https://developers.facebook.com/docs/marketing-api/system-users/install-apps-and-generate-tokens/).
+ Para obter a documentação pública do Facebook Ads sobre a criação de uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Uso do OAuth 2.0 para acessar APIs do Google](https://developers.google.com/identity/protocols/oauth2) no guia Google para desenvolvedores.

Para configurar uma conexão com o Facebook Ads:

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**, selecione Facebook Ads.

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

   1. Selecione o perfil do AWS IAM que o AWS Glue pode assumir e que 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 Facebook Ads
<a name="facebook-ads-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Facebook Ads do qual você deseja ler. Você precisará do nome do objeto. As tabelas a seguir mostram as entidades compatíveis.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Sim | Sim | Não | Sim | Sim | 
| Conjunto de anúncios | Sim | Sim | Não | Sim | Sim | 
| Ads | Sim | Sim | Não | Sim | Sim | 
| Anúncio criativo | Não | Sim | Não | Sim | Não | 
| Insights: conta | Não | Sim | Não | Sim | Não | 
| Adaccounts | Sim | Sim | Não | Sim | Não | 
| Insights: anúncio | Sim | Sim | Não | Sim | Sim | 
| Insights: AdSet | Sim | Sim | Não | Sim | Sim | 
| Insights: campanha | Sim | Sim | Não | Sim | Sim | 

**Exemplo:**

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

## Detalhes das entidades e dos campos do Facebook Ads
<a name="facebook-ads-reading-entity-and-field-details"></a>

Para obter mais informações sobre os detalhes das entidades e dos campos, consulte:
+ [Conta de anúncios](https://developers.facebook.com/docs/marketing-api/reference/ad-account)
+ [Campanha](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group)
+ [Conjunto de anúncios](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign)
+ [Ad](https://developers.facebook.com/docs/marketing-api/reference/adgroup)
+ [Anúncio criativo](https://developers.facebook.com/docs/marketing-api/reference/ad-creative)
+ [Conta de anúncios de insight](https://developers.facebook.com/docs/marketing-api/reference/ad-account/insights)
+ [Anúncios de insights](https://developers.facebook.com/docs/marketing-api/reference/adgroup/insights/)
+ [Conjuntos de anúncios de insights](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign/insights)
+ [Campanhas de insights](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group/insights)

Para obter mais informações, consulte [API de marketing](https://developers.facebook.com/docs/marketing-api/reference/v21.0).

**nota**  
Os tipos de dados Struct e List são convertidos no tipo de dados String na resposta dos conectores.

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

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Data e hora, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplo de valor válido:

  ```
  "2022-01-01"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

# Opções de conexão do Facebook Ads
<a name="facebook-ads-connection-options"></a>

Estas são as opções de conexão do Facebook Ads:
+ `ENTITY_NAME`(String): (obrigatório) usado para leitura. O nome do objeto no Facebook Ads.
+ `API_VERSION`(String): (obrigatório) usado para leitura. Versão da API Rest do Facebook Ads que você deseja usar. Por exemplo: v1.
+ `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.
+ `PARTITION_FIELD`(String): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(String): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(String): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `TRANSFER_MODE`(String): padrão: SYNC. Usado para leitura assíncrona.

# Limitações e notas do conector do Facebook Ads
<a name="facebook-ads-connector-limitations"></a>

Estas são as limitações ou notas do conector do Facebook Ads:
+ Como o Facebook Ads é compatível com metadados dinâmicos, todos os campos podem ser consultados. Todos os campos oferecem suporte a filtragem e os registros serão buscados quando os dados estiverem disponíveis. Caso contrário, o Facebook retornará uma resposta de solicitação inválida (400) com uma mensagem de erro adequada.
+ A contagem de chamadas de uma aplicação é o número de chamadas que um usuário pode fazer durante uma janela contínua de uma hora, 200 multiplicado pelo número de usuários. Para conhecer detalhes sobre o limite de taxa, consulte [Limites de taxa](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/) e [Limites de taxa de casos de uso empresarial](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/#buc-rate-limits).

# Conexão com o Facebook Page Insights
<a name="connecting-to-data-facebook-page-insights"></a>

O Facebook Pages permite que empresas e outros grupos de interesse criem páginas para a rede social Facebook.com. As empresas usam essas páginas para compartilhar o horário de funcionamento, fazer anúncios e interagir com os clientes online. Se você for usuário do Facebook Page Insights, poderá conectar o AWS Glue à sua conta do Facebook Page Insights. É possível usar o Facebook Page Insights como fonte de dados em suas tarefas de ETL. Execute essas tarefas para transferir dados do Facebook Page Insights para serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para o Facebook Page Insights
<a name="facebook-page-insights-support"></a>

O AWS Glue oferece suporte ao Facebook Page Insights da seguinte forma:

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

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

**Versões da API do Facebook Page Insights com suporte**  
Versões da API do Facebook Page Insights com suporte:
+ v17
+ v18
+ v19
+ v20
+ v21

# Políticas que contêm as operações de API para criar e usar conexões
<a name="facebook-page-insights-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 Facebook Page Insights
<a name="facebook-page-insights-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ As contas padrão do Facebook são acessadas diretamente pelo Facebook.
+ A autenticação do usuário é necessária para gerar o token de acesso.
+ O conector do Facebook Page Insights implementa o fluxo do OAuth para tokens de acesso do usuário.
+ O conector usa OAuth 2.0 para autenticar nossas solicitações de API no Facebook Page Insights. Isso se enquadra na arquitetura de autenticação multifator (MFA), que é um superconjunto de 2FA. É uma autenticação baseada na Web.
+ O usuário precisa conceder permissões para acessar os endpoints. Para acessar os dados do usuário, a autorização do endpoint é processada por meio de permissões e recursos.

# Configuração de conexões do Facebook Page Insights
<a name="facebook-page-insights-configuring-connections"></a>

Para configurar uma conexão com o Facebook Page Insights:

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

   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 URL do código de autorização.

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

**Pré-requisito**

Um objeto do Facebook Page Insights do qual você deseja ler. Você precisará do nome do objeto.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Conteúdo da página | Sim | Não | Sim | Sim | Sim | 
| Cliques em CTA da página | Sim | Não | Não | Sim | Sim | 
| Engajamento da página | Sim | Não | Não | Sim | Sim | 
| Impressões da página | Sim | Não | Não | Sim | Sim | 
| Publicações da página | Sim | Não | Não | Sim | Sim | 
| Engajamento de publicação da página | Não | Não | Não | Sim | Não | 
| Reações à publicação da página | Não | Não | Não | Sim | Não | 
| Reações à página | Sim | Não | Não | Sim | Sim | 
| Histórias | Sim | Não | Não | Sim | Sim | 
| Demografia dos usuários da página | Sim | Não | Não | Sim | Sim | 
| Visualizações de vídeo da página | Sim | Não | Não | Sim | Sim | 
| Visualizações da página | Sim | Não | Não | Sim | Sim | 
| Publicações de vídeo da página | Sim | Não | Não | Sim | Sim | 
| Páginas | Não | Sim | Não | Sim | Não | 
| Feeds | Sim | Sim | Não | Sim | Sim | 

**Exemplo:**

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

**Detalhes de campo do Facebook Page Insights**:

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

## Particionamento de consultas
<a name="facebook-page-insights-reading-partitioning-queries"></a>

**Particionamento baseado em filtro**:

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Datetime, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
     }
```

# Opções de conexão do Facebook Page Insights
<a name="facebook-page-insights-connection-options"></a>

Estas são as opções de conexão do Facebook Page Insights:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do objeto no Facebook Page Insights.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Facebook Page Insights que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL` (String): (obrigatório) usado para leitura. Um URL de instância válida do Facebook Page Insights.

# Limitações e notas do conector do Facebook Page Insights
<a name="facebook-page-insights-connector-limitations"></a>

Estas são as limitações ou notas do conector do Facebook Page Insights:
+ A maioria das métricas será atualizada uma vez a cada 24 horas.
+ Somente os últimos dois anos de dados de insights estão disponíveis.
+ Somente 90 dias de insights podem ser visualizados ao mesmo tempo usando os parâmetros `since` e `until`.

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

O Freshdesk é um software de suporte ao cliente baseado em nuvem que é rico em atributos e fácil de usar. Com vários canais de suporte disponíveis, incluindo chat ao vivo, e-mail, telefone e mídias sociais, é possível ajudar os clientes por meio dos seus métodos de comunicação preferidos. Se você for um usuário do Freshdesk, poderá conectar o AWS Glue à sua conta do Freshdesk. Em seguida, será possível usar o Freshdesk como fonte de dados nos seus trabalhos de ETL. Execute essas tarefas para transferir dados do Freshdesk para serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para o Freshdesk
<a name="freshdesk-support"></a>

O AWS Glue oferece suporte ao Freshdesk da seguinte forma:

**Compatível como fonte?**  
Sim: SYNC e ASYNC. É possível usar trabalhos de ETL do AWS Glue para consultar seus dados do Freshdesk.

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

**Versões da API do Freshdesk com suporte**  
Versões da API do Freshdesk com suporte:
+ v2

# Políticas que contêm as operações de API para criar e usar conexões
<a name="freshdesk-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 Freshdesk
<a name="freshdesk-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Uma conta Freshdesk. Você pode escolher entre as edições Gratuita, Growth, Pro ou Enterprise.
+ Uma chave de API do usuário do Freshdesk.

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

O Freshdesk é compatível com a autenticação personalizada.

Para obter a documentação pública do Freshdesk sobre a geração das chaves de API necessárias para autenticação personalizada, consulte [Freshdesk authentication](https://developer.freshdesk.com/api/#authentication).

Confira abaixo as etapas para configurar a conexão do Freshdesk:
+ No AWS Secrets Manager, crie um segredo com os seguintes detalhes:
  + Para a aplicação conectada gerenciada pelo cliente, o segredo deve conter a chave da API da aplicação conectada com `apiKey` como a chave. Observação: é preciso criar um segredo por conexão no AWS Glue.
+ No AWS Glue Studio, crie uma conexão em **Conexões de dados** seguindo estas etapas:
  + Ao selecionar uma **Fonte de dados**, selecione Freshdesk.
  + Forneça o `INSTANCE_URL` da instância do Freshdesk à qual você deseja se conectar.
  + 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": "*"
        }
      ]
    }
    ```

------
  + Selecione o `secretName` que você deseja usar para essa conexão no AWS Glue para inserir os tokens.
  + Selecione as opções de rede se quiser usar sua rede.
+ Conceda permissão ao perfil do IAM associado ao seu trabalho do AWS Glue para ler `secretName`.
+ Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**.

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

**Pré-requisito**

Um objeto do Freshdesk do qual você deseja ler. Você precisará do nome do objeto.

**Entidades compatíveis com a fonte de Sync**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Agentes | Sim | Sim | Não | Sim | Sim | 
| Horário comercial | Não | Sim | Não | Sim | Sim | 
| Empresa | Sim | Sim | Não | Sim | Sim | 
| Contatos | Sim | Sim | Não | Sim | Sim | 
| Conversas | Não | Sim | Não | Sim | Não | 
| Configurações de e-mail | Não | Sim | Não | Sim | Não | 
| Caixas de entrada de e-mail | Sim | Sim | Sim | Sim | Não | 
| Categorias do fórum | Não | Sim | Não | Sim | Não | 
| Fóruns | Não | Sim | Não | Sim | Não | 
| Grupos | Não | Sim | Não | Sim | Não | 
| Produtos | Não | Sim | Não | Sim | Não | 
| Perfis | Não | Sim | Não | Sim | Não | 
| Classificação de satisfação | Sim | Sim | Não | Sim | Não | 
| Habilidades | Não | Sim | Não | Sim | Não | 
| Soluções | Sim | Sim | Não | Sim | Não | 
| Pesquisas | Não | Sim | Não | Sim | Não | 
| Tíquetes | Sim | Sim | Sim | Sim | Sim | 
| Registros de tempo | Sim | Sim | Não | Sim | Não | 
| Tópicos | Não | Sim | Não | Sim | Não | 
| Comentários do tópico | Não | Sim | Não | Sim | Não | 

**Entidades compatíveis com a fonte de ASYNC**:


| Entidade | Versão da API | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | --- | 
| Empresas | v2 | Não | Não | Não | Não | Não | 
| Contatos | v2 | Não | Não | Não | Não | Não | 

**Exemplo:**

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

**Detalhes de entidades e campos do Slack**


| Entidade | Campo | 
| --- | --- | 
| Agentes | https://developers.freshdesk.com/api/\$1list\$1all\$1agents | 
| Horário comercial | https://developers.freshdesk.com/api/\$1list\$1all\$1business\$1hours | 
| Comentários | https://developers.freshdesk.com/api/\$1comment\$1attributess | 
| Empresa | https://developers.freshdesk.com/api/\$1companies | 
| Contatos | https://developers.freshdesk.com/api/\$1list\$1all\$1contacts | 
| Conversas | https://developers.freshdesk.com/api/\$1list\$1all\$1ticket\$1notes | 
| Configurações de e-mail | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1configs | 
| Caixas de entrada de e-mail | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1mailboxes | 
| Categorias do fórum | https://developers.freshdesk.com/api/\$1category\$1attributes | 
| Fóruns | https://developers.freshdesk.com/api/\$1forum\$1attributes | 
| Grupos | https://developers.freshdesk.com/api/\$1list\$1all\$1groups | 
| Produtos | https://developers.freshdesk.com/api/\$1list\$1all\$1products | 
| Perfis | https://developers.freshdesk.com/api/\$1list\$1all\$1roles | 
| Classificação de satisfação | https://developers.freshdesk.com/api/\$1view\$1all\$1satisfaction\$1ratingss | 
| Habilidades | https://developers.freshdesk.com/api/\$1list\$1all\$1skills | 
| Soluções | https://developers.freshdesk.com/api/\$1solution\$1content | 
| Pesquisas | https://developers.freshdesk.com/api/\$1list\$1all\$1survey | 
| Tíquetes | https://developers.freshdesk.com/api/\$1list\$1all\$1tickets | 
| Registros de tempo | https://developers.freshdesk.com/api/\$1list\$1all\$1time\$1entries | 
| Tópicos | https://developers.freshdesk.com/api/\$1topic\$1attributes | 

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

**Particionamento baseado em filtro**:

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Datetime, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
     }
```

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

Estas são as opções de conexão do Freshdesk:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Freshdesk.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Freshdesk que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL` (String): (obrigatório) usado para leitura. Um URL de instância válida do Freshdesk.
+ `TRANSFER_MODE` (String): usado para indicar se o tipo de processamento como `SYNC` ou `ASYNC` está definido como `SYNC` por padrão. (Opcional)

# Limitações e notas do conector do Freshdesk
<a name="freshdesk-connector-limitations"></a>

Estas são as limitações ou notas do conector do Freshdesk:
+ As entidades `Company`, `Contacts` e `Tickets` com filtragem têm limitações de paginação. Elas retornam somente 30 registros por página, e o valor da página pode ser configurado até um máximo de 10 (obtendo no máximo 300 registros).
+ A entidade `Tickets` não busca registros com mais de 30 dias.
+ As entidades `Company`, `Contacts` e `Tickets` oferecem suporte ao tipo de dados 'Data' na filtragem. Você deve selecionar as frequências de acionamento de "Diária" em diante para essas três entidades. Selecionar "Minutos" ou "Horária" pode resultar em dados duplicados. Além disso, ao selecionar esses campos para filtragem, somente o valor da data deve ser selecionado, pois ele considerará apenas a parte da data do carimbo de data/hora selecionado.
+ O número de chamadas de API por minuto é baseado no seu plano. Esse limite é aplicado em toda a conta, independentemente de fatores como o número de agentes ou endereços IP usados para fazer as chamadas. Para todos os usuários de teste, há um limite padrão de APIs de 50 chamadas/minuto. Para obter mais detalhes, consulte [Freshdesk](https://developer.freshdesk.com/api/#ratelimit)
+ Para qualquer entidade, somente um trabalho de exportação/assíncrono é processado por vez. Um novo trabalho só será processado quando o trabalho existente tiver sido concluído com sucesso ou falhar. Para obter mais detalhes, consulte [Freshdesk](https://developers.freshdesk.com/api/#export_contact)
+ Os campos a seguir são compatíveis com chamadas de API Sync, mas não são compatíveis/permitidos para serem passados no corpo da solicitação da API Async.
  + id
  + created\$1at
  + updated\$1at
  + updated\$1since
  + active
  + company\$1id
  + other\$1companies
  + avatar
  + view\$1all\$1tickets
  + deleted
  + other\$1emails
  + estado
  + tag
  + tags

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

O Freshsales é um CRM intuitivo que ajuda os representantes de vendas a eliminar o trabalho de suposição das vendas. Com telefone e e-mail integrados, tarefas, compromissos e notas, os representantes de vendas não precisam alternar entre as guias para acompanhar os clientes potenciais. É possível gerenciar melhor seus negócios com a visualização do pipeline e direcionar mais negócios para o fechamento. Se você for um usuário do Freshsales, poderá conectar o AWS Glue à sua conta do Freshsales. Em seguida, será possível usar o Freshsales como fonte de dados nos seus trabalhos de ETL. Execute essas tarefas para transferir dados do Freshsales para serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para o Freshsales
<a name="freshsales-support"></a>

O AWS Glue oferece suporte ao Freshsales da seguinte forma:

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

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

**Versões da API do Freshsales com suporte**  
Versões da API do Freshsales cpm suporte:
+ v1.0

# Políticas que contêm as operações de API para criar e usar conexões
<a name="freshsales-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 Freshsales
<a name="freshsales-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Freshsales.
+ Você tem uma chave de API do usuário.

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

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

O Freshsales oferece suporte à autenticação personalizada.

Para obter a documentação pública do Freshdesk sobre a geração das chaves de API necessárias para autenticação personalizada, consulte [Autenticação](https://developer.freshsales.io/api/#authentication).

Para configurar uma conexão do Freshsales:

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 chave da API da aplicação conectada com `apiSecretKey` como a chave. O segredo também precisa conter outro par de chave-valor com `apiKey` como chave e `token` como valor.

   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 uma **Fonte de dados**, selecione o Freshsales.

   1. Forneça o `INSTANCE_URL` da conta do Freshsales à 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 Freshsales
<a name="freshsales-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Freshsales do qual você deseja ler. Você precisará do nome do objeto.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Contas | Sim | Sim | Sim | Sim | Sim | 
| Contatos | Sim | Sim | Sim | Sim | Sim | 

**Exemplo:**

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

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

O Freshsales fornece endpoints para a busca de metadados de forma dinâmica para entidades com suporte. Portanto, o suporte do operador é capturado no nível do tipo de dados.

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

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

**Particionamento baseado em filtro**:

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo Datetime, aceitamos o valor no formato ISO.

  Exemplos de valores válidos:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
     }
```

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

Estas são as opções de conexão do Freshsales:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Freshsales.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Freshsales que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL`(string): usado para leitura. Um URL válido da instância do Freshsales.

# Limitações do Freshsales
<a name="freshsales-connection-limitations"></a>

Estas são as limitações ou notas do Freshsales:
+ No Freshsales, o limite da taxa de API é de 1.000 solicitações de API por hora, por conta (consulte [Erros](https://developer.freshsales.io/api/#error)). Mas esse limite pode ser estendido com o plano de assinatura Enterprise (veja a [comparação de planos](https://www.freshworks.com/crm/pricing-compare/)).

# Conexão com o Google Ads
<a name="connecting-to-googleads"></a>

 A API do Google Ads é a interface programática do Google Ads, usada para gerenciar contas e campanhas grandes ou complexas do Google Ads. Se você for um usuário do Google Ads, poderá conectar o AWS Glue à sua conta do Google Ads. Em seguida, será possível usar o Google Ads como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Google Ads e serviços da AWS ou outras aplicações com suporte. 

**Topics**
+ [Compatibilidade do AWS Glue com o Google Ads](googleads-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](googleads-configuring-iam-permissions.md)
+ [Configurar o Google Ads](googleads-configuring.md)
+ [Configuração de conexões do Google Ads](googleads-configuring-connections.md)
+ [Leitura de entidades do Google Ads](googleads-reading-from-entities.md)
+ [Opções de conexão do Google Ads](googleads-connection-options.md)
+ [Criar uma conta do Google Ads](googleads-create-account.md)
+ [Limitações](googleads-connector-limitations.md)

# Compatibilidade do AWS Glue com o Google Ads
<a name="googleads-support"></a>

O AWS Glue é compatível com o Google Ads da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados no Google Ads.

**Compatível como destino?**  
Não.

**Versões da API do Google Ads compatíveis**  
v18

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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. 

# Configurar o Google Ads
<a name="googleads-configuring"></a>

Para usar o AWS Glue para transferir dados do Goggle Ads, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="googleads-configuring-min-requirements"></a>
+  É necessário ter uma conta do Google Ads com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criar de uma conta no Google Ads](googleads-create-account.md). 
+  A conta do Google Ads está habilitada para acesso de API. Todo o uso da API do Google Ads está disponível sem custo adicional. 
+  A conta do Google Ads permite a instalação de aplicações conectadas. Caso não tenha acesso a essa funcionalidade, entre em contato com seu administrador do Google Ads. 

 Caso atenda a esses requisitos, você poderá conectar o AWS Glue à conta do Google Ads. 

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

 O Google Ads oferece suporte ao tipo de concessão `AUTHORIZATION_CODE` para OAuth2. 

 Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O console do AWS Glue redirecionará o usuário para o Google Ads, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Google Ads. 

 Os usuários podem optar por criar sua própria aplicação conectada no Google Ads e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Google Ads para fazer login e autorizar o acesso do AWS Glue aos recursos. 

 Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

 Para obter mais informações, consulte a [documentação pública do Google Ads sobre a criação de uma aplicação conectada para o fluxo de código de autorização do OAuth](https://developers.google.com/workspace/guides/create-credentials). 

Para configurar uma conexão com o Google Ads:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para o tipo de concessão AuthorizationCode: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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 Google Ads.

   1. Forneça o `developer token` do Google Ads ao qual deseja se conectar.

   1. Forneça o `MANAGER ID` do Google Ads se você quiser fazer login como gerente.

   1.  Selecione o perfil do 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 Google Ads
<a name="googleads-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Google Ads do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Anúncio de grupo de anúncios | Sim | Sim | Sim | Não | Sim | 
| Grupo de anúncios | Sim | Sim | Sim | Não | Sim | 
| Orçamento da campanha | Sim | Sim | Sim | Sim | Sim | 
| Orçamento da conta | Sim | Não | Sim | Sim | Não | 
| Campaign | Sim | Sim | Sim | Sim | Sim | 
| Conta | Sim | Não | Sim | Não | Não | 

 **Exemplo** 

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

 **Detalhes das entidades e dos campos do Google Ads** 


| Entidade | Campo | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | --- | 
| Conta | resourceName | String | \$1=, = | 
| Conta | callReportingEnabled | Booleano | \$1=, = | 
| Conta | callConversionReportingEnabled | Booleano | \$1=, = | 
| Conta | callConversionAction | String | \$1=, = | 
| Conta | conversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | crossAccountConversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | payPerConversionEligibilityFailureReasons | Lista |  | 
| Conta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | currencyCode | String | \$1=, =, LIKE | 
| Conta | timeZone | String | \$1=, =, LIKE | 
| Conta | autoTaggingEnabled | Booleano | \$1=, = | 
| Conta | hasPartnersBadge | Booleano | \$1=, = | 
| Conta | manager | Booleano | \$1=, = | 
| Conta | testAccount | Booleano | \$1=, = | 
| Conta | date | Data | BETWEEN, =, <, >, <=, >= | 
| Conta | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | acceptedCustomerDataTerms | Booleano |  | 
| Conta | conversionTrackingStatus | String | \$1=, =, LIKE | 
| Conta | enhancedConversionsForLeadsEnabled | Booleano |  | 
| Conta | googleAdsConversionCustomer | String |  | 
| Conta | status | String | \$1=, = | 
| Conta | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Conta | costPerConversion | Duplo | \$1=, =, <, > | 
| Conta | conversões | Duplo | \$1=, =, <, > | 
| Conta | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Conta | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | topImpressionPercentage | Duplo | \$1=, =, <, > | 
| Conta | averageCpc | Duplo | \$1=, =, <, > | 
| Conta | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | averageCost | Duplo | \$1=, =, <, > | 
| Conta | ctr | Duplo | \$1=, =, <, > | 
| Conta | activeViewCtr | Duplo | \$1=, =, <, > | 
| Conta | searchImpressionShare | Duplo | \$1=, =, <, > | 
| Conta | conversionAction | String | \$1=, = | 
| Conta | conversionActionCategory | String | \$1=, = | 
| Conta | conversionActionName | String | \$1=, =, LIKE | 
| Orçamento da conta | resourceName | String | \$1=, = | 
| Orçamento da conta | status | String | \$1=, = | 
| Orçamento da conta | proposedEndTimeType | String | \$1=, = | 
| Orçamento da conta | approvedEndTimeType | String | \$1=, = | 
| Orçamento da conta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | billingSetup | String | \$1=, = | 
| Orçamento da conta | nome | String | \$1=, =, LIKE | 
| Orçamento da conta | approvedStartDateTime |  DateTime | BETWEEN, =, <, >, <=, >= | 
| Orçamento da conta | proposedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | approvedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | adjustedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | amountServedMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | resourceName | String | \$1=, =, LIKE | 
| Grupo de anúncios | status | String | \$1=, =, LIKE | 
| Grupo de anúncios | type | String | \$1=, =, LIKE | 
| Grupo de anúncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | nome | String | \$1=, =, LIKE | 
| Grupo de anúncios | campaign | String | \$1=, = | 
| Grupo de anúncios | cpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | targetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | cpmBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | cpvBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | targetCpmMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | effectiveTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | date | Data | BETWEEN, =, <, >, <=, >= | 
| Grupo de anúncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | useAudienceGrouped | Booleano | \$1=, = | 
| Grupo de anúncios | effectiveCpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | valuePerConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | averageCost | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | costPerConversion | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | averagePageViews | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | allConversions | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | averageCpc | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | topImpressionPercentage | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | activeViewCtr | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | ctr | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | searchTopImpressionShare | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | searchImpressionShare | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | searchAbsoluteTopImpressionShare | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | relativeCtr | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | conversionAction | String | \$1=, = | 
| Grupo de anúncios | conversionActionCategory | String | \$1=, = | 
| Grupo de anúncios | conversionActionName | String | \$1=, =, LIKE | 
| Grupo de anúncios | updateMask | String |  | 
| Grupo de anúncios | criar | Struct |  | 
| Grupo de anúncios | atualizar | Struct |  | 
| Grupo de anúncios | primaryStatus | String | \$1=, = | 
| Grupo de anúncios | primaryStatusReasons | Lista |  | 
| Anúncio de grupo de anúncios | resourceName | String | \$1=, = | 
| Anúncio de grupo de anúncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | status | String | \$1=, = | 
| Anúncio de grupo de anúncios | rótulos | Lista |  | 
| Anúncio de grupo de anúncios | adGroup | String | \$1=, = | 
| Anúncio de grupo de anúncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | approvalStatus | String | \$1=, = | 
| Anúncio de grupo de anúncios | reviewStatus | String | \$1=, = | 
| Anúncio de grupo de anúncios | adStrength | String | \$1=, = | 
| Anúncio de grupo de anúncios | type | String | \$1=, = | 
| Anúncio de grupo de anúncios | businessName | String | \$1=, =, LIKE | 
| Anúncio de grupo de anúncios | date | Data | BETWEEN, =, <, >, <=, >= | 
| Anúncio de grupo de anúncios | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | valuePerConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | averageCost | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | costPerConversion | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | averagePageViews | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | allConversions | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | averageCpc | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | topImpressionPercentage | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | activeViewCtr | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | ctr | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | conversionAction | String | \$1=, = | 
| Anúncio de grupo de anúncios | conversionActionCategory | String | \$1=, = | 
| Anúncio de grupo de anúncios | conversionActionName | String | \$1=, =, LIKE | 
| Anúncio de grupo de anúncios | updateMask | String |  | 
| Anúncio de grupo de anúncios | criar | Struct |  | 
| Anúncio de grupo de anúncios | atualizar | Struct |  | 
| Anúncio de grupo de anúncios | policyValidationParameter | Struct |  | 
| Anúncio de grupo de anúncios | primaryStatus | String | \$1=, = | 
| Anúncio de grupo de anúncios | primaryStatusReasons | Lista |  | 
| Campaign | resourceName | String | \$1=, = | 
| Campaign | status | String | \$1=, = | 
| Campaign | baseCampaign | String | \$1=, = | 
| Campaign | nome | String | \$1=, =, LIKE | 
| Campaign | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | campaignBudget | String | \$1=, =, LIKE | 
| Campaign | startDate | Data | BETWEEN, =, <, >, <=, >= | 
| Campaign | endDate | Data | BETWEEN, =, <, >, <=, >= | 
| Campaign | adServingOptimizationStatus | String | \$1=, = | 
| Campaign | advertisingChannelType | String | \$1=, = | 
| Campaign | advertisingChannelSubType | String | \$1=, = | 
| Campaign | experimentType | String | \$1=, = | 
| Campaign | servingStatus | String | \$1=, = | 
| Campaign | biddingStrategyType | String | \$1=, = | 
| Campaign | domainName | String | \$1=, =, LIKE | 
| Campaign | languageCode | String | \$1=, =, LIKE | 
| Campaign | useSuppliedUrlsOnly | Booleano | \$1=, = | 
| Campaign | positiveGeoTargetType | String | \$1=, = | 
| Campaign | negativeGeoTargetType | String | \$1=, = | 
| Campaign | paymentMode | String | \$1=, = | 
| Campaign | optimizationGoalTypes | Lista |  | 
| Campaign | date | Data | BETWEEN, =, <, >, <=, >= | 
| Campaign | averageCost | Duplo |  | 
| Campaign | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | useAudienceGrouped | Booleano | \$1=, = | 
| Campaign | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Campaign | costPerConversion | Duplo | \$1=, =, <, > | 
| Campaign | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | publisherPurchasedClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | averagePageViews | Duplo | \$1=, =, <, > | 
| Campaign | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | valuePerConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | allConversions | Duplo | \$1=, =, <, > | 
| Campaign | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Campaign | searchAbsoluteTopImpressionShare | Duplo | \$1=, =, <, > | 
| Campaign | averageCpc | Duplo | \$1=, =, <, > | 
| Campaign | searchImpressionShare | Duplo | \$1=, =, <, > | 
| Campaign | searchTopImpressionShare | Duplo | \$1=, =, <, > | 
| Campaign | activeViewCtr | Duplo | \$1=, =, <, > | 
| Campaign | ctr | Duplo | \$1=, =, <, > | 
| Campaign | relativeCtr | Duplo | \$1=, =, <, > | 
| Campaign | updateMask | String |  | 
| Campaign | criar | Struct |  | 
| Campaign | atualizar | Struct |  | 
| Orçamento da campanha | resourceName | String | \$1=, = | 
| Orçamento da campanha | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | status | String | \$1=, = | 
| Orçamento da campanha | deliveryMethod | String | \$1=, = | 
| Orçamento da campanha | período | String | \$1=, = | 
| Orçamento da campanha | type | String | \$1=, = | 
| Orçamento da campanha | nome | String | \$1=, =, LIKE | 
| Orçamento da campanha | amountMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | explicitlyShared | Booleano | \$1=, = | 
| Orçamento da campanha | referenceCount | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | hasRecommendedBudget | Booleano | \$1=, = | 
| Orçamento da campanha | date | Data | BETWEEN, =, <, >, <=, >= | 
| Orçamento da campanha | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | startDate | Data | BETWEEN, =, <, >, <=, >= | 
| Orçamento da campanha | endDate | Data | BETWEEN, =, <, >, <=, >= | 
| Orçamento da campanha | maximizeConversionValueTargetRoas | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | maximizeConversionsTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | selectiveOptimizationConversionActions | String |  | 
| Orçamento da campanha | averageCost | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | costPerConversion | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | allConversions | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | valuePerAllConversions | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | averageCpc | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | ctr | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | updateMask | String |  | 
| Orçamento da campanha | criar | Struct |  | 
| Orçamento da campanha | atualizar | Struct |  | 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela a seguir. 


| Entity Name | Campo de particionamento | Tipo de dado | 
| --- | --- | --- | 
| Anúncio de grupo de anúncios | date | Data | 
| Grupo de anúncios | date | Data | 
| Campaign | date | Data | 
| Orçamento da campanha | date | Data | 

 **Exemplo** 

```
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"
    }
)
```

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

Estas são as opções de conexão do Google Ads:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do objeto no Google Ads. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Google Ads que você deseja usar. Exemplo: v16. 
+  `DEVELOPER_TOKEN`(string): (obrigatório) usado para leitura/gravação. Necessário para autenticar o desenvolvedor ou a aplicação que faz solicitações à API. 
+  `MANAGER_ID`(string): usado para leitura/gravação. Um identificador exclusivo que permite gerenciar várias contas do Google Ads. Este é o ID do cliente do gerente autorizado. Se o seu acesso à conta do cliente for por meio de uma conta de gerente, o `MANAGER_ID` é necessário. Para obter mais informações, consulte [login-customer-id](https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid). 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Criar uma conta do Google Ads
<a name="googleads-create-account"></a>

1.  Faça login na [Conta de desenvolvedor do Google Ads](https://console.cloud.google.com) com suas credenciais e vá para \$1MyProject.   
![\[A captura de tela mostra a tela de boas-vindas para login na conta de desenvolvedor do Google Ads.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-log-in-developer-account.png)

1.  Escolha **Novo projeto** e forneça as informações necessárias para criar um projeto do Google, caso não tenha nenhuma aplicação registrada nele.   
![\[A captura de tela mostra a página de seleção de um projeto. Escolha Novo projeto no canto superior direito.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-new-project.png)  
![\[A captura de tela mostra a janela Novo projeto para inserir o nome do projeto e escolher um local.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-new-project-name-location.png)

1.  Escolha a guia **Navegação**, depois **API e configuração** e **Criar ID de cliente** e **ClientSecret**, que exigirão configurações adicionais para criar uma conexão entre o AWS Glue e o Google Ads. Para obter mais informações, consulte [Credenciais da API](https://console.cloud.google.com/apis/credentials).   
![\[A captura de tela mostra a página de configuração de APIs e serviços.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-apis-and-services.png)

1.  Escolha **CRIAR CREDENCIAIS** e, em seguida, **ID do cliente OAuth**.   
![\[A captura de tela mostra a página de configuração de APIs e serviços com o menu suspenso Criar credenciais e a opção ID do cliente Oauth destacada.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-create-credentials.png)

1.  Selecione **Tipo de aplicação** como **Aplicação Web**.   
![\[A captura de tela mostra a página Criar ID do cliiente OAuth e o Tipo de aplicação como Aplicação Web.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-oauth-client-id-application-type.png)

1.  Em **URIs de redirecionamento autorizados**, adicione os URIs de redirecionamento OAuth e escolha **Criar**. Se necessário, é possível adicionar vários URIs de redirecionamento.   
![\[A captura de tela mostra a página Create OAuth client ID e a seção Authorised redirect URIs. Aqui, adicione os URIs e escolha ADD URI, se necessário. Ao concluir, escolha CREATE.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-oauth-redirect-uris.png)

1.  Seu **ID do cliente** e o **Segredo do cliente** serão gerados ao criar uma conexão entre o AWS Glue e o Google Ads.   
![\[A captura de tela mostra a página Create OAuth client ID e a seção Authorised redirect URIs. Aqui, adicione os URIs e escolha ADD URI, se necessário. Ao concluir, escolha CREATE.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-oauth-client-created.png)

1.  Adicione os escopos de acordo com as necessidades da sua aplicação, escolha a **Tela de consentimento do OAuth**, forneça as informações necessárias e adicione os escopos com base nos requisitos.   
![\[A captura de tela mostra a página Atualizar escopos selecionados. Selecione os escopos conforme necessário.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-selected-scopes.png)

# Limitações
<a name="googleads-connector-limitations"></a>

Estas são as limitações do conector do Google Ads:
+ `MANAGER_ID` é uma entrada opcional na criação de uma conexão. Porém, quando você deseja acessar os clientes sob um gerente específico, `MANAGER_ID` é uma entrada obrigatória. A tabela abaixo explica as limitações de acesso com base no fato de `MANAGER_ID` estar ou não incluído em uma conexão.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/googleads-connector-limitations.html)
+ Quando uma conta de gerente for escolhida como objeto, apenas `Account` aparecerá como subobjeto. No conector do Google Ads, entidades como campanhas, anúncios etc. são recuperadas com base em contas de clientes individuais, não na conta de gerente.
+ Você não pode recuperar métricas para a conta de gerente. Em vez disso, é possível recuperar métricas para contas de clientes individuais.
+  Cada conta pode ter até 10 mil campanhas, incluindo campanhas ativas e pausadas. Para obter mais informações, acesse [Campanha por conta](https://support.google.com/google-ads/answer/6372658). 
+  Ao criar um relatório, se você escolher determinadas métricas para exibir, as linhas cujas métricas selecionadas forem todas zero não serão retornadas. Para obter mais informações, consulte [Métricas zero](https://developers.google.com/google-ads/api/docs/reporting/zero-metrics?hl=en#exclude_zero_metrics_by_segmenting). 
+  Com os campos a seguir, o fluxo de mapeamento completo não funcionará para entidades de conta, grupo de anúncios e anúncios de grupos de anúncios, especificamente para conversionAction, conversionActionCategory e conversionActionName. Para obter mais informações, consulte [Segmento e métricas](https://developers.google.com/google-ads/api/docs/reporting/segmentation?hl=en#selectability_between_segments_and_metrics). 
+ Um filtro de intervalo de datas é obrigatório quando o campo `segments.date` é selecionado.

# Conexão com o Google Analytics 4
<a name="connecting-to-googleanalytics"></a>

 O Google Analytics 4 é um serviço de análise que rastreia e relata métricas sobre as interações dos visitantes com aplicações e sites. Essas métricas incluem visualizações de página, usuários ativos e eventos. Se você usa o Google Analytics 4, pode conectar o AWS Glue à sua conta do Google Analytics 4. Você então poderá usar o Google Analytics 4 como fonte de dados em seus trabalhos de ETL. Execute esses trabalhos para transferir dados do Google Analytics 4 para serviços da AWS ou outras aplicações compatíveis. 

**Topics**
+ [Suporte do AWS Glue ao Google Analytics 4](googleanalytics-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](googleanalytics-configuring-iam-permissions.md)
+ [Configuração do Google Analytics 4](googleanalytics-configuring.md)
+ [Configuração de conexões do Google Analytics 4](googleanalytics-configuring-connections.md)
+ [Leitura de entidades do Google Analytics 4](googleanalytics-reading-from-entities.md)
+ [Opções de conexão do Google Analytics 4](googleanalytics-connection-options.md)
+ [Criar uma conta do Google Analytics 4](googleanalytics-create-account.md)
+ [Etapas para criar uma aplicação cliente e credenciais do OAuth 2.0](googleanalytics-client-app-oauth-credentials.md)
+ [Limitações e considerações](googleanalytics-connector-limitations.md)

# Suporte do AWS Glue ao Google Analytics 4
<a name="googleanalytics-support"></a>

O AWS Glue oferece suporte ao Google Analytics 4 da seguinte forma:

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

**Compatível como destino?**  
Não.

**Versões da API do Google Analytics 4 com suporte**  
 v1 Beta. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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 Google Analytics 4
<a name="googleanalytics-configuring"></a>

Para usar o AWS Glue para transferir dados do Goggle Analytics 4, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="googleanalytics-configuring-min-requirements"></a>
+  Você tem uma conta do Google Analytics com um ou mais fluxos de dados que coletam os dados que deseja transferir. 
+  Você tem uma conta do Google Cloud Platform e um projeto do Google Cloud. 
+  No seu projeto do Google Cloud, você habilitou as seguintes APIs: 
  +  API do Google Analytics 
  +  API de administração do Google Analytics 
  +  API de dados do Google Analytics 
+  No seu projeto do Google Cloud, você configurou uma tela de consentimento de OAuth para usuários externos. Para obter mais informações, consulte [Configurar tela de consentimento do OAuth](https://support.google.com/cloud/answer/10311615#) na Ajuda do console do Google Cloud Platform. 
+  No seu projeto do Google Cloud, você configurou um ID de cliente OAuth 2.0. Para obter mais informações, consulte [Configurar o OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=). 

 Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do Google Analytics 4. 

# Configuração de conexões do Google Analytics 4
<a name="googleanalytics-configuring-connections"></a>

Para configurar uma conexão com o Planilhas Google:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para o tipo de concessão AuthorizationCode: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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

   1. Forneça o `INSTANCE_URL` do Google Analytics 4 ao qual deseja se conectar.

   1.  Selecione o perfil do 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`. 

 Tipo de concessão `AUTHORIZATION_CODE`. 

 Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Google Analytics 4, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Google Analytics 4. 

 Os usuários ainda podem optar por criar sua própria aplicação conectada no Google Analytics 4 e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Google Analytics 4 para fazer login e autorizar o acesso do AWS Glue aos recursos. 

 Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

 Para obter mais informações, consulte [Uso do Auth 2.0 para acessar APIs do Google](https://developers.google.com/identity/protocols/oauth2). 

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

 **Pré-requisitos** 
+  Um objeto do Google Analytics 4 do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Relatório em tempo real | Sim | Sim | Sim | Sim | Não | 
| Relatório principal | Sim | Sim | Sim | Sim | Sim | 

 **Exemplo** 

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

 **Detalhes de entidades e campos do Google Analytics 4** 


| Entidade | Campo | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | --- | 
| Relatório principal | Campos dinâmicos |  |  | 
| Relatório principal | Campos de dimensão | String | LIKE, = | 
| Relatório principal | Campos de dimensão | Data | LIKE, = | 
| Relatório principal | Campos de métricas | String | >, <, >=, <=, = BETWEEN | 
| Relatório principal | Dimensão personalizada e campos de métricas personalizados | String | NA | 
| Relatório em tempo real | appVersion | String | LIKE, = | 
| Relatório em tempo real | audienceId | String | LIKE, = | 
| Relatório em tempo real | audienceName | String | LIKE, = | 
| Relatório em tempo real | city | String | LIKE, = | 
| Relatório em tempo real | cityId | String | LIKE, = | 
| Relatório em tempo real | country | String | LIKE, = | 
| Relatório em tempo real | countryId | String | LIKE, = | 
| Relatório em tempo real | deviceCategory | String | LIKE, = | 
| Relatório em tempo real | eventName | String | LIKE, = | 
| Relatório em tempo real | minutesAgo | String | LIKE, = | 
| Relatório em tempo real | platform | String | LIKE, = | 
| Relatório em tempo real | streamId | String | LIKE, = | 
| Relatório em tempo real | streamName | String | LIKE, = | 
| Relatório em tempo real | unifiedScreenName | String | LIKE, = | 
| Relatório em tempo real | activeUsers | String | >, <, >=, <=, = BETWEEN | 
| Relatório em tempo real | conversões | String | >, <, >=, <=, = BETWEEN | 
| Relatório em tempo real | eventCount | String | >, <, >=, <=, = BETWEEN | 
| Relatório em tempo real | screenPageViews | String | >, <, >=, <=, = BETWEEN | 

 **Particionamento de consultas** 

1.  **Particionamento baseado em filtros** 

    Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
   +  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
   +  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

      Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
   +  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
   +  `NUM_PARTITIONS`: número de partições. 

    **Exemplo** 

   ```
   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.  **Partição com base em registros** 

    Opções adicionais `NUM_PARTITIONS` do Spark poderão ser fornecidas caso você deseje utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
   +  `NUM_PARTITIONS`: número de partições. 

    **Exemplo** 

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

# Opções de conexão do Google Analytics 4
<a name="googleanalytics-connection-options"></a>

São opções de conexão do Google Analytics 4:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Google Analytics 4. 
+  `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API REST do Google Analytics 4 que você deseja usar. 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 
+  `INSTANCE_URL`(Integer): usado para leitura. (Opcional) 

# Criar uma conta do Google Analytics 4
<a name="googleanalytics-create-account"></a>

 Siga as etapas para criar uma conta do Google Analytics 4: [ https://support.google.com/analytics/answer/9304153?hl=en ](https://support.google.com/analytics/answer/9304153?hl=en) 

# Etapas para criar uma aplicação cliente e credenciais do OAuth 2.0
<a name="googleanalytics-client-app-oauth-credentials"></a>

 Para obter mais informações, consulte a [Documentação da API do Google Analytics 4](https://developers.google.com/analytics/devguides/reporting/data/v1). 

1.  Crie e configure sua conta fazendo login na sua [conta do Google Analytics](https://analytics.google.com/) com suas credenciais. Em seguida, navegue até **Admin** > **Criar conta**. 

1.  Crie uma propriedade para a conta que acabou de criar escolhendo **Criar propriedade**. Configure a propriedade com os detalhes necessários. Assim que todos os detalhes forem fornecidos, o ID da propriedade correspondente será gerado. 

1.  Adicione um fluxo de dados para a propriedade criada escolhendo **Fluxos de dados** > **Adicionar fluxo** > **Web** no menu suspenso. Forneça os detalhes do site, como URL e outros campos obrigatórios. Após todos os detalhes serem fornecidos, o **ID de fluxo** e o **ID de medição** correspondentes serão gerados. 

1.  Configure o Google Analytics em seu site copiando o ID de medição e adicionando-o à configuração do seu site. 

1.  Crie um relatório do Google Analytics navegando até **Relatórios** e gerando o relatório necessário. 

1.  Autorize sua aplicação navegando até [console.cloud.google.com]( https://console.cloud.google.com), pesquise a API de Dados do Google Analytics e, em seguida, habilite a API. 

   1.  Navegue até a página API e serviços e escolha **Credenciais** > **Configurar IDs de clientes do OAuth 2.0**. 

   1.  Forneça o URL de redirecionamento adicionando o URL de redirecionamento do AWS Glue. 

1.  Copie o ID do cliente e o segredo do cliente, os quais serão necessários posteriormente para criar a conexão. 

# Limitações e considerações
<a name="googleanalytics-connector-limitations"></a>

São limitações do conector do Google Analytics 4:
+  Para a entidade Core Report, somente 9 campos de dimensão e 10 campos métricos são permitidos para enviar em uma solicitação. Se o número permitido de campos for excedido, a solicitação falhará e o conector lançará uma mensagem de erro. 
+  Para a entidade Realtime Report, somente 4 campos de dimensão são permitidos para enviar em uma solicitação. Se o número permitido de campos for excedido, a solicitação falhará e o conector lançará uma mensagem de erro. 
+  O Google Analytics 4 é uma ferramenta gratuita em versão beta. Consequentemente, haverá atualizações regulares sobre novos recursos, aprimoramento de entidades, adição de novos campos e descontinuação de campos existentes. 
+  Os campos do relatório principal são preenchidos dinamicamente. Por isso haverá adição, depreciação e renomeação de campos, e a imposição de novos limites aos campos pode ser feita a qualquer momento. 
+  A data de início padrão é 30 dias e a data de término é ontem (um dia antes da data atual). Essas datas serão substituídas no código da expressão de filtro se o usuário tiver definido o valor OU se o fluxo for incremental. 
+  De acordo com a documentação, a entidade de relatório em tempo real retornará 10.000 registros se o limite não for passado na solicitação, caso contrário, a API retornará no máximo 250.000 linhas por solicitação, não importa quantas você solicite. Para obter mais informações, consulte [Método: properties.runRealtimeReport](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport) na documentação do Google Analytics. 
+  A entidade de relatório em tempo real não oferece suporte à partição baseada em registros, pois não oferece suporte à paginação. Além disso, ele não oferece suporte à partição baseada em campo, pois nenhum dos campos atende aos critérios definidos. 
+  Devido à limitação no número de campos que podem ser transmitidos em uma solicitação. Estamos definindo campos de dimensão e métrica padrão dentro dos limites designados. Se "selecionar tudo" for escolhido, somente os dados desses campos predeterminados serão recuperados. 
  +  Relatório principal 
    +  De acordo com a limitação do SAAS, as solicitações são permitidas em até 9 dimensões e até 10 métricas (ou seja, uma solicitação pode conter no máximo 19 campos (métricas \$1 dimensão). 
    +  De acordo com a implementação: se o usuário utilizar SELECT\$1ALL ou selecionar mais de 25 campos, os campos padrão serão passados na solicitação. 
    +  Os seguintes campos são considerados campos padrão para o relatório principal: "country", "city", "eventName", "cityId", "browser", "date", "currencyCode", "deviceCategory", "transactionId", active1DayUsers", "active28DayUsers", "active7DayUsers", "activeUsers", "averagePurchaseRevenue", "averageRevenuePerUser", "averageSessionDuration", "engagedSessions", "eventCount", "engagementRate". 
  +  Relatório em tempo real 
    +  De acordo com a limitação das solicitações do SAAS, são permitidas até 4 dimensões. 
    +  Se o usuário passar SELECT\$1ALL ou selecionar mais de 15 campos, os campos padrão serão passados na solicitação. 
    +  Os seguintes campos são considerados campos padrãõ para o relatório em tempo real: "country", "deviceCategory", "city", "cityId", "activeUsers", "conversions", "eventCount", "screenPageViews". 
+  Na entidade de relatório principal Core-Report, se a partição no campo date e o filtro em startDate estiverem presentes ao mesmo tempo. Nesse caso, o valor de dateRange será substituído pelo valor do filtro startDate. Mas, já que a partição deve sempre ser a prioridade, descarte o filtro startDate se a partição no campo date já estiver presente. 
+  Como agora o cohortSpecs também faz parte do corpo da solicitação do relatório principal, aprimoramos a entidade atual do relatório principal para incluir suporte ao atributo cohortSpec. No corpo da solicitação de cohortSpecs, quase todos os campos exigem a entrada do usuário. Para resolver isso, definimos valores padrão para esses atributos/campos e fornecemos provisões para que o usuário substitua esses valores, se necessário.     
<a name="google-analytics-connector-limitations-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/googleanalytics-connector-limitations.html)
+  Você também pode passar todos esses filtros juntos de uma só vez ou com outros filtros. 
  +  Exemplo 1: filterPredicate: startDate entre "2023-05-09" e "2023-05-10" E startOffset=1 E endOffset=2 E granularity="SEMANAL" 
  +  Example 2 filterPredicate: city=“xyz” E startOffset=1 E endOffset=2 E granularity="SEMANAL" 
+  Na solicitação de coorte: 
  +  Se "cohortNthMonth" for passado na solicitação, o valor interno de granularity será definido como "MENSAL" 
  +  Da mesma forma, se "cohortNthWeek" for passado, o valor de granularity será definido como "SEMANAL" 
  +  E, para "cohortNthDay", o valor de granularity será definido como "DIÁRIO". Para obter mais informações, 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) 
  +  Provisão é fornecida para que o usuário substitua os valores padrão de dateRange e granularity. Consulte a tabela acima. 

# Conectar ao Google BigQuery em AWS Glue Studio
<a name="connecting-to-data-bigquery"></a>

**nota**  
  É possível usar o AWS Glue Spark para ler e gravar tabelas no Google BigQuery no AWS Glue 4.0 e versões posteriores. Para configurar o Google BigQuery com AWS Glue trabalhos de forma programática, consulte [Conexões BigQuery](aws-glue-programming-etl-connect-bigquery-home.md).  

 AWS Glue Studio fornece uma interface visual para conectar-se ao BigQuery, criar jobs de integração de dados e executá-los no runtime Spark sem servidor AWS Glue Studio. 

 Ao criar uma conexão com o Google BigQuery no AWS Glue Studio, uma conexão unificada é criada. Para obter mais informações, consulte [Considerações](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

 Em vez de criar um segredo com as credenciais em um formato específico, `{"credentials": "base64 encoded JSON"}`, agora, com a conexão unificada com o Google BigQuery, é possível criar um segredo que inclua diretamente o JSON do Google BigQuery: `{"type": "service-account", ...}`. 

**Topics**
+ [Criar uma conexão BigQuery](creating-bigquery-connection.md)
+ [Criar um nó de origem do BigQuery](creating-bigquery-source-node.md)
+ [Criar um nó de destino do BigQuery](creating-bigquery-target-node.md)
+ [Opções avançadas](#creating-bigquery-connection-advanced-options)

# Criar uma conexão BigQuery
<a name="creating-bigquery-connection"></a>

Para se conectar ao Google BigQuery a partir do AWS Glue, você precisará criar e armazenar suas credenciais do Google Cloud Platform em um segredo e, em seguida, associar esse AWS Secrets Manager segredo a uma conexão do Google BigQuery AWS Glue.

**Para configurar uma conexão com o BigQuery:**

1. No Google Cloud Platform, crie e identifique recursos relevantes:
   + Crie ou identifique um projeto do GCP contendo tabelas do BigQuery às quais você gostaria de se conectar.
   + Ative a API BigQuery. Para obter mais informações, consulte [Use the BigQuery Storage Read API to read na tabela](https://cloud.google.com/bigquery/docs/reference/storage/#enabling_the_api).

1. No Google Cloud Platform, crie e exporte as credenciais da conta de serviço:

   [Você pode usar o assistente de credenciais do BigQuery para acelerar essa etapa: criar credenciais.](https://console.cloud.google.com/apis/credentials/wizard?api=bigquery.googleapis.com)

   Para criar uma conta de serviço no GCP, siga o tutorial disponível em [Criar contas de serviço](https://cloud.google.com/iam/docs/service-accounts-create).
   + Ao selecionar o **projeto**, selecione o projeto que contém sua tabela do BigQuery.
   + Ao selecionar perfis do IAM do GCP para sua conta de serviço, adicione ou crie um papel que conceda permissões apropriadas para executar jobs do BigQuery para ler, gravar ou criar tabelas do BigQuery.

   Para criar credenciais para a sua conta de serviço, siga o tutorial disponível em [Criar uma chave da conta de serviço](https://cloud.google.com/iam/docs/keys-create-delete#creating).
   + Ao selecionar o tipo de chave, selecione **JSON**.

   Agora você deve ter baixado um arquivo JSON com credenciais para sua conta de serviço. A aparência deve ser semelhante à seguinte:

   ```
   {
     "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. No AWS Secrets Manager, crie um segredo usando seu arquivo de credenciais baixado. Você pode escolher a guia **Texto simples** e colar o conteúdo do arquivo formatado em JSON. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 

1. No catálogo de dados do AWS Glue, crie uma conexão seguindo as etapas em [https://docs.aws.amazon.com/glue/latest/dg/console-connections.html](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para a próxima etapa. 
   + Ao selecionar um **tipo de conexão**, selecione Google BigQuery.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

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

1. Na configuração do trabalho do AWS Glue, forneça *connectionName* como uma **conexão de rede adicional**.

# Criar um nó de origem do BigQuery
<a name="creating-bigquery-source-node"></a>

## Pré-requisitos necessários
<a name="creating-bigquery-source-node-prerequisites"></a>
+ Uma conexão de catálogo de dados do AWS Glue do tipo Snowflake
+ Um AWS Secrets Manager segredo para suas credenciais do Google BigQuery, usado pela conexão.
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ O nome e o conjunto de dados da tabela e do projeto do Google Cloud correspondente no qual você deseja gravar.

## Adicionar uma fonte de dados do BigQuery
<a name="creating-bigquery-source-node-add"></a>

**Para adicionar um **destino de dados — nó do BigQuery**:**

1.  Escolha a conexão para seu destino de dados do BigQuery. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o Redshift**. Para obter mais informações, consulte [Visão geral do uso de conectores e conexões](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Identifique quais dados do BigQuery você gostaria de ler e escolha uma opção de origem do **BigQuery**
   + Escolha uma única tabela — permite extrair todos os dados de uma tabela.
   + Insira uma consulta personalizada — permite que você personalize quais dados são recuperados fornecendo uma consulta.

1.  Descreva os dados que você gostaria de ler

   **(Obrigatório)** defina **Projeto principal** como o projeto que contém sua tabela ou um projeto principal de cobrança, se relevante.

   Se você escolheu uma única tabela, defina **Tabela** com o nome de uma tabela do Google BigQuery no seguinte formato: `[dataset].[table]` 

   Se você escolheu uma consulta, forneça-a ao **Query**. Em sua consulta, consulte as tabelas com seu nome de tabela totalmente qualificado, no formato:`[project].[dataset].[tableName]`.

1.  Forneça propriedades do BigQuery 

   Se você escolheu uma única tabela, não é necessário fornecer propriedades adicionais.

   Se você escolher uma consulta, deverá fornecer as seguintes **propriedades personalizadas do Google BigQuery**:
   + Defina `viewsEnabled` como verdadeiro.
   + Defina `materializationDataset` como um conjunto de dados. O principal do GCP autenticado pelas credenciais fornecidas pela AWS Glue conexão precisa ser capaz de criar tabelas nesse conjunto de dados.

# Criar um nó de destino do BigQuery
<a name="creating-bigquery-target-node"></a>

## Pré-requisitos necessários
<a name="creating-bigquery-target-node-prerequisites"></a>
+ Uma conexão de catálogo de dados do AWS Glue do tipo Snowflake
+ Um AWS Secrets Manager segredo para suas credenciais do Google BigQuery, usado pela conexão.
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ O nome e o conjunto de dados da tabela e do projeto do Google Cloud correspondente no qual você deseja gravar.

## Adicionar um destino de dados do BigQuery
<a name="creating-bigquery-target-node-add"></a>

**Para adicionar um **destino de dados — nó do BigQuery**:**

1.  Escolha a conexão para seu destino de dados do BigQuery. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o Redshift**. Para obter mais informações, consulte [Visão geral do uso de conectores e conexões](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Identifique em qual tabela do BigQuery você gostaria de gravar e escolha um **método de gravação**.
   + Direto — grava diretamente no BigQuery usando a API BigQuery Storage Write.
   + Indireto — grava no Google Cloud Storage e depois copia no BigQuery.

   Se você quiser escrever indiretamente, forneça um local de destino do GCS com um bucket **temporário do GCS**. Você precisará fornecer configurações adicionais em sua AWS Glue conexão. Para obter mais informações, consulte [Usar a gravação indireta com o 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.  Descreva os dados que você gostaria de ler

   **(Obrigatório)** defina **Projeto principal** como o projeto que contém sua tabela ou um projeto principal de cobrança, se relevante.

   Se você escolheu uma única tabela, defina **Tabela** com o nome de uma tabela do Google BigQuery no seguinte formato: `[dataset].[table]` 

## Opções avançadas
<a name="creating-bigquery-connection-advanced-options"></a>

É possível fornecer opções avançadas ao criar um node do BigQuery. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte a [referência da opção de conexão do BigQuery](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html) no guia do AWS Glue desenvolvedor. 

# Conectar ao Google Search Console
<a name="connecting-to-data-google-search-console"></a>

O Google Search Console é uma plataforma gratuita disponível para proprietários de sites para monitorar a forma como o Google vê o site e para otimizar sua presença orgânica. Isso inclui a visualização de domínios de referência, performance do site móvel, resultados de pesquisa avançados e as consultas e páginas com maior tráfego. Se você for usuário do Google Search Console, poderá conectar o AWS Glue à sua conta do Google Search Console. É possível usar o Google Search Console como fonte de dados em suas tarefas de ETL. Execute essas tarefas para transferir dados do Google Search Console para serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para o Google Search Console
<a name="google-search-console-support"></a>

O AWS Glue oferece suporte ao Google Search Console da seguinte forma:

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

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

**Versões da API do Google Search Console com suporte**  
Versões da API do Google Search Console com suporte:
+ v3

# Políticas que contêm as operações de API para criar e usar conexões
<a name="google-search-console-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 Google Search Console
<a name="google-search-console-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Google Search Console.
+ Você tem uma conta de do Google Cloud Platform e um projeto do Google Cloud.
+ No seu projeto do Google Cloud, você ativou a API do Google Search Console.
+ No seu projeto do Google Cloud, você configurou uma tela de consentimento de OAuth para usuários externos. Para obter mais informações, consulte [Configuração da sua tela de consentimento do OAuth](https://support.google.com/cloud/answer/10311615) na Ajuda do console da Google Cloud Platform.
+ No seu projeto do Google Cloud, você configurou um ID de cliente OAuth 2.0. Consulte [Configuração do OAuth 2.0](https://support.google.com/cloud/answer/6158849) para ver as credenciais do cliente que o AWS Glue usa para acessar seus dados com segurança ao fazer chamadas autenticadas para sua conta.

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

# Configuração de conexões do Google Search Console
<a name="google-search-console-configuring-connections"></a>

O Google Search Console oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2. O tipo de concessão determina como o AWS Glue se comunica com o Google Search Console para solicitar acesso aos seus dados.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Google Search Console e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Google Search Console para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Google Search Console sobre a criação de uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Uso do OAuth 2.0 para acessar APIs do Google](https://developers.google.com/identity/protocols/oauth2).

Para configurar uma conexão com o Google Search Console:

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

   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 Google Search Console.

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

**Pré-requisito**

Um objeto do Google Search Console do qual você deseja ler. Você precisará do nome do objeto.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Análise de pesquisas | Sim | Sim | Não | Sim | Não | 
| Sites | Não | Não | Não | Sim | Não | 
| Mapas de sites | Não | Não | Não | Sim | Não | 

**Exemplo:**

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

**Detalhes de entidade e campo do Google Search Console**:

O Google Search Console fornece endpoints para a busca de metadados de forma dinâmica para entidades com suporte. Portanto, o suporte do operador é capturado no nível do tipo de dados.

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

**nota**  
Para ver uma lista atualizada de valores válidos para filtros, consulte os documentos da API do [Google Search Console](https://developers.google.com/webmaster-tools/v1/searchanalytics/query).  
O campo `start_end_date` é uma combinação de `start_date` e `end_date`.

## Particionamento de consultas
<a name="google-search-console-reading-partitioning-queries"></a>

Não há suporte para o particionamento baseado em filtros e o particionamento baseado em registros.

# Opções de conexão do Google Search Console
<a name="google-search-console-connection-options"></a>

Estas são as opções de conexão do Google Search Console:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Google Search Console.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Google Search Console que você deseja usar.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto.
+ `FILTER_PREDICATE`(string): padrão: "start\$1end\$1date between <30 dias antes da data atual> AND <ontem: ou seja, 1 dia antes da data atual>". Usado para leitura. Deve estar no formato Spark SQL.
+ `QUERY`(string): padrão: "start\$1end\$1date between <30 dias antes da data atual> AND <ontem: ou seja, 1 dia antes da data atual>". Usado para Leitura. Consulta completa do Spark SQL.
+ `INSTANCE_URL`(string): usado para leitura. Um URL de instância válida do Google Search Console.

# Limitações do Google Search Console
<a name="google-search-console-limitations"></a>

A seguir estão as limitações ou notas do Google Search Console:
+ O Google Search Console impõe limites de uso na API. Para obter mais informações, consulte [Limites de uso](https://developers.google.com/webmaster-tools/limits).
+ Quando nenhum filtro é passado para a entidade `Search Analytics`, a API soma todos os cliques, impressões, CTR e outros dados de todo o site dentro do intervalo de datas padrão especificado e os apresenta como um único registro.
+ Para dividir os dados em segmentos menores, você precisa introduzir dimensões em sua consulta. As dimensões informam à API como você deseja segmentar seus dados.
  + Por exemplo, se você adicionar `filterPredicate: dimensions="country"`, obterá um registro para cada país em que seu site recebeu tráfego durante o período especificado.
  + Exemplo de passagem de várias dimensões: `filterPredicate: dimensions="country" AND dimensions="device" AND dimensions="page"`. Nesse caso, você receberá uma linha na resposta para cada combinação exclusiva dessas três dimensões.
+ Os valores padrão são definidos para os campos `start_end_date` e `dataState`.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/google-search-console-limitations.html)

# Conectar ao Google Sheets
<a name="connecting-to-googlesheets"></a>

 O Google Sheets é um software de planilhas online que permite organizar grandes quantidades de dados, criar relatórios personalizados, automatizar cálculos e colaborar com outras pessoas. Se você for usuário do Google Sheets, poderá conectar o AWS Glue à sua conta do Google Sheets. Você poderá então usar o Google Sheets como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Google Sheets e serviços da AWS ou outras aplicações compatíveis. 

**Topics**
+ [Suporte do AWS Glue ao Planilhas Google](googlesheets-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](googlesheets-configuring-iam-permissions.md)
+ [Configurar o Planilhas Google](googlesheets-configuring.md)
+ [Configuração de conexões do Planilhas Google](googlesheets-configuring-connections.md)
+ [Leitura de entidades do Planilhas Google](googlesheets-reading-from-entities.md)
+ [Opções de conexão do Planilhas Google](googlesheets-connection-options.md)
+ [Configurar o fluxo OAuth do código de autorização para o Planilhas Google](googlesheets-oauth-authorization.md)
+ [Limitações do conector do Planilhas Google](googlesheets-connector-limitations.md)

# Suporte do AWS Glue ao Planilhas Google
<a name="googlesheets-support"></a>

O AWS Glue oferece suporte ao Planilhas Google da seguinte maneira:

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

**Compatível como destino?**  
Não.

**Versões da API do Planilhas Google compatíveis**  
 API do Planilhas Google v4 e API do Google Drive v3 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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. 

# Configurar o Planilhas Google
<a name="googlesheets-configuring"></a>

Para usar o AWS Glue para transferir dados do Planilhas Google, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="googlesheets-configuring-min-requirements"></a>
+ Você tem uma conta do Planilhas Google com e-mail e senha.
+  A conta do Planilhas Google está habilitada para acesso de API. Todo o uso da API do Planilhas Google está disponível sem custo adicional. 
+  A conta do Planilhas Google permite a instalação de aplicações conectadas. Caso não tenha acesso a essa funcionalidade, entre em contato com seu administrador do Planilhas Google. 

 Caso atenda a esses requisitos, você poderá conectar o AWS Glue à conta do Planilhas Google. 

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

Para configurar uma conexão com o Planilhas Google:

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

   1.  Para o tipo de concessão AuthorizationCode: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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

   1. Ao selecionar uma **Fonte de dados**, selecione Planilhas Google.

   1. Forneça o ambiente do Planilhas Google.

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

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

****  

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

------

 **Tipo de concessão AUTHORIZATION\$1CODE** 

 Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Planilhas Google, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Planilhas Google. 

 Os usuários podem optar por criar sua própria aplicação conectada no Planilhas Google e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Planilhas Google para fazer login e autorizar o acesso do AWS Glue aos recursos. 

 Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

 Para obter mais informações, consulte a [documentação pública do Planilhas Google sobre a criação de uma aplicação conectada para o fluxo de código de autorização do OAuth](https://developers.google.com/workspace/guides/create-credentials). 

# Leitura de entidades do Planilhas Google
<a name="googlesheets-reading-from-entities"></a>

 **Pré-requisitos** 
+  Uma planilha do Google da qual você gostaria de ler. Você precisará do ID da planilha e do nome da aba da planilha. 

 **Detalhes de entidades e campos do Planilhas Google:** 


| Entidade | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | 
| Planilha | String | N/D (não há suporte para filtros) | 

 **Exemplo** 

```
googleSheets_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesheets",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "{SpreadSheetID}#{SheetTabName}",
        "API_VERSION": "v4"
    }
```

 **Particionamento de consultas** 

 Para o particionamento baseado em registros somente, `NUM_PARTITIONS` ser fornecido como opções adicionais do spark se você quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 

 **Exemplo com `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"
    }
```

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

São opções de conexão do Planilhas Google:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O `SpreadSheet ID` e `sheetTabName` no Planilhas Google. Exemplo: `{SpreadSheetID}#{SheetTabName}`. 
+  `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Planilhas Google que você deseja usar. 
+  `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. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Configurar o fluxo OAuth do código de autorização para o Planilhas Google
<a name="googlesheets-oauth-authorization"></a>

 **Pré-requisitos** 
+  Uma conta do Google na qual você pode fazer login para usar a aplicação Planilhas Google. Na sua conta do Google, o Planilhas Google contém os dados que você deseja transferir. 
+  Uma conta do Google Cloud Platform e um projeto do Google Cloud. Consulte [Criar projeto do Google Cloud](https://developers.google.com/workspace/guides/create-project) para obter mais detalhes. 

**Para configurar sua conta do Google e obter credenciais do OAuth 2.0:**

1.  Depois que o projeto do Google Cloud estiver configurado, ative a API do Planilhas Google e as APIs do Google Drive no projeto. Para ver as etapas para habilitá-las, consulte [Habilitar e desabilitar APIs](https://support.google.com/googleapi/answer/6158841) na Ajuda do console de APIs para o Google Cloud Platform. 

1.  Em seguida, configure uma tela de consentimento do OAuth para usuários externos. Para obter mais informações sobre a tela de consentimento do OAuth, consulte [Configurar tela de consentimento do OAuth](https://support.google.com/cloud/answer/10311615#) na Ajuda do console do Google Cloud Platform. 

1.  Na tela de consentimento do OAuth, adicione os seguintes escopos: 
   +  [O escopo somente leitura da API do Planilhas Google](https://www.googleapis.com/auth/spreadsheets.readonly) 
   +  [O escopo somente leitura da API do Google Drive](ttps://www.googleapis.com/auth/drive.readonly) 

    Para obter mais informações sobre esses escopos, consulte [Escopos do OAuth 2.0 para APIs do Google](https://developers.google.com/identity/protocols/oauth2/scopes) na documentação do Google Identity. 

1.  Gere o ID e o segredo do cliente do OAuth 2.0. Para obter os passos para criar esse ID do cliente, consulte [Configurar OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=) na Ajuda do console do Google Cloud Platform. 

    O ID do cliente do OAuth 2.0 deve ter um ou mais URLs de redirecionamento autorizados. 

    Os URLs de redirecionamento têm o seguinte formato: 
   + https://<aws-region>.console.aws.amazon.com/gluestudio/oauth 

1.  O ID do cliente e o segredo do cliente são provenientes das configurações do ID do cliente do OAuth 2.0. 

# Limitações do conector do Planilhas Google
<a name="googlesheets-connector-limitations"></a>

Estas são as limitações do conector do Planilhas Google:
+  O conector do Planilhas Google não oferece suporte a filtros. Portanto, não pode haver suporte ao particionamento baseado em filtros. 
+  No particionamento baseado em registros, não há provisão para retornar a contagem exata de registros pelo SaaS. Como resultado, pode haver cenários em que arquivos com registros vazios sejam criados.
+  Como o conector do Planilhas Google não oferece suporte ao particionamento baseado em filtros, `partitionField`, `lowerbound` e `upperbound` não são opções de conexão válidas. Se essas opções forem fornecidas, espera-se que o trabalho do AWS Glue falhe. 
+  É essencial designar a primeira linha da planilha como a linha do cabeçalho para evitar problemas no processamento dos dados. 
  +  Se não for fornecida, a linha do cabeçalho será substituída por `Unnamed:1`, `Unnamed:2`, `Unnamed:3`... se a planilha contiver dados com a primeira linha vazia. 
  +  Se a linha do cabeçalho for fornecida, os nomes das colunas vazias serão substituídos por `Unnamed:<number of column>`. Por exemplo, se a linha do cabeçalho for `['ColumnName1', 'ColumnName2', '', '', 'ColumnName5', 'ColumnName6']`, ela passará a ser `['ColumnName1', 'ColumnName2', 'Unnamed:3', 'Unnamed:4', 'ColumnName5', 'ColumnName6'].` 
+  O conector do Google Sheets não é compatível com a transferência incremental. 
+  O conector do Google Sheets é compatível apenas com o tipo de dados String. 
+  Os cabeçalhos duplicados em uma planilha serão renomeados iterativamente com um sufixo numérico. Os nomes dos cabeçalhos fornecidos pelo usuário terão precedência ao renomear os cabeçalhos duplicados. Por exemplo, se a linha do cabeçalho for ["Name", "", "Name", null, "Unnamed:6", ""], ela será alterada para: ["Name", "Unnamed:2", "Name1", "Unnamed:4", "Unnamed:6", "Unnamed:61"]. 
+  O conector do Google Sheets não permite espaços em um nome de guia. 
+  O nome de uma pasta não pode conter os seguintes caracteres especiais: 
  + \$1
  + /

# Conectar ao HubSpot
<a name="connecting-to-data-hubspot"></a>

A plataforma de CRM do HubSpot tem todas as ferramentas e integrações necessárias para marketing, vendas, gerenciamento de conteúdo e atendimento ao cliente.
+ Hub de marketing: software de marketing para ajudar você a aumentar o tráfego, converter mais visitantes e executar campanhas completas de inbound marketing em grande escala.
+ Hub de vendas: software de CRM de vendas para ajudá-lo a obter informações mais profundas sobre clientes potenciais, automatizar as tarefas que você tem e fechar mais negócios com mais rapidez.
+ Hub de serviços: software de atendimento ao cliente para ajudar você a se conectar com os clientes, superar as expectativas e transformá-los em promotores que expandem seus negócios.
+ Hub de operações: software de operações que sincroniza suas aplicações, limpa e cria dados de clientes e automatiza processos para que todos os seus sistemas e equipes trabalhem melhor juntos.

**Topics**
+ [AWS Glue compatível com o HubSpot](hubspot-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](hubspot-configuring-iam-permissions.md)
+ [Configuração do HubSpot](hubspot-configuring.md)
+ [Configuração de conexões do HubSpot](hubspot-configuring-connections.md)
+ [Leitura de entidades do HubSpot](hubspot-reading-from-entities.md)
+ [Escrever em entidades do HubSpot](hubspot-writing-to-entities.md)
+ [Opções de conexão do HubSpot](hubspot-connection-options.md)
+ [Limitações e observações do conector do HubSpot](hubspot-connector-limitations.md)

# AWS Glue compatível com o HubSpot
<a name="hubspot-support"></a>

O AWS Glue é compatível com o HubSpot da seguinte forma:

**Compatível como fonte?**  
Sim: SYNC e ASYNC. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do HubSpot.

**Compatível como destino?**  
Sim. É possível usar trabalhos de ETL do AWS Glue para escrever dados no HubSpot.

**Versões da API compatíveis com o HubSpot**  
Estas são as versões da API compatíveis com o HubSpot:
+ v1
+ v2
+ v3
+ v4

Para conferir a compatibilidade de entidades por versão específica, consulte [Entidades compatíveis com a fonte de SYNC](hubspot-reading-from-entities.md#sync-table) e [Entidades compatíveis com a fonte de ASYNC](hubspot-reading-from-entities.md#async-table).

# Políticas que contêm as operações de API para criar e usar conexões
<a name="hubspot-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 HubSpot
<a name="hubspot-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do HubSpot. Para obter mais informações, consulte [Criação de uma conta do HubSpot](#hubspot-configuring-creating-hubspot-account).
+ Sua conta do HubSpot está habilitada para acesso à API.
+ Você deve ter uma aplicação na conta do desenvolvedor do HubSpot que forneça as credenciais de cliente que o AWS Glue usará para acessar seus dados com segurança quando fizer chamadas autenticadas para sua conta. Para obter mais informações, consulte [Criação de uma aplicação de desenvolvedor do HubSpot](#hubspot-configuring-creating-hubspot-developer-app).

Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do HubSpot. Para conexões normais, você não precisa fazer mais nada no HubSpot.

## Criação de uma conta do HubSpot
<a name="hubspot-configuring-creating-hubspot-account"></a>

Para criar uma conta do HubSpot:

1. Acesse o [URL de inscrição do CRM do HubSpot](https://app.hubspot.com/login).

1. Insira seu endereço de e-mail e escolha **Verificar e-mail** (como alternativa, você pode optar por se inscrever com uma conta do Google, Microsoft ou Apple).

1. Verifique sua caixa de entrada para obter o código de verificação do HubSpot.

1. Insira o código de verificação de seis dígitos e clique em **Próximo**.

1. Insira uma senha e clique em **Próximo**.

1. Insira seu nome e sobrenome e clique em **Próximo**, ou inscreva-se usando o link **Inscrever-se com o Google**.

1. Insira seu setor e clique em **Próximo**.

1. Insira sua função e clique em **Próximo**.

1. Insira o nome da sua empresa e clique em **Próximo**.

1. Selecione o tamanho da sua empresa (número de funcionários trabalhando na sua empresa) e clique em **Próximo**.

1. Insira o site da sua empresa e clique em **Próximo**.

1. Selecione onde seus dados devem ser hospedados (Estados Unidos ou Europa) e clique em **Criar conta**.

1. Selecione a finalidade da criação da sua conta e clique em **Próximo**.

1. Escolha **Conectar conta do Google** ou escolha adicionar contatos você mesmo para vincular seus contatos à sua conta do HubSpot.

1. Faça login na sua conta do Google se tiver escolhido a opção **Conectar conta do Google** para vincular seus contatos e começar a usar sua conta do HubSpot.

## Criação de uma aplicação de desenvolvedor do HubSpot
<a name="hubspot-configuring-creating-hubspot-developer-app"></a>

As contas de desenvolvedores de aplicações são destinadas à criação e ao gerenciamento de aplicações, integrações e contas de teste de desenvolvedores. Elas também se encontram onde você pode criar e gerenciar listagens da aplicação do Marketplace. No entanto, as contas de desenvolvedores de aplicações e suas contas de teste associadas não estão conectadas a uma conta padrão do HubSpot. Eles não podem sincronizar dados ou ativos de ou para outra conta do HubSpot. Para obter o ID e o segredo do cliente, crie uma conta de desenvolvedor.

1. Acesse https://developers.hubspot.com/

1. Escolha **Criar conta de desenvolvedor** e role para baixo.

1. Você será perguntado se deseja criar uma conta de desenvolvedor de aplicação, uma conta privada de aplicação ou uma conta Sandbox de desenvolvedor do CMS. Escolha **Criar conta de desenvolvedor de aplicação**.

1. Como você já criou uma conta com o HubSpot, você pode escolher **Continuar com este usuário**.

1. Clique em **Iniciar inscrição**.

1. Insira sua função e clique em **Próximo**.

1. Dê um nome à sua conta de desenvolvedor, clique em **Próximo** e depois em **Ignorar**.

1. Escolha **Criar aplicativo**.

1. Depois que sua aplicação for criado, escolha **Autenticação**.

1. Em Autenticação, anote o ID e o segredo do cliente.

1. Adicione o **URL de redirecionamento** específico da sua região como https:*//<aws-region>*.console.aws.amazon.com/gluestudio/oauth. Por exemplo, adicione https://us-east-1.console.aws.amazon.com/gluestudio/oauth para a região us-east-1.

1. Role para baixo e encontre os escopos. Há dois tipos de escopos que você deve selecionar nos cabeçalhos “CRM” e “Standard”.

1. Adicione os seguintes escopos:

   ```
   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. Clique em **Salvar** e sua conta de desenvolvedor agora está pronta para uso.

1. Role acima para encontrar o **ID do cliente**.

1. Na mesma página, clique em **Mostrar** para obter o **Segredo do cliente**.

## Criação de uma conta de teste de desenvolvedor do HubSpot
<a name="hubspot-configuring-creating-hubspot-developer-test-account"></a>

Nas contas de desenvolvedores de aplicações, você pode criar contas de teste de desenvolvedor para testar aplicações e integrações sem afetar nenhum dado real do HubSpot. As contas de teste de desenvolvedor não espelham as contas de produção, mas elas têm acesso a um teste de 90 dias das versões Enterprise do Marketing, Sales, Service, CMS e Operations Hub, oferecendo a capacidade de testar a maioria das ferramentas e APIs do HubSpot.

1. Clique em **Início**.

1. Clique em **Criar conta de teste**.

1. Clique em **Criar conta de teste de aplicação**.

1. Uma nova janela aparece. Insira o nome da conta de teste de aplicação e clique em **Criar**.

   Sua conta de teste de aplicação foi criada.

**nota**  
A conta de desenvolvedor está relacionada às atividades de desenvolvimento, como integração de API, e a conta de teste da aplicação é usada para visualizar os dados criados ou extraídos pela conta do desenvolvedor.

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

O HubSpot oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O usuário que estiver criando uma conexão precisa fornecer as informações relacionadas ao OAuth, como o ID do cliente e o segredo do cliente, para sua aplicação cliente do HubSpot. O console do AWS Glue redirecionará o usuário para o HubSpot, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do HubSpot.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no HubSpot e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o HubSpot para fazer login e autorizar o acesso do AWS Glue aos seus recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do HubSpot sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Aplicações públicas](https://developers.hubspot.com/docs/api/creating-an-app).

Para configurar uma conexão do HubSpot:

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

   1. Observação: é necessário criar um segredo para a 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 HubSpot.

   1. Forneça o ambiente do HubSpot.

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

1. Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**.

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

**Pré-requisito**

Um objeto do HubSpot do qual você deseja ler. Você precisará do nome do objeto, como contato ou tarefa. A tabela a seguir mostra as entidades compatíveis com a fonte de SYNC.

## Entidades compatíveis com a fonte de SYNC
<a name="sync-table"></a>


| Entidade | Versão da API | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | --- | 
| Campanhas | v1 | Não | Sim | Não | Sim | Não | 
| Empresas | v3 | Sim | Sim | Sim | Sim | Sim | 
| Contatos | v3 | Sim | Sim | Sim | Sim | Sim | 
| Listas de contatos | v1 | Não | Sim | Não | Sim | Não | 
| Ofertas | v3 | Sim | Sim | Sim | Sim | Sim | 
| Pipeline de CRM (Pipelines de ofertas) | v1 | Não | Não | Não | Sim | Não | 
| Eventos de e-mail | v1 | Não | Sim | Não | Sim | Não | 
| Calls | v3 | Sim | Sim | Sim | Sim | Sim | 
| Observações | v3 | Sim | Sim | Sim | Sim | Sim | 
| E-mails | v3 | Sim | Sim | Sim | Sim | Sim | 
| Reuniões | v3 | Sim | Sim | Sim | Sim | Sim | 
| Tarefas | v3 | Sim | Sim | Sim | Sim | Sim | 
| Correspondências postais | v3 | Sim | Sim | Sim | Sim | Sim | 
| Objetos personalizados | v3 | Sim | Sim | Sim | Sim | Sim | 
| Formulários | v2 | Não | Não | Não | Sim | Não | 
| Proprietários | v3 | Não | Sim | Não | Sim | Não | 
| Produtos | v3 | Sim | Sim | Sim | Sim | Sim | 
| Tíquetes | v3 | Sim | Sim | Sim | Sim | Sim | 
| Fluxos de trabalho | v3 | Não | Não | Não | Sim | Não | 
| Associations | v4 | Sim | Não | Não | Sim | Não | 
| Etiquetas de associações | v4 | Não | Não | Não | Sim | Não | 

**Exemplo:**

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3"
    }
```

## Entidades compatíveis com a fonte de ASYNC
<a name="async-table"></a>


| Entidade | Versão da API | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | --- | 
| Empresas | v3 | Sim | Não | Sim | Sim | Não | 
| Contatos | v3 | Sim | Não | Sim | Sim | Não | 
| Ofertas | v3 | Sim | Não | Sim | Sim | Não | 
| Calls | v3 | Sim | Não | Sim | Sim | Não | 
| Observações | v3 | Sim | Não | Sim | Sim | Não | 
| E-mails | v3 | Sim | Não | Sim | Sim | Não | 
| Reuniões | v3 | Sim | Não | Sim | Sim | Não | 
| Tarefas | v3 | Sim | Não | Sim | Sim | Não | 
| Correspondências postais | v3 | Sim | Não | Sim | Sim | Não | 
| Objetos personalizados | v3 | Sim | Não | Sim | Sim | Não | 
| Produtos | v3 | Sim | Não | Sim | Sim | Não | 
| Tíquetes | v3 | Sim | Não | Sim | Sim | Não | 

**Exemplo:**

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3",
        "TRANSFER_MODE": "ASYNC"
    }
```

**Detalhes das entidades e dos campos do HubSpot**:

**API do HubSpot v4**: 

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

**nota**  
Para o objeto `Associations`, para buscar associações entre dois objetos, você precisa fornecer o “Id da origem” (o ID do primeiro objeto) por meio de um filtro obrigatório enquanto criar um trabalho do AWS Glue. Se você quiser buscar associações para vários IDs da origem, nesse caso precisará fornecer vários IDs na cláusula `where`. Por exemplo: para buscar os IDs de contato “1' e '151” em `Associations`, você precisa fornecer um filtro, como `where id=1 AND id=151`.

**API do HubSpot v3**:

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

Para as entidades a seguir, o HubSpot fornece endpoints para buscar metadados dinamicamente, para que o suporte do operador seja capturado no nível do tipo de dados de cada entidade.

**nota**  
`DML_STATUS` é um campo virtual adicionado a cada registro no runtime para determinar seu status (CREATED/UPDATED) no modo SYNC. O operador `CONTAINS/LIKE` não é compatível no modo ASYNC.

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

**API do HubSpot v2**:

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

**API do HubSpot v1**:

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

## Consultas de particionamento
<a name="hubspot-reading-partitioning-queries"></a>

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo DateTime, aceitamos o valor no formato ISO.

  Exemplos de valores válidos:

  ```
  “2024-01-01T10:00:00.115Z" 
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

A tabela a seguir descreve os detalhes do suporte do campo de particionamento da entidade:

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

Exemplo:

```
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"
    }
```

# Escrever em entidades do HubSpot
<a name="hubspot-writing-to-entities"></a>

## Pré-requisitos
<a name="hubspot-writing-prerequisites"></a>
+ Um objeto do HubSpot no qual você deseja escrever. Você precisará do nome do objeto, como contato ou tíquete.
+ O conector HubSpot oferece suporte às seguintes operações de gravação:
  + INSERT
  + UPDATE
+ Quando a operação de gravação `UPDATE` é usada, a opção `ID_FIELD_NAMES` deverá ser fornecida para especificar o campo de ID externo para os registros.

## Entidades compatíveis para destino de sincronização
<a name="hubspot-supported-entities"></a>


| Entidade | Versão da API | Será compatível como conector de destino | Pode ser inserido | Pode ser atualizado | 
| --- | --- | --- | --- | --- | 
| Empresas | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Contatos | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Ofertas | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Produtos | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Calls | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Reuniões | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Observações | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| E-mails | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Tarefas | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Correspondências postais | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Objetos personalizados | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Tíquetes | v3 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 
| Associações | v4 | Sim | Sim (Único, Em massa) | Não | 
| Etiquetas de associações | v4 | Sim | Sim (Único, Em massa) | Sim (Único, Em massa) | 

**Exemplos:**

**Operação 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"
    }
)
```

**Operação 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"
    }
)
```

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

Estas são as opções de conexão do HubSpot:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no HubSpot.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API REST do HubSpot que você deseja usar. Por exemplo: v1, v2, v3, v4.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `TRANSFER_MODE` (String): usado para indicar se a consulta deve ser executada no modo ASYNC.
+ `WRITE_OPERATION`(string): padrão: INSERT. Usado para gravação. O valor deve ser INSERT ou UPDATE.
+ `ID_FIELD_NAMES`(string): padrão: null. Necessário para UPDATE.

# Limitações e observações do conector do HubSpot
<a name="hubspot-connector-limitations"></a>

Estas são as limitações ou observações do conector do HubSpot:
+ Os endpoints de pesquisa estão limitados a um total de 10 mil resultados para qualquer consulta. Qualquer partição com mais de 10 mil registros resultará em um erro 400.
+ Outras limitações importantes do conector estão descritas em [Limitações](https://developers.hubspot.com/docs/api/crm/search#limitations).
+ Um máximo de três instruções de filtragem são aceitas pelo HubSpot.
+ Atualmente, o HubSpot é compatível com associações entre os objetos padrão do HubSpot (por exemplo, contato, empresa, negócio ou tíquete) e os objetos personalizados.
  + Para uma conta gratuita: você pode criar apenas até dez tipos de associação entre cada par de objetos (por exemplo, contatos e empresas).
  + Para uma conta Super Admin: você pode criar apenas até cinquenta tipos de associação entre cada par de objetos.
  + Para obter mais informações, consulte [Associations v4](https://developers.hubspot.com/docs/api/crm/) e [Create and use association labels](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels).
+ Os objetos “Cotação” e “Comunicações” não estão presentes para Associações, pois atualmente não são compatíveis no conector.
+ Para ASYNC, o SaaS classifica os valores somente em ordem ascendente.
+ Para a entidade `Ticket`, o SaaS não retorna o campo `hs_object_id` no modo ASYNC.

# Conexão com o Instagram Ads
<a name="connecting-to-data-instagram-ads"></a>

O Instagram é uma aplicação popular de compartilhamento de fotos que permite que você se conecte com marcas, celebridades, lideranças inovadoras, amigos, familiares e muito mais. É um serviço de compartilhamento de fotos e de rede social. Os usuários podem tirar fotos ou vídeos curtos e compartilhá-los com seus seguidores. Os anúncios do Instagram são publicações pelas quais as empresas podem pagar para veicular aos usuários do Instagram.

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

# Suporte do AWS Glue para o Instagram Ads
<a name="instagram-ads-support"></a>

O AWS Glue oferece suporte ao Instagram Ads da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Instagram Ads.

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

**Versões compatíveis da API do Instagram Ads**  
As seguintes versões da API do Instagram Ads são compatíveis:
+ v17.0
+ v18.0
+ v19.0
+ v20.0

# Políticas que contêm as operações de API para criar e usar conexões
<a name="instagram-ads-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 Instagram Ads
<a name="instagram-ads-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Instagram Ads, você precisa atender aos seguintes requisitos:

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

Estes são os requisitos mínimos:
+ As contas padrão do Instagram são acessadas diretamente pelo Facebook.
+ A autenticação do usuário é necessária para gerar o token de acesso.
+ O conector do SDK do Instagram Ads implementará o fluxo do *OAuth para tokens de acesso do usuário*.
+ Estamos usando o OAuth2.0 para autenticar nossas solicitações de API para o Instagram Ads. Essa autenticação baseada na Web se enquadra na arquitetura autenticação multifator (MFA), que é um superconjunto de 2FA.
+ O usuário precisa conceder permissões para acessar os endpoints. Para acessar os dados do usuário, a autorização do endpoint é processada por meio de [permissões](https://developers.facebook.com/docs/permissions) e [recursos](https://developers.facebook.com/docs/features-reference).

## Obtenção de credenciais do Outh 2.0
<a name="instagram-ads-configuring-creating-instagram-ads-oauth2-credentials"></a>

Para obter credenciais de API para que você possa fazer chamadas autenticadas para instâncias, consulte [API de gráfico](https://developers.facebook.com/docs/graph-api/).

# Configuração de conexões do Instagram Ads
<a name="instagram-ads-configuring-connections"></a>

O Instagram Ads é compatível com o tipo de concessão AUTHORIZATION\$1CODE para OAuth2.
+ Esse tipo de concessão é considerado um OAuth de três pernas, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue.
+ Os usuários podem optar por criar sua própria aplicação conectada no Instagram Ads e fornecer os próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Instagram Ads para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de acesso. Um token de usuário do sistema prestes a expirar é válido por 60 dias a partir de uma data gerada ou atualizada. Para criar continuidade, o desenvolvedor deve atualizar o token de acesso em até 60 dias. Se isso não for feito, o token de acesso será perdido e será exigido que o desenvolvedor obtenha um novo token para recuperar o acesso à API. Consulte [Atualizar token de acesso](https://developers.facebook.com/docs/marketing-api/system-users/install-apps-and-generate-tokens/).

Para configurar uma conexão com o Instagram Ads:

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**, selecione Instagram Ads.

   1. Selecione o perfil do AWS IAM que o AWS Glue pode assumir e que 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. Forneça o ID do cliente da aplicação cliente gerenciada pelo usuário.

   1. Selecione o `secretName` que você deseja usar para essa conexão no AWS Glue para colocar os tokens. O segredo selecionado precisa ter uma chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` com o valor sendo o segredo do cliente da aplicação conectada.

   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 Instagram Ads
<a name="instagram-ads-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Instagram Ads do qual você deseja ler. Você precisará do nome do objeto. As tabelas a seguir mostram as entidades compatíveis.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Sim | Sim | Não | Sim | Sim | 
| Conjunto de anúncios | Sim | Sim | Não | Sim | Sim | 
| Ads | Sim | Sim | Não | Sim | Sim | 
| Anúncio criativo | Não | Sim | Não | Sim | Não | 
| Insights: conta | Não | Sim | Não | Sim | Não | 
| Imagem do anúncio | Sim | Sim | Não | Sim | Não | 
| Insights: anúncio | Sim | Sim | Não | Sim | Sim | 
| Insights: AdSet | Sim | Sim | Não | Sim | Sim | 
| Insights: campanha | Sim | Sim | Não | Sim | Sim | 

**Exemplo:**

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

## Detalhes das entidades e dos campos do Instagram Ads
<a name="instagram-ads-reading-entity-and-field-details"></a>

Para obter mais informações sobre os detalhes das entidades e dos campos, consulte:
+ [Campanha](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group)
+ [Conjunto de anúncios](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign)
+ [Ad](https://developers.facebook.com/docs/marketing-api/reference/adgroup)
+ [Anúncio criativo](https://developers.facebook.com/docs/marketing-api/reference/ad-creative)
+ [Insight da conta de anúncios](https://developers.facebook.com/docs/marketing-api/reference/ad-account/insights)
+ [Imagem do anúncio](https://developers.facebook.com/docs/marketing-api/reference/ad-image)
+ [Insights do anúncio](https://developers.facebook.com/docs/marketing-api/reference/adgroup/insights/)
+ [Insights de AdSets](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign/insights)
+ [Insights de campanhas](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group/insights)

Para obter mais informações, consulte [API de marketing](https://developers.facebook.com/docs/marketing-api/reference/v21.0).

**nota**  
Os tipos de dados Struct e List são convertidos no tipo de dados String na resposta dos conectores.

## Consultas de particionamento
<a name="instagram-ads-reading-partitioning-queries"></a>

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Data e hora, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplo de valor válido:

  ```
  "2022-01-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.

  Exemplo de valor válido:

  ```
  "2024-01-02T00:00:00.000Z"
  ```
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

# Opções de conexão do Instagram Ads
<a name="instagram-ads-connection-options"></a>

Estas são as opções de conexão do Instagram Ads:
+ `ENTITY_NAME`(String): (obrigatório) usado para leitura. O nome do objeto no Instagram Ads.
+ `API_VERSION`(String): (obrigatório) usado para leitura. Versão da API de gráfico do Instagram Ads que você deseja usar. Por exemplo: v21.
+ `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.
+ `PARTITION_FIELD`(String): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(String): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(String): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Limitações e notas do conector do Instagram Ads
<a name="instagram-ads-connector-limitations"></a>

Estas são as limitações ou notas do conector do Instagram Ads:
+ A contagem de chamadas de uma aplicação é o número de chamadas que um usuário pode fazer durante uma janela contínua de uma hora, 200 multiplicado pelo número de usuários. Para conhecer detalhes sobre o limite de taxa, consulte [Limites de taxa](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/) e [Limites de taxa de casos de uso empresarial](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/#buc-rate-limits).

# Conexão com o Intercom no AWS Glue Studio
<a name="connecting-to-data-intercom"></a>

 O Intercom é o Engagement OS, um canal aberto entre sua empresa e seus clientes no produto, no momento e nos termos deles, criando um diálogo contínuo que permite que você aproveite ao máximo cada envolvimento ao longo da jornada do cliente. 

**Topics**
+ [Suporte do AWS Glue para o Intercom](intercom-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](intercom-configuring-iam-permissions.md)
+ [Configuração do Intercom](intercom-configuring.md)
+ [Configuração de conexões do Intercom](intercom-configuring-connections.md)
+ [Leitura de entidades do Intercom](intercom-reading-from-entities.md)
+ [Opções de conexão do Intercom](intercom-connection-options.md)
+ [Limitações](intercom-limitations.md)
+ [Criação de uma conta do Intercom e configuração da aplicação cliente](intercom-new-account-creation.md)

# Suporte do AWS Glue para o Intercom
<a name="intercom-support"></a>

O AWS Glue oferece suporte ao Intercom da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Intercom.

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

**Versões compatíveis da API do Intercom**  
 v2.5. Para suporte de entidades por versão específica, consulte [Leitura de entidades do Intercom](intercom-reading-from-entities.md). 

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

 O exemplo de política a seguir descreve as permissões necessárias do 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados em seu nome. Esses recursos incluem AWS Glue, Amazon S3, IAM, Amazon 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 Intercom
<a name="intercom-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Intercom, você precisa atender aos seguintes requisitos:

## Requisitos mínimos
<a name="intercom-configuring-min-requirements"></a>
+  Ter uma conta do Intercom. Para obter mais informações, consulte [Criação de uma conta do Intercom e configuração da aplicação cliente](intercom-new-account-creation.md). 
+  A conta do Intercom precisa estar habilitada para acesso à API. 
+  Você deve ter uma aplicação no desenvolvedor do Intercom que fornece as credenciais que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte Intercom - New Account and Client App Creation Steps. 

 Se você atender a esses requisitos, poderá conectar o AWS Glue à conta do Intercom. 

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

 O Intercom é compatível com o tipo de concessão `AUTHORIZATION_CODE` para OAuth 2. 

 Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Google Ads, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Intercom. 

 Os usuários devem fornecer seus próprios ID e segredo do cliente quando criarem conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Intercom para fazer login e autorizar o acesso do AWS Glue aos recursos. 

 Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

 Para obter mais informações sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte a [API do Amazon Ads](https://developers.intercom.com/building-apps/docs/setting-up-oauth). 

Para configurar uma conexão do Intercom:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para a aplicação conectada gerenciado pelo cliente, o segredo deve conter o token de acesso à aplicação conectada, o token de atualização, o client\$1id e o client\$1secret. 

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**, selecione Intercom.

   1. Forneça o ambiente do Intercom.

   1.  Selecione o perfil do 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 Intercom
<a name="intercom-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Intercom do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | API\$1Version | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | --- | 
| Admins | v2.5 | Não | Não | Não | Sim | Não | 
| Empresas | v2.5 | Não | Sim | Não | Sim | Não | 
| Conversas | v2.5 | Sim | Sim | Sim | Sim | Sim | 
| Atributos de dados | v2.5 | Não | Não | Não | Sim | Não | 
| Contatos | v2.5 | Sim | Sim | Sim | Sim | Sim | 
| Segmentos | v2.5 | Não | Não | Não | Sim | Não | 
| Tags | v2.5 | Não | Não | Não | Sim | Não | 
| Equipes | v2.5 | Não | Não | Não | Sim | Não | 

 **Exemplo** 

```
Intercom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Intercom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "V2.5"
    }
)
```

 **Detalhes das entidades e dos campos do Intercom** 


| Entidade | Campo | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | --- | 
| Admins | type | String | NA | 
| Admins | id | String | NA | 
| Admins | avatar | Struct | NA | 
| Admins | nome | String | NA | 
| Admins | email | String | NA | 
| Admins | away\$1mode\$1enabled | Booleano | NA | 
| Admins | away\$1mode\$1reassign | Booleano | NA | 
| Admins | has\$1inbox\$1seat | Booleano | NA | 
| Admins | teams\$1ids | Lista | NA | 
| Admins | job\$1title | String | NA | 
| Empresas | type | String | NA | 
| Empresas | id | String | NA | 
| Empresas | app\$1id | String | NA | 
| Empresas | created\$1at | DateTime | NA | 
| Empresas | remote\$1created\$1at | DateTime | NA | 
| Empresas | updated\$1at | DateTime | NA | 
| Empresas | last\$1request\$1at | DateTime | NA | 
| Empresas | planejar | Struct | NA | 
| Empresas | company\$1id | String | NA | 
| Empresas | nome | String | NA | 
| Empresas | custom\$1attributes | Struct | NA | 
| Empresas | session\$1count | Inteiro | NA | 
| Empresas | monthly\$1spend | Inteiro | NA | 
| Empresas | user\$1count | Inteiro | NA | 
| Empresas | setor | String | NA | 
| Empresas | size | Inteiro | NA | 
| Empresas | site | String | NA | 
| Empresas | tags | Struct | NA | 
| Empresas | segmentos | Struct | NA | 
| Contatos | id | String | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contatos | type | String | NA | 
| Contatos | workspace\$1id | String | NA | 
| Contatos | external\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | perfil | String | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contatos | email | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | phone | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | nome | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | avatar | String | NA | 
| Contatos | owner\$1id | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | social\$1profiles | Struct | NA | 
| Contatos | has\$1hard\$1bounced | Booleano | EQUAL\$1TO | 
| Contatos | marked\$1email\$1as\$1spam | Booleano | EQUAL\$1TO | 
| Contatos | unsubscribed\$1from\$1emails | Booleano | EQUAL\$1TO | 
| Contatos | created\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | updated\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | signed\$1up\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | last\$1seen\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | last\$1replied\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | last\$1contacted\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | last\$1email\$1opened\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | last\$1email\$1clicked\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contatos | language\$1override | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | navegador | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | browser\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | browser\$1language | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | os | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | local | Struct | NA | 
| Contatos | location\$1country | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | location\$1region | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | location\$1city | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | android\$1app\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | android\$1app\$1version | String | NA | 
| Contatos | android\$1device | String | NA | 
| Contatos | android\$1os\$1version | String | NA | 
| Contatos | android\$1sdk\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | android\$1last\$1seen\$1at | Data | NA | 
| Contatos | ios\$1app\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | ios\$1app\$1version | String | NA | 
| Contatos | ios\$1device | String | NA | 
| Contatos | ios\$1os\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | ios\$1sdk\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contatos | ios\$1last\$1seen\$1at | DateTime | NA | 
| Contatos | custom\$1attributes | Struct | NA | 
| Contatos | tags | Struct | NA | 
| Contatos | notes | Struct | NA | 
| Contatos | empresas | Struct | NA | 
| Contatos | unsubscribed\$1from\$1sms | Booleano | NA | 
| Contatos | sms\$1consent | Booleano | NA | 
| Contatos | opted\$1out\$1subscription\$1types | Struct | NA | 
| Contatos | indicador | String | NA | 
| Contatos | utm\$1campaign | String | NA | 
| Contatos | utm\$1content | String | NA | 
| Contatos | utm\$1medium | String | NA | 
| Contatos | utm\$1source | String | NA | 
| Contatos | utm\$1term | String | NA | 
| Conversas | type | String | NA | 
| Conversas | id | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | created\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | updated\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | origem | Struct | NA | 
| Conversas | source\$1id | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | source\$1type | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversas | source\$1delivered\$1as | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversas | source\$1subject | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | source\$1body | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | source\$1author\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | source\$1author\$1type | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | source\$1author\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | source\$1author\$1email | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | source\$1url | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | contacts | Struct | NA | 
| Conversas | colegas de equipe | Struct | NA | 
| Conversas | título | String | NA | 
| Conversas | admin\$1assignee\$1id | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | team\$1assignee\$1id | Inteiro | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | custom\$1attributes | Struct | NA | 
| Conversas | aberto | Booleano | EQUAL\$1TO | 
| Conversas | estado | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | leitura | Booleano | EQUAL\$1TO | 
| Conversas | waiting\$1since | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | snoozed\$1until | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | tags | Struct | NA | 
| Conversas | first\$1contact\$1reply | Struct | NA | 
| Conversas | priority | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | tópicos | Struct | NA | 
| Conversas | sla\$1applied | Struct | NA | 
| Conversas | conversation\$1rating | Struct | NA | 
| Conversas | conversation\$1rating\$1requested\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | conversation\$1rating\$1replied\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | conversation\$1rating\$1score | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | conversation\$1rating\$1remark | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | conversation\$1rating\$1contact\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | conversation\$1rating\$1admin\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | estatísticas | Struct | NA | 
| Conversas | statistics\$1time\$1to\$1assignment | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1time\$1to\$1admin\$1reply | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1time\$1to\$1first\$1close | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1time\$1to\$1last\$1close | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1median\$1time\$1to\$1reply | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1first\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1first\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1first\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1first\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1last\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1last\$1assignment\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1last\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1last\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1last\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1last\$1closed\$1by\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversas | statistics\$1count\$1reopens | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1count\$1assignments | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | statistics\$1count\$1conversation\$1parts | Inteiro | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversas | conversation\$1parts | Lista | NA | 
| Atributos de dados | id | Inteiro | NA | 
| Atributos de dados | type | String | NA | 
| Atributos de dados | modelo | String | NA | 
| Atributos de dados | nome | String | NA | 
| Atributos de dados | full\$1name | String | NA | 
| Atributos de dados | rótulo | String | NA | 
| Atributos de dados | description | String | NA | 
| Atributos de dados | data\$1type | String | NA | 
| Atributos de dados | options | Lista | NA | 
| Atributos de dados | api\$1writable | Booleano | NA | 
| Atributos de dados | ui\$1writable | Booleano | NA | 
| Atributos de dados | personalizado | Booleano | NA | 
| Atributos de dados | archived | Booleano | NA | 
| Atributos de dados | created\$1at | Booleano | NA | 
| Atributos de dados | updated\$1at | DateTime | NA | 
| Atributos de dados | admin\$1id | String | NA | 
| Segmentos | type | String | NA | 
| Segmentos | id | String | NA | 
| Segmentos | nome | String | NA | 
| Segmentos | created\$1at | DateTime | NA | 
| Segmentos | updated\$1at | DateTime | NA | 
| Segmentos | person\$1type | String | NA | 
| Segmentos | contagem | Inteiro | NA | 
| Tags | type | String | NA | 
| Tags | id | String | NA | 
| Tags | nome | String | NA | 
| Equipes | type | String | NA | 
| Equipes | id | String | NA | 
| Equipes | nome | String | NA | 
| Equipes | admin\$1ids | Lista | NA | 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela a seguir. 


| Entity Name | Campo de particionamento | Tipo de dado | 
| --- | --- | --- | 
| Contatos | created\$1at, updated\$1at,last\$1seen\$1at | DateTime | 
| Conversas | id | Inteiro | 
| Conversas | created\$1at, updated\$1at | DateTime | 

 **Exemplo** 

```
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"
    }
)
```

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

Estas são as opções de conexão do Intercom:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Intercom. 
+  `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Intercom que você deseja usar. Exemplo: v2.5. 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 
+  `INSTANCE_URL`(String): URL da instância em que o usuário deseja executar as operações. Por exemplo: [https://api.intercom.io](https://api.intercom.io). 

# Limitações
<a name="intercom-limitations"></a>

Estas são as limitações do conector do Intercom:
+  Quando a entidade Empresa é usada, existe um limite de 10 mil empresas que podem ser retornadas. Para obter mais informações, consulte [API da lista de todas as empresas](https://developers.intercom.com/docs/references/2.5/rest-api/companies/list-companies). 
+  Ao ser aplicado ordenar por, o filtro é obrigatório para as entidades **Contato** e **Conversa**. 
+  O Contrato de Cliente da Microsoft (MCA) é suportado pelo provedor de SaaS. No entanto, com base nos limites de taxa de API mencionados na documentação, não hospedaremos o MCA no AWS Glue, pois isso poderá afetar outras workloads e potencialmente causar problemas de desempenho devido à contenção de recursos. 

# Criação de uma conta do Intercom e configuração da aplicação cliente
<a name="intercom-new-account-creation"></a>

**Criação de uma conta do Intercom**

1. Escolha o [URL do Intercom](https://app.intercom.com/) e escolha **Iniciar avaliação gratuita** no canto superior direito da página.

1. Escolha o **botão Experimentar gratuitamente** no canto superior direito da página.

1. Escolha o tipo de empresa necessário. 

1. Insira todas as informações solicitadas na página.

1. Depois de inserir todas as informações, escolha **Registrar**.



**Criação de uma aplicação de desenvolvedor do Intercom**

Para obter o **Id do cliente** e o **Segredo do cliente**, crie uma conta de desenvolvedor.

1. Navegue até [https://app.intercom.com/](https://app.intercom.com/).

1. Digite o ID do e-mail e a Senha/Faça login usando o Google.

1. Selecione **perfil do usuário** no canto inferior esquerdo e escolha as configurações.

1. Escolha **Aplicações e integração**.

1. Escolha a guia **Hub do desenvolvedor** em **Aplicações e integração**.

1. Escolha **Nova aplicação** e crie a aplicação aqui.

1. Forneça o nome da aplicação e escolha **Criar** aplicação.

1. Dentro da aplicação, navegue até a seção **Autenticação**.

1. Escolha os URIs de **edição** e de adição de redirecionamento. Adicione o URL de redirecionamento específico da sua região, como `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth`. Por exemplo, adicione `https://us-east-1.console.aws.amazon.com/gluestudio/oauth for the us-east-1 region`.

1. Obtenha o **Id do cliente** e o **Segredo do cliente** gerados na seção Informações básicas.

# Conectar ao Jira Cloud
<a name="connecting-to-data-jira-cloud"></a>

O Jira Cloud é uma plataforma desenvolvida pela Atlassian. A plataforma inclui produtos de rastreamento de problemas que ajudam as equipes a planejar e acompanhar seus projetos Agile. Como usuário do Jira Cloud, sua conta contém dados sobre seus projetos, como problemas, fluxos de trabalho e eventos. É possível usar o AWS Glue para transferir dados do Jira Cloud para determinados serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue ao Jira Cloud
<a name="jira-cloud-support"></a>

O AWS Glue oferece suporte ao Jira Cloud da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Jira Cloud.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Jira Cloud**  
Estas são as versões compatíveis da API do Jira Cloud:
+ v3

Para suporte de entidades por versão específica, consulte [Leitura de entidades do Jira Cloud](jira-cloud-reading-from-entities.md). 

# Políticas que contêm as operações de API para criar e usar conexões
<a name="jira-cloud-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 Jira Cloud
<a name="jira-cloud-configuring"></a>

Para usar o AWS Glue para transferir dados do Jira Cloud para os destinos compatíveis, os seguintes requisitos deverão ser atendidos:

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

São requisitos mínimos:
+ Uma conta da Atlassian na qual usa o produto de software Jira no Jira Cloud. Para obter mais informações, consulte [Criar uma conta do Jira Cloud](#jira-cloud-configuring-creating-jira-cloud-account).
+ Uma conta da AWS criada com acesso de serviço ao AWS Glue.
+ Essa aplicação fornece as credenciais de cliente que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Habilitar o OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-) na documentação do Atlassian Developer.

Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do Jira Cloud.

## Criar uma conta do Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-account"></a>

Para criar uma conta do Jira Cloud:

1. Navegue até o [URL de inscrição da Atlassian](https://id.atlassian.com/signup).

1. Insira seu e-mail de trabalho e o nome e escolha **Concordo**. Você receberá um e-mail de verificação.

1. Depois de verificar seu e-mail, você poderá criar uma senha e escolher **Inscrever-se**.

1. Digite seu nome de usuário e senha e escolha **Inscrever-se**.

1. Você é redirecionado para uma página na qual precisará entrar em seu site. Insira o nome do site e escolha **Concordo**.

Depois que seu site Atlassian Cloud for iniciado, você poderá configurar seu Jira respondendo a algumas perguntas de acordo com suas preferências de tipo de projeto.

Para entrar em uma conta existente:

1. Navegue até o [URL de login da Atlassian](https://id.atlassian.com/login) e insira as credenciais.

1. Digite o e-mail e a senha e clique em **Entrar**. Você será redirecionado para o painel do Jira.

## Criar uma aplicação no Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-app"></a>

Para criar uma aplicação no Jira Cloud e obter o ID do cliente e o segredo do cliente da aplicação cliente gerenciada:

1. Navegue até o [URL do Jira Cloud](https://id.atlassian.com/login) e insira as credenciais.

1. Escolha **Criar** e selecione a opção **Integração a OAuth 2.0**.

1. Insira o nome da aplicação, verifique os **Termos e condições** e escolha **Criar**.

1. Navegue até a seção **Distribuição** no menu à esquerda e escolha **Editar**.

1. Na seção **Editar controles de distribuição**:

   1. Selecione **STATUS DE DISTRIBUIÇÃO** como **Compartilhamento**.

   1. Insira o nome do fornecedor.

   1. Insira o URL da sua **Política de privacidade**. Por exemplo, https://docs.aws.amazon.com/glue/latest/dg/security-iam-awsmanpol.html

   1. Insira o URL dos seus **Termos de serviço** (opcional).

   1. Insira o URL do seu **Contato de suporte ao cliente** (opcional).

   1. Selecione Sim/Não na **DECLARAÇÃO DE DADOS PESSOAIS** e escolha **Salvar alterações**.

1. Navegue até **Permissões** no menu esquerdo da respectiva aplicação.

1. Em **API do Jira**, escolha **Adicionar**. Uma vez adicionada, escolha a opção **Configuração**.

1. Na seção **Escopos clássicos** > **API REST da plataforma Jira**, escolha **Editar escopos** e marque todos os escopos. Clique em **Salvar**.

1. Em **Escopos granulares**, escolha **Editar escopos** e selecione os seguintes escopos:

1. Role para baixo e encontre os escopos. Há dois tipos de escopos que você deve selecionar nos cabeçalhos “CRM” e “Standard”.

1. Adicione os seguintes escopos:

   ```
   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. Navegue até **Autenticação** no menu esquerdo e escolha **Adicionar**.

1. Insira um **URL de retorno de chamada**, como https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Navegue até **Configurações** no menu esquerdo e role para baixo para ver os detalhes da **Autenticação**. Anote o ID e o segredo do cliente.

# Configuração de conexões do Jira Cloud
<a name="jira-cloud-configuring-connections"></a>

O Jira Cloud oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O console do AWS Glue redirecionará o usuário para o Jira Cloud, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Jira Cloud.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Jira Cloud e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Jira Cloud para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Jira Cloud sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Habilitação do OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-).

Para configurar uma conexão com o Jira Cloud:

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

   1. Observação: é necessário criar um segredo para a 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 Jira Cloud.

   1. Forneça o ambiente do Jira Cloud.

   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 Jira Cloud
<a name="jira-cloud-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Jira Cloud do qual você deseja ler. Você precisará do nome do objeto, como Registro de auditoria ou Problema. A tabela a seguir mostra as entidades compatíveis.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Registro de auditoria | Sim | Sim | Não | Sim | Sim | 
| Problema | Sim | Sim | Não | Sim | Sim | 
| Campo Problema | Não | Não | Não | Sim | Não | 
| Configuração do campo Problema | Sim | Sim | Não | Sim | Sim | 
| Tipo de link de problema | Não | Não | Não | Sim | Não | 
| Esquema da notificação de problema | Sim | Sim | Não | Sim | Sim | 
| Esquema de segurança de problemas | Não | Não | Não | Sim | Não | 
| Esquema do tipo de problema | Sim | Sim | Sim | Sim | Sim | 
| Esquema de tela do tipo de problema | Sim | Sim | Sim | Sim | Sim | 
| Tipo de problema | Não | Não | Não | Sim | Não | 
| Configuração do Jira | Sim | Não | Não | Sim | Não | 
| Configuração avançada do Jira | Não | Não | Não | Sim | Não | 
| Configuração global do Jira | Não | Não | Não | Sim | Não | 
| Rótulo | Não | Não | Não | Sim | Sim | 
| Eu mesmo(a) | Sim | Não | Não | Sim | Não | 
| Permissão | Não | Não | Não | Sim | N.º | 
| Projeto | Sim | Sim | Sim | Sim | Sim | 
| Categoria do projeto | Não | Não | Não | Sim | Não | 
| Tipo de projeto | Não | Não | Não | Sim | Não | 
| Informações do servidor | Não | Não | Não | Sim | Não | 
| Usuários | Não | Não | N.º | Sim | Não | 
| Fluxo de trabalho | Sim | Sim | Sim | Sim | Sim | 
| Esquema do fluxo de trabalho | Não | Sim | Não | Sim | Sim | 
| Associação de projetos do esquema do fluxo de trabalho | Sim | Não | Não | Sim | Não | 
| Status do fluxo de trabalho | Não | Não | Não | Sim | Não | 
| Categoria de status do fluxo de trabalho | Não | Não | Não | Sim | Não | 

**Exemplo**:

```
jiracloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "audit-record",
        "API_VERSION": "v3"
    }
```

**Detalhes das entidades e dos campos do Jira Cloud**:

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

## Consultas de particionamento
<a name="jira-cloud-reading-partitioning-queries"></a>

É possível fornecer a opção adicional `NUM_PARTITIONS` do Spark se quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
jiraCloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "issue",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# Opções de conexão do Jira Cloud
<a name="jira-cloud-connection-options"></a>

São opções de conexão do Jira Cloud:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Jira Cloud.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Jira Cloud que você deseja usar. Por exemplo: v3.
+ `DOMAIN_URL`(String) - (Obrigatório) O ID do Jira Cloud que você deseja usar.
+ `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.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Limitações e observações do conector do Jira Cloud
<a name="jira-cloud-connector-limitations"></a>

São limitações ou observações do conector do Jira Cloud:
+  O operador `Contains` não funciona com o campo `resourceName`, que é do tipo de dados `String`. 
+  Por padrão, se nenhum filtro explícito for aplicado, somente os problemas dos últimos 30 dias serão rastreados. Os usuários têm a opção de substituir esse filtro padrão especificando um filtro personalizado. 

# Conexão ao Kustomer
<a name="connecting-to-data-kustomer"></a>

O Kustomer é uma poderosa plataforma de experiência do cliente que reúne tudo o que você precisa para atender melhor seus clientes em uma ferramenta fácil de usar.

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

# Suporte do AWS Glue para o Kustomer
<a name="kustomer-support"></a>

O AWS Glue oferece suporte ao Kustomer da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Kustomer.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Kustomer**  
Estas são as versões compatíveis da API do Kustomer:
+ v1

# Políticas que contêm as operações de API para criar e usar conexões
<a name="kustomer-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 Kustomer
<a name="kustomer-configuring"></a>

Antes de usar o AWS Glue para transferir dados do Kustomer aos destinos compatíveis, os seguintes requisitos deverão ser atendidos:

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

Estes são os requisitos mínimos:
+ Você tem uma conta no Kustomer que contém os dados que deseja transferir. 
+ Nas configurações da sua conta, você criou uma chave de API. Para obter mais informações, consulte [Criação de uma chave de API](#kustomer-configuring-creating-an-api-key).
+ Você fornece a chave de API para o AWS Glue ao criar a conexão.

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Kustomer.

## Criação de uma chave de API
<a name="kustomer-configuring-creating-an-api-key"></a>

Para criar uma chave de API que você usará para criar uma conexão com o conector do Kustomer no AWS Glue Studio:

1. Faça login no [painel do Kustomer usando suas credenciais](https://amazon-appflow.kustomerapp.com/login).

1. No menu à esquerda, escolha o ícone **Settings**.

1. Expanda o menu suspenso **Security** e selecione **API Keys**.

1. Na página de criação da chave de API, selecione **Add an API Key** no canto superior direito.

1. Preencha as entradas obrigatórias para a chave de API que está sendo criada.
   + Name: qualquer nome para sua chave de API.
   + Roles: a opção “org” deve ser selecionada para que as APIs do Kustomer funcionem.
   + Expires (in days): o número de dias durante o qual você deseja que a chave de API seja válida. Você pode manter como **Never expires**, se a opção de nunca expirar for adequada para o seu caso de uso.

1. Escolha **Criar**.

1. Armazene o valor da chave de API (token) para uso posterior na criação de uma conexão com o conector do Kustomer no AWS Glue Studio.

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

Para configurar uma conexão do Kustomer:

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 o segredo do consumidor da aplicação conectada com a chave `apiKey`.

   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. Em **Conexões**, escolha **Criar conexão**.

   1. Ao selecionar uma **Fonte de dados**, selecione o Kustomer.

   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 Kustomer
<a name="kustomer-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Kustomer do qual você deseja ler. Você precisará do nome do objeto, como Marcas ou Cartões. A tabela a seguir mostra as entidades compatíveis.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Marcas | Não | Sim | Não | Sim | Não | 
| Cartões | Não | Sim | Não | Sim | Não | 
| Configurações de chat | Não | Não | Não | Sim | Não | 
| Empresas | Sim | Sim | Sim | Sim | Sim | 
| Conversas | Sim | Sim | Sim | Sim | Sim | 
| Clientes | Sim | Sim | Sim | Sim | Sim | 
| Pesquisas de clientes fixadas | Não | Sim | Não | Sim | Não | 
| Posição das pesquisas de clientes | Não | Não | Não | Sim | Não | 
| Hooks de e-mail | Não | Sim | Não | Sim | Não | 
| Webhooks | Não | Sim | Não | Sim | Não | 
| Artigos da base de conhecimento | Não | Sim | Não | Sim | Não | 
| Categorias da base de conhecimento | Não | Sim | Não | Sim | Não | 
| Formulários da base de conhecimento | Não | Sim | Não | Sim | Não | 
| Rotas da base de conhecimento | Não | Sim | Não | Sim | Não | 
| Tags da base de conhecimento | Não | Sim | Não | Sim | Não | 
| Modelos da base de conhecimento | Não | Sim | Não | Sim | Não | 
| Temas da base de conhecimento | Não | Sim | Não | Sim | Não | 
| Klasses | Não | Sim | Não | Sim | Não | 
| KViews | Não | Sim | Não | Sim | Não | 
| Mensagens | Sim | Sim | Sim | Sim | Sim | 
| Observações | Sim | Sim | Sim | Sim | Sim | 
| Notificações | Não | Sim | Não | Sim | Não | 

**Exemplo:**

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "brands",
        "API_VERSION": "v1"
    }
```

## Detalhes das entidades e dos campos do Kustomer
<a name="kustomer-reading-from-entities-field-details"></a>

Para obter mais informações sobre os detalhes das entidades e dos campos, consulte:
+ [Marcas](https://api.kustomerapp.com/v1/brands)
+ [Cartões](https://api.kustomerapp.com/v1/cards)
+ [Configurações de chat](https://api.kustomerapp.com/v1/chat/settings)
+ [Empresas](https://api.kustomerapp.com/v1/companies)
+ [Conversas](https://api.kustomerapp.com/v1/conversations)
+ [Clientes](https://api.kustomerapp.com/v1/customers)
+ [Pesquisas de clientes fixadas](https://api.kustomerapp.com/v1/customers/searches/pinned)
+ [Posições das pesquisas de clientes](https://api.kustomerapp.com/v1/customers/searches/positions)
+ [Hooks de e-mail](https://api.kustomerapp.com/v1/hooks/email)
+ [Webhooks](https://api.kustomerapp.com/v1/hooks/web)
+ [Artigos da base de conhecimento](https://api.kustomerapp.com/v1/kb/articles)
+ [Categorias da base de conhecimento](https://api.kustomerapp.com/v1/kb/categories)
+ [Formulários da base de conhecimento]( https://api.kustomerapp.com/v1/kb/forms)
+ [Rotas da base de conhecimento](https://api.kustomerapp.com/v1/kb/routes)
+ [Tags da base de conhecimento](https://api.kustomerapp.com/v1/kb/tags)
+ [Modelos da base de conhecimento](https://api.kustomerapp.com/v1/kb/templates)
+ [Temas da base de conhecimento](https://api.kustomerapp.com/v1/kb/themes)
+ [Klasses](https://api.kustomerapp.com/v1/klasses)
+ [Kviews](https://api.kustomerapp.com/v1/kviews)
+ [Mensagens](https://api.kustomerapp.com/v1/messages)
+ [Observações](https://api.kustomerapp.com/v1/notes)
+ [Notificações](https://api.kustomerapp.com/v1/notifications)

API do Kustomer v1

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

## Particionamento de consultas
<a name="kustomer-reading-from-partitioning"></a>

**Particionamento com base em campo**

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo DateTime, aceitamos o valor no formato ISO.

  Exemplo de valor válido:

  ```
  "2023-01-15T11:18:39.205Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na seguinte tabela:

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

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do Kustomer:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Kustomer.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Kustomer que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(String): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(String): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(String): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL` (String): (obrigatório) usado para leitura. URL de instância do Kustomer.

# Limitações do Kustomer
<a name="kustomer-connection-limitations"></a>

Estas são as limitações ou observações do Kustomer:
+ Não há suporte para a entidade `Customer Searches`, pois a documentação da API do Kustomer não declarou nenhum endpoint para ela.
+ A entidade `Klasses` não oferece suporte à filtragem e à transferência incremental.
+ O suporte ao recurso de ordenação está disponível para vários campos aplicáveis em uma única solicitação.

  No entanto, observou-se que essa funcionalidade de ordenação em vários campos apresenta um comportamento inconsistente por parte do SaaS para algumas combinações. Ele é imprevisível, uma vez que pode haver “n” combinações que talvez mostrem resultados de ordenação incorretos. Por exemplo:

  Para a entidade `Customers`, ordenar por `progressiveStatus desc, name asc` não produz o resultado ordenado correto. Ele classifica apenas com base na ordem `progressiveStatus`. Se esse comportamento for observado, você pode usar um único campo para fazer a ordenação.
+ Apenas as entidades `Conversations` e `Messages` oferecem suporte à ordenação no campo “id” como um parâmetro de consulta. Por exemplo: https://api.kustomerapp.com/v1/conversations?sort=desc (classifica os resultados por “id” em ordem decrescente)

  Além disso, qualquer outro filtro ou ordenação em qualquer outro campo é traduzido em um corpo de solicitação POST com o endpoint da API como POST https://api.kustomerapp.com/v1/customers/search Para permitir o suporte à ordenação por “id” em `Conversations` e `Messages`, somente a ordenação por id deve estar presente ou qualquer outro filtro e/ou ordenação em outro campo aplicável.
+ O Kustomer permite a busca de, no máximo, 10 mil registros, independentemente de a solicitação ser filtrada ou não filtrada. Devido a essa limitação, haverá uma perda de dados para qualquer entidade que tiver mais de 10 mil registros. Existem duas soluções alternativas possíveis que você pode executar para mitigar essa limitação parcialmente:
  + Aplique filtros para buscar um conjunto específico de registros.
  + Se houver mais de 10 mil registros com um filtro aplicado, aplique um valor de filtro sucessivo em uma nova solicitação subsequente ou aplique intervalos nos filtros. Por exemplo: 

    filterExpression da 1.ª solicitação: `modifiedAt >= 2022-03-15T05:26:23.000Z and modifiedAt < 2023-03-15T05:26:23.000Z`

    Suponha que isso esgote o limite de 10 mil registros.

    Outra solicitação pode ser acionada com filterExpression: `modifiedAt >= 2023-03-15T05:26:23.000Z`
+ Como um comportamento de SaaS, o operador `CONTAINS` no Kustomer oferece suporte à correspondência somente para palavras completas, e não a correspondências parciais de uma palavra. Por exemplo: “body CONTAINS 'test record'” fará a correspondência a um registro que tenha “test” no campo “body”. No entanto, “body CONTAINS 'test'” não fará a correspondência a um registro que tenha “testAnotherRecord” no campo “body”.

# Conexão com o LinkedIn
<a name="connecting-to-linkedin"></a>

O LinkedIn é uma ferramenta de marketing paga que oferece acesso às redes sociais do LinkedIn por meio de várias postagens patrocinadas e outros métodos. O LinkedIn é uma poderosa ferramenta de marketing para empresas B2B gerarem leads, obterem reconhecimento online, compartilharem conteúdo e muito mais.

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

# Suporte do AWS Glue para o LinkedIn
<a name="linkedin-support"></a>

O AWS Glue oferece suporte ao LinkedIn da seguinte forma:

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

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

**Versões da API do LinkedIn com suporte**  
** 202406 (junho de 2024) **

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 LinkedIn
<a name="linkedin-configuring"></a>

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

## Requisitos mínimos
<a name="linkedin-configuring-min-requirements"></a>
+ Você tem uma conta do LinkedIn. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do LinkedIn](linkedin-create-account.md). 
+ A conta do LinkedIn precisa estar habilitada para acesso à API. 
+ Você criou uma integração com a `OAuth2 API` na sua conta do LinkedIn. Essa integração fornece as credenciais de cliente que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Criação de uma conta do LinkedIn](linkedin-create-account.md).

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

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

 O LinkedIn oferece suporte ao tipo de concessão `AUTHORIZATION_CODE` para OAuth2. 

Esse tipo de concessão é considerado um `OAuth` de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Os usuários podem optar por criar a própria aplicação conectada no LinkedIn e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o LinkedIn para fazer login e autorizar o acesso do AWS Glue aos seus recursos. 

Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso expira 60 dias após a criação. Um novo token de acesso pode ser obtido usando o token de atualização.

Para obter a documentação pública do LinkedIn sobre como criar uma aplicação conectada para o fluxo de `Authorization Code OAuth`, consulte [Fluxo de código de autorização (OAuth de 3 pernas)](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).

**Configuração de uma conexão do LinkedIn**

1.  No AWS Secrets Manager, crie um segredo com os seguintes detalhes: 
   + Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
   + Para uma aplicação conectada gerenciada pela AWS, um segredo vazio ou um segredo com algum valor temporário.
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

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

   1. Forneça o ambiente do LinkedIn.

   1. Selecione o perfil do 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 LinkedIn
<a name="linkedin-reading-from-entities"></a>

**Pré-requisitos** 

Um objeto do LinkedIn do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Contas de anúncios | Sim | Sim | Sim | Sim | Não | 
| Campanhas | Sim | Sim | Sim | Sim | Não | 
| Grupos de campanhas | Sim | Sim | Sim | Sim | Não | 
| Criativos | Sim | Sim | Sim | Sim | Não | 
| Análise de anúncios | Sim | Não | Não | Sim | Não | 
| Análise de anúncios, todas as contas de anúncios | Sim | Não | Não | Sim | Não | 
| Análise de anúncios, todas as campanhas | Sim | Não | Não | Sim | Não | 
| Análise de anúncios, todos os grupos de campanhas | Sim | Não | Não | Sim | Não | 
| Análise de anúncios, todos os criativos de anúncios | Sim | Não | Não | Sim | Não | 
| Estatísticas de compartilhamentos | Sim | Não | Não | Sim | Não | 
| Estatísticas de páginas | Sim | Não | Não | Sim | Não | 
| Estatísticas de seguidores | Sim | Não | Não | Sim | Não | 

 **Exemplo** 

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="linkedin",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "adaccounts",
        "API_VERSION": "202406"
    }
)
```


**Detalhes de entidade e campo do LinkedIn**  

|  **Tipos de dados de campo**  |  **Operadores de filtro com suporte**  | 
| --- | --- | 
|  String  |  =  | 
|  DateTime  |  BETWEEN, =  | 
|  Numérico  |  =  | 
|  Booleano  |  =  | 

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

Estas são as opções de conexão do LinkedIn:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no LinkedIn. Por exemplo, adAccounts. 
+ `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do LinkedIn que você deseja usar. O valor será 202406, pois o LinkedIn atualmente só oferece suporte à versão 202406.
+ `SELECTED_FIELDS`(lista<string>): padrão: vazio (SELECT \$1). Usado para leitura. Colunas que você deseja selecionar para a entidade selecionada. 
+ `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL. 
+ `QUERY`(string): padrão: vazio. Usado para leitura. Consulta completa do Spark SQL. 

# Criação de uma conta do LinkedIn
<a name="linkedin-create-account"></a>

**Criação de uma aplicação do LinkedIn e credenciais OAuth**

1. Navegue até a página da **Rede de desenvolvedores do LinkedIn** e faça login com as credenciais da sua conta do LinkedIn. 

1. Navegue até a página **Minhas aplicações** e escolha **Criar aplicação** para criar uma nova aplicação do LinkedIn.

1. Insira os detalhes a seguir no formulário de registro da aplicação:
   + **Nome da empresa**: selecione uma empresa existente ou crie uma nova empresa.
   + **Nome**: insira o nome da aplicação.
   + **Descrição**: insira a descrição da aplicação.
   + **Logotipo da aplicação**: selecione um arquivo de imagem como logotipo da aplicação.
   + **Uso da aplicação**: selecione o uso da sua aplicação.
   + **URL do site**: insira o URL do site que contém informações detalhadas sobre sua aplicação.
   + **E-mail comercial**: insira seu endereço de e-mail comercial.
   + **Telefone comercial**: insira seu número de telefone comercial.
   + **Termos de uso da API do LinkedIn**: leia e concorde.

1. Após preencher o formulário de registro da aplicação, escolha **Enviar**.

   Você será redirecionado para a página de **Autenticação**, onde as Chaves de autenticação (ID do cliente e segredo do cliente) e outros detalhes relevantes serão exibidos.

1. Se sua aplicação da Web exigir acesso ao endereço de e-mail do usuário em sua conta do LinkedIn, selecione a permissão `r_emailaddress`. Além disso, é possível especificar URLs de redirecionamento autorizados para sua aplicação do LinkedIn. 

**Criação de uma página na conta do LinkedIn**

1. Navegue até [Produtos para desenvolvedores do LinkedIn](https://developer.linkedin.com/).

1. No canto superior direito da página **Produtos de desenvolvedores do LinkedIn**, selecione **Minhas aplicações**.

1. No canto superior direito da página **Minhas aplicações**, selecione **Criar aplicação**.

1. Na página **Criar uma aplicação**, insira o nome da sua aplicação no campo **Nome da aplicação**.

1. No campo **Página do LinkedIn**, insira o nome ou URL da página da sua empresa.
**nota**  
Se você não tiver uma página do LinkedIn, poderá criar uma selecionando **Criar um novo LinkedIn**. 

1. No campo **URL da política de privacidade**, insira o URL da sua política de privacidade.

1. Escolha **Carregar um logotipo** para fazer upload de uma imagem que será exibida aos usuários quando eles autorizarem sua aplicação.

1. Na seção **Contrato legal**, selecione **Eu li e concordei com estes termos**.

1. Escolha **Criar aplicação**. 

   Sua nova aplicação será criada e estará disponível na guia **Minhas aplicações**.

**Publicação de anúncios de campanha no LinkedIn**

1. Faça login no **Gerenciador de campanhas**. 

1. Selecione um **Grupo de campanha** existente, ou escolha **Criar** para criar um novo.

1. Selecione seu objetivo.

1. Selecione seu grupo, orçamento e cronograma.

1. Crie seu público-alvo.

1. Selecione o formato do seu anúncio.

1. Selecione seu orçamento e cronograma.

1. Configure seu(s) anúncio(s).

1. Analise e execute

# Limitações
<a name="linkedin-connector-limitations"></a>

Para os campos do Analytics `ad_analytics_all_adAccounts`, `ad_analytics_all_campaigns`, `ad_analytics_all_campaign_groups` e `ad_analytics_all_adCreatives`, um filtro é obrigatório para recuperar os registros.

# Conexão ao Mailchimp
<a name="connecting-to-mailchimp"></a>

O Mailchimp é uma plataforma de marketing completa que ajuda você a gerenciar e conversar com seus clientes e outras partes interessadas. Sua abordagem ao marketing se concentra em práticas íntegras para o gerenciamento de contatos, e-mails bem projetados, fluxos de trabalho automatizados exclusivos e uma análise avançada dos dados. Se você usa o Mailchimp, pode conectar o AWS Glue à conta do Mailchimp. Em seguida, será possível usar o Mailchimp como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Mailchimp e serviços da AWS ou outras aplicações compatíveis.

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

# Suporte do AWS Glue para o Mailchimp
<a name="mailchimp-support"></a>

O AWS Glue oferece suporte ao Mailchimp da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Mailchimp.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Mailchimp**  
 3.0 

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Mailchimp
<a name="mailchimp-configuring"></a>

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

## Requisitos mínimos
<a name="mailchimp-configuring-min-requirements"></a>
+ Você tem uma conta do Mailchimp com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Mailchimp](mailchimp-create-account.md). 
+  Você deve ter uma conta da AWS criada com acesso de serviço ao AWS Glue. 
+ Certifique-se de ter criado um dos recursos a seguir. Esses recursos fornecem as credenciais que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta.
  + Uma aplicação de desenvolvedor que ofereça suporte à autenticação OAuth 2.0. Para obter mais informações sobre como criar uma aplicação de desenvolvedor, consulte [Criação de uma conta do Mailchimp](mailchimp-create-account.md). 

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

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

 O Mailchimp oferece suporte aos dois tipos seguintes de mecanismo de autenticação: 
+ O Mailchimp oferece suporte ao tipo de concessão `AUTHORIZATION_CODE`.
  + Esse tipo de concessão é considerado um `OAuth` de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O usuário que está criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue, na qual ele não precisa fornecer quaisquer informações relacionadas ao `OAuth`, exceto o ID e segredo do cliente do Mailchimp. O Console do AWS Glue redirecionará o usuário para o Mailchimp, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Mailchimp.
  + Os usuários ainda podem optar por criar sua própria aplicação conectada no Mailchimp e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Mailchimp para fazer login e autorizar o acesso do AWS Glue aos recursos.
  + Para obter a documentação pública do Mailchimp sobre como criar uma aplicação conectada para o fluxo `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). 
+ **Autenticação personalizada**: para obter a documentação pública do Mailchimp sobre como gerar as chaves de API necessárias para a autorização personalizada, consulte [About API Keys](https://mailchimp.com/en/help/about-api-keys/?msockid=310fd0fe09d16afe034fc5de08d76b01). 



Para configurar uma conexão do Mailchimp:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes: 
   + Autenticação`OAuth`: para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
   + Autenticação personalizada: para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave “api\$1key”. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

   1. Em **Conexões**, selecione **Criar conexão**. 

   1. Ao selecionar uma **Fonte de dados**, selecione o Mailchimp.

   1. Forneça o `instanceUrl` do Mailchimp.

   1. Selecione o perfil do 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 tipo de autenticação para se conectar ao Mailchimp:
      + Para a autenticação `OAuth`: forneça o URL do token e o ClientId da aplicação cliente gerenciada pelo usuário do Mailchimp ao qual deseja se conectar.
      + Para a autenticação personalizada: selecione o tipo de autenticação PERSONALIZADA para se conectar ao Mailchimp.

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

1. Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma conexão de rede adicional.

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

 **Pré-requisitos** 

Um objeto do Mailchimp do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 
+ [Relatórios de abuso](https://mailchimp.com/developer/marketing/api/campaign-abuse/)
+ [Automação](https://mailchimp.com/developer/marketing/api/automation/list-automations/)
+ [Campanhas](https://mailchimp.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Detalhes de cliques](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Listas](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Membros](https://mailchimp.com/developer/marketing/api/list-segment-members/)
+ [Detalhes de abertura](https://mailchimp.com/developer/marketing/api/list-members/)
+ [Segmentos](https://mailchimp.com/developer/marketing/api/list-segments/)
+ [Lojas](https://mailchimp.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Cancelamentos de assinaturas](https://mailchimp.com/developer/marketing/api/unsub-reports/)


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Automação | Sim | Sim | Sim | Sim | Sim | 
| Campanhas | Não | Não | Não | Não | Não | 
| Listas | Sim | Sim | Não | Sim | Sim | 
| Relatórios de abusos | Não | Sim | Não | Sim | Sim | 
| Relatórios de aberturas | Não | Sim | Não | Sim | Sim | 
| Relatórios de cliques | Sim | Sim | Não | Sim | Sim | 
| Relatórios de cancelamentos de assinaturas | Não | Sim | Não | Sim | Sim | 
| Segmento | Não | Sim | Não | Sim | Sim | 
| Membros do segmento | Sim | Sim | Não | Sim | Não | 
| Lojas | Sim | Sim | Sim | Sim | Não | 

 **Exemplo** 

```
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"                                                
               })
```

 **Detalhes das entidades e dos campos do Mailchimp** 
+ [Relatórios de abuso](https://mailchimp.com/developer/marketing/api/campaign-abuse/)
+ [Automação](https://mailchimp.com/developer/marketing/api/automation/list-automations/)
+ [Campanhas](https://mailchimp.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Detalhes de cliques](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Listas](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Membros](https://mailchimp.com/developer/marketing/api/list-segment-members/)
+ [Detalhes de abertura](https://mailchimp.com/developer/marketing/api/list-members/)
+ [Segmentos](https://mailchimp.com/developer/marketing/api/list-segments/)
+ [Lojas](https://mailchimp.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Cancelamentos de assinaturas](https://mailchimp.com/developer/marketing/api/unsub-reports/)

## Consultas de particionamento
<a name="mailchimp-engage-reading-partitioning-queries"></a>

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo DateTime, aceitamos o valor no formato ISO.

  Exemplo de valor válido:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

A tabela a seguir descreve os detalhes do suporte do campo de particionamento da entidade:

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

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do Mailchimp:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Mailchimp. 
+ `INSTANCE_URL`(string): (obrigatório) um URL de instância válida do Mailchimp.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Mailchimp Engage que você deseja usar. Por exemplo: 3.0.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Criação de uma conta do Mailchimp
<a name="mailchimp-create-account"></a>

1. Navegue até a [página de login do Mailchimp](https://login.mailchimp.com/?locale=en), insira seu ID de e-mail e senha e escolha **Sign up**.

1. Abra o e-mail de confirmação do Mailchimp e escolha o link de confirmação para verificar sua conta.
**nota**  
O tempo necessário para receber o e-mail de ativação pode variar. Se você não recebeu o e-mail de ativação, verifique sua pasta de spam e leia nossas dicas para a solução de problemas do e-mail de ativação. O Mailchimp bloqueia inscrições de endereços de e-mail baseados em perfis, como [admin@pottedplanter.com](mailto:admin@pottedplanter.com) ou [security@example.com](mailto:security@example.com).  


   Na primeira vez que você fizer login na sua conta, o Mailchimp solicitará as informações necessárias. O Mailchimp usa essas informações para ajudar a garantir que sua conta esteja em conformidade com os Termos de uso e para fornecer orientações relevantes a você, de acordo com as necessidades da sua empresa.

1. Insira suas informações, siga as instruções para concluir o processo de ativação e comece a usar sua nova conta do Mailchimp.

**Registro de uma aplicação `OAuth2.0`**

1. Navegue até a [página de login do Mailchimp](https://login.mailchimp.com/?locale=en), insira seu ID de e-mail e senha e escolha **Log in**. 

1. Selecione o ícone **User** no canto superior direito e escolha **Account and billing** no menu suspenso.

1. Selecione **Extras** e escolha **Registered apps** no menu suspenso.

1. Localize e escolha **Register An App**.

1. Insira os detalhes a seguir:
   + **App name**: o nome da aplicação. 
   + **Company/Organization**: o nome da sua empresa ou organização.
   + **App website**: o site da aplicação.
   + **Redirect URI**: um padrão de URI de redirecionamento é um caminho de URI (ou uma lista de caminhos separados por vírgula) para o qual o Mailchimp pode redirecionar (se solicitado) quando o fluxo de login for concluído. Por exemplo, ., `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Escolha **Criar**. 

1. O **ID do cliente** e o **Segredo do cliente** agora estarão visíveis. Copie e salve-os em um lugar seguro. Escolha **Concluído**. 
**nota**  
Suas strings de ID do cliente e Segredo do cliente são credenciais usadas para estabelecer uma conexão com esse conector ao usar o AppFlow ou o AWS Glue.

**Geração de uma chave de API**

1. Navegue até a [página de login do Mailchimp](https://login.mailchimp.com/?locale=en), insira seu ID de e-mail e senha e escolha **Log in**. 

1. Selecione o ícone **User** no canto superior direito e escolha **Account and billing** no menu suspenso.

1. Selecione **Extras** e escolha **API keys** no menu suspenso.

1. Escolha **Create A Key**.

1. Insira um nome e escolha **Generate Key**.

   A próxima página exibe a chave de API gerada. 

1. Copie sua chave, guarde-a com segurança e escolha **Done**.

# Limitações
<a name="mailchimp-connector-limitations"></a>

Estas são as limitações do conector do Mailchimp:
+ Apenas as entidades `Campaigns`, `Automations`, `Lists`, `Open Details`, `Members` e `Segments` oferecem suporte à filtragem.
+ Ao usar um filtro no campo de tipo de dados `DateTime`, você deve passar valores neste formato: `yyyy-mm-ddThh:MM:ssZ`

# Conectar ao Microsoft Dynamics 365 CRM
<a name="connecting-to-microsoft-dynamics-365"></a>

 O Microsoft Dynamics 365 é uma linha de produtos de aplicações de negócios inteligentes para planejamento de recursos empresariais e gerenciamento de relacionamento com o cliente. 

**Topics**
+ [Suporte do AWS Glue ao Microsoft Dynamics 365](microsoft-dynamics-365-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](microsoft-dynamics-365-configuring-iam-permissions.md)
+ [Configurar o Microsoft Dynamics 365 CRM](microsoft-dynamics-365-configuring.md)
+ [Configurando conexões do Microsoft Dynamics 365 CRM](microsoft-dynamics-365-configuring-connections.md)
+ [Ler de entidades do Microsoft Dynamics 365 CRM](microsoft-dynamics-365-reading-from-entities.md)
+ [Referência de opções de conexão do Microsoft Dynamics 365 CRM](microsoft-dynamics-365-connection-options.md)
+ [Limitações](microsoft-dynamics-365-connector-limitations.md)

# Suporte do AWS Glue ao Microsoft Dynamics 365
<a name="microsoft-dynamics-365-support"></a>

O AWS Glue oferece suporte ao Microsoft Dynamics 365 da seguinte forma:

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

**Compatível como destino?**  
Não.

**Versões da API do Microsoft Dynamics 365 CRM compatíveis**  
 v9.2. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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. 

# Configurar o Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-configuring"></a>

Antes de usar o AWS Glue para transferir dados do Microsoft Dynamics 365 CRM, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="microsoft-dynamics-365-configuring-min-requirements"></a>
+  Você tem uma conta de desenvolvedor do Microsoft Dynamics 365 CRM com ClientId e Secret. 
+  Sua conta do Microsoft Dynamics 365 CRM tem acesso à API com uma licença válida. 

 Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Microsoft Dynamics 365 CRM. Para conexões típicas, não é necessário fazer mais nada no Microsoft Dynamics 365 CRM. 

# Configurando conexões do Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-configuring-connections"></a>

 **Tipo de concessão AUTHORIZATION\$1CODE** 
+  Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Microsoft Dynamics 365 CRM, onde ele deverá fazer login e fornecer ao AWS Glue as permissões solicitadas para acessar a instância do Microsoft Dynamics 365 CRM. 
+  Os usuários podem optar por criar sua própria aplicação conectada no Microsoft Dynamics 365 CRM e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Microsoft Dynamics 365 CRM para fazer login e autorizar o acesso do AWS Glue aos recursos. 
+  Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 
+  Para obter a documentação pública do Microsoft Dynamics 365 CRM sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte \$1 Microsoft Learn. [Registro de aplicações Microsoft](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/authenticate-oauth#app-registration). 

O Microsoft Dynamics 365 CRM oferece suporte à autenticação OAuth2.0.

Para configurar uma conexão do Microsoft Dynamics 365 CRM:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 
   +  Para o tipo de concessão AuthorizationCode: 

      Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do cliente da aplicação conectada com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

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

   1. Ao selecionar uma **Fonte de dados**, selecione o Microsoft Dynamics 365 CRM.

   1. Selecione o **INSTANCE\$1URL** da instância do Microsoft Dynamics 365 CRM à qual deseja se conectar.

   1.  Selecione o perfil do 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 **URL do token** e **URL do código de autorização** para acessar seu espaço de trabalho do Microsoft Dynamics 365 CRM. 

   1.  Forneça o **ClientId da aplicação cliente gerenciada pelo usuário** da sua aplicação do Microsoft Dynamics 365 CRM. 

   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`. Escolha **Próximo**. 

1.  Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**. 

# Ler de entidades do Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Microsoft Dynamics 365 CRM do qual você deseja ler. Você precisará do nome do objeto, como contatos ou contas. A tabela a seguir mostra as entidades compatíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Entidade dinâmica | Sim | Sim | Sim | Sim | Sim | 

 **Exemplo** 

```
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"
    }
```

## Detalhes das entidades e dos campos do Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-entity-and-field-details"></a>

 **Entidades com metadados dinâmicos**: 

O Microsoft Dynamics 365 CRM fornece endpoints para buscar metadados dinamicamente. Portanto, para entidades dinâmicas, o suporte do operador é capturado no nível do tipo de dados.

<a name="microsoft-dynamics-365-metadata-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/microsoft-dynamics-365-reading-from-entities.html)

 **Particionamento de consultas** 

O Microsoft Dynamics 365 CRM oferece suporte somente ao particionamento baseado em campo.

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Em Datetime, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-01-30T06:47:51.000Z"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela abaixo: 


| Entity Name | Campos de particionamento | DataType | 
| --- | --- | --- | 
| Entidade dinâmica (entidade padrão) | Campos DateTime dinâmicos que podem ser consultados | createdon, modifiedon | 
| Entidade dinâmica (entidade personalizada) | createdon, modifiedon | createdon, modifiedon | 

 **Exemplo** 

```
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"
    }
```

# Referência de opções de conexão do Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-connection-options"></a>

Estas são opções de conexão do Microsoft Dynamics 365 CRM:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Microsoft Dynamics 365 CRM. 
+  `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Microsoft Dynamics 365 CRM que você deseja usar. 
+  `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. 
+  `INSTANCE_URL`(String): (obrigatório) um URL de instância do Microsoft Dynamics 365 CRM válido no formato: `https://{tenantID}.api.crm.dynamics.com` 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. Exemplo: `2024-01-30T06:47:51.000Z`. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. Exemplo: `2024-06-30T06:47:51.000Z`. 

# Limitações
<a name="microsoft-dynamics-365-connector-limitations"></a>

Estas são as limitações do conector do Microsoft Dynamics 365 CRM:
+  No Microsoft Dynamics 365 CRM, o particionamento baseado em registros não é aceito, pois não oferece suporte a um parâmetro de deslocamento. Consequentemente, não há suporte ao particionamento baseado em registros. 
+  A paginação é definida em um máximo de 500 registros por página para evitar exceções do servidor interno do SaaS devido a uma combinação de limitações de tamanho de dados e taxas. 
  + [Documentação de SaaS sobre paginação](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query/page-results?view=dataverse-latest)
  + [Documentação de SaaS sobre limites de taxa](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits?tabs=sdk)
+  O Microsoft Dynamics 365 CRM oferece suporte a `order by` somente aos campos principais para todas as entidades. Não há suporte a `order by` em subcampos. 
  + As direções ASC e DESC são aceitas.
  + Há suporte a `order by` em múltiplos campos.
+  A filtragem no campo "createddatetime" da entidade padrão `aadusers` está gerando um erro de solicitação incorreta do SaaS, embora ofereça suporte à filtragem. Não há identificação específica de qualquer outra entidade com um problema semelhante devido à natureza dinâmica dos metadados, e a causa raiz também não é conhecida. Portanto, ele não pode ser tratado. 
+  Tipos de objetos complexos, como Struct, List e Map, não oferecem suporte à filtração. 
+  Muitos campos que podem ser recuperados de uma resposta têm `isRetrievable` marcado como `false` na resposta dinâmica de metadados. Para evitar perda de dados, `isRetrievable` é definido como `true` para todos os campos. 
+  O particionamento baseado em campo passará a ser aceito em todas as entidades quando os seguintes critérios forem atendidos: 
  + Campos consultáveis DateTime devem estar presentes em entidades padrão ou os campos `createdon` e `modifiedon` (gerados pelo sistema) devem existir em entidades personalizadas. 
  + Não há identificação exclusiva dos campos gerados pelo sistema ou da propriedade anulável de nenhuma API de metadados SaaS. No entanto, é prática geral que somente os campos disponíveis por padrão sejam filtráveis e não anuláveis. Portanto, o critério de seleção de campos acima é considerado nulo seguro e, se for filtrável, será elegível para particionamento.

# Conexão ao Microsoft Teams
<a name="connecting-to-microsoft-teams"></a>

 O Microsoft Teams é um espaço de trabalho colaborativo no Microsoft 365 que atua como um hub central para conversas no local de trabalho, colaboração entre as equipes, chats por vídeo e compartilhamento de documentos, tudo projetado para melhorar a produtividade dos funcionários com um conjunto unificado de ferramentas. 

**Topics**
+ [Suporte do AWS Glue para o Microsoft Teams](microsoft-teams-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](microsoft-teams-configuring-iam-permissions.md)
+ [Configuração do Microsoft Teams](microsoft-teams-configuring.md)
+ [Configuração de conexões do Microsoft Teams](microsoft-teams-configuring-connections.md)
+ [Leitura de entidades do Microsoft Teams](microsoft-teams-reading-from-entities.md)
+ [Referência de opções de conexão do Microsoft Teams](microsoft-teams-connection-options.md)
+ [Limitações](microsoft-teams-connector-limitations.md)
+ [Crie uma nova conta do Microsoft Teams:](#microsoft-teams-account-creation)

# Suporte do AWS Glue para o Microsoft Teams
<a name="microsoft-teams-support"></a>

O AWS Glue oferece suporte ao Microsoft Teams da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Microsoft Teams.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Microsoft Teams**  
 v1. Para conferir o suporte de entidades por versão específica, consulte Entidades compatíveis para a fonte. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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 Microsoft Teams
<a name="microsoft-teams-configuring"></a>

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

## Requisitos mínimos
<a name="microsoft-teams-configuring-min-requirements"></a>
+  Você tem uma conta de desenvolvedor do Microsoft Teams com e-mail e senha. Para obter mais informações, consulte [Crie uma nova conta do Microsoft Teams:](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 
+  Você deve ter uma aplicação OAuth2 configurada na sua conta Microsoft que forneça o ID do cliente e as credenciais secretas que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Crie uma nova conta do Microsoft Teams:](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 

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

# Configuração de conexões do Microsoft Teams
<a name="microsoft-teams-configuring-connections"></a>

O Microsoft Teams oferece suporte aos dois tipos seguintes de mecanismo de autenticação:

1.  Autenticação OAuth: o Microsoft Teams oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2. 
   +  Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O usuário que está criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue, na qual ele não precisa fornecer quaisquer informações relacionadas ao OAuth, exceto o instanceurl do Microsoft Teams. O Console do AWS Glue redirecionará o usuário para o Microsoft Teams, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Microsoft Teams. 
   +  Os usuários podem optar por criar sua própria aplicação conectada no Microsoft Teams e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Microsoft Teams para fazer login e autorizar o acesso do AWS Glue aos recursos. 
   +  Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso ficará ativo por uma hora e poderá ser atualizado automaticamente sem a interação do usuário por meio do token de atualização. 
   +  Para obter a documentação pública do Microsoft Teams sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte, no Microsoft Learn, [Register an application with the Microsoft identity platform - Microsoft Graph](https://learn.microsoft.com/en-us/graph/auth-register-app-v2). 

Para configurar uma conexão do Microsoft Teams:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para a autenticação OAuth: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET. 

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

   1.  Em Conexões de dados, escolha **Criar conexão**. 

   1. Ao selecionar uma **Fonte de dados**, selecione o Microsoft Teams.

   1. Forneça seu **ID do locatário** do Microsoft Teams.

   1.  Selecione o perfil do 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.  Forneça o ClientId da aplicação cliente gerenciada pelo usuário da aplicação Microsoft Teams. 

   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`. Escolha **Próximo**. 

1.  Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**. 

# Leitura de entidades do Microsoft Teams
<a name="microsoft-teams-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Microsoft Teams do qual você deseja ler. Você precisará do nome do objeto, como equipe ou mensagem do canal. A tabela a seguir mostra as entidades compatíveis. 

 **Entidades compatíveis para a fonte** 

 Todas as entidades são compatíveis com a versão 1.0 da API. 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Equipes | Não | Não | Não | Sim | Não | 
| Membros da equipe | Sim | Sim | Não | Sim | Sim | 
| Grupos | Sim | Sim | Sim | Sim | Sim | 
| Membros do grupo | Sim | Sim | Não | Sim | Não | 
| Canais | Sim | Não | Não | Sim | Sim | 
| Mensagens do canal | Não | Sim | Não | Sim | Não | 
| Respostas de mensagens do canal | Não | Sim | Não | Sim | Não | 
| Guias do canal | Sim | Não | Não | Sim | Não | 
| Chats | Sim | Sim | Sim | Sim | Sim | 
| Eventos de calendário | Sim | Sim | Sim | Sim | Sim | 

 **Exemplo** 

```
MicrosoftTeams_read = glueContext.create_dynamic_frame.from_options(
    connection_type="MicrosoftTeams",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "v1.0"
    }
```

## Detalhes das entidades e dos campos do Microsoft Teams
<a name="microsoft-teams-entity-and-field-details"></a>

 Lista de entidades: 
+  Equipe: [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) 
+  Membro da equipe: [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) 
+  Membro do 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) 
+  Mensagem do 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) 
+  Resposta da mensagem do 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) 
+  Guia do 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 do calendário: [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) 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela abaixo: 


| Entity Name | Campos de particionamento | Tipo de dado | 
| --- | --- | --- | 
| Membros da equipe | visibleHistoryStartDateTime | DateTime | 
| Grupos | createdDateTime | DateTime | 
| Canais | createdDateTime | DateTime | 
| Chats | createdDateTime, lastModifiedDateTime | DateTime | 
| Eventos de calendário | createdDateTime, lastModifiedDateTime, originalStart | DateTime | 

 **Exemplo** 

```
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"
    }
```

# Referência de opções de conexão do Microsoft Teams
<a name="microsoft-teams-connection-options"></a>

Estas são as opções de conexão do Microsoft Teams:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Microsoft Teams. 
+  `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Microsoft Teams que você deseja usar. Exemplo: v1.0. 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Limitações
<a name="microsoft-teams-connector-limitations"></a>

Estas são as limitações do conector do Microsoft Teams:
+  A API do Microsoft Teams retorna um número menor de registros do que o especificado para entidades de Chat e Membro da equipe. Esse problema foi relatado ao Suporte do Microsoft Teams e está sob investigação. 

## Crie uma nova conta do Microsoft Teams:
<a name="microsoft-teams-account-creation"></a>

1.  Navegue até a página inicial do Microsoft Teams, [https://account.microsoft.com/account/](https://account.microsoft.com/account/) e escolha **Entrar**. 

1.  Escolha **Crie uma\$1**. 

1.  Insira as informações necessárias para a criação da conta e crie uma nova conta. 

1.  Navegue até o site do Microsoft Teams em [https://www.microsoft.com/pt-br/microsoft-teams/log-in](https://www.microsoft.com/en-in/microsoft-teams/log-in). 

1.  Inscreva-se usando a conta Microsoft que você acabou de criar. 

1.  Depois de se inscrever com êxito no Teams, navegue até [https://account.microsoft.com/services](https://account.microsft.com/services). 

1.  Escolha **Experimentar o Microsoft 365**. 

1.  Ative uma das assinaturas do Microsoft 365 ou do Microsoft Teams abaixo para acessar todos os recursos necessários do conector do Microsoft Teams: 
   + Microsoft Teams Essentials
   + Microsoft 365 Business
   + Microsoft 365 Business Basic
   + Microsoft 365 Business Standard
   + Microsoft 365 Business Premium

**Criar uma aplicação cliente gerenciada:**

1.  Para criar uma aplicação gerenciada, você precisa registrar uma nova aplicação OAuth no Microsoft Entra (anteriormente Azure Active Directory): 

1.  Faça login no [centro de administração do Microsoft Entra](https://entra.microsoft.com). 

1.  Se você tiver acesso a vários locatários, use o ícone Configurações no menu superior para alternar para o locatário no qual deseja registrar a aplicação no menu Diretórios \$1 assinaturas. 

1.  Navegue até Identidade > Aplicativos > Registros de aplicativo e selecione **Novo registro**. 

1. Insira um nome de exibição para sua aplicação.

1.  Especifique quem pode usar a aplicação na seção Tipos de conta compatíveis. Para tornar essa aplicação global, selecione “Contas em qualquer diretório organizacional” ou “Contas em qualquer diretório organizacional e contas pessoais da Microsoft”. 

1.  Insira o URI de redirecionamento `https://{region}.console.aws.amazon.com/appflow/oauth`. Por exemplo, para `us-west-2 region`, adicione `https://us-west-2.console.aws.amazon.com/appflow/oauth`. Você pode adicionar vários URLs para as diferentes regiões que deseja usar.

1.  Registre a aplicação. 

1.  Anote o ID do cliente para uso futuro. 

1.  Escolha **Adicionar um certificado ou segredo** na seção Essentials. 

1.  Escolha **Novo segredo do cliente**. 

1.  Insira uma descrição e a duração da expiração. 

1.  Copie e salve o segredo do cliente para uso futuro. 

1.  Na lista do menu à esquerda, selecione **Permissões de API**. 

1.  Escolha **Adicionar uma permissão**. 

1.  Selecione “Microsoft Graph”. 

1.  Selecione “Permissões delegadas”. 

1.  Marque todas as seguintes permissões: 
   + 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.  Escolha **Adicionar permissões**. Sua aplicação agora foi configurada com êxito. Você pode usar o ID e o segredo do cliente para criar uma nova conexão. Para obter mais informações, consulte [https://learn.microsoft.com/en-us/graph/auth-register-app-v2](https://learn.microsoft.com/en-us/graph/auth-register-app-v2). 

# Conexão com o Mixpanel
<a name="connecting-to-mixpanel"></a>

O Mixpanel é uma poderosa plataforma de análise em tempo real que ajuda as empresas a medir e otimizar o engajamento do usuário. O Mixpanel é uma aplicação usada para rastrear o comportamento do cliente. Ele permite que você acompanhe como os usuários interagem com seu produto e analise esses dados com relatórios interativos que permitem consultar e visualizar os resultados com apenas alguns cliques. Como usuário do Mixpanel, é possível conectar o AWS Glue à sua conta do Mixpanel. Em seguida, será possível usar o Slack como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Mixpanel e serviços da AWS ou outras aplicações com suporte.

**Topics**
+ [Suporte do AWS Glue para Mixpanel](Mixpanel-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](mixpanel-configuring-iam-permissions.md)
+ [Configuração do Mixpanel](mixpanel-configuring.md)
+ [Configuração de conexões do Mixpanel](mixpanel-configuring-connections.md)
+ [Leitura de entidades do Mixpanel](mixpanel-reading-from-entities.md)
+ [Opções de conexão do Mixpanel](mixpanel-connection-options.md)
+ [Criação de uma conta do Mixpanel e configuração da aplicação cliente](mixpanel-create-account.md)
+ [Limitações](mixpanel-connector-limitations.md)

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

O AWS Glue oferece suporte ao Mixpanel da seguinte forma:

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

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

**Versões da API do Mixpanel com suporte**  
 2.0 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Mixpanel
<a name="mixpanel-configuring"></a>

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

## Requisitos mínimos
<a name="mixpanel-configuring-min-requirements"></a>
+  Você tem uma conta do Mixpanel. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Mixpanel](mixpanel-create-account.md). 
+  Sua conta do Mixpanel precisa estar habilitada para acesso à API. O acesso à API estar ativado por padrão para as edições Enterprise, Unlimited, Developer e Performance. 

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

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

O Mixpanel oferece suporte a nome de usuário e senha para `BasicAuth`. A autenticação básica é um método de autenticação simples em que os clientes fornecem credenciais diretamente para acessar recursos protegidos. O AWS Glue é capaz de usar o nome de usuário e a senha para autenticar as APIs do Mixpanel. 

Para obter a documentação pública do Mixpanel sobre o fluxo de `BasicAuth`, consulte [Contas de serviço do Mixpanel](https://developer.mixpanel.com/reference/service-accounts). 

Para configurar uma conexão do Mixpanel:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes: 
   +  Para a autenticação básica, o segredo deve conter o segredo do consumidor da aplicação conectada com `USERNAME` e `PASSWORD` como chave. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

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

   1. Forneça o `INSTANCE_URL` do Mixpanel ao qual você deseja se conectar.

   1. Selecione o perfil do 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 **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 Mixpanel
<a name="mixpanel-reading-from-entities"></a>

 **Pré-requisitos** 

Você deve ter um objeto do Mixpanel, como `Funnels`, `Retention` ou `Retention Funnels`, do qual gostaria de ler dados. Além disso, você precisará saber o nome do objeto.

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Funis | Sim | Não | Não | Sim | Não | 
| Retenção | Sim | Não | Não | Sim | Não | 
| Segmentação | Sim | Não | Não | Sim | Não | 
| Soma da segmentação | Sim | Não | Não | Sim | Não | 
| Média de segmentação | Sim | Não | Não | Sim | Não | 
| Cohorts | Sim | Não | Não | Sim | Não | 
| Engage | Não | Sim | Não | Sim | Não | 
| Eventos | Sim | Não | Não | Sim | Não | 
| Eventos principais | Sim | Não | Não | Sim | Não | 
| Nome dos eventos | Sim | Não | Não | Sim | Não | 
| Propriedades dos eventos | Sim | Não | Não | Sim | Não | 
| Propriedades dos eventos principais | Sim | Não | Não | Sim | Não | 
| Valores das propriedades dos eventos | Sim | Não | Não | Sim | Não | 
| Anotações | Sim | Não | Não | Sim | Não | 
| Atividade de evento do perfil | Sim | Não | Não | Sim | Não | 

 **Exemplo** 

```
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"
    }
```

 **Detalhes das entidades e dos campos do Mixpanel** 

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

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

Estas são as opções de conexão do Mixpanel:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Mixpanel. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Mixpanel que você deseja usar. Por exemplo, v2.0. 
+  `SELECTED_FIELDS`(lista<string>): padrão: vazio (SELECT \$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: vazio. Usado para leitura. Consulta completa do Spark SQL. 

# Criação de uma conta do Mixpanel e configuração da aplicação cliente
<a name="mixpanel-create-account"></a>

**Criação de uma conta do Mixpanel**

1. Navegue até a [página inicial do Mixpanel](https://mixpanel.com/). 

1. Na página inicial do **Mixpanel**, escolha **Cadastrar-se** no canto superior direito da página. 

1. Na página **Vamos começar**, conclua as seguintes ações: 
   + Insira seu endereço de e-mail no campo designado.
   + Marque a caixa de seleção obrigatória para concordar com os termos.
   + Escolha **Começar** para prosseguir.

     Após a conclusão com êxito, você receberá um e-mail de verificação. 

1. Verifique sua caixa de entrada de e-mail em busca de uma mensagem de verificação, abra o e-mail e siga as instruções para verificar seu endereço de e-mail. 

1. Na página de verificação, escolha **Verificar e-mail** para concluir a verificação do seu e-mail. 

1. Na página **Nomeie sua organização**, insira o nome da sua organização e escolha **Avançar**. 

1. Na página **Seu primeiro projeto**, insira os detalhes do seu projeto e escolha **Criar**.

1. Na próxima página, escolha **Vamos começar** para concluir a criação da sua conta. 

**Login em uma conta do Mixpanel**

1. Navegue até a [página de login do Mixpanel](https://mixpanel.com/login/). 

1. Insira seu endereço de e-mail e escolha **Continuar**. 

1. Verifique sua caixa de entrada de e-mail em busca de uma mensagem de verificação, abra o e-mail e siga as instruções para verificar seu endereço de e-mail. 

1. Na próxima página, escolha o **botão Login** para fazer login na sua conta. 

**Aquisição de um plano do Mixpanel**

1. Na página do Mixpanel, selecione o ícone **Configurações** localizado no canto superior direito da página.

1. Na lista de opções, selecione **Detalhes e cobrança do plano**. 

1. Na página **Detalhes e cobrança do plano**, selecione **Atualizar ou modificar**.

1. Na próxima página, selecione o plano que você deseja comprar.

   Isso conclui o processo de criação da conta e aquisição do plano.

**Criação de um nome de usuário e segredo do cliente (para registrar sua aplicação)**

1. Na página do Mixpanel, selecione o ícone **Configurações** localizado no canto superior direito da página. 

1. Na lista de opções, selecione **Configurações do projeto**. 

1. Na página **Configurações do projeto**, selecione **Contas de serviço** e, em seguida, selecione **Adicionar conta de serviço**.

1. Na lista suspensa **Conta de serviço**, selecione a **conta de serviço ou insira o nome para criar**, adicione o **Perfil do projeto**, especifique a **expiração** e selecione **Adicionar**. 
**Importante**  
Após concluir a etapa anterior, a página a seguir exibe a chave secreta da conta de serviço. Certifique-se de salvar a chave secreta da conta de serviço. Você não poderá acessá-lo novamente após este ponto.

# Limitações
<a name="mixpanel-connector-limitations"></a>

Estas são as limitações do conector do Mixpanel:
+ Para a entidade `Segmentation Numeric`, a API do Mixpanel gera um erro `400 (Bad Request)` se nenhum dado numérico for encontrado para os filtros obrigatórios. Estamos tratando isso como uma resposta `OK` para evitar falhas no fluxo.
+ O campo consultável `limit` foi removido das entidades com suporte porque:
  + Estava causando erros por ser interpretado como o atributo de limite do SDK
  + O filtro não servia a nenhum propósito prático
  + A funcionalidade equivalente agora é coberta pela implementação do atributo de limite
+ Não pode gaver suporte para o particionamento baseado em campo devido à ausência dos operadores necessários (`>=`, `<=`, `<`, `>`, `between`) para particionamento na plataforma SaaS. Embora ela ofereça suporte ao operador `between`, os campos para os quais ela oferece suporte a esse operador não são recuperáveis. Portanto, os critérios para particionamento baseado em campo não são atendidos.
+  Como não há provisão para obter um valor de 'offset' para entidades que suportam paginação, não é possível oferecer suporte ao particionamento baseado em registros para o Mixpanel.
+ A entidade `Cohorts` oferece suporte apenas ao campo `CreatedDate/Time`, e não há nenhum campo para identificar `UpdatedDate/Time`. Como resultado, `DML_Status` não pode ser identificado. Além disso, não há endpoints para identificar registros excluídos. Portanto, não pode haver suporte para o CDC.
+  Para executar um trabalho do AWS Glue para as entidades mencionadas abaixo, filtros obrigatórios são necessários. Consulte a tabela abaixo para conferir os nomes de entidades e seus filtros obrigatórios.  
**Nome da entidade e filtros obrigatórios**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/mixpanel-connector-limitations.html)

# Conexão ao Monday
<a name="connecting-to-monday"></a>

 O Monday.com é um sistema operacional de trabalho versátil que simplifica o gerenciamento de projetos e a colaboração em equipe. Ele apresenta fluxos de trabalho personalizáveis, painéis visuais e ferramentas de automação para aumentar a produtividade. Os usuários podem rastrear tarefas, gerenciar recursos e se comunicar de forma eficaz em uma plataforma integrada. 

**Topics**
+ [Suporte do AWS Glue para o Monday](monday-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](monday-configuring-iam-permissions.md)
+ [Configuração do Monday](monday-configuring.md)
+ [Configuração de conexões do Monday](monday-configuring-connections.md)
+ [Leitura de entidades do Monday](monday-reading-from-entities.md)
+ [Referência de opções de conexão do Monday](monday-connection-options.md)
+ [Limitações](monday-connector-limitations.md)
+ [Criar uma nova conta do Monday:](#monday-account-creation)

# Suporte do AWS Glue para o Monday
<a name="monday-support"></a>

O AWS Glue oferece suporte ao Monday da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Monday.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Monday**  
 v2. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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 Monday
<a name="monday-configuring"></a>

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

## Requisitos mínimos
<a name="monday-configuring-min-requirements"></a>
+  Você tem uma conta de desenvolvedor do Monday com e-mail e senha. Para obter mais informações, consulte [Criar uma nova conta do Monday:](connecting-to-monday.md#monday-account-creation). 
+  Sua conta de desenvolvedor do Monday está habilitada para acesso à API. Todo o uso das APIs do Monday está disponível sem custo adicional durante o período de avaliação. Quando o período de avaliação terminar, você precisará comprar uma assinatura para criar e acessar os dados. Para obter mais informações, consulte a [página de licenciamento do Monday](https://developer.monday.com/api-reference/reference/about-the-api-reference) para mais detalhes. 

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

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

O Monday oferece suporte aos dois tipos seguintes de mecanismo de autenticação:

1.  Autenticação OAuth: o Monday oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2. 
   +  Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O usuário que está criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue, na qual ele não precisa fornecer quaisquer informações relacionadas ao OAuth, exceto o instanceurl do Monday. O Console do AWS Glue redirecionará o usuário para o Monday, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Monday. 
   +  Os usuários devem optar por criar sua própria aplicação conectada no Monday e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Monday para fazer login e autorizar o acesso do AWS Glue aos recursos. 
   +  Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso ficará ativo por uma hora e poderá ser atualizado automaticamente sem a interação do usuário por meio do token de atualização. 
   +  Para obter mais informações, consulte a [documentação sobre como criar uma aplicação conectada para o fluxo AUTHORIZATION\$1CODE do OAuth](https://developers.Monday.com/docs/api/v1/Oauth). 

1.  Autenticação personalizada: 
   +  Para obter a documentação pública do Monday sobre como gerar as chaves de API necessárias para a autorização 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 uma conexão do Monday:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para a autenticação OAuth: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET. 

   1.  Para a autenticação personalizada: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave `personalAccessToken`. 

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

   1.  Em Conexões de dados, escolha **Criar conexão**. 

   1. Ao selecionar uma **Fonte de dados**, selecione o Monday.

   1. Forneça o **instanceURL** do Monday.

   1.  Selecione o perfil do 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 tipo de autenticação para se conectar ao Monday 
      +  Para a autenticação OAuth: forneça o **URL do Token** e o **ClientId da aplicação cliente gerenciada pelo usuário** do Monday ao qual deseja se conectar. 
      +  Para a autenticação personalizada: selecione o tipo de autenticação **PERSONALIZADA** para se conectar ao Monday. 

   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`. Escolha **Próximo**. 

1.  Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**. 

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

 **Pré-requisitos** 
+  Um objeto do Monday do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis para a fonte** 

 Lista de entidades: 
+  Conta: [https://developer.monday.com/api-reference/docs/account\$1queries](https://developer.monday.com/api-reference/docs/account#queries) 
+  Mural: [https://developer.monday.com/api-reference/docs/boards\$1queries](https://developer.monday.com/api-reference/docs/boards#queries) 
+  Coluna: [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) 
+  Bloco de documento: [https://developer.monday.com/api-reference/docs/blocks\$1queries](https://developer.monday.com/api-reference/docs/blocks#queries) 
+  Arquivos: [https://developer.monday.com/api-reference/docs/files\$1queries](https://developer.monday.com/api-reference/docs/files#queries) 
+  Pastas: [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) 
+  Item: [https://developer.monday.com/api-reference/docs/items\$1queries](https://developer.monday.com/api-reference/docs/items#queries) 
+  Subitens: [https://developer.monday.com/api-reference/docs/subitems\$1queries](https://developer.monday.com/api-reference/docs/subitems#queries) 
+  Tags: [https://developer.monday.com/api-reference/docs/tags-queries\$1queries](https://developer.monday.com/api-reference/docs/tags-queries#queries) 
+  Equipes: [https://developer.monday.com/api-reference/docs/teams\$1queries](https://developer.monday.com/api-reference/docs/teams#queries) 
+  Atualizações: [https://developer.monday.com/api-reference/docs/updates\$1queries](https://developer.monday.com/api-reference/docs/updates#queries) 
+  Usuários: [https://developer.monday.com/api-reference/docs/users\$1queries](https://developer.monday.com/api-reference/docs/users#queries) 
+  Espaços de trabalho: [https://developer.monday.com/api-reference/docs/workspaces\$1queries](https://developer.monday.com/api-reference/docs/workspaces#queries) 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Conta | Não | Não | Não | Sim | Não | 
| Murais | Sim | Sim | Não | Sim | Não | 
| Columns | Não | Não | Não | Sim | Não | 
| Documentos | Sim | Sim | Não | Sim | Não | 
| Blocos de documentos | Não | Sim | Não | Sim | Não | 
| Arquivos | Sim | Não | Não | Sim | Não | 
| Grupos | Não | Não | Não | Sim | Não | 
| Item | Sim | Sim | Não | Sim | Não | 
| Subitens | Não | Não | Não | Sim | Não | 
| Tags | Sim | Não | Não | Sim | Sim | 
| Equipes | Sim | Não | Não | Sim | Não | 
| Atualizações | Não | Sim | Não | Sim | Não | 
| Usuários | Sim | Sim | Não | Sim | Não | 
| Workspaces | Sim | Sim | Não | Sim | Não | 
| Pastas | Sim | Sim | Não | Sim | Não | 

 **Exemplo** 

```
monday_read = glueContext.create_dynamic_frame.from_options(
     connection_type="monday",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "account",
         "API_VERSION": "v2"
     }
```

# Referência de opções de conexão do Monday
<a name="monday-connection-options"></a>

Estas são as opções de conexão do Monday:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Monday. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. A versão da API Rest do Monday que você deseja usar. Exemplo: v2. 
+  `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
<a name="monday-connector-limitations"></a>

Estas são as limitações do conector do Monday:
+  A resposta dinâmica de metadados apresenta alguns conflitos com a documentação, conforme mencionado abaixo: 
  +  A entidade Grupo, Coluna oferece suporte a operações de filtro, mas não está presente no endpoint dinâmico de metadados, portanto, é mantida como uma entidade não filtrável. 
  +  O endpoint dinâmico consiste em cerca de mais de 15 mil linhas e retorna metadados de todas as entidades em uma única resposta. Por isso, os campos demoram, em média, dez segundos para carregar, o que pode exigir mais tempo durante a execução de um trabalho. 
  +  Consulte na tabela abaixo os limites de taxa do Monday. O tamanho significativo dos dados de respostas da entidade dinâmica causa um atraso perceptível, com os campos exigindo, em média, dez segundos para carregar.     
<a name="monday-rate-limit-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/monday-connector-limitations.html)

## Criar uma nova conta do Monday:
<a name="monday-account-creation"></a>

1.  Navegue até a página inicial do Monday, [https://monday.com/](https://monday.com/) e escolha **Iniciar sessão**. 

1.  Você será redirecionado para a página de login. Na parte inferior da página, escolha **Sign up**. 

1.  Insira seu endereço de e-mail e escolha **Continuar**. Como alternativa, você pode fazer login com o Google. 

1.  Insira as informações necessárias e escolha **Continue**. 

1.  Responda às perguntas da pesquisa e siga as etapas para concluir o processo de criação da conta. 

**Registrar uma aplicação OAuth:**

1.  Faça login na sua conta do monday.com. Clique no seu avatar (ícone de imagem) no canto inferior esquerdo da tela. 

1.  Escolha **Developer**. 

1.  Escolha **Criar aplicação**. 

1.  Preencha os campos obrigatórios para um nome e descrição. 

1. Navegue até a seção “OAuth” no lado direito, adicione os escopos e escolha “Save Feature”.

1.  Navegue até a guia “Redirect URLs” ao lado do escopo, adicione o URL de redirecionamento e escolha “Save Feature”. 

1.  Na guia **Redirect URLs**, informe o URL da sua aplicação. Esse URL deve ser https://\$1código-da-região\$1.console.aws.amazon.com/appflow/oauth. Por exemplo, se estiver usando `us-east-1 `, você pode adicionar `https://us-east-1.console.aws.amazon.com/appflow/oauth`. 

1.  Agora a aplicação está pronta para uso. Você pode encontrar suas credenciais na seção “Basic Information”. Anote as strings do seu ID e segredo do cliente. Essas strings são usadas para fazer uma conexão com essa aplicação usando um conector do AppFlow. 

**Gerar token de acesso pessoal:**

 Atualmente, a monday.com oferece apenas nossos tokens de API V2, que são todos tokens pessoais. Para acessar seus tokens de API, é possível usar dois métodos, dependendo do nível do usuário. Os usuários administradores podem utilizar os dois métodos para adquirir os tokens de API. Os usuários membros podem acessar os tokens de API nas guias de desenvolvedor. 

 Administradores: se você for um usuário administrador na sua conta do monday.com, poderá acessar os tokens de API na guia “Admin” seguindo estas etapas: 

1.  Faça login na sua conta do monday.com. Clique no seu avatar (ícone de imagem) no canto inferior esquerdo da tela. 

1.  Selecione “Administration” no menu exibido (isso requer que você tenha permissões de administrador). 

1.  Navegue até a seção “API” e gere um “API V2 Token”. Você pode copiar seu token e usá-lo. 

 Desenvolvedores: se você for um usuário membro na sua conta do monday.com, poderá acessar os tokens de API na guia “Developer” seguindo estas etapas: 

1.  Faça login na sua conta do monday.com. Clique no seu avatar (ícone de imagem) no canto inferior esquerdo da tela. 

1.  Selecione “Developers” no menu exibido. 

1.  No menu superior, escolha o menu suspenso “Developer”. Selecione a primeira opção no menu suspenso chamada “My Access Tokens”. 

# Conectar ao MongoDB no AWS Glue Studio
<a name="connecting-to-data-mongodb"></a>

 O AWS Glue oferece suporte integrado ao Mongo DB. O AWS Glue Studio fornece uma interface visual para conectar ao Mongo DB, criar trabalhos de integração de dados e executá-los no runtime Spark do AWS Glue Studio sem servidor. 

**Topics**
+ [Criar uma conexão do MongoDB](creating-mongodb-connection.md)
+ [Criar um nó de origem do MongoDB](creating-mongodb-source-node.md)
+ [Criar um nó de destino do MongoDB](creating-mongodb-target-node.md)
+ [Opções avançadas](#creating-mongodb-connection-advanced-options)

# Criar uma conexão do MongoDB
<a name="creating-mongodb-connection"></a>

**Pré-requisitos**:
+ Se a sua instância do MongoDB estiver em uma Amazon VPC, configure a Amazon VPC para permitir que seu trabalho do AWS Glue se comunique com a instância do MongoDB sem que o tráfego passe pela Internet pública. 

  Na Amazon VPC, identifique ou crie uma **VPC**, uma **Sub-rede** e um **Grupo de segurança** que o AWS Glue usará durante a execução do trabalho. Além disso, você precisa garantir que a Amazon VPC esteja configurada para permitir o tráfego de rede entre sua instância do MongoDB e esse local. Com base no layout da rede, isso pode exigir alterações em regras do grupo de segurança, ACLs de rede, gateways de NAT e conexões de emparelhamento.

**Para configurar uma conexão com o MongoDB:**

1. Opcionalmente, no AWS Secrets Manager, crie um segredo usando suas credenciais do MongoDB. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `username` com o valor *mongodbUser*.

     Ao selecionar **Pares chave/valor**, crie um par para a chave `password` com o valor *mongodbPass*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para uso futuro em AWS Glue. 
   + Ao selecionar um **Tipo de conexão**, selecione **MongoDB** ou **MongoDB Atlas**.
   + Ao selecionar o **URL do MongoDB** ou o **URL do MongoDB Atlas**, forneça o nome de host da sua instância do MongoDB.

     Um URL do MongoDB é fornecido no formato `mongodb://mongoHost:mongoPort/mongoDBname`.

     Um URL do MongoDB Atlas é fornecido no formato `mongodb+srv://mongoHost/mongoDBname`.
   + Se você optar por criar um segredo do Secrets Manager, escolha o **Tipo de credencial** do AWS Secrets Manager.

     Em seguida, em **Segredo do AWS**, forneça o *secretName*.
   + *Se você optar por fornecer **Nome de usuário e senha**, forneça também o *mongodbUser* e o mongodbPass*.

1. Nas seguintes situações, configurações adicionais podem ser necessárias:
   + 

     Para instâncias do MongoDB hospedadas na AWS em uma Amazon VPC
     + Será necessário fornecer informações de conexão da Amazon VPC à conexão do AWS Glue que define suas credenciais de segurança do MongoDB. Ao criar ou atualizar sua conexão, defina **VPC**, **Sub-rede** e **Grupos de segurança** em **Opções de rede**.

Depois de criar uma conexão AWS Glue MongoDB, siga estas etapas antes de executar seu trabalho do AWS Glue:
+ Ao trabalhar com trabalhos do AWS Glue no editor visual, é necessário fornecer informações de conexão da Amazon VPC para que seu trabalho se conecte ao MongoDB. Identifique um local adequado na Amazon VPC e forneça-o à sua conexão AWS Glue MongoDB.
+ Se você optar por criar um segredo do Secrets Manager, conceda ao perfil do IAM associado ao seu trabalho do AWS Glue permissão para ler *secretName*.

# Criar um nó de origem do MongoDB
<a name="creating-mongodb-source-node"></a>

## Pré-requisitos necessários
<a name="creating-mongodb-source-node-prerequisites"></a>
+ Uma conexão AWS Glue MongoDB, conforme descrito na seção anterior, [Criar uma conexão do MongoDB](creating-mongodb-connection.md).
+ Se você optar por criar um segredo do Secrets Manager, permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma coleção do MongoDB da qual você gostaria de ler. Você precisará de informações de identificação para a coleção.

  Uma coleção do MongoDB é identificada por um nome de banco de dados e um nome de coleção, *mongodbName* e *mongodbCollection*.

## Adicionar uma fonte de dados do MongoDB
<a name="creating-mongodb-source-node-add"></a>

**Para adicionar um nó de **Fonte de dados – MongoDB**:**

1.  Escolha a conexão para sua fonte de dados do MongoDB. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o MongoDB**. Para mais informações, consulte a seção [Criar uma conexão do MongoDB](creating-mongodb-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Escolha um **Banco de dados**. Insira o *mongodbName*.

1. Escolha uma **Coleção**. Insira *mongodbCollection*.

1. Escolha seu **Particionador**, o **Tamanho da partição (MB)** e a **Chave da partição**. Para obter mais informações sobre parâmetros de partições, consulte [“connectionType”: “mongodb” como fonte](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source).

1.  Em **Propriedades personalizadas do MongoDB**, insira parâmetros e valores conforme necessário. 

# Criar um nó de destino do MongoDB
<a name="creating-mongodb-target-node"></a>

## Pré-requisitos necessários
<a name="creating-mongodb-target-node-prerequisites"></a>
+ Uma conexão AWS Glue MongoDB configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão do MongoDB](creating-mongodb-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do MongoDB na qual você gostaria de escrever, *tableName*.

## Adicionar um destino de dados do MongoDB
<a name="creating-mongodb-target-node-add"></a>

**Para adicionar um nó de **Destino de dados – MongoDB**:**

1.  Escolha a conexão para sua fonte de dados do MongoDB. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o MongoDB**. Para mais informações, consulte a seção [Criar uma conexão do MongoDB](creating-mongodb-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Escolha um **Banco de dados**. Insira o *mongodbName*.

1. Escolha uma **Coleção**. Insira *mongodbCollection*.

1. Escolha seu **Particionador**, o **Tamanho da partição (MB)** e a **Chave da partição**. Para obter mais informações sobre parâmetros de partições, consulte [“connectionType”: “mongodb” como fonte](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source).

1. Escolha **Repetir operações de escrever**, se desejar.

1.  Em **Propriedades personalizadas do MongoDB**, insira parâmetros e valores conforme necessário. 

## Opções avançadas
<a name="creating-mongodb-connection-advanced-options"></a>

Você pode fornecer opções avançadas ao criar um nó do Mongo DB. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte [Referência de opções de conexão do MongoDB](aws-glue-programming-etl-connect-mongodb-home.md#aws-glue-programming-etl-connect-mongodb). 

# Conectar ao Oracle NetSuite
<a name="connecting-to-data-oracle-netsuite"></a>

O Oracle NetSuite é uma solução completa de gerenciamento de negócios na nuvem que ajuda as organizações a operar com mais eficiência automatizando os principais processos e fornecendo visibilidade em tempo real das performances operacional e financeira. Com um pacote único e integrado de aplicações para gerenciamento de contabilidade, processamento de pedidos, gerenciamento de inventário, produção, cadeia de suprimentos e operações de armazém, o Oracle NetSuite oferece às empresas uma visibilidade clara de seus dados e um controle mais rígido sobre seus negócios.

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

# Suporte do AWS Glue ao Oracle NetSuite
<a name="oracle-netsuite-support"></a>

O AWS Glue oferece suporte ao Oracle NetSuite da seguinte forma:

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

**Compatível como destino?**  
Não.

**Versões da API do Oracle NetSuite compatíveis**  
Estas são as versões compatíveis da API do Oracle NetSuite:
+ v1

Para conferir a compatibilidade das entidades por versão específica, consulte as entidades compatíveis para a fonte.

# Políticas que contêm as operações de API para criar e usar conexões
<a name="oracle-netsuite-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 Oracle NetSuite
<a name="oracle-netsuite-configuring"></a>

Para usar o AWS Glue para transferir dados de ou para o Oracle NetSuite, os seguintes requisitos deverão ser atendidos:

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

São requisitos mínimos:
+ Você tem uma conta do Oracle NetSuite. Para obter mais informações, consulte [Criar uma conta do Oracle NetSuite](#oracle-netsuite-configuring-creating-oracle-netsuite-account).
+ Sua conta do Oracle NetSuite está habilitada para acesso à API.
+ Você criou uma integração da API OAuth 2.0 em sua conta de desenvolvedor do Oracle NetSuite. Essa integração fornece as credenciais de cliente que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Criação de uma aplicação cliente do Oracle NetSuite e de credenciais do OAuth 2.0](#oracle-netsuite-configuring-creating-oracle-netsuite-client-app).

Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do Oracle NetSuite.

## Criar uma conta do Oracle NetSuite
<a name="oracle-netsuite-configuring-creating-oracle-netsuite-account"></a>

Navegue até [Oracle NetSuite](https://www.netsuite.com/portal/home.shtml) e escolha **Tour gratuto do produto**. Preencha os detalhes necessários para obter um tour gratuito do produto por meio do qual você poderá entrar em contato com um fornecedor. O processo de aquisição de uma conta é o seguinte:
+ A aquisição de uma conta do NetSuite é feita por meio de um fornecedor, que disponibiliza um formulário/cotação que deve ser revisado do ponto de vista jurídico.
+ A conta a ser adquirida para o conector do Oracle NetSuite é do **Standard Cloud Service**.
+ Essa conta é criada pelo fornecedor e as credenciais temporárias são compartilhadas por ele. Você receberá um e-mail de boas-vindas do NetSuite <billing@notification.netsuite.com> <system@sent-via.netsuite.com> com detalhes como seu nome de usuário e um link para definir sua senha.
+ Use o link **Definir sua senha** para definir a senha do nome de usuário fornecido pelo fornecedor.

## Criação de uma aplicação cliente do Oracle NetSuite e de credenciais do OAuth 2.0
<a name="oracle-netsuite-configuring-creating-oracle-netsuite-client-app"></a>

Para obter o ID e o segredo do cliente, crie uma aplicação cliente do Oracle NetSuite:

1. Entre em sua conta do NetSuite por meio do login do [cliente NetSuite](https://system.netsuite.com/pages/customerlogin.jsp).

1. Escolha **Configuração** > **Empresa** > **Habilitar recursos**.

1. Navegue até a seção **SuiteCloud** e marque a caixa de seleção **SERVIÇOS WEB REST** em **SuiteTalk** (Web Services).

1. Marque a caixa de seleção **OAUTH 2.0** em **Gerenciar autenticação**. Clique em **Salvar**.

1. Vá para **Configuração** > **Integração** > **Gerenciar integrações** e escolha **Novo** para criar uma aplicação OAuth2.0.

1. Insira um nome de sua escolha e mantenha **ESTADO** como Habilitado.

1. Se marcadas, desmarque as caixas de seleção **TBA: FLUXO DE AUTORIZAÇÃO** e **AUTENTICAÇÃO BASEADA EM TOKEN** exibidas em **Autenticação baseada em token**.

1. Selecione as caixas de seleção **CONCESSÃO DE CÓDIGO DE AUTORIZAÇÃO** e **CLIENTE PÚBLICO** em **OAuth 2.0**.

1. Em Autenticação, anote o ID e o segredo do cliente.

1. Insira o **URI DE REDIRECIONAMENTO**. Por exemplo, https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Marque a caixa de seleção **SERVIÇOS WEB REST** em **ESCOPO**.

1. Marque a caixa de seleção **CREDENCIAIS DO USUÁRIO** em **Credenciais do usuário**. Escolha **Salvar**.

1. Observe a CHAVE DO CONSUMIDOR/ID DO CLIENTE e o SEGREDO DO CONSUMIDOR/SEGREDO DO CLIENTE em **Credenciais do cliente**. Esses valores são exibidos somente uma vez.

1. Crie um perfil de ADMINISTRADOR, se necessário, navegando até **Usuário/Perfis** > **Gerenciar perfis** > **Novo**.

1. Ao criar um perfil personalizado, adicione acesso total na guia **Permissões** para as seguintes entidades/funcionalidades:
   + "Depósito", "Itens", "Atendimento do item", "Criar registro no diário","Pedido de compra", "Subsidiárias", "Fornecedores", "Faturas", "Autorização de devolução do fornecedor", "Tempo de rastreamento", "Pagamento do cliente", "Entradas de registro personalizadas", "Tipos de registros personalizados", "Serviços Web REST", "Gerenciamento de aplicativos autorizados do OAuth 2.0", "Campos de entidade personalizados", "Entrar usando tokens de acesso do Auth 2.0".

Para obter mais informações, consulte [OAuth 2.0](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_157769826287.html) na documentação do NetSuite Applications Suite.

# Configuração de conexões do Oracle NetSuite
<a name="oracle-netsuite-configuring-connections"></a>

O Oracle NetSuite oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2. O tipo de concessão determina como o AWS Glue se comunica com o Oracle NetSuite para solicitar acesso aos seus dados.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O usuário que estiver criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue (aplicação cliente gerenciada pelo AWS Glue), na qual ele não precisa fornecer quaisquer informações relacionadas ao OAuth, exceto o URL da instância do Oracle NetSuite. O console do AWS Glue redirecionará o usuário ao Oracle NetSuite para que o usuário pode fazer login e autorizar que as permissões solicitadas pelo AWS Glue acessem sua instância do Oracle NetSuite.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Oracle NetSuite e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados ao Oracle NetSuite para iniciar sessão e autorizar o acesso do AWS Glue a seus recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Oracle NetSuite sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Aplicações públicas](https://developers.oracle-netsuite.com/docs/api/creating-an-app).

Para configurar uma conexão do Oracle NetSuite:

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

   1. Observação: é necessário criar um segredo para 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 Oracle NetSuite.

   1. Forneça o ambiente do Oracle NetSuite.

   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 Oracle NetSuite
<a name="oracle-netsuite-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Oracle do qual você deseja ler. Você precisará do nome do objeto, como `deposit` ou `timebill`. A tabela a seguir mostra as entidades compatíveis.

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


| Entidade | Pode ser filtrada | Oferece suporte a Ordenar por | Oferece suporte a limite | Oferece suporte a SELECIONAR \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Depósito | Sim | Não | Sim | Sim | Sim | 
| Item de descrição | Sim | Não | Sim | Sim | Sim | 
| Item de inventário | Sim | Não | Sim | Sim | Sim | 
| Atendimento do item | Sim | Não | Sim | Sim | Sim | 
| Grupo de itens | Sim | Não | Sim | Sim | Sim | 
| Lançamento no diário | Sim | Não | Sim | Sim | Sim | 
| Item de compra que não é de estoque | Sim | Não | Sim | Sim | Sim | 
| Item de revenda que não é de estoque | Sim | Não | Sim | Sim | Sim | 
| Item de venda que não é de estoque | Sim | Não | Sim | Sim | Sim | 
| Ordem de compra | Sim | Não | Sim | Sim | Sim | 
| Subsidiária | Sim | Não | Sim | Sim | Sim | 
| Fornecedor | Sim | Não | Sim | Sim | Sim | 
| Fatura do fornecedor | Sim | Não | Sim | Sim | Sim | 
| Autorização de devolução ao fornecedor | Sim | Não | Sim | Sim | Sim | 
| Faturamento com prazo | Sim | Não | Sim | Sim | Sim | 
| Pagamento do cliente | Sim | Não | Sim | Sim | Sim | 
| Solicitação de atendimento | Sim | Não | Sim | Sim | Sim | 
| Item | Sim | Sim | Sim | Sim | Sim | 
| Linha de transação | Sim | Sim | Sim | Sim | Sim | 
| Linha contábil de transações | Sim | Sim | Sim | Sim | Sim | 
| Tipos de registro personalizados (dinâmicos) | Sim | Sim | Sim | Sim | Sim | 

**Exemplo:**

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1"
    }
)
```

**Detalhes das entidades e dos campos do Oracle NetSuite**:

O Oracle NetSuite carrega dinamicamente os campos disponíveis na entidade selecionada. Dependendo do tipo de dados de campo, ele é compatível com os operadores de filtro a seguir.


| Tipos de dados de campo | Operadores de filtro compatíveis | 
| --- | --- | 
| String | LIKE, =, \$1= | 
| Data | BETWEEN, =, <, <=, >, >= | 
| DateTime | BETWEEN, <, <=, >, >= | 
| Numérico |  =, \$1=, <, <=, >, >= | 
| Booleano |  =, \$1= | 

**Formato de entrada esperado para valores booleanos na expressão de filtro**:


| Entidade | Formato de valor booleano "verdadeiro" | Formato de valor booleano "falso" | Exemplo | 
| --- | --- | --- | --- | 
| Entidades de item, linha de transação, linha contábil de transações e tipo de registro personalizado | T ou t | F ou f | isinactive = "T" ou isinactive = "t" | 
| Todas as outras entidades | verdadeiro | false | isinactive = true | 

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

**Particionamento com base em campo**

O conector do Oracle NetSuite tem metadados dinâmicos para que os campos compatíveis com particionamento com base em campo sejam escolhidos dinamicamente. O particionamento baseado em campo é compatível nos campos com o tipo de dados Integer, BigInteger, Date ou DateTime.

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo de carimbo de data e hora, aceitamos o formato de carimbo de data e hora do Spark usado nas consultas SQL do Spark.

  Exemplos 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`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

**Particionamento com base em registros**

É possível fornecer a opção adicional `NUM_PARTITIONS` do Spark se quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.

No particionamento com base em registros, o número total de registros presentes é consultado na API do Oracle NetSuite e dividido pelo número de `NUM_PARTITIONS` fornecido. O número resultante de registros, em seguida, é obtido simultaneamente por cada subconsulta.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "3"
    }
```

# Opções de conexão do Oracle NetSuite
<a name="oracle-netsuite-connection-options"></a>

São opções de conexão do Oracle NetSuite:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome da entidade do Oracle NetSuite. Exemplo: deposit.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Oracle NetSuite que você deseja usar. O valor será v1, pois o Oracle Netsuite no momento só é compatível com a versão v1.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Lista de colunas separadas por vírgula que você deseja selecionar para a entidade selecionada.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta (particionamento baseado em campos).
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido, usado no particionamento baseado em campos.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido, usado no particionamento baseado em campos. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. Usado nos particionamentos baseados em campos e em registros.
+ `INSTANCEE_URL`(string): um URL de instância válida do NetSuite no formato https://\$1account-id\$1.suitetalk.api.netsuite.com.

# Limitações e notas para o conector do Oracle NetSuite
<a name="oracle-netsuite-connector-limitations"></a>

Estas são as limitações ou notas do conector do Oracle NetSuite:
+ Os valores dos parâmetros access\$1token e refresh\$1token estão no formato JSON Web Token (JWT). O token de acesso é válido por 60 minutos, enquanto refresh\$1token é válido por sete dias.
+ Durante a geração do ID do cliente e do segredo do cliente, se você selecionar "CLIENTE PÚBLICO" junto com "CONCESSÃO DE CÓDIGO DE AUTORIZAÇÃO", o token de atualização só será válido por três horas e poderá ser usado apenas uma vez.
+ É possível buscar no máximo 1.00.000 registros usando o conector. Para obter mais informações, consulte [Executar consultas SuiteQL via serviços Web REST](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157909186990.html).
+ As partições são criadas de forma que cada partição busque registros em múltiplos de 1.000, com exceção possivelmente da última, que buscará os registros restantes.
+ Para objetos Item, Linha de transação e Linha contábil de transações, o conector não oferecerá suporte a alguns operadores devido aos seguintes motivos:
  + A aplicação dos operadores de filtro `EQUAL_TO` ou `NOT_EQUAL_TO` a campos do tipo Data fornece resultados não confiáveis.
  + A aplicação do operador de filtro `LESS_THAN_OR_EQUAL_TO` a campos do tipo Data fornece resultados não confiáveis e se comporta de forma semelhante ao operador `LESS_THAN`.
  + A aplicação do operador de filtro `GREATER_THAN` a campos do tipo Data= fornece resultados não confiáveis e se comporta de forma semelhante ao operador `GREATER_THAN_OR_EQUAL_TO`.
+ Para objetos Item, Linha de transação, Linha contábil de transações e Tipo de registro personalizado, os valores booleanos vêm no formato T/F em vez do padrão true/false. O conector mapeia os valores T/F como true/false para garantir a consistência dos dados.

# Conectar ao OpenSearch Service no AWS Glue Studio
<a name="connecting-to-data-opensearch"></a>

 O AWS Glue oferece suporte integrado ao Amazon OpenSearch Service. O AWS Glue Studio fornece uma interface visual para conectar ao Amazon OpenSearch Service, criar trabalhos de integração de dados e executá-los no runtime Spark do AWS Glue Studio sem servidor. Esse recurso não é compatível com o OpenSearch Service com tecnologia sem servidor. 

 O AWS Glue Studio cria uma conexão unificada para o Amazon OpenSearch Service. Para obter mais informações, consulte [Considerações](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Criar uma conexão com o OpenSearch Service](creating-opensearch-connection.md)
+ [Criar um nó de origem do OpenSearch Service](creating-opensearch-source-node.md)
+ [Criar um nó de destino do OpenSearch Service](creating-opensearch-target-node.md)
+ [Opções avançadas](#creating-opensearch-connection-advanced-options)

# Criar uma conexão com o OpenSearch Service
<a name="creating-opensearch-connection"></a>

**Pré-requisitos**:
+ Identifique o endpoint do domínio, *aosEndpoint* e porta, *aosPort* do qual gostaria de ler, ou crie o recurso seguindo as instruções na documentação do Amazon OpenSearch Service. Para obter mais informações sobre a criação de domínios, consulte [Criar e gerenciar domínios do Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) na documentação do Amazon OpenSearch Service.

  Um endpoint de domínio do Amazon OpenSearch Service terá o seguinte formato padrão, https://search-*domainName*-*unstructuredIdContent*.*region*.es.amazonaws.com. Para obter mais informações sobre a identificação do endpoint do domínio, consulte [Criar e gerenciar domínios do Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) na documentação do Amazon OpenSearch Service. 

  Identifique ou gere credenciais de autenticação básica HTTP, *aosUser* e *aosPassword* para seu domínio.

**Para configurar uma conexão com o OpenSearch Service:**

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do OpenSearch Service. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `USERNAME` com o valor *aosUser*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `PASSWORD` com o valor *aosPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para uso futuro em AWS Glue. 
   + Ao selecionar um **Tipo de conexão**, escolha OpenSearch Service.
   + Ao selecionar um endpoint de domínio, forneça *aosEndpoint*.
   + Ao selecionar uma porta, forneça *aosPort*.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

# Criar um nó de origem do OpenSearch Service
<a name="creating-opensearch-source-node"></a>

## Pré-requisitos necessários
<a name="creating-opensearch-source-node-prerequisites"></a>
+ Uma conexão do AWS Glue OpenSearch Service, configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão com o OpenSearch Service](creating-opensearch-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Um índice do OpenSearch Service do qual você gostaria de ler, *aosIndex*.

## Adicionar uma fonte de dados do OpenSearch Service
<a name="creating-opensearch-source-node-add"></a>

**Para adicionar um nó de **Fonte de dados – OpenSearch Service**:**

1.  Escolha a conexão para sua fonte de dados do OpenSearch Service. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o OpenSearch Service**. Para mais informações, consulte a seção [Criar uma conexão com o OpenSearch Service](creating-opensearch-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Forneça o **Índice** que você gostaria de ler.

1. Opcionalmente, forneça **Consulta**, uma consulta do OpenSearch para fornecer resultados mais específicos. Para obter mais informações sobre como escrever consultas do OpenSearch, consulte [Ler dos índices do OpenSearch Service](aws-glue-programming-etl-connect-opensearch-home.md#aws-glue-programming-etl-connect-opensearch-read).

1.  Em **Propriedades personalizadas do OpenSearch Service**, insira parâmetros e valores conforme o necessário. 

# Criar um nó de destino do OpenSearch Service
<a name="creating-opensearch-target-node"></a>

## Pré-requisitos necessários
<a name="creating-opensearch-target-node-prerequisites"></a>
+ Uma conexão do AWS Glue OpenSearch Service, configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão com o OpenSearch Service](creating-opensearch-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Um índice do OpenSearch Service em que você gostaria de escrever, *aosIndex*.

## Adicionar um destino de dados do OpenSearch Service
<a name="creating-opensearch-target-node-add"></a>

**Para adicionar um nó de **Destino de dados – OpenSearch Service**:**

1.  Escolha a conexão para sua fonte de dados do OpenSearch Service. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o OpenSearch Service**. Para mais informações, consulte a seção [Criar uma conexão com o OpenSearch Service](creating-opensearch-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Forneça o **Índice** que você gostaria de ler.

1.  Em **Propriedades personalizadas do OpenSearch Service**, insira parâmetros e valores conforme o necessário. 

## Opções avançadas
<a name="creating-opensearch-connection-advanced-options"></a>

É possível fornecer opções avançadas ao criar um nó do OpenSearch Service. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte [Conexões do OpenSearch Service](aws-glue-programming-etl-connect-opensearch-home.md). 

# Conexão ao Okta
<a name="connecting-to-okta"></a>

 A API do Okta é a interface programática do Okta, usada para gerenciar contas e campanhas grandes ou complexas do Okta. Se você usa o Okta, pode conectar o AWS Glue à conta do Okta. Em seguida, será possível usar o Okta como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Okta e serviços da AWS ou outras aplicações compatíveis. 

**Topics**
+ [Suporte do AWS Glue para o Okta](okta-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](okta-configuring-iam-permissions.md)
+ [Configuração do Okta](okta-configuring.md)
+ [Configuração de conexões do Okta](okta-configuring-connections.md)
+ [Leitura de entidades do Okta](okta-reading-from-entities.md)
+ [Referência de opções de conexão do Okta](okta-connection-options.md)
+ [Etapas para a criação de uma nova conta e aplicação de desenvolvedor do Okta](okta-create-account.md)
+ [Limitações](okta-connector-limitations.md)

# Suporte do AWS Glue para o Okta
<a name="okta-support"></a>

O AWS Glue oferece suporte ao Okta da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Okta.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Okta**  
 v1. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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 Okta
<a name="okta-configuring"></a>

Antes de usar o AWS Glue para transferir dados de ou para o Okta, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="okta-configuring-min-requirements"></a>
+  Você tem uma conta do Okta. Para obter mais informações sobre como criar uma conta, consulte [Etapas para a criação de uma nova conta e aplicação de desenvolvedor do Okta](okta-create-account.md). 
+  Sua conta do Okta está habilitada para acesso à API. 
+  Você criou uma integração com a OAuth2 API na sua conta do Okta. Essa integração fornece as credenciais de cliente que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte as etapas para criar uma aplicação cliente e credenciais do OAuth2.0: Etapas para a criação de uma nova conta e aplicação de desenvolvedor do Okta 
+  Você tem uma conta do Okta com um OktaApiToken. Consulte a [documentação do Okta](https://developer.okta.com/docs/guides/create-an-api-token/main/#create-the-token). 

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

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

 O Okta oferece suporte a dois tipos de mecanismos de autenticação: 
+  Autenticação OAuth: o Okta oferece suporte ao tipo de concessão `AUTHORIZATION_CODE`. 
  +  Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Okta, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Okta. 
  +  Os usuários podem optar por criar sua própria aplicação conectada no Okta e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Okta para fazer login e autorizar o acesso do AWS Glue aos recursos. 
  +  Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 
  +  Para obter mais informações, consulte a [documentação pública do Okta sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth](https://developers.google.com/workspace/guides/create-credentials). 
+  Autenticação personalizada: 
  +  Para obter a documentação pública do Okta sobre como gerar as chaves de API necessárias para a autorização personalizada, consulte a [documentação do Okta](https://developer.okta.com/docs/guides/create-an-api-token/main/#create-the-token). 

Para configurar uma conexão do Okta:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para a autenticação OAuth: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

   1.  Para a autenticação personalizada: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave `OktaApiToken`. 

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

   1.  Em Conexões, escolha **Criar conexão**. 

   1. Ao selecionar uma **Fonte de dados**, selecione o Okta.

   1. Forneça seu subdomínio do Okta.

   1. Selecione o URL do domínio do Okta da sua conta do Okta.

   1.  Selecione o perfil do 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 tipo de autenticação para se conectar à fonte de dados. 

   1.  Para o tipo de autenticação OAuth2, forneça o **ClientId da aplicação cliente gerenciada pelo usuário** da aplicação Okta. 

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

1.  Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**. 

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

 **Pré-requisitos** 
+  Um objeto do Okta do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Aplicações | Sim | Sim | Não | Sim | Não | 
| Dispositivos | Sim | Sim | Não | Sim | Sim | 
| Grupos | Sim | Sim | Sim | Sim | Sim | 
| Usuários | Sim | Sim | Sim | Sim | Sim | 
| Tipos de usuário | Não | Não | Não | Sim | Não | 

 **Exemplo** 

```
okta_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Okta",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "applications",
        "API_VERSION": "v1"
    }
```

 **Detalhes das entidades e dos campos do Okta** 

 Lista de entidades: 
+  Aplicação: [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/) 
+  Usuário: [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 usuário: [https://developer.okta.com/docs/api/openapi/okta-management/management/tag/UserType/](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/UserType/) 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 **Exemplo** 

```
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"
    }
```

# Referência de opções de conexão do Okta
<a name="okta-connection-options"></a>

Estas são as opções de conexão do Okta:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Okta. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. A versão da API Rest do Okta que você deseja usar. Exemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Etapas para a criação de uma nova conta e aplicação de desenvolvedor do Okta
<a name="okta-create-account"></a>

 Crie uma conta de desenvolvedor no Okta para ter acesso à API do Okta. Uma conta de desenvolvedor gratuita do Okta dá acesso à maioria dos principais recursos de desenvolvedor necessários para acessar a API do Okta. 

**Para criar uma conta de desenvolvedor no Okta**

1.  Navegue até [https://developer.okta.com/signup/](https://console.cloud.google.com). 

1.  Insira as informações da conta: e-mail, nome, sobrenome e país/região. Escolha **I’m not a robot** e, em seguida, **Signup**. 

1.  Um e-mail de verificação é enviado para o seu ID de e-mail registrado. Você receberá um link em seu e-mail para ativar sua conta de desenvolvedor do Okta. Selecione **Ativar**. 

1.  Você será redirecionado para a página de redefinição de senha. Digite a nova senha duas vezes e escolha **Reset password**. 

1.  Você será redirecionado para o painel da sua conta de desenvolvedor do Okta. 

**Para criar uma aplicação cliente e credenciais do OAuth 2.0**

1.  No painel do desenvolvedor, escolha Create App Integration.   
![\[A captura de tela mostra a página Create OAuth client ID e a seção Authorised redirect URIs. Aqui, adicione os URIs e escolha ADD URI, se necessário. Ao concluir, escolha CREATE.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/create-client-app-step-1.png)

1.  A janela **Create a new app Integration** será exibida e apresentará vários métodos de login. Selecione **OIDC –OpenID Connect**. 

1.  Rola para baixo até a seção Application type. Selecione a opção **Web Application** e escolha **Next**. 

1.  Na tela “New Web App Integration”, preencha as seguintes informações: 
   + App integration name: insira o nome da aplicação. 
   + Grant type: escolha **Authorization Code** e **Refresh Token** na lista.
   + Sign-in redirect URIs: escolha **Add URI** e adicione `https://{regioncode}.console.aws.amazon.com/appflow/oauth`. Por exemplo, se estiver usando `us-west-2 (Oregon)`, você pode adicionar `https://us-east-1.console.aws.amazon.com/appflow/oauth`.
   + Controlled Access: atribua a aplicação aos seus grupos de usuários conforme necessário e escolha **Save**.

1. Seu ID e segredo do cliente são gerados.

# Limitações
<a name="okta-connector-limitations"></a>

Estas são as limitações do conector do Okta:
+  Para a entidade “Aplicações”, somente um filtro pode ser aplicado. Se mais de um filtro for aplicado, será retornado um erro 400 Bad Request com o resumo do erro: “Critérios de pesquisa inválidos”. 
+  O suporte ao recurso de ordenação está disponível apenas para consultas de pesquisa. Por exemplo, ` http://dev-15940405.okta.com/api/v1/groups?search=type e.q. "OKTA_GROUP"&sortBy=lastUpdated&sortOrder=asc ` 

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

O PayPal é um sistema de pagamentos que facilita transferências de dinheiro online entre partes, como transferências entre clientes e fornecedores online. Se você for usuário do PayPal, sua conta contém dados sobre suas transações, como pagadores, datas e status. É possível usar o AWS Glue para transferir dados do PayPal para determinados serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para PayPal
<a name="paypal-support"></a>

O AWS Glue oferece suporte ao PayPal da seguinte forma:

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

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

**Versões da API do PayPal com suporte**  
Versões da API do PayPal com suporte:
+ v1

# Políticas que contêm as operações de API para criar e usar conexões
<a name="paypal-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 PayPal
<a name="paypal-configuring"></a>

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

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

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

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

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

O PayPal oferece suporte ao tipo de concessão CLIENT CREDENTIALS para OAuth2.
+ Esse tipo de concessão é considerado OAuth 2.0 de 2 pernas, pois é usado pelos clientes para obter um token de acesso fora do contexto de um usuário. O AWS Glue é capaz de usar o ID do cliente e o segredo do cliente para autenticar as APIs do PayPal que são fornecidas pelos serviços personalizados que você define.
+ Cada serviço personalizado é de propriedade de um usuário somente de API que tem um conjunto de perfis e permissões que autorizam o serviço a realizar ações específicas. Um token de acesso é associado a um único serviço personalizado.
+ Esse tipo de concessão resulta em um token de acesso de curta duração, que pode ser renovado com uma chamada ao endpoint `/v2/oauth2/token` novamente.
+ Para obter a documentação pública do PayPal para OAuth 2.0 com credenciais de cliente, consulte [Autenticação](https://developer.paypal.com/api/rest/authentication/).

Para configurar uma conexão do PayPal:

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

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

   1. Forneça o `INSTANCE_URL` da instância do PayPal à 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`.

## Obtenção de credenciais do Outh 2.0
<a name="paypal-getting-oauth-20-credentials"></a>

Para chamar a API REST, você precisará trocar seu ID do cliente e segredo do cliente por um token de acesso. Para obter mais informações, consulte [Conceitos básicos das APIs REST do PayPal](https://developer.paypal.com/api/rest/).

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

**Pré-requisito**

Um objeto do PayPal do qual você deseja ler. Você precisará do nome do objeto, `transaction`.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| transaction | Sim | Sim | Não | Sim | Sim | 

**Exemplo:**

```
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"
    }
```

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

Entidades com metadados estáticos:

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

## Consultas de particionamento
<a name="paypal-reading-partitioning-queries"></a>

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo Datetime, aceitamos o valor no formato ISO.

  Exemplos de valores válidos:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Há suporte para o campo a seguir para particionamento por entidade:


| Nome da entidade | Campos de particionamento | Tipo de dados | 
| --- | --- | --- | 
| transaction | transaction\$1initiation\$1date | DateTime | 

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do PayPal:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no PayPal.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do PayPal que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Limitações e notas do conector do PayPal
<a name="paypal-connector-limitations"></a>

Estas são as limitações ou notas do conector do PayPal:
+ A [documentação de transações do PayPal](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get) menciona que são necessárias no máximo três horas para que as transações executadas apareçam na chamada de listagem de transações. No entanto, observou-se que leva mais tempo do que isso, dependendo da [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). Aqui, `last_refreshed_datetime` é o tempo até o qual você tem dados disponíveis nas APIs.
+ Se a `last_refreshed_datetime` for menor que a `end_date` solicitada, então a `end_date` torna-se igual à `last_refreshed_datetime`, pois só temos dados até aquele ponto.
+ O campo `transaction_initiation_date` é um filtro obrigatório a ser fornecido para a entidade `transaction` e o intervalo de datas [máximo suportado](https://developer.paypal.com/docs/transaction-search/#:~:text=The%20maximum%20supported%20date%20range%20is%2031%20days.) para esse campo é de 31 dias.
+ Quando você chama a solicitação de API da entidade `transaction` com filtros (parâmetros de consulta) diferentes do campo `transaction_initiation_date`, espera-se que o valor do 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.) não seja obtido na resposta.

# Conexão ao Pendo
<a name="connecting-to-pendo"></a>

O Pendo fornece um armazenamento de dados avançado para dados de interação do usuário. Os clientes transferirão esses dados para a AWS para que possam combiná-los a outros dados do produto, realizar análises adicionais, criar painéis e definir alertas, se quiserem.

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

# Suporte do AWS Glue para o Pendo
<a name="pendo-support"></a>

O AWS Glue oferece suporte ao Pendo da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Pendo.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Pendo**  
 v1 

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Pendo
<a name="pendo-configuring"></a>

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

## Requisitos mínimos
<a name="pendo-configuring-min-requirements"></a>
+ Você tem uma conta do Pendo com uma `apiKey` habilitada com `write access`.
+  Sua conta do Pendo tem acesso à API com uma licença válida. 

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

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

O Pendo oferece suporte à autenticação personalizada.

Para obter a documentação pública do Pendo sobre como gerar as chaves de API necessárias para a autorização personalizada, consulte [Autenticação – Documentação da API REST do Pendo](https://engageapi.pendo.io/?bash#getting-started). 

Para configurar uma conexão do Pendo:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes: 
   + Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave `apiKey`. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

   1. Ao selecionar uma **Fonte de dados**, selecione o Pendo.

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

   1. Selecione o perfil do 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`. 

1. Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma conexão de rede adicional.

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

 **Pré-requisitos** 

Um objeto do Pendo do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 
+ [Recurso do](https://developers.pendo.io/docs/?bash#feature)
+ [Guia](https://developers.pendo.io/docs/?bash#guide)
+ [Página](https://developers.pendo.io/docs/?bash#page)
+ [Relatório](https://developers.pendo.io/docs/?bash#report)
+ [Dados de relatório](https://developers.pendo.io/docs/?bash#return-report-contents-as-array-of-json-objects)
+ [Visitante](https://developers.pendo.io/docs/?bash#visitor)
+ [Conta da](https://developers.pendo.io/docs/?bash#entities)
+ [Event](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Evento do recurso](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Evento do guia](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [Evento da página](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Evento de enquete](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [Evento de rastreamento](https://developers.pendo.io/docs/?bash#events-grouped)


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Recurso | Não | Não | Não | Sim | Não | 
| Guia | Não | Não | Não | Sim | Não | 
| Página | Não | Não | Não | Sim | Não | 
| Relatório | Não | Não | Não | Sim | Não | 
| Dados de relatório | Não | Não | Não | Sim | Não | 
| Visitante (API de agregação) | Sim | Não | Sim | Sim | Não | 
| Conta (API de agregação) | Sim | Não | Sim | Sim | Não | 
| Evento (API de agregação) | Sim | Não | Sim | Sim | Não | 
| Evento do recurso (API de agregação) | Sim | Não | Sim | Sim | Sim | 
| Evento do guia (API de agregação) | Sim | Não | Sim | Sim | Sim | 
| Conta (API de agregação) | Sim | Não | Sim | Sim | Sim | 
| Evento da página (API de agregação) | Sim | Não | Sim | Sim | Sim | 
| Evento de enquete (API de agregação) | Sim | Não | Sim | Sim | Sim | 
| Evento de rastreamento (API de agregação) | Sim | Não | Sim | Sim | Sim | 

 **Exemplo** 

```
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 particionamento
<a name="adobe-marketo-engage-reading-partitioning-queries"></a>

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo DateTime, aceitamos o valor no formato ISO.

  Exemplo de valor válido:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

A tabela a seguir descreve os detalhes do suporte do campo de particionamento da entidade:


| Nome da entidade | 
| --- | 
| Event | 
|  Evento do recurso  | 
| Evento do guia | 
| Evento da página | 
| Evento de enquete | 
| Evento de rastreamento | 

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do Pendo:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Pendo. 
+ `INSTANCE_URL`(string): (obrigatório) um URL de instância válida do Pendo com os valores permitidos a seguir.
  + [Padrão](https://app.pendo.io/)
  + [Europa](https://app.eu.pendo.io/)
  + [US1](https://us1.app.pendo.io/)
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Pendo Engage que você deseja usar. Por exemplo: 3.0.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Limitações
<a name="pendo-connector-limitations"></a>

Estas são as limitações do conector do Pendo:
+ Não há suporte à paginação no Pendo.
+ Somente os objetos da API de agregação (`Account`, `Event`, `Feature Event`, `Guide Events`, `Page Event`, `Poll Event`, `Track Event` e `Visitor`) oferecem suporte à filtragem
+ DateTimeRange é um parâmetro de filtro obrigatório para objetos da API de agregação (`Event`, `Feature Event`, `Guide Events`, `Page Event`, `Poll Event,`, `Track Event`)
+ O período dayRange será arredondado para baixo até o início do período no fuso horário. Por exemplo, se o filtro fornecido for `2023-01-12T07:55:27.065Z`, esse período será arredondado para o início do período, que é `2023-01-12T00:00:00Z`. 

# Conexão ao Pipedrive
<a name="connecting-to-pipedrive"></a>

 O Pipedrive é um CRM de pipeline de vendas projetado para ajudar pequenas empresas a gerenciar leads, rastrear atividades de vendas e fechar mais negócios. O Pipedrive permite que as equipes de vendas em pequenas empresas simplifiquem processos e consolidem dados de vendas em uma ferramenta unificada de CRM de vendas. Se você usa o Pipedrive, pode conectar o AWS Glue à conta do Pipedrive. Em seguida, será possível usar o Pipedrive como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Pipedrive e serviços da AWS ou outras aplicações compatíveis. 

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

# Suporte do AWS Glue para o Pipedrive
<a name="pipedrive-support"></a>

O AWS Glue oferece suporte ao Pipedrive da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Pipedrive.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Pipedrive**  
 v1. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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 Pipedrive
<a name="pipedrive-configuring"></a>

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

## Requisitos mínimos
<a name="pipedrive-configuring-min-requirements"></a>
+  Você tem uma conta do Pipedrive. 
+  Sua conta do Pipedrive está habilitada para acesso à API. 

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

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

 O Pipedrive oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2. 
+  Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O usuário que está criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue, na qual ele não precisa fornecer quaisquer informações relacionadas ao OAuth, exceto o instanceurl do Pipedrive. O Console do AWS Glue redirecionará o usuário para o Pipedrive, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Pipedrive. 
+  Os usuários devem optar por criar sua própria aplicação conectada no Pipedrive e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Pipedrive para fazer login e autorizar o acesso do AWS Glue aos recursos. 
+  Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso ficará ativo por uma hora e poderá ser atualizado automaticamente sem a interação do usuário por meio do token de atualização. 
+  Para obter mais informações, consulte a [documentação sobre como criar uma aplicação conectada para o fluxo AUTHORIZATION\$1CODE do OAuth](https://developers.pipedrive.com/docs/api/v1/Oauth). 

Para configurar uma conexão do Pipedrive:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET. 

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

   1.  Em Conexões de dados, escolha **Criar conexão**. 

   1. Ao selecionar uma **Fonte de dados**, selecione o Pipedrive.

   1. Forneça o **instanceURL** do Pipedrive.

   1.  Selecione o perfil do 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.  Forneça o ClientId da aplicação cliente gerenciada pelo usuário do Pipedrive ao qual deseja se conectar. 

   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`. Escolha **Próximo**. 

1.  Forneça o **connectionName** e escolha **Próximo**. 

1.  Na página seguinte, escolha **Criar conexão**. Você precisará fazer login no Pipedrive. Forneça seu nome de usuário e senha e selecione **Fazer login**. 

1.  Depois de fazer login, escolha **Continuar para a aplicação**. Agora sua conexão está pronta para ser usada. 

1.  Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**. 

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

 **Pré-requisitos** 
+  Um objeto do Pipedrive do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Atividades | Sim | Sim | Não | Sim | Sim | 
| Tipo de atividade | Não | Não | Não | Sim | Não | 
| Logs de chamadas | Não | Não | Não | Sim | Não | 
| Moedas | Sim | Sim | Não | Sim | Não | 
| Ofertas | Sim | Sim | Sim | Sim | Sim | 
| Leads | Sim | Sim | Sim | Sim | Não | 
| Fontes de leads | Não | Sim | Não | Sim | Não | 
| Rótulos de leads | Não | Não | Não | Não | Não | 
| Observações | Sim | Sim | Sim | Sim | Sim | 
| Organização | Sim | Sim | Não | Sim | Sim | 
| Conjuntos de permissões | Sim | Não | Não | Sim | Não | 
| Pessoas | Sim | Sim | Sim | Sim | Sim | 
| Pipelines | Não | Sim | Não | Sim | Não | 
| Produtos | Sim | Sim | Não | Sim | Sim | 
| Perfis | Não | Sim | Não | Sim | Não | 
| Estágios | Sim | Sim | Não | Sim | Não | 
| Usuários | Não | Não | Não | Sim | Não | 

 **Exemplo** 

```
pipedrive_read= glueContext.create_dynamic_frame.from_options(
    connection_type="PIPEDRIVE",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "activites",
        "API_VERSION": "v1"
    }
```

 **Detalhes das entidades e dos campos do Pipedrive** 

 Lista de entidades: 
+  Atividades: [https://developers.pipedrive.com/docs/api/v1/Activities](https://developers.pipedrive.com/docs/api/v1/Activities) 
+  Tipo de atividade: [https://developers.pipedrive.com/docs/api/v1/ActivityTypes](https://developers.pipedrive.com/docs/api/v1/ActivityTypes) 
+  Logs de chamadas: [https://developers.pipedrive.com/docs/api/v1/CallLogs](https://developers.pipedrive.com/docs/api/v1/CallLogs) 
+  Moedas: [https://developers.pipedrive.com/docs/api/v1/Currencies](https://developers.pipedrive.com/docs/api/v1/Currencies) 
+  Ofertas: [https://developers.pipedrive.com/docs/api/v1/Deals](https://developers.pipedrive.com/docs/api/v1/Deals) 
+  Leads: [https://developers.pipedrive.com/docs/api/v1/Leads](https://developers.pipedrive.com/docs/api/v1/Leads) 
+  Fontes de leads: [https://developers.pipedrive.com/docs/api/v1/LeadSources](https://developers.pipedrive.com/docs/api/v1/LeadSources) 
+  Rótulos de leads: [https://developers.pipedrive.com/docs/api/v1/LeadLabels](https://developers.pipedrive.com/docs/api/v1/LeadLabels) 
+  Observações: [https://developers.pipedrive.com/docs/api/v1/Notes](https://developers.pipedrive.com/docs/api/v1/Notes) 
+  Organizações: [https://developers.pipedrive.com/docs/api/v1/Organizations](https://developers.pipedrive.com/docs/api/v1/Organizations) 
+  Conjuntos de permissões: [https://developers.pipedrive.com/docs/api/v1/PermissionSets](https://developers.pipedrive.com/docs/api/v1/PermissionSets) 
+  Pessoas: [https://developers.pipedrive.com/docs/api/v1/Persons](https://developers.pipedrive.com/docs/api/v1/Persons) 
+  Pipelines: [https://developers.pipedrive.com/docs/api/v1/Pipelines](https://developers.pipedrive.com/docs/api/v1/Pipelines) 
+  Produtos: [https://developers.pipedrive.com/docs/api/v1/Products](https://developers.pipedrive.com/docs/api/v1/Products) 
+  Perfis: [https://developers.pipedrive.com/docs/api/v1/Roles](https://developers.pipedrive.com/docs/api/v1/Roles) 
+  Estágios: [https://developers.pipedrive.com/docs/api/v1/Stages](https://developers.pipedrive.com/docs/api/v1/Stages) 
+  Usuários: [https://developers.pipedrive.com/docs/api/v1/Users](https://developers.pipedrive.com/docs/api/v1/Users) 


| Entidade | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | 
| Atividades, Ofertas, Observações, Organização, Pessoas e Produtos. | Data | '=' | 
|  | Inteiro | '=' | 
|  | String | '=' | 
|  | Booleano | '=' | 

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

 No Pipedrive, apenas um campo (due\$1date) da entidade Atividades oferece suporte ao particionamento baseado em campos, que é um campo de Data. 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 **Exemplo** 

```
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"
    }
```

# Referência de opções de conexão do Pipedrive
<a name="pipedrive-connection-options"></a>

Estas são as opções de conexão do Pipedrive:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Pipedrive. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. A versão da API Rest do Pipedrive que você deseja usar. Exemplo: v1. 
+  `INSTANCE_URL`(string): (obrigatório) o URL da instância em que o usuário deseja executar as operações. Exemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Limitações
<a name="pipedrive-connector-limitations"></a>

Estas são as limitações do conector do Pipedrive:
+ O Pipedrive oferece suporte ao particionamento baseado em campos para apenas uma entidade (Atividades).
+ O Pipedrive oferece suporte ao particionamento baseado em registros para as entidades Atividades, Ofertas, Observações, Pessoas, Organizações e Produtos.
+ Na entidade Ofertas, o campo de status como filtro retornará todos os registros se um valor de filtro inválido for usado.
+ Na entidade Ofertas, não há suporte para a ordenação com vários campos.
+ Para obter dados de performance, utilizamos uma conta local da AWS. No entanto, devido à limitação de atualizar o token de acesso localmente, o trabalho do AWS Glue para processar 1 GB de dados está falhando. Consequentemente, otimizamos o teste de performance com 179 MB de dados, e os resultados acima são baseados nessa otimização. Ainda assim, observamos que, com um número cada vez maior de partições, o endpoint SaaS está levando mais tempo, em comparação ao processamento com uma única partição. Consultamos a equipe de suporte do Pipedrive sobre esse comportamento e eles nos informaram que o Pipedrive está silenciosamente limitando as solicitações e atrasando a resposta. Portanto, executar o trabalho do AWS Glue com grandes conjuntos de dados ou chamar o mesmo endpoint de API várias vezes pode resultar em um problema de tempo limite devido à implementação da API do Pipedrive. Porém, os tempos de resposta do conector e do shim estão diminuindo conforme o esperado com o aumento do número de partições.

# Conexão ao Productboard
<a name="connecting-to-productboard"></a>

O Productboard é o sistema de gerenciamento de produtos que ajuda as equipes a colocar os produtos certos no mercado com mais rapidez. Mais de 3 mil empresas modernas orientadas por produto, como a Zendesk, a UiPath e a Microsoft, usam o Productboard para entender do que os usuários realmente precisam, priorizar o próximo projeto a ser criado e reunir toda a equipe em torno do seu roteiro.

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

# Suporte do AWS Glue para o Productboard
<a name="productboard-support"></a>

O AWS Glue oferece suporte ao Productboard da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Productboard.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Productboard**  
 v1 

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Productboard
<a name="productboard-configuring"></a>

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

## Requisitos mínimos
<a name="productboard-configuring-min-requirements"></a>
+ Você tem uma conta do Productboard com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Productboard](productboard-create-account.md). 
+  Você deve ter uma conta da AWS criada com acesso de serviço ao AWS Glue. 
+ Você tem os detalhes de autenticação de uma conta do Productboard: o token JWT, se quiser usar a autenticação personalizada, ou o ID e segredo do cliente, se quiser usar o OAuth2.0.
+ Se o usuário quiser usar o `OAuth2.0`, [registre sua aplicação no Productboard](https://app.productboard.com/oauth2/applications/new) e configure a aplicação seguindo as instruções em [How to integrate with Productboard via OAuth2 - developer documentation](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation).

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

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

 

O Productboard oferece suporte à autenticação personalizada e `OAuth2.0`. Para `OAuth2.0`, o Productboard oferece suporte ao tipo de concessão `AUTHORIZATION_CODE`.
+ Esse tipo de concessão é considerado um `OAuth` de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O usuário que está criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue, na qual ele não precisa fornecer quaisquer informações relacionadas ao `OAuth`, exceto o ID e segredo do cliente do Productboard. O Console do AWS Glue redirecionará o usuário para o Productboard, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Productboard.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Productboard e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Productboard para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Productboard sobre como criar uma aplicação conectado para o fluxo `AUTHORIZATION_CODE OAuth`, consulte [How to integrate with Productboard via OAuth2 - developer documentation](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation). 

Para configurar uma conexão do Productboard:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes: 
   + Para a autenticação `OAuth`: para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
   + Para `Custom auth`: para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada `JWT token` com a chave `access_token`. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

   1. Ao selecionar uma **Fonte de dados**, selecione o Productboard. 

   1. Selecione o perfil do 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 tipo de autenticação para se conectar à fonte de dados:
      + Para a autenticação `OAuth`: forneça o `Token URL` e o `User Managed Client Application ClientId` da aplicação Productboard.

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

1. Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma conexão de rede adicional.

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

 **Pré-requisitos** 

Um objeto do Productboard do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 
+ [Relatórios de abuso](https://productboard.com/developer/marketing/api/campaign-abuse/)
+ [Automação](https://productboard.com/developer/marketing/api/automation/list-automations/)
+ [Campanhas](https://productboard.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Detalhes de cliques](https://productboard.com/developer/marketing/api/link-clickers/)
+ [Listas](https://productboard.com/developer/marketing/api/link-clickers/)
+ [Membros](https://productboard.com/developer/marketing/api/list-segment-members/)
+ [Detalhes de abertura](https://productboard.com/developer/marketing/api/list-members/)
+ [Segmentos](https://productboard.com/developer/marketing/api/list-segments/)
+ [Lojas](https://productboard.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Cancelamentos de assinaturas](https://productboard.com/developer/marketing/api/unsub-reports/)


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
|  Recursos  | Sim | Sim | Não | Sim | Sim | 
|  Componentes  | Não | Sim | Não | Sim | Não | 
|  Produtos  | Não | Sim | Não | Sim | Não | 
|  Status de recursos  | Não | Sim | Não | Sim | Sim | 
|  Definições de campos personalizados  | Não | Sim | Não | Sim | Não | 
|  Valores de campos personalizados  | Sim | Sim | Não | Sim | Não | 

 **Exemplo** 

```
Productboard_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Productboard",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "feature",
        "API_VERSION": "1"
    }
```

 **Detalhes das entidades e dos campos do Productboard** 
+ [Recursos](https://developer.productboard.com/#tag/features)
+ [Componentes](https://developer.productboard.com/#tag/components)
+ [Status de recursos](https://developer.productboard.com/#tag/statuses)
+ [Produtos da](https://developer.productboard.com/#tag/products)
+ [Definições de campos personalizados](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFields)
+ [Valores de campos personalizados](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFieldsValues)

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

Estas são as opções de conexão do Productboard:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Productboard. 
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Productboard Engage que você deseja usar. Por exemplo: 3.0.
+ `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.

# Criação de uma conta do Productboard
<a name="productboard-create-account"></a>

1. Navegue até a [página de inscrição do Productboard](https://app.productboard.com/), insira seu ID de e-mail e senha e escolha **Log me in**.

1. No campo **Account Name**, insira o nome da sua conta do Productboard e marque a caixa de seleção **I agree to the Privacy Policy check**.

1. Na página **Now create your workspace**, no campo **Workspace URL**, insira o URL do seu novo espaço de trabalho. Em seguida, escolha **Continue** para prosseguir para a próxima página e fornecer os detalhes que faltam.

   Sua conta de teste foi criada. A conta de teste é gratuita por 15 dias. Após o período de avaliação expirar, você poderá adquirir um plano pago. Anote o endereço de e-mail, a senha e o URL do espaço de trabalho. Você precisará dessas informações para acessar sua conta no futuro.

**Registro de uma aplicação `OAuth2.0`**

1. Navegue até a [página de login do Productboard](https://login.productboard.com/?locale=en), insira seu ID de e-mail e senha e escolha **Log in**. 

1. Selecione o ícone **User** no canto superior direito e escolha **Account and billing** no menu suspenso.

1. Selecione **Extras** e escolha **Registered apps** no menu suspenso.

1. Localize e escolha **Register An App**.

1. Insira os detalhes a seguir:
   + **App name**: o nome da aplicação. 
   + **Company/Organization**: o nome da sua empresa ou organização.
   + **App website**: o site da aplicação.
   + **Redirect URI**: um padrão de URI de redirecionamento é um caminho de URI (ou uma lista de caminhos separados por vírgula) para o qual o Productboard pode redirecionar (se solicitado) quando o fluxo de login for concluído. Por exemplo, ., `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Escolha **Criar**. 

1. O **ID do cliente** e o **Segredo do cliente** agora estarão visíveis. Copie e salve-os em um lugar seguro. Escolha **Concluído**. 
**nota**  
Suas strings de ID do cliente e Segredo do cliente são credenciais usadas para estabelecer uma conexão com esse conector ao usar o AppFlow ou o AWS Glue.

**Recuperação das credenciais de CustomAuth**

1. Navegue até a [página de login do Productboard](https://app.productboard.com/), insira seu ID de e-mail e senha e escolha **Log me in**.

   Você será redirecionado para a página inicial.

1. Na página inicial, navegue até **Workspace Settings** > **Integrations** > **Public APIs** > **Access Token**.
**nota**  
Se a seção **Public APIs** não estiver visível, é possível que sua conta tenha o plano Essentials. O acesso aos tokens da API requer pelo menos um plano Pro. Os recursos e os nomes dos planos estão sujeitos a alterações. Para obter mais informações sobre os pacotes, consulte os [preços do Productboard](https://www.productboard.com/pricing/).

1. Escolha **\$1** para gerar um novo token e certifique-se de guardá-lo com segurança para referência futura.

**Criação de credenciais do `OAuth2.0`**

Para utilizar a autenticação `OAuth2.0` com o conector do Productboard, você precisa registrar sua aplicação na plataforma do Productboard e gerar um `Client ID` e um `Client Secret`.

1. Navegue até a [página de login do Productboard](https://app.productboard.com/), insira seu ID de e-mail e senha e escolha **Log me in**.

1. Para registrar uma nova aplicação OAuth2 com sua conta do Productboard, navegue até a página do [Productboard](to register new OAuth2 application with your Productboard account).

1. Preencha os campos obrigatórios e selecione os escopos necessários para cada entidade que você deseja acessar. 
**nota**  
Você escolheu os quatro escopos a seguir, que são necessários para as seis entidades com suporte.

1. O **URL de redirecionamento** deve ter o seguinte formato: `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`
**nota**  
Os URLs de redirecionamento do Appflow estão sujeitos a alterações. Quando estiverem disponíveis, atualize os URLs de redirecionamento para a plataforma do AWS Glue.

1. O **ID do cliente** e o **Segredo do cliente** agora estarão visíveis. Copie e salve-os em um lugar seguro. 

1. Você pode configurar e verificar o `OAuth2` seguindo as etapas na documentação do desenvolvedor [How to Integrate with Productboard via OAuth2](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation).

# Limitações
<a name="productboard-connector-limitations"></a>

Estas são as limitações do conector do Productboard:
+ O Productboard não oferece suporte ao particionamento baseado em campos ou em registros.

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

O QuickBooks é uma aplicação de contabilidade líder para pequenas e médias empresas. As aplicações de contabilidade do QuickBooks datam da década de 1980 como um dos primeiros produtos da Intuit e, consequentemente, eram originalmente um software de desktop. Hoje, o QuickBooks oferece várias aplicações contábeis e financeiras empresariais como software instalável e software SaaS baseado em nuvem. Como usuário do QuickBooks, é possível conectar o AWS Glue à sua conta do QuickBooks. Em seguida, será possível usar o QuickBooks como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o QuickBooks e serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para QuickBooks
<a name="quickbooks-support"></a>

O AWS Glue oferece suporte ao QuickBooks da seguinte forma:

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

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

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

# Políticas que contêm as operações de API para criar e usar conexões
<a name="quickbooks-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 QuickBooks
<a name="quickbooks-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do QuickBooks.
+ Sua conta do QuickBooks precisa estar habilitada para acesso à API.

Para obter mais informações, consulte os seguintes tópicos na documentação do QuickBooks:
+ [Criar uma conta do Intuit](https://quickbooks.intuit.com/learn-support/en-us/help-article/account-management/create-intuit-user-account/L62kSFEOM_US_en_US)
+ [Criar e começar a desenvolver sua aplicação](https://developer.intuit.com/app/developer/qbo/docs/get-started/start-developing-your-app)

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

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

O QuickBooks oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2. O tipo de concessão determina como o AWS Glue se comunica com o QuickBooks para solicitar acesso aos seus dados.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no QuickBooks e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o QuickBooks para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do QuickBooks sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Configuração do OAuth 2.0](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0).

Para configurar uma conexão do QuickBooks:

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

   1. Forneça o URL da instância e o ID da instância do QuickBooks com a qual 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 QuickBooks
<a name="quickbooks-reading-from-entities"></a>

**Pré-requisito**

Um objeto do QuickBooks do qual você deseja ler.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Conta | Sim | Sim | Sim | Sim | Sim | 
| Cobrança | Sim | Sim | Sim | Sim | Sim | 
| Informações da empresa | Não | Não | Não | Sim | Não | 
| Cliente | Sim | Sim | Sim | Sim | Sim | 
| Funcionário | Sim | Sim | Sim | Sim | Sim | 
| Estimativa | Sim | Sim | Sim | Sim | Sim | 
| Fatura | Sim | Sim | Sim | Sim | Sim | 
| Item | Sim | Sim | Sim | Sim | Sim | 
| Pagamento | Sim | Sim | Sim | Sim | Sim | 
| Preferências | Não | Não | Não | Sim | Não | 
| Lucros e perdas | Sim | Não | Não | Sim | Não | 
| Agência tributária | Sim | Sim | Sim | Sim | Sim | 
| Fornecedores | Sim | Sim | Sim | Sim | Sim | 

**Exemplo:**

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v3"
    }
```

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

Para obter mais informações sobre os detalhes das entidades e dos campos, consulte:
+ [Conta](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account)
+ [Cobrança](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)
+ [Funcionário](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/employee)
+ [Estimativa](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/estimate)
+ [Fatura](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice)
+ [Item](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/item)
+ [Pagamento](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/payment)
+ [Preferências](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)
+ [Fornecedor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/vendor)

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

**Particionamento com base em campo**:

No QuickBooks, os campos de tipo de dados Integer e DateTime oferecem suporte a particionamento com base em campos.

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Datetime, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  "2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

**Particionamento com base em registros**:

A consulta original é dividida em `NUM_PARTITIONS` subconsultas que podem ser executadas pelas tarefas do Spark simultaneamente:
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do QuickBooks:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no QuickBooks.
+ `INSTANCE_URL`(string): (obrigatório) um URL de instância válida do QuickBooks.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do QuickBooks que você deseja usar.
+ `REALM_ID`(string): um ID que identifica uma empresa individual do QuickBooks Online para a qual você envia solicitações.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Limitações e notas do conector do QuickBooks
<a name="quickbooks-connector-limitations"></a>

Estas são as limitações ou notas do conector do QuickBooks:
+ Na API `taxAgency`, a ordenação por filtragem não está funcionando conforme o esperado.

# Conexão com uma API REST
<a name="connecting-to-data-rest-api"></a>

 O AWS Glue permite que você configure um AWS Glue ConnectionType que pode ser usado para conectar o AWS Glue a qualquer fonte de dados baseada na API REST. Isso pode ser usado como fonte de dados nos seus trabalhos de ETL. Esses trabalhos podem ser executados para transferir dados entre a fonte de dados baseada na API REST e os serviços da AWS ou outras aplicações compatíveis. 

**Topics**
+ [Suporte do AWS Glue para API REST](rest-api-support.md)
+ [Políticas que contêm as operações de API para registrar os tipos de conexão e criar/usar as conexões](rest-api-configuring-iam-permissions.md)
+ [Configuração do ConnectionType da API REST](rest-api-configuring.md)
+ [Configuração de uma conexão da API REST](rest-api-configuring-connections.md)
+ [Tutorial: criação de um ConnectionType e uma conexão da API REST](rest-api-example.md)
+ [Limitações](rest-api-limitations.md)

# Suporte do AWS Glue para API REST
<a name="rest-api-support"></a>

AWS Glue oferece suporte para API REST da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar os trabalhos de ETL do AWS Glue para consultar dados de uma fonte de dados baseada na API REST.

**Compatível como destino?**  
Não.

# Políticas que contêm as operações de API para registrar os tipos de conexão e criar/usar as conexões
<a name="rest-api-configuring-iam-permissions"></a>

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

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

É possível usar as seguintes políticas do IAM para permitir acesso:
+ [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.

Se você fornecer opções de rede ao criar uma conexão com a API REST, as seguintes ações também deverão ser incluídas no perfil do IAM:

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

# Configuração do ConnectionType da API REST
<a name="rest-api-configuring"></a>

 Antes de poder usar o AWS Glue para transferir dados da fonte de dados baseada na API REST, você precisa atender aos seguintes requisitos: 

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

São requisitos mínimos:
+  Um tipo de conexão da API REST do AWS Glue já foi configurado e registrado. Consulte [Conexão às APIs REST](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html). 
+  Se estiver usando as credenciais de cliente, o código de autorização ou JWT do OAuth2, configure a aplicação cliente adequadamente. 

 Se você atender a esses requisitos, poderá conectar o AWS Glue à sua fonte de dados baseada na API REST. Normalmente, nenhuma configuração adicional é necessária em relação à API REST. 

# Configuração de uma conexão da API REST
<a name="rest-api-configuring-connections"></a>

 Para configurar um conector da API REST do AWS Glue, é preciso configurar um tipo de conexão ao AWS Glue. Esse tipo de conexão contém detalhes sobre as propriedades de como a fonte de dados REST opera e interpreta autenticação, solicitações, respostas, paginação, validações e entidades/metadados. Para obter uma lista abrangente das propriedades necessárias para um tipo de conexão REST do AWS Glue, consulte a API [RegisterConnectionType](https://docs.aws.amazon.com/glue/latest/webapi/API_DescribeConnectionType.html) e as etapas para [conexão às APIs REST](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html). 

 Para a criação do conector da API REST, a política a seguir é necessária para permitir ações relevantes: 

```
{
    "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": "*"
        }
    ]
}
```

# Tutorial: criação de um ConnectionType e uma conexão da API REST
<a name="rest-api-example"></a>

**Conexão à API REST Foo**

 Criaremos um ConnectionType da API REST do AWS Glue e uma conexão correspondente do AWS Glue para a API REST Foo. Essa API tem as seguintes propriedades (que podem ser consultadas na documentação da API REST). 
+  **URL da instância**: https://foo.cloud.com/rest/v1. 
+  **Tipo de autenticação**: OAuth2 (Credenciais do cliente). 
+  **Método REST**: GET. 
+  **Tipo de paginação**: offset com as propriedades “limite” e “offset” colocadas no parâmetro de consulta da solicitação. 
+ **Entidades compatíveis**:
  +  **Bar**: caminho relativo [/bar.json]. 
  +  **Baz**: caminho relativo [/baz.json]. 

 Após obtermos todos os detalhes, podemos começar a criar a conexão do AWS Glue com a API REST Foo. 

**Para criar uma conexão com a API REST**:

1.  Crie um tipo de conexão API REST no AWS Glue chamando a API RegisterConnectionType usando API, CLI ou SDK da AWS. Isso criará um novo recurso ConnectionType no 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.  No AWS Secrets Manager, crie um segredo. O segredo deve conter o segredo do consumidor da aplicação conectada com `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como chave. 
**nota**  
É preciso criar um segredo por conexão no AWS Glue

1.  Crie a conexão do AWS Glue chamando a API CreateConnection usando a API, a CLI ou o SDK da AWS. 

   1.  Faça referência ao nome do tipo de conexão REST da Etapa 1 como “ConnectionType”. 

   1.  Forneça o InstanceUrl e quaisquer outras ConnectionProperties definidas durante o processo de registro do ConnectionType do AWS Glue. 

   1.  Escolha entre os tipos de autenticação configurados. A API REST Foo usa OAuth2 com o tipo de concessão ClientCredentials. 

   1.  Forneça **SecretArn** e outras **AuthenticationProperties** configuradas. Por exemplo, configuramos `OAUTH2` como AuthenticationType, então definiremos o “OAuth2Properties” no CreateConnectionInput. Isso exigirá propriedades como “OAuth2GrantType”, “TokenUrl” e “OAuth2ClientApplication”. 

1.  Faça a solicitação CreateConnection que criará a conexão do 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"
                   }
               }
           }
       }
   }
   ```

# Limitações
<a name="rest-api-limitations"></a>

Estas são as limitações do conector da API REST
+  O conector da API REST só está disponível por meio da API, CLI ou SDK da AWS. Não é possível configurar conectores REST por meio do console. 
+  O REST do AWS Glue ConnectionType só pode ser configurado para LER dados da fonte de dados baseada na API REST. A conexão só pode ser usada como FONTE em trabalhos de ETL do AWS Glue. 
+  Não há suporte para filtragem nem para particionamento. 
+  Não há suporte para a seleção de campos. 

# Conectar ao Salesforce
<a name="connecting-to-data-salesforce"></a>

O Salesforce fornece software de gerenciamento de relacionamento com o cliente (CRM) que ajuda nas atividades de vendas, atendimento ao cliente, comércio eletrônico e muito mais. Se você usa o Salesforce, pode conectar o AWS Glue à sua conta do Salesforce. Em seguida, você pode usar o Salesforce como fonte de dados ou destino em seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre os serviços do Salesforce e do AWS ou de outros aplicativos compatíveis.

**Topics**
+ [Compatibilidade do AWS Glue com o Salesforce](salesforce-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](salesforce-configuring-iam-permissions.md)
+ [Configurar o Salesforce](salesforce-configuring.md)
+ [Aplicar perfil de administrador do sistema](#salesforce-configuring-apply-system-admin-profile)
+ [Configurar conexões do Salesforce](salesforce-configuring-connections.md)
+ [Ler do Salesforce](salesforce-reading-from-entities.md)
+ [Gravação no Salesforce](salesforce-writing-to.md)
+ [Opções de conexão do Salesforce](salesforce-connection-options.md)
+ [Limitações do conector do Salesforce](salesforce-connector-limitations.md)
+ [Configurar o fluxo do código de autorização para Salesforce](salesforce-setup-authorization-code-flow.md)
+ [Configurar o fluxo OAuth do portador JWT para Salesforce](salesforce-setup-jwt-bearer-oauth.md)

# Compatibilidade do AWS Glue com o Salesforce
<a name="salesforce-support"></a>

O AWS Glue é compatível com o Salesforce da seguinte forma:

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

**Compatível como destino?**  
Sim. É possível usar trabalhos de ETL do AWS Glue para gravar registros no Salesforce.

**Versões compatíveis da API do Salesforce**  
As seguintes versões da API do Salesforce são compatíveis
+ v58.0
+ v59.0
+ v60.0

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

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

------
#### [ 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas do IAM para permitir acesso:
+ [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.

Se você fornecer opções de rede ao criar uma conexão com o Salesforce, as seguintes ações também deverão ser incluídas no perfil do IAM:

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

****  

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

------

 Para obter informações sobre conexões de ETL zero do Salesforce, consulte [Pré-requisitos de ETL zero](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html). 

 Para obter informações sobre conexões de ETL zero do Salesforce, consulte [Pré-requisitos de ETL zero](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html). 

# Configurar o Salesforce
<a name="salesforce-configuring"></a>

Antes de usar o AWS Glue para transferir dados para ou do Salesforce, é preciso atender aos seguintes requisitos:

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

Estes são os requisitos mínimos:
+ Ter uma conta do Salesforce.
+ A conta do Salesforce estar habilitada para acesso à API. O acesso à API estar ativado por padrão para as edições Enterprise, Unlimited, Developer e Performance.

Se você atender a esses requisitos, poderá conectar o AWS Glue à sua conta do Salesforce. O AWS Glue trata dos requisitos restantes com a aplicação conectada gerenciada pela AWS.

## A aplicação conectada gerenciada pela AWS para o Salesforce
<a name="salesforce-configuring-connected-app"></a>

A aplicação conectada gerenciada pela AWS ajuda a criar uma conexão com o Salesforce em menos etapas. No Salesforce, uma aplicação conectada é uma estrutura que autoriza aplicações externas, como o AWS Glue, a acessar seus dados do Salesforce usando OAuth 2.0. Para usar a aplicação conectada gerenciada pela AWS, crie uma conexão com o Salesforce usando o console do AWS Glue. Ao configurar a conexão, defina o **tipo de concessão do OAuth** como **Código de autorização** e mantenha a caixa **Usar aplicação cliente gerenciada pela AWS** marcada.

Ao salvar a conexão, você será redirecionado ao Salesforce para iniciar sessão e aprovar o acesso do AWS Glue a sua conta do Salesforce.

## Aplicar perfil de administrador do sistema
<a name="salesforce-configuring-apply-system-admin-profile"></a>

 No Salesforce, siga as etapas para aplicar o perfil de administrador do sistema: 

1.  No Salesforce, navegue até **Configurações > Aplicações conectadas > Uso do OAuth por aplicações conectados**. 

1.  Na lista de aplicações conectadas, localize AWS Glue e escolha **Instalar**. Se necessário, escolha **Desbloquear**. 

1.  Navegue até **Configurações > Gerenciar aplicações conectadas e depois escolha AWS Glue**. Em Políticas do OAuth, escolha **Usuários aprovados pelo administrador são pré-autorizados** e selecione o perfil **Administrador do sistema**. Essa ação restringe o acesso ao AWS Glue somente aos usuários com o perfil de administrador do sistema. 

## Aplicar perfil de administrador do sistema
<a name="salesforce-configuring-apply-system-admin-profile"></a>

 No Salesforce, siga as etapas para aplicar o perfil de administrador do sistema: 

1.  No Salesforce, navegue até **Configurações > Aplicações conectadas > Uso do OAuth por aplicações conectados**. 

1.  Na lista de aplicações conectadas, localize AWS Glue e escolha **Instalar**. Se necessário, escolha **Desbloquear**. 

1.  Navegue até **Configurações > Gerenciar aplicações conectadas e depois escolha AWS Glue**. Em Políticas do OAuth, escolha **Usuários aprovados pelo administrador são pré-autorizados** e selecione o perfil **Administrador do sistema**. Essa ação restringe o acesso ao AWS Glue somente aos usuários com o perfil de administrador do sistema. 

# Configurar conexões do Salesforce
<a name="salesforce-configuring-connections"></a>

Para configurar uma conexão do Salesforce:

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

   1. Para o tipo de concessão JWT\$1TOKEN, o segredo deve conter a chave JWT\$1TOKEN com seu valor.

   1. Para o tipo de concessão AuthorizationCode:

      1. Para uma aplicação conectada gerenciada pela AWS, é necessário fornecer um segredo vazio ou um segredo com algum valor temporário.

      1. Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada `Consumer Secret` com `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como a chave.

   1. Observação: é necessário criar um segredo para 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 Salesforce.

   1. Forneça o INSTANCE\$1URL da instância do Salesforce à qual você deseja se conectar.

   1. Forneça o ambiente do Salesforce.

   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 tipo de concessão do OAuth2 que deseja usar para as conexões. O tipo de concessão determina como o AWS Glue se comunica com o Salesforce para solicitar acesso aos seus dados. A escolha afeta os requisitos que você deve atender antes de criar a conexão. Escolha um destes tipos:
      + **Tipo de concessão JWT\$1BEARER**: funciona bem para cenários de automação, pois permite que um token Web JSON (JWT) seja criado antecipadamente com as permissões de um usuário específico na instância do Salesforce. O criador tem controle sobre por quanto tempo o JWT é válido. O AWS Glue é capaz de usar o JWT para obter um token de acesso, que é usado para chamar as APIs do Salesforce.

        Esse fluxo exige que o usuário tenha criado uma aplicação conectada em sua instância do Salesforce, o que permite a emissão de tokens de acesso baseados em JWT para os usuários.

        Para obter informações sobre como criar uma aplicação conectada para o fluxo OAuth do portador JWT, consulte [Fluxo do portador JWT do OAuth 2.0 para integração de servidor a servidor](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm). Para configurar o fluxo do portador JWT com a aplicação conectada do Salesforce, consulte [Configurar o fluxo OAuth do portador JWT para Salesforce](salesforce-setup-jwt-bearer-oauth.md).
      + Tipo de **concessão AUTHORIZATION\$1CODE**: é considerado um OAuth de "três pernas", pois depende do redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O usuário que está criando uma conexão pode, por padrão, confiar em uma aplicação do AWS Glue conectada (aplicação cliente gerenciada pelo AWS Glue), na qual não precisa fornecer nenhuma informação relacionada ao OAuth, exceto o URL da instância do Salesforce. O console do AWS Glue redirecionará o usuário ao Salesforce para iniciar sessão e autorizar que as permissões solicitadas pelo AWS Glue acessem sua instância do Salesforce.

        Os usuários ainda podem optar por criar a própria aplicação conectada no Salesforce e fornecer ID e segredo do cliente próprios ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados ao Salesforce para iniciar sessão e autorizar o acesso do AWS Glue a seus recursos.

        Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.

        Para obter mais informações sobre como criar uma aplicação conectada para o fluxo de código de autorização OAuth, consulte [Configurar o fluxo do código de autorização para Salesforce](salesforce-setup-authorization-code-flow.md).

   1. Selecione o `secretName` que deseja usar para essa conexão no AWS Glue para armazenar os tokens OAuth 2.0.

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

1. Ao fornecer opções de rede, conceda também ao perfil do IAM as seguintes permissões:

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

****  

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

------

## Configurar conexões do Salesforce com a AWS CLI
<a name="salesforce-configuring-connections-cli"></a>

É possível criar conexões do Salesforce usando a AWS CLI:

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

# Ler do Salesforce
<a name="salesforce-reading-from-entities"></a>

**Pré-requisito**

Um sObject do Salesforce do qual você deseja ler. Você precisará do nome do objeto, como `Account`, `Case` ou `Opportunity`.

**Exemplo:**

```
salesforce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0"
    }
)
```

## Consultas de particionamento
<a name="salesforce-reading-partitioning-queries"></a>

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para os campos Data e Timestamp, o conector aceita o formato de timestamp do Spark usado nas consultas SQL do Spark.

  Exemplos 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`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.
+  `TRANSFER_MODE`: aceita dois modos: `SYNC` e `ASYNC`. O padrão é `SYNC`. Quando definido como `ASYNC`, o Bulk API 2.0 Query será usado para processamento. 

Exemplo:

```
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" 
    }
)
```

## Opção FILTER\$1PREDICATE
<a name="salesforce-filter-predicate"></a>

**FILTER\$1PREDICATE**: é um parâmetro opcional. Essa opção é usada para filtro de consulta.

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

# Gravação no Salesforce
<a name="salesforce-writing-to"></a>

**Pré-requisitos**

Um sObject do Salesforce no qual você deseja escrever. Você precisará do nome do objeto, como `Account`, `Case` ou `Opportunity`.

O conector do Salesforce é compatível com quatro operações de gravação:
+ INSERT
+ UPSERT
+ UPDATE
+ DELETE

Ao usar a operação de gravação `UPSERT`, a opção `ID_FIELD_NAMES` deverá ser fornecida para especificar o campo de ID externo para os registros.

 Você também pode adicionar opções de conexão: 
+  `TRANSFER_MODE`: aceita dois modos: `SYNC` e `ASYNC`. O padrão é `SYNC`. Quando definido como `ASYNC`, o Bulk API 2.0 Ingest será usado para processamento. 
+  `FAIL_ON_FIRST_ERROR`: o valor padrão é `FALSE`, o que significa que o trabalho AWS Glue continuará processando todos os dados, mesmo que haja alguns registros de gravação com falha. Quando definido como `TRUE`, o trabalho AWS Glue falhará se houver algum registro de gravação com falha e não continuará o processamento. 

**Exemplo**

```
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"
    }
)
```

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

As seguintes opções de conexão são aceitas pelo conector do Salesforce:
+ `ENTITY_NAME`(String): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Salesforce.
+ `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Salesforce que deseja usar.
+ `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.

  Ao fornecer um predicado de filtro, apenas o operador `AND` é compatível. Outros operadores, como `OR` e `IN`, ainda não são compatíveis.
+ `QUERY`(string): padrão: vazio. Usado para leitura. Consulta completa do Spark SQL.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `IMPORT_DELETED_RECORDS`(string): (padrão): FALSE. Usado para leitura. Para obter os registros excluídos durante a consulta.
+ `WRITE_OPERATION`(string): padrão: INSERT. Usado para gravação. O valor deve ser INSERT, UPDATE, UPSERT, DELETE.
+ `ID_FIELD_NAMES`(string): padrão: null. Necessário para UPDATE e UPSERT.

# Limitações do conector do Salesforce
<a name="salesforce-connector-limitations"></a>

Estas são as limitações do conector do Salesforce:
+ Só oferecemos suporte ao Spark SQL. Não há suporte para o Salesforce SOQL.
+ Marcadores de trabalho não são compatíveis.
+ Todos os nomes de campos do Salesforce diferenciam maiúsculas de minúsculas. Ao gravar no Salesforce, os dados devem corresponder às maiúsculas e minúsculas dos campos definidos no Salesforce.

# Configurar o fluxo do código de autorização para Salesforce
<a name="salesforce-setup-authorization-code-flow"></a>

Consulte a documentação pública do Salesforce para habilitar o fluxo do código de autorização do OAuth 2.0.

Para configurar uma aplicação conectada:

1. Ative a caixa de seleção **Habilitar configurações de OAuth**.

1. No campo de texto **URL de retorno de chamada**, insira um ou mais URLs de redirecionamento para o AWS Glue.

   Os URLs de redirecionamento têm o seguinte formato:

   https://*region*.console.aws.amazon.com/gluestudio/oauth

   Nesse URL, *region* é o código da região da AWS em que você usa o AWS Glue para transferir dados do Salesforce. Por exemplo, o código para a região Leste dos EUA (Norte da Virgínia) é `us-east-1`. Para essa região, o URL é:

   https://us-east-1.console.aws.amazon.com/gluestudio/oauth

   Para obter uma lista das regiões da AWS com as quais o AWS Glue é compatível, consulte [Endpoints e cotas do AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html) na *Referência geral da AWS*.

1. Ative a caixa de seleção **Exigir segredo para o fluxo do servidor Web**.

1. Na lista **Escopos OAuth disponíveis**, adicione os seguintes escopos:
   + Gerenciar dados do usuário via APIs (api)
   + Acessar permissões personalizadas (custom\$1permissions)
   + Acessar o serviço de URL de identidade (ID, perfil, e-mail, endereço, telefone)
   + Acessar identificadores de usuário exclusivos (openid)
   + Executar solicitações a qualquer momento (refresh\$1token, offline\$1access)

1. Defina a política de token de atualização para a aplicação conectada como **O token de atualização é válido até ser revogado**. Caso contrário, seus trabalhos falharão quando seu token de atualização expirar. Para obter mais informações sobre como verificar e editar a política de token de atualização, consulte [Gerenciar políticas de acesso OAuth para uma aplicação conectada](https://help.salesforce.com/articleView?id=connected_app_manage_oauth.htm) na documentação do Salesforce.

# Configurar o fluxo OAuth do portador JWT para Salesforce
<a name="salesforce-setup-jwt-bearer-oauth"></a>

Consulte a documentação pública do Salesforce para habilitar a integração de servidor a servidor com os Tokens Web JSON do [OAuth](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm) 2.0.

Após criar um JWT e configurar a aplicação conectada adequadamente no Salesforce, você poderá criar uma nova conexão do Salesforce com a chave `JWT_TOKEN` definida em seu segredo do Secrets Manager. Defina o tipo de concessão OAuth como **Token do portador JWT** ao criar a conexão.

# Conexão com o Salesforce Marketing Cloud
<a name="connecting-to-data-salesforce-marketing-cloud"></a>

O Salesforce Marketing Cloud é um fornecedor de software de automação e analytics de marketing para e-mail, dispositivos móveis, redes sociais e marketing on-line. Ele também oferece serviços de consultoria e implementação. Caso seja um usuário do Salesforce Marketing Cloud, você poderá conectar o AWS Glue à sua conta do Salesforce Marketing Cloud. Depois, você poderá usar o Salesforce Marketing Cloud como uma fonte de dados ou um destino em seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre os serviços do Salesforce Marketing Cloud e da AWS ou de outras aplicações compatíveis.

**Topics**
+ [Suporte do AWS Glue ao Salesforce Marketing Cloud](salesforce-marketing-cloud-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](salesforce-marketing-cloud-configuring-iam-permissions.md)
+ [Configuração do Salesforce Marketing Cloud](salesforce-marketing-cloud-configuring.md)
+ [Configuração de conexões do Salesforce Marketing Cloud](salesforce-marketing-cloud-configuring-connections.md)
+ [Leitura de entidades do Salesforce Marketing Cloud](salesforce-marketing-cloud-reading-from-entities.md)
+ [Gravação em entidades do Salesforce Marketing Cloud](salesforce-marketing-cloud-writing-to-entities.md)
+ [Opções de conexão do Salesforce Marketing Cloud](salesforce-marketing-cloud-connection-options.md)
+ [Limitações e observações do conector do Salesforce Marketing Cloud](salesforce-marketing-cloud-connector-limitations.md)

# Suporte do AWS Glue ao Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-support"></a>

O AWS Glue oferece suporte para o Salesforce Marketing Cloud da seguinte maneira:

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

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Salesforce Marketing Cloud**  
As seguintes versões da API do Salesforce Marketing Cloud são compatíveis:
+ v1

# Políticas que contêm as operações de API para criar e usar conexões
<a name="salesforce-marketing-cloud-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 Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Salesforce Marketing Cloud, você precisa atender aos seguintes requisitos:

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

Estes são os requisitos mínimos:
+ Ter uma conta do Salesforce Marketing Cloud. Para obter mais informações, consulte [Criação de uma conta do Salesforce Marketing Cloud](#salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-account).
+ A conta do Salesforce Marketing Cloud estar habilitada para acesso à API. O acesso à API estar ativado por padrão para as edições Enterprise, Unlimited, Developer e Performance.

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

## Criação de uma conta do Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-account"></a>

Para o Salesforce Marketing Cloud, você precisa entrar em contato com o fornecedor para criar uma conta. Se você ou sua empresa tiver uma associação com a Salesforce, entre em contato com o gerente de contas da Salesforce para solicitar uma licença do Salesforce Marketing Cloud. Caso contrário, você pode solicitar o contato de um representante da Salesforce da seguinte maneira: 

1. Acesse https://www.salesforce.com/in/products/marketing-cloud/overview/ e escolha **Cadastrar-se**.

1. Selecione o link **Entre em contato conosco** no canto superior direito da página.

1. Insira as informações necessárias e escolha **Entre em contato comigo**.

Um representante da Salesforce entrará em contato com você para discutir suas necessidades.

## Criação de um projeto e de credenciais do OAuth 2.0
<a name="salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-project-oauth"></a>

Para obter um projeto e credenciais do OAuth 2.0:

1. Faça login na instância do [Salesforce Marketing Cloud](https://mc.login.exacttarget.com/hub-cas/login) com seu nome de usuário e senha e autentique-se usando seu número de celular registrado.

1. Clique no seu perfil no canto superior direito e depois acesse **Configuração**.

1. Em **Ferramentas dr plataforma**, escolha **Aplicações** e, em seguida, escolha **Pacotes instalados**.  
![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/sfmc-platform-tools.png)

1. Na página **Pacotes instalados**, clique em **Novo** no canto superior direito. Forneça o nome e a descrição do pacote.

   Salve o pacote. Depois que o pacote for salvo, você poderá visualizar os detalhes dele.

1. Na página **Detalhes** do pacote, na seção **Componente**, escolha **Adicionar componente**.   
![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/sfmc-add-component.png)

1. Selecione o **Tipo de componente** “Integração de API” e clique em **Avançar**.

1. Selecione o **Tipo de integração** “Servidor a servidor” (que tem o tipo de concessão de credenciais do cliente do OAuth) e clique em **Avançar**.

1. Adicione os escopos com base nos seus requisitos e clique em **Salvar**.

# Configuração de conexões do Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring-connections"></a>

O Salesforce Marketing Cloud oferece suporte ao tipo de concessão CLIENT CREDENTIALS para OAuth2.
+ Esse tipo de concessão é considerado OAuth 2.0 de 2 pernas, pois é usado pelos clientes para obter um token de acesso fora do contexto de um usuário. AWS Glue é capaz de usar o ID do cliente e o segredo do cliente para autenticar as APIs do Salesforce Marketing Cloud que são fornecidas pelos serviços personalizados que você define.
+ Cada serviço personalizado é de propriedade de um usuário somente de API que tem um conjunto de perfis e permissões que autorizam o serviço a realizar ações específicas. Um token de acesso é associado a um único serviço personalizado.
+ Esse tipo de concessão resulta em um token de acesso de curta duração, que pode ser renovado com uma chamada a um endpoint de identidade.
+ Para obter a documentação pública do Salesforce Marketing Cloud para OAuth 2.0 com credenciais de cliente, consulte [Configuração do seu ambiente de desenvolvimento para pacotes aprimorados](https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/mc-dev-setup-enhanced.html).

Para configurar uma conexão do Salesforce Marketing Cloud:

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

   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 Salesforce Marketing Cloud.

   1. Forneça o `Subdomain Endpoint` da Salesforce Marketing Cloud à 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 Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Salesforce Marketing Cloud do qual você deseja ler. Você precisará do nome do objeto, como `Activity` ou `Campaigns`. A tabela a seguir mostra as entidades compatíveis.

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


| Entidade | Interface | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a SELECIONAR \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | --- | 
| Retorno de chamada de notificação de eventos | REST | Não | Não | Não | Sim | Não | 
| Seed-List | REST | Não | Sim | Não | Sim | Não | 
| Configuração | REST | Sim | Sim | Não | Sim | Não | 
| Verificação de domínio | REST | Sim | Sim | Sim | Sim | Não | 
| Etiquetas de objeto aninhadas | REST | Sim | Não | Não | Sim | Não | 
| Contato | REST | Não | Sim | Não | Sim | Não | 
| Assinatura de notificação de eventos | REST | Não | Não | Não | Sim | Não | 
| Sistema de mensagens | REST | Não | Sim | Não | Sim | Não | 
| Atividade | SOAP | Não | Não | Não | Sim | Sim | 
| Evento de devolução | SOAP | Não | Não | Não | Sim | Sim | 
| Evento de clique | SOAP | Não | Não | Não | Sim | Sim | 
| Área de conteúdo | SOAP | Não | Não | Não | Sim | Sim | 
| Extensão de dados | SOAP | Não | Sim | Não | Sim | Sim | 
| E-mail | SOAP | Não | Sim | Não | Sim | Sim | 
| Evento de e-mail encaminhado | SOAP | Não | Sim | Não | Sim | Sim | 
| OptinEvent de e-mail encaminhado | SOAP | Não | Sim | Não | Sim | Sim | 
| Link | SOAP | Não | Sim | Não | Sim | Sim | 
| Envio do link | SOAP | Não | Sim | Não | Sim | Sim | 
| Lista | SOAP | Não | Sim | Não | Sim | Sim | 
| Listar assinante | SOAP | Não | Sim | Não | Sim | Sim | 
| Evento não enviado | SOAP | Não | Sim | Não | Sim | Sim | 
| Evento aberto | SOAP | Não | Sim | Não | Sim | Sim | 
| Enviar | SOAP | Não | Sim | Não | Sim | Sim | 
| Evento enviado | SOAP | Não | Sim | Não | Sim | Sim | 
| Assinante | SOAP | Não | Sim | Não | Sim | Sim | 
| Evento de pesquisa | SOAP | Não | Sim | Não | Sim | Sim | 
| Evento cancelamento de assinatura | SOAP | Não | Sim | Não | Sim | Sim | 
| Eventos de auditoria | REST | Não | Sim | Sim | Sim | Não | 
| Campanhas | REST | Não | Sim | Sim | Sim | Não | 
| Interações | REST | Não | Sim | Sim | Sim | Não | 
| Ativos de conteúdo | REST | Não | Sim | Sim | Sim | Não | 

**Exemplo 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"
    }
)
```

**Exemplo 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"
    }
)
```

**Detalhes das entidades e dos campos do Salesforce Marketing Cloud**:

As tabelas a seguir descrevem as entidades do Salesforce Marketing Cloud. Há entidades REST com metadados estáticos e entidades SOAP com metadados dinâmicos.

**Entidades REST com metadados estáticos**:

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

**Entidades SOAP com metadados dinâmicos**:

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

## Particionamento de consultas
<a name="salesforce-marketing-cloud-reading-partitioning-queries"></a>

No Salesforce Marketing Cloud, os campos de tipo de dados Integer e DateTime oferecem suporte a particionamento com base em campo.

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  Para o campo de carimbo de data e hora, aceitamos o formato de carimbo de data e hora do Spark usado nas consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  “2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
)
```

# Gravação em entidades do Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-writing-to-entities"></a>

**Pré-requisitos**
+ Um objeto do Salesforce Marketing no qual você deseja gravar. Você precisará especificar o nome do objeto, como `List` ou `Campaigns`, ou qualquer outra entidade descrita na tabela abaixo.
+ O conector do Salesforce Marketing Cloud é compatível com três operações de gravação:
  + INSERT
  + UPSERT
  + UPDATE

  Ao usar as operações de gravação `UPDATE` e `UPSERT`, você deverá fornecer opção `ID_FIELD_NAMES` para especificar o campo de ID externo para os registros. 

**Entidades compatíveis para destino**:


| Entidade | Prioridade | Interface (REST, SOAP etc.) | Pode ser inserido | Pode ser atualizado | Pode ser upserted | 
| --- | --- | --- | --- | --- | --- | 
| Campanhas | P0 | REST | S- Único | S- Único | N | 
| Ativos de conteúdo | P0 | REST | S- Único, em massa | S- Único | N | 
| Contato | P1 | REST | S- Único | S- Único | N | 
| Verificação de domínio | P1 | REST | S- Único | S- Único, em massa | N | 
| Retorno de chamada de notificação de eventos | P1 | REST | S- Único | S- Único | N | 
| Assinatura de notificação de eventos | P1 | REST | S- Único | S- Único | N | 
| Sistema de mensagens | P1 | REST | S- Único | N | N | 
| Tags de objetos aninhados | P2 | REST | S- Único | S- Único | N | 
| Seed-List | P1 | REST | S- Único | S- Único | N | 
| Configuração | P1 | REST | S- Único | S- Único | N | 
| Extensão de dados | P0 | SOAP | S- Único | S- Único | S- Único | 
| E-mail | P0 | SOAP | S- Único | S- Único | N | 
| Lista | P0 | SOAP | S- Único | S- Único | N | 
| Enviar | P0 | SOAP | S- Único | N | N | 
| Assinante | P0 | SOAP | S- Único | S- Único | N | 

**Exemplo de operação 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"
    }
)
```

**Exemplo de operação 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"
    }
)
```

**Exemplo de operação 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"
    }
)
```

**Exemplo de operação 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"
    }
)
```

**Exemplo de operação 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"
    }
)
```

# Opções de conexão do Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-connection-options"></a>

Confira abaixo as opções de conexão do Salesforce Marketing Cloud:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do objeto no Salesforce Marketing Cloud.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API SOAP e REST do Salesforce Marketing Cloud que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `WRITE_OPERATION`(string): padrão: INSERT. Usado para gravação. O valor deve ser INSERT, UPDATE e UPSERT.
+ `ID_FIELD_NAMES` (String), Padrão: null. Necessário para UPDATE e UPSERT.

# Limitações e observações do conector do Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-connector-limitations"></a>

Confira abaixo as limitações ou as observações do conector do Salesforce Commerce Cloud:
+ Ao usar o filtro no campo de tipo de dados DateTime, você precisa passar o valor no formato “yyyy-mm-ddThh:MM:ssZ”.
+ Na Pré-visualização de dados, o valor boleano do tipo de dados aparece em branco.
+ Para entidades SOAP, você pode definir no máximo dois filtros, e para entidades REST, você pode definir somente um filtro, o que restringe o teste de particionamento com filtros.
+ Vários comportamentos inesperados foram observados do lado do SaaS: o campo `Link.Alias` na entidade “linksend” não é compatível com o operador CONTAINS (por exemplo, `Link.Alias CONTAINS "ViewPrivacyPolicy"`), e os operadores de filtro para entidades de extensão de dados (como EQUALS e GREATER THAN) não retornam os resultados esperados.
+ A API SOAP de ClickEvent do SFMC tem um atraso em refletir os registros recém-criados, portanto, os registros criados recentemente podem não estar imediatamente disponíveis na resposta da API.

  Exemplo: se você criar cinco novos registros de ClickEvent em **2025-01-10T14:30:00** e buscá-los imediatamente usando a API SOAP, a resposta poderá não incluir todos os cinco registros. Pode levar até cinco minutos para que os registros recém-criados apareçam na resposta da API. Esse atraso também pode afetar a recuperação de dados e as execuções programadas.
+ Dois formatos DateTime diferentes: **2025-03-11T04:46:00** (sem milissegundos) e **2025-03-11T04:46:00.000Z** são compatíveis ao realizar operações de gravação no AWS Glue (com milissegundos).
+ Para a entidade Event Notification Subscription, uma assinatura só pode ser criada para um URL de retorno de chamada verificado, e você pode ter até 200 assinaturas por retorno de chamada.
+ Para a entidade Event Notification Callback, um máximo de cinquenta registros pode ser criado por conta.

# Conexão ao Salesforce Commerce Cloud
<a name="connecting-to-salesforce-commerce-cloud"></a>

 A API B2C Commerce é um conjunto de APIs RESTful para interagir com instâncias do B2C Commerce. Ela é conhecida por alguns nomes diferentes: Salesforce Commerce API, o acrônimo SCAPI ou apenas Commerce API.

 A API permite aos desenvolvedores criar uma ampla variedade de aplicações, como lojas completas ou ferramentas comerciais personalizadas, para aprimorar o Business Manager. Para todos os clientes do B2C Commerce, a API está disponível sem custo adicional. 

 A API é dividida em dois grupos principais: APIs de compradores e APIs de administradores. Dentro de cada grupo, elas também são divididas em famílias de APIs e em grupos menores focados em funcionalidades relacionadas. 

**Topics**
+ [Suporte do AWS Glue para o Salesforce Commerce Cloud](salesforce-commerce-cloud-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](salesforce-commerce-cloud-configuring-iam-permissions.md)
+ [Configuração do Salesforce Commerce Cloud](salesforce-commerce-cloud-configuring.md)
+ [Configuração de conexões do Salesforce Commerce Cloud](salesforce-commerce-cloud-configuring-connections.md)
+ [Leitura de entidades do Salesforce Commerce Cloud](salesforce-commerce-cloud-reading-from-entities.md)
+ [Referência de opções de conexão do Salesforce Commerce Cloud](salesforce-commerce-cloud-connection-options.md)
+ [Limitações](salesforce-commerce-cloud-connector-limitations.md)

# Suporte do AWS Glue para o Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-support"></a>

O AWS Glue oferece suporte ao Salesforce Commerce Cloud da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Salesforce Commerce Cloud.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Salesforce Commerce Cloud**  
 v1. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados 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 Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-configuring"></a>

Antes de usar o AWS Glue para transferir dados do Salesforce Commerce Cloud, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="salesforce-commerce-cloud-configuring-min-requirements"></a>
+  Você tem uma aplicação cliente do Salesforce Commerce Cloud com clientId e clientSecret. 
+  Sua conta do Salesforce Commerce Cloud está habilitada para acesso à API. 

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

# Configuração de conexões do Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-configuring-connections"></a>

 O Salesforce Commerce Cloud oferece suporte ao tipo de concessão CLIENT CREDENTIALS para OAuth2. 
+  Esse tipo de concessão é considerado um OAuth 2.0 de “duas pernas”, pois é usado pelos clientes para obter um token de acesso fora do contexto de um usuário. O AWS Glue é capaz de usar o ID e o segredo do cliente para autenticar as APIs do Salesforce Commerce Cloud fornecidas pelos serviços personalizados que você definir. 
+  Cada serviço personalizado é de propriedade de um usuário somente de API que tem um conjunto de perfis e permissões que autorizam o serviço a realizar ações específicas. Um token de acesso é associado a um único serviço personalizado. 
+  Esse tipo de concessão resulta em um token de acesso de curta duração, que pode ser renovado com uma chamada a um endpoint de identidade. 
+  Para obter mais informações sobre a documentação do Salesforce Commerce Cloud referente à geração das credenciais do cliente, consulte a [documentação do Salesforce](https://developer.salesforce.com/docs/commerce/commerce-api/guide/authorization.html). 

Para configurar uma conexão do Salesforce Commerce Cloud:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET. 

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

   1.  Em Conexões de dados, escolha **Criar conexão**. 

   1. Ao selecionar uma **Fonte de dados**, selecione o Salesforce Commerce Cloud.

   1. Forneça seu **Código curto**, **ID da organização** e **ID do site** do Salesforce Commerce Cloud.

   1. Selecione o URL do domínio do Salesforce Commerce Cloud da sua conta do Salesforce Commerce Cloud.

   1.  Selecione o perfil do 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.  Forneça os escopos OAuth: opcional, o ClientId da aplicação cliente gerenciada pelo usuário do Salesforce Commerce Cloud ao qual deseja se conectar. 

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

1.  Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**. 

# Leitura de entidades do Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Salesforce Commerce Cloud do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Atribuições | Sim | Sim | Sim | Sim | Sim | 
| Campanhas | Sim | Sim | Sim | Sim | Sim | 
| Catálogos | Sim | Sim | Sim | Sim | Sim | 
| Categorias | Sim | Sim | Sim | Sim | Sim | 
| Cupons | Sim | Sim | Sim | Sim | Sim | 
| Certificados de presente | Sim | Sim | Sim | Sim | Sim | 
| Produtos | Sim | Sim | Sim | Sim | Sim | 
| Promoções | Sim | Sim | Sim | Sim | Sim | 
| Grupos de código-fonte | Sim | Sim | Sim | Sim | Sim | 

 **Exemplo** 

```
salesforce_commerce_cloud_read = glueContext.create_dynamic_frame.from_options(
     connection_type="SalesforceCommerceCloud",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "campaign",
         "API_VERSION": "v1"      
     }
)
```

 **Detalhes das entidades e dos campos do Salesforce Commerce Cloud** 

 Lista de entidades: 
+  Atribuições: [https://developer.salesforce.com/docs/commerce/commerce-api/references/assignments]( https://developer.salesforce.com/docs/commerce/commerce-api/references/assignments) 
+  Campanhas: [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) 
+  Categorias: [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 presente: [https://developer.salesforce.com/docs/commerce/commerce-api/references/gift-certificates](https://developer.salesforce.com/docs/commerce/commerce-api/references/gift-certificates) 
+  Produtos: [https://developer.salesforce.com/docs/commerce/commerce-api/references/products](https://developer.salesforce.com/docs/commerce/commerce-api/references/products) 
+  Promoções: [https://developer.salesforce.com/docs/commerce/commerce-api/references/promotions](https://developer.salesforce.com/docs/commerce/commerce-api/references/promotions) 
+  Grupos de código-fonte: [https://developer.salesforce.com/docs/commerce/commerce-api/references/source-code-groups](https://developer.salesforce.com/docs/commerce/commerce-api/references/source-code-groups) 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela abaixo: 


| Entidade | Campo de particionamento | DataType | 
| --- | --- | --- | 
| Campanhas | lastModified | DateTime | 
| Campanhas | startDate | DateTime | 
| Campanhas | endDate | DateTime | 
| Catálogos | creationDate | DateTime | 
| Categorias | creationDate | DateTime | 
| Certificados de presente | merchantId | String | 
| Certificados de presente | creationDate | DateTime | 
| Produtos | creationDate | DateTime | 
| Produtos | lastModified | DateTime | 
| Grupos de código-fonte | creationDate | DateTime | 
| Grupos de código-fonte | startTime | DateTime | 
| Grupos de código-fonte | endTime | DateTime | 

 **Exemplo** 

```
 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"
     }
)
```

# Referência de opções de conexão do Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-connection-options"></a>

Estas são as opções de conexão do Salesforce Commerce Cloud:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Salesforce Commerce Cloud. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. A versão da API Rest do Salesforce Commerce Cloud que você deseja usar. Exemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Limitações
<a name="salesforce-commerce-cloud-connector-limitations"></a>

Estas são as limitações do conector do Salesforce Commerce Cloud:
+ O filtro Contém não está funcionando conforme o esperado durante o particionamento.
+ A entidade das zonas de CDN não oferece suporte a instâncias de sandbox e oferece suporte somente aos tipos de instância de desenvolvimento e produção. Para obter mais informações, 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).
+ No Salesforce Commerce Cloud, não há um endpoint de API para buscar metadados dinâmicos. Como resultado, não há uma provisão para oferecer suporte aos campos personalizados nas entidades Produto e Categoria.
+ O ID do site é um parâmetro de consulta obrigatório. Você deve passar o valor do ID do site por meio da configuração de conector personalizado. Para obter mais informações, consulte [Base URL and Request Formation](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html).
+ Você pode aplicar filtros em, no máximo, dois campos (exceto em níveis, se presentes) em uma única solicitação de API com a combinação de diferentes operadores, conforme mencionado na tabela abaixo:    
<a name="salesforce-commerce-cloud-limitations-filters"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/salesforce-commerce-cloud-connector-limitations.html)
+ Em algumas entidades, o tipo de dados dos campos durante a recuperação é diferente de quando é usado como campos pesquisáveis. Como resultado, não há uma provisão para o recurso de filtro nesses campos. A tabela a seguir fornece detalhes sobre esses campos.     
<a name="salesforce-commerce-cloud-limitations-filters-provision"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/salesforce-commerce-cloud-connector-limitations.html)

# Conexão com o Salesforce Marketing Cloud Account Engagement
<a name="connecting-to-data-salesforce-marketing-cloud-account-engagement"></a>

O Salesforce Marketing Cloud Account Engagement é uma solução de automação de marketing que ajuda as empresas a criar conexões significativas, gerar mais pipeline e potencializar as vendas para fechar mais negócios. Se você é usuário do Salesforce Marketing Cloud Account Engagement, pode conectar o AWS Glue à sua conta do Salesforce Marketing Cloud Account Engagement. Você pode usar o Salesforce Marketing Cloud Account Engagement como fonte de dados em trabalhos de ETL. Execute esses trabalhos para transferir dados do Salesforce Marketing Cloud Account Engagement para serviços da AWS ou outras aplicações compatíveis.

**Topics**
+ [Suporte do AWS Glue para o Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](salesforce-marketing-cloud-account-engagement-configuring-iam-permissions.md)
+ [Configuração do Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-configuring.md)
+ [Configuração das conexões com o Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-configuring-connections.md)
+ [Leitura de entidades do Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-reading-from-entities.md)
+ [Opções de conexão do Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-connection-options.md)
+ [Limitações e notas do conector do Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-connector-limitations.md)

# Suporte do AWS Glue para o Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-support"></a>

O AWS Glue oferece suporte para o Salesforce Marketing Cloud Account Engagement da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Salesforce Marketing Cloud Account Engagement no modo ASYNC ou SYNC.

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

**Versões compatíveis da API do Salesforce Marketing Cloud Account Engagement**  
As seguintes versões da API do Salesforce Marketing Cloud Account Engagement API são compatíveis:
+ v5

# Políticas que contêm as operações de API para criar e usar conexões
<a name="salesforce-marketing-cloud-account-engagement-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 Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Salesforce Marketing Cloud Account Engagement, você precisa atender aos seguintes requisitos:

## Requisitos mínimos
<a name="salesforce-marketing-cloud-account-engagement-configuring-min-requirements"></a>

Estes são os requisitos mínimos:
+ Ter uma conta de marketing do Salesforce.
+ Ter um plano do Account Engagement licenciado para a conta do Salesforce. 
+ Ter sincronizado o usuário do Salesforce com o usuário do Account Engagement.
+ Ter criado uma aplicação conectada no Gerenciador de aplicações para obter as credenciais do OAuth.

Se você atender a esses requisitos, poderá conectar o AWS Glue à conta do Salesforce Marketing Cloud Account Engagement.

# Configuração das conexões com o Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-configuring-connections"></a>

O tipo de concessão determina como o AWS Glue se comunica com o Salesforce Marketing Cloud Account Engagement para solicitar acesso aos seus dados. A escolha afeta os requisitos que você deve atender antes de criar a conexão. O Salesforce Marketing Cloud Account Engagement só é compatível com o tipo de concessão AUTHORIZATION\$1CODE para OAuth 2.0.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Salesforce Marketing Cloud Account Engagement e fornecer os próprios ID e segredo de cliente quando criarem conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Salesforce Marketing Cloud Account Engagement para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Salesforce Marketing Cloud Account Engagement sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Authentication](https://developer.salesforce.com/docs/marketing/pardot/guide/version5overview.html#authentication).

Para configurar uma conexão do Salesforce Marketing Cloud Account Engagement:

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 Salesforce Marketing Cloud Account Engagement.

   1. Forneça o `INSTANCE_URL` da instância do Salesforce Marketing Cloud Account Engagement à qual você deseja se conectar.

   1. Forneça o `PARDOT_BUSINESS_UNIT_ID` da instância do Salesforce Marketing Cloud Account Engagement à qual você deseja se conectar.

   1. Selecione o **URL do código de autorização** apropriado no menu suspenso.

   1. Selecione o **URL do token** apropriado no menu suspenso.

   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. Forneça o ID do cliente da aplicação cliente gerenciada pelo usuário (o ID do cliente da aplicação conectada).

   1. Selecione o `secretName` que você deseja usar para essa conexão no AWS Glue para colocar os tokens. O segredo selecionado precisa ter uma chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` com o valor sendo o segredo do cliente da aplicação conectada.

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

1. Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**.

# Leitura de entidades do Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Salesforce Marketing Cloud Account Engagement do qual você deseja ler. Você precisará do nome do objeto.

**Entidades compatíveis com a fonte de Sync**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Sim | Sim | Sim | Sim | Sim | 
| Dynamic Content | Sim | Sim | Sim | Sim | Sim | 
| E-mail | Sim | Sim | Sim | Sim | Sim | 
| Modelo de e-mail | Sim | Sim | Sim | Sim | Sim | 
| Engagement Studio Program | Sim | Sim | Sim | Sim | Sim | 
| Conteúdo da pasta | Sim | Sim | Sim | Sim | Sim | 
| Página de destino | Sim | Sim | Sim | Sim | Sim | 
| Histórico do ciclo de vida | Sim | Sim | Sim | Sim | Sim | 
| Estágio do ciclo de vida | Sim | Sim | Sim | Sim | Sim | 
| Lista | Sim | Sim | Sim | Sim | Sim | 
| Listar e-mail | Sim | Sim | Sim | Sim | Sim | 
| Listar associação | Sim | Sim | Sim | Sim | Sim | 
| Oportunidade | Sim | Sim | Sim | Sim | Sim | 
| Cliente potencial | Sim | Sim | Sim | Sim | Sim | 
| Conta de cliente potencial | Sim | Sim | Sim | Sim | Sim | 
| Usuário | Sim | Sim | Sim | Sim | Sim | 

**Exemplo:**

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SalesforcePardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5"
    }
   )
```

**Entidades compatíveis com a fonte de ASYNC**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Sim | Não | Não | Sim | Não | 
| Dynamic Content | Sim | Não | Não | Sim | Não | 
| Modelo de e-mail | Sim | Não | Não | Sim | Não | 
| Página de destino | Sim | Não | Não | Sim | Não | 
| Histórico do ciclo de vida | Sim | Não | Não | Sim | Não | 
| Estágio do ciclo de vida | Sim | Não | Não | Sim | Não | 
| Lista | Sim | Não | Não | Sim | Não | 
| Listar e-mail | Sim | Não | Não | Sim | Não | 
| Listar associação | Sim | Não | Não | Sim | Não | 
| Oportunidade | Sim | Não | Não | Sim | Não | 
| Cliente potencial | Sim | Não | Não | Sim | Não | 
| Conta de cliente potencial | Sim | Não | Não | Sim | Não | 
| Usuário | Sim | Não | Não | Sim | Não | 

**Exemplo:**

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SalesforcePardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5",
        "TRANSFER_MODE": "ASYNC"
    }
   )
```

**Detalhes dos campos e das entidades do Salesforce Marketing Cloud Account Engagement**:

Para visualizar os detalhes dos campos das entidades a seguir, navegue até [API do Salesforce Marketing Cloud Account Engagement](https://developer.salesforce.com/docs/marketing/pardot), escolha **Guias**, role para baixo até **Wrappers de APIs de código aberto**, expanda **Documentos da versão 5** no menu e escolha uma entidade.

Lista de entidades:
+ Campaign
+ Dynamic Content
+ E-mail
+ Modelo de e-mail
+ Engagement Studio Program
+ Conteúdo da pasta
+ Página de destino
+ Histórico do ciclo de vida
+ Estágio do ciclo de vida
+ Lista
+ Listar e-mail
+ Listar associação
+ Oportunidade
+ Cliente potencial
+ Conta de cliente potencial
+ Usuário

Além dos campos mencionados acima, o modo ASYNC é compatível com campos filtráveis específicos para cada entidade, conforme mostrado na tabela abaixo.


| Entidade | Campos filtráveis adicionais compatíveis no modo ASYNC | 
| --- | --- | 
| Campaign | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Dynamic Content | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Modelo de e-mail | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Engagement Studio Program | - | 
| Página de destino | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Histórico do ciclo de vida | createdAfter, createdBefore | 
| Estágio do ciclo de vida | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Lista | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Listar e-mail | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Listar associação | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Oportunidade | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Cliente potencial | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Conta de cliente potencial | createdAfter, createdBefore, deleted | 
| Usuário | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 

Para obter mais informações sobre os campos adicionais, consulte [Salesforce Export API](https://developer.salesforce.com/docs/marketing/pardot/guide/export-v5.html#procedures)

Observe as seguintes considerações sobre o conector:
+ O valor do campo `delete` nas entidades pode ser `false` (padrão), `true` ou `all`.

## Particionamento de consultas
<a name="salesforce-marketing-cloud-account-engagement-reading-partitioning-queries"></a>

**Particionamento baseado em filtro**:

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Data e hora, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  "2022-01-01T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.
+ `PARTITION_BY`: o tipo de particionamento a ser executado. “FIELD” deve ser passado no caso de particionamento com base em campo.

Exemplo:

```
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"
    }
   )
```

# Opções de conexão do Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-connection-options"></a>

Estas são as opções de conexão do Salesforce Marketing Cloud Account Engagement:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do objeto no Salesforce Marketing Cloud Account Engagement.
+ `PARDOT_BUSINESS_UNIT_ID`: (Obrigatório) Usado para criar uma conexão. Forneça o ID da unidade de negócios da instância do Salesforce Marketing Cloud Account Engagement à qual você deseja se conectar.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Salesforce Marketing Cloud Account Engagement que você deseja usar.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto.
+ `FILTER_PREDICATE` (String):
  + No modo SYNC, Padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL.
  + No modo ASYNC, Padrão: valor `DateTime` atual (de acordo com o fuso horário do usuário) - 1 ano. Usado para leitura.
+ `QUERY`(string): padrão: vazio. Usado para leitura. Consulta completa do Spark SQL.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL` (String): (obrigatório) usado para leitura. Um URL válido da instância do Salesforce Marketing Cloud Account Engagement.
+ `PARTITION_BY` (String): (obrigatório) usado para leitura. O tipo de particionamento a ser executado. “FIELD” deve ser passado no caso de particionamento com base em campo.
+ `TRANSFER_MODE` (String): (opcional) valor a ser usado para executar um trabalho no modo ASYNC. Se esta opção não for fornecida, o trabalho será executado no modo SYNC.

# Limitações e notas do conector do Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-connector-limitations"></a>

As seguintes notas e limitações são aplicáveis:
+ Quando um limite e um particionamento são aplicados, o limite tem precedência sobre o particionamento.
+ De acordo com a documentação da API, `SalesforceMarketingCloudEngagement` aplica um RateLimit nas solicitações diárias e simultâneas. Para obter mais informações, consulte [Limites de taxa](https://developer.salesforce.com/docs/marketing/pardot/guide/overview.html?q=limitation#rate-limits).
+ A API Export está sujeita ao limite diário de chamadas de API do Account Engagement e ao limite simultâneo de chamadas de API do Account Engagement para sua conta.
+ Semelhante a uma fila, as chamadas de API Export/Async são executadas sequencialmente para cada conta. As exportações mais antigas são processadas antes das exportações mais recentes.
+ A partição não é compatível no modo ASYNC.
+ O número de campos selecionados especificados nas chamadas de API Export/Async não pode exceder 150.
+ A entidade **Prospect** suporta mais de 150 campos, mas apenas 150 campos podem ser selecionados por vez. Se `Select All` for escolhido, alguns campos serão excluídos. Para recuperar dados desses campos excluídos, você precisa incluí-los na opção `Selected Fields`.

  Confira abaixo a lista de campos excluídos em `SELECT_ALL`: `updatedBy.firstName`, `updatedBy.lastName`, `updatedBy.jobTitle`, `updatedBy.roleName`, `updatedBy.salesforceId`, `updatedBy.createdAt`, `updatedBy.updatedAt`, `updatedBy.isDeleted`, `updatedBy.createdById`, `updatedBy.updatedById`, `updatedBy.tagReplacementLanguage`
+ Os campos de coleta não podem ser exportados para ASYNC. Por exemplo, em lista de e-mails, os campos `senderOptions` e `replyToOptions` não são compatíveis.
+ Para todas as entidades, o filtro é obrigatório. Se nenhum filtro for fornecido, o predicado padrão do filtro será definido para o campo `Created After` com um valor da data e hora atual (ajustado ao seu fuso horário), menos um ano.
+ De acordo com as limitações do Salesforce Marketing Cloud Account Engagement, no Async, o intervalo máximo para buscar dados é de um ano. Se uma consulta for fornecida por mais de um ano, o trabalho vai gerar um erro. 
+ Atualmente, há um bug no Salesforce Pardot. Quando o trabalho inclui apenas um único campo que não tem dados, o valor do campo não está retornando o resultado correto e, em vez disso, o nome do campo está sendo retornado várias vezes. A equipe do Salesforce Pardot está ciente do problema e está trabalhando ativamente em uma solução.

# Conectar ao SAP HANA no AWS Glue Studio
<a name="connecting-to-data-saphana"></a>

 O AWS Glue oferece suporte integrado ao SAP HANA. O AWS Glue Studio fornece uma interface visual para conectar ao SAP HANA, criar trabalhos de integração de dados e executá-los no runtime Spark do AWS Glue Studio sem servidor. 

 O AWS Glue Studio cria uma conexão unificada para o SAP HANA. Para obter mais informações, consulte [Considerações](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Criar uma conexão SAP HANA](creating-saphana-connection.md)
+ [Criar um nó de origem do SAP HANA](creating-saphana-source-node.md)
+ [Criar um nó de destino do SAP HANA](creating-saphana-target-node.md)
+ [Opções avançadas](#creating-saphana-connection-advanced-options)

# Criar uma conexão SAP HANA
<a name="creating-saphana-connection"></a>

Para se conectar ao SAP HANA via AWS Glue, será necessário criar e armazenar suas credenciais do SAP HANA em um segredo do AWS Secrets Manager e, em seguida, associar esse segredo a uma conexão ao AWS Glue do SAP HANA. Você precisará configurar a conectividade de rede entre seu serviço SAP HANA e o AWS Glue.

**Pré-requisitos**:
+ Se o seu serviço SAP HANA estiver em uma Amazon VPC, configure a Amazon VPC para permitir que seu trabalho do AWS Glue se comunique com o serviço SAP HANA sem que o tráfego passe pela Internet pública.

  Na Amazon VPC, identifique ou crie uma **VPC**, uma **Sub-rede** e um **Grupo de segurança** que o AWS Glue usará durante a execução do trabalho. Além disso, você precisa garantir que a Amazon VPC esteja configurada para permitir o tráfego de rede entre seu endpoint SAP HANA e esse local. Seu trabalho precisará estabelecer uma conexão TCP com a porta JDBC do SAP HANA. Para obter mais informações sobre as portas do SAP HANA, consulte a [Documentação do SAP HANA](https://help.sap.com/docs/HANA_SMART_DATA_INTEGRATION/7952ef28a6914997abc01745fef1b607/88e2e8bded9e4041ad3ad87dc46c7b55.html?locale=en-US). Com base no layout da rede, isso pode exigir alterações em regras do grupo de segurança, ACLs de rede, gateways de NAT e conexões de emparelhamento.

**Para configurar uma conexão com o SAP HANA:**

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do SAP HANA. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `username/USERNAME` com o valor *saphanaUsername*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `password/PASSWORD` com o valor *saphanaPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para uso futuro em AWS Glue. 
   + Ao selecionar um **Tipo de conexão**, selecione SAP HANA.
   + Ao fornecer o **URL do SAP HANA**, forneça o URL da sua instância.

     Os URLs JDBC do SAP HANA estão no formato `jdbc:sap://saphanaHostname:saphanaPort/?databaseName=saphanaDBname,ParameterName=ParameterValue`

     O AWS Glue requer os seguintes parâmetros de URL do JDBC: 
     + `databaseName`: um banco de dados padrão no SAP HANA ao qual se conectar.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

Depois de criar uma conexão AWS Glue SAP HANA, siga estas etapas antes de executar seu trabalho do AWS Glue:
+ Conceda ao perfil do IAM associada ao seu trabalho do AWS Glue permissão para ler *secretName*.

# Criar um nó de origem do SAP HANA
<a name="creating-saphana-source-node"></a>

## Pré-requisitos necessários
<a name="creating-saphana-source-node-prerequisites"></a>
+ Uma conexão AWS Glue SAP HANA configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão SAP HANA](creating-saphana-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do SAP HANA da qual você gostaria de ler, *tableName*, ou consultar *targetQuery*.

  Uma tabela pode ser especificada com um nome de tabela e um nome de esquema do SAP HANA, no formulário `schemaName.tableName`. O nome do esquema e o separador "." não serão necessários se a tabela estiver no esquema padrão, "público". Chame isso de *tableIdentifier*. Observe que o banco de dados é fornecido como um parâmetro de URL do JDBC em `connectionName`.

## Adicionar uma fonte de dados do SAP HANA
<a name="creating-saphana-source-node-add"></a>

**Para adicionar um nó de **Fonte de dados – SAP HANA**:**

1.  Escolha a conexão para sua fonte de dados do SAP HANA. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o SAP HANA**. Para mais informações, consulte a seção [Criar uma conexão SAP HANA](creating-saphana-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1.  Escolha uma opção de **Fonte do SAP HANA**: 
   +  **Escolher uma única tabela**: acesse todos os dados de uma única tabela. 
   +  **Inserir consulta personalizada**: acesse um conjunto de dados de várias tabelas com base em sua consulta personalizada. 

1.  Se você escolheu uma única tabela, insira *tableName*. 

    Se você escolheu **Inserir consulta personalizada**, insira uma consulta SQL SELECT. 

1.  Em **Propriedades personalizadas do SAP HANA**, insira parâmetros e valores conforme necessário. 

# Criar um nó de destino do SAP HANA
<a name="creating-saphana-target-node"></a>

## Pré-requisitos necessários
<a name="creating-saphana-target-node-prerequisites"></a>
+ Uma conexão AWS Glue SAP HANA configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão SAP HANA](creating-saphana-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do SAP HANA na qual você gostaria de escrever, *tableName*.

  Uma tabela pode ser especificada com um nome de tabela e um nome de esquema do SAP HANA, no formulário `schemaName.tableName`. O nome do esquema e o separador "." não serão necessários se a tabela estiver no esquema padrão, "público". Chame isso de *tableIdentifier*. Observe que o banco de dados é fornecido como um parâmetro de URL do JDBC em `connectionName`.

## Adicionar um destino de dados do SAP HANA
<a name="creating-saphana-target-node-add"></a>

**Para adicionar um nó de **Destino de dados – SAP HANA**:**

1.  Escolha a conexão para sua fonte de dados do SAP HANA. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o SAP HANA**. Para mais informações, consulte a seção [Criar uma conexão SAP HANA](creating-saphana-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Configure o **nome da tabela** fornecendo o *tableName*.

1.  Em **Propriedades personalizadas do Teradata**, insira parâmetros e valores conforme necessário. 

## Opções avançadas
<a name="creating-saphana-connection-advanced-options"></a>

É possível fornecer opções avançadas ao criar um nó do SAP HANA. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte [Conexões do SAP HANA](aws-glue-programming-etl-connect-saphana-home.md). 

# Conexão com o SAP OData
<a name="connecting-to-data-sap-odata"></a>

O SAP OData é um protocolo padrão da Web usado para consultar e atualizar dados presentes no SAP usando ABAP (Advanced Business Application Programming), aplicando e desenvolvendo tecnologias da Web, como HTTP, para fornecer acesso a informações de uma variedade de aplicações, plataformas e dispositivos externos. Com o produto, você pode acessar tudo de que precisa para ajudar na integração perfeita com o sistema, a aplicação ou dados SAP.

**Topics**
+ [Suporte do AWS Glue para SAP OData](sap-odata-support.md)
+ [Criar conexões](sap-odata-creating-connections.md)
+ [Criar um trabalho OData no SAP](sap-odata-creating-job.md)
+ [Escrever no SAP OData](sap-odata-writing.md)
+ [Uso do script de gerenciamento de estado do SAP OData](sap-odata-state-management-script.md)
+ [Particionamento para entidades não de ODP](sap-odata-non-odp-entities-partitioning.md)
+ [Opções de conexão do SAP OData](sap-odata-connection-options.md)
+ [Detalhes de entidades e campos OData do SAP](sap-odata-entity-field-details.md)

# Suporte do AWS Glue para SAP OData
<a name="sap-odata-support"></a>

O AWS Glue oferece suporte ao SAP OData da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do SAP OData.

**Compatível como destino?**  
Sim. É possível usar trabalhos de ETL do AWS Glue para gravar registros no SAP OData.

**Versões compatíveis da API do SAP OData**  
As seguintes versões da API do SAP OData são compatíveis:
+ 2.0

**Fontes compatíveis**  
As seguintes fontes são compatíveis:
+ Fontes de ODP (Operational Data Provisioning):
  + Extratores BW (DataSources)
  + Visualizações do CDS
  + SLT
+ Fontes não de ODP, por exemplo:
  + Serviços de visualização do CDS
  + Serviços baseados em RFC
  + Serviços personalizados ABAP

**Componentes compatíveis do SAP**  
São requisitos mínimos:
+ Você deve habilitar o serviço de catálogo para descoberta de serviços.
  + Configure fontes de dados de provisionamento de dados operacionais (ODP) para extração no SAP Gateway do seu sistema SAP.
  + **OData V2.0**: habilite os serviços de catálogo OData V2.0 no Gateway do SAP por meio da transação `/IWFND/MAINT_SERVICE`.
  + Habilite os serviços OData V2.0 no seu SAP Gateway por meio da transação `/IWFND/MAINT_SERVICE`.
  + O serviço SAP OData deve oferecer suporte às opções de paginação/consulta do lado do cliente, como `$top` e `$skip`. Ele também deve oferecer suporte à opção `$count` de consulta do sistema.
  + Você deve fornecer a autorização necessária para que o usuário no SAP descubra os serviços e extraia dados usando os serviços OData do SAP. Consulte a documentação de segurança fornecida pela SAP.
+ Se quiser usar o OAuth 2.0 como mecanismo de autorização, você deverá habilitar o OAuth 2.0 para o serviço OData e registrar o cliente OAuth de acordo com a documentação do SAP.
+ Para gerar um serviço OData com base em fontes de dados de ODP, o SAP Gateway Foundation deve ser instalado localmente em sua pilha de ERP/BW ou em uma configuração de hub.
  + Para as aplicações de ERP/BW, a pilha do NetWeaver AS ABAP do SAP deve ser da versão 7.50 SP02 ou superior.
  + Para o sistema de hub (SAP Gateway), o NetWeaver AS ABAP do SAP do sistema de hub deve ser da versão 7.50 SP01 ou superior para configuração de hub remoto.
+ Para fontes não de ODP, a versão da pilha do NetWeaver do SAP deve ser da versão 7.40 SP02 ou acima.

**Métodos de autenticação compatíveis**  
Os seguintes métodos de autenticação são compatíveis:
+ Autenticação básica
+ OAuth 2.0

# Pré-requisitos
<a name="sap-odata-prerequisites"></a>

Antes de iniciar um trabalho do AWS Glue de extração de dados OData do SAP usando a conexão OData do SAP, atenda aos seguintes pré-requisitos:
+ O serviço OData relevante do SAP deve ser ativado no sistema SAP, garantindo que a fonte de dados esteja disponível para consumo. Se o serviço OData não estiver ativado, o trabalho do Glue não poderá acessar nem extrair dados do SAP.
+ Os mecanismos de autenticação apropriados, como autenticação básica (personalizada) ou o OAuth 2.0, devem ser configurados no SAP para garantir que o trabalho do AWS Glue possa estabelecer com sucesso uma conexão com o serviço OData do SAP.
+ Configure as políticas do IAM para conceder ao trabalho do AWS as permissões apropriadas para acessar o SAP, o Secrets Manager e outros recursos da AWS Glue envolvidos no processo.
+ Se o sistema SAP estiver hospedado em uma rede privada, a conectividade da VPC deverá ser configurada para garantir que o trabalho do AWS Glue possa se comunicar com o SAP de modo seguro, sem expor dados confidenciais pela internet pública.

O AWS Secrets Manager pode ser usado para armazenar de modo seguro informações confidenciais, como credenciais do SAP, que o trabalho do AWS Gluepode recuperar dinamicamente durante o runtime. Essa abordagem elimina a necessidade de codificar credenciais, aumentando a segurança e a flexibilidade.

Os pré-requisitos a seguir fornecem orientação passo a passo sobre como configurar cada componente para uma integração perfeita entre o AWS Glue e o OData do SAP.

**Topics**
+ [Ativação do OData do SAP](sap-odata-activation.md)
+ [Políticas do IAM](sap-odata-configuring-iam-permissions.md)
+ [Conectividade/conexão de VPC](sap-odata-connectivity-vpc-connection.md)
+ [Autenticação do SAP](sap-odata-authentication.md)
+ [AWS Secrets Manager para armazenar o segredo de autenticação](sap-odata-aws-secret-manager-auth-secret.md)

# Ativação do OData do SAP
<a name="sap-odata-activation"></a>

Conclua as seguintes etapas para essa conexão OData do SAP:

## Fontes de ODP
<a name="sap-odata-odp-sources"></a>

Para transferir dados de um provedor ODP, é necessário atender aos seguintes requisitos:
+ Você tem uma instância do NetWeaver AS ABAP do SAP.
+ Sua instância do NetWeaver do SAP contém um provedor ODP do qual você deseja transferir dados. Os provedores ODP incluem:
  + DataSources do SAP (código de transação RSO2)
  + Visualizações dos CDS ABAP do ABAP Core Data Services
  + Sistemas BW ou BW/4HANA do SAP (InfoObject, DataStore Object)
  + Replicação em tempo real de tabelas e visualizações de BD do SAP Source System via SAP Landscape Replication Server (SAP SLT)
  + Visualizações de informações de HANA do SAP em fontes baseadas em ABAP do SAP
+ Sua instância do NetWeaver do SAP tem o componente SAP Gateway Foundation.
+ Você criou um serviço OData que extrai dados do seu provedor ODP. Para criar o serviço OData, você usa o desenvolvedor de serviço de gateway do SAP. Para acessar os dados do ODP, o Amazon AppFlow chama esse serviço usando a API OData. Para obter mais informações, consulte [Generating a Service for Extracting ODP Data via OData](https://help.sap.com/docs/SAP_BPC_VERSION_BW4HANA/dd104a87ab9249968e6279e61378ff66/69b481859ef34bab9cc7d449e6fff7b6.html?version=11.0) na documentação de BW/4HANA do SAP.
+ Para gerar um serviço OData com base em fontes de dados de ODP, o SAP Gateway Foundation deve ser instalado localmente em sua pilha de ERP/BW ou em uma configuração de hub.
  + Para as aplicações de ERP/BW, a pilha do NetWeaver AS ABAP do SAP deve ser da versão 7.50 SP02 ou superior.
  + Para o sistema de hub (SAP Gateway), o NetWeaver AS ABAP do SAP do sistema de hub deve ser da versão 7.50 SP01 ou superior para configuração de hub remoto.

## Fontes não de ODP
<a name="sap-odata-non-odp-sources"></a>
+ A versão da pilha do SAP NetWeaver deve ser 7.40 SP02 ou superior.
+ Você deve habilitar o serviço de catálogo para descoberta de serviços.
  + **OData V2.0**: Os serviços de catálogo OData V2.0 podem ser habilitados no Gateway do SAP por meio da transação `/IWFND/MAINT_SERVICE`
+ O serviço SAP OData deve oferecer suporte às opções de paginação/consulta do lado do cliente, como `$top` e `$skip`. Ele também deve oferecer suporte à opção `$count` de consulta do sistema.
+ Para o OAuth 2.0, vVocê deve habilitar o OAuth 2.0 para o serviço OData e registrar o cliente de OAuth de acordo com a documentação do SAP, e definir a URL de redirecionamento autorizada da seguinte maneira:
  + `https://<region>.console.aws.amazon.com/gluestudio/oauth`, substituindo `<region>` pela região em que o AWS Glue está sendo executado, por exemplo: us-east-1. 
  + Você deve habilitar a configuração segura para conexão por HTTPS.
+ Você deve fornecer a autorização necessária para que o usuário no SAP descubra os serviços e extraia dados usando os serviços OData do SAP. Consulte a documentação de segurança fornecida pela SAP.

# Políticas do IAM
<a name="sap-odata-configuring-iam-permissions"></a>

## Políticas que contêm as operações de API para criar e usar conexões
<a name="sap-odata-policies-api-operations"></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": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue"
      ],
      "Resource": "*"
    }
  ]
}
```

------

O perfil deve conceder acesso a todos os recursos usados pelo trabalho, por exemplo, o Amazon S3. Se você não quiser usar o método acima, como alternativa use as seguintes políticas gerenciadas do IAM.
+ [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.
+ [SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite): fornece acesso de leitura/gravação ao AWS Secrets Manager pelo Console de Gerenciamento da AWS. Observação: isso exclui ações do IAM. Portanto, combine com o `IAMFullAccess` se for necessária configuração de rotação.

**Políticas/permissões do IAM necessárias para configurar a VPC**

As seguintes permissões do IAM são necessárias ao usar a conexão de VPC para criar a conexão do AWS Glue. Para obter mais detalhes, consulte [Criar uma política do IAM para o 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": [
        "*"
      ]
    }
  ]
}
```

------

# Conectividade/conexão de VPC
<a name="sap-odata-connectivity-vpc-connection"></a>

Etapas para a conexão de VPC:

1. Use a conexão de VPC existente ou crie uma nova conexão seguindo a [documentação da Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html).

1. Certifique-se de ter um gateway NAT que direcione o tráfego para a Internet.

1. Escolha o endpoint da VPC como o gateway do Amazon S3 para criar uma conexão.

1. Habilite a resolução do DNS e o nome do host do DNS para usar os serviços de DNS fornecidos pela AWS.

1. Acesse a VPC criada e adicione os endpoints necessários para os diferentes serviços, como STS, AWS Glue, Secret Managers.

   1. Escolha Criar endpoint.

   1. Em Categoria do serviço, selecione Serviços da AWS.

   1. Em Nome do serviço, escolha o serviço ao qual você está se conectando.

   1. Escolha a VPC e Habilitar nome do DNS.

   1. Endpoints da VPC necessários para a conexão da 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)

## Configuração do security group
<a name="sap-odata-security-group-configuration"></a>

O grupo de segurança deve permitir tráfego da VPC do AWS Glue para a porta de escuta para que o AWS Glue possa se conectar a ela. É uma prática recomendada restringir o intervalo de endereços IP de origem o máximo possível. 

O AWS Glue exige um grupo de segurança especial que permite todo o tráfego de entrada originado nele mesmo. Você pode criar uma regra autorreferenciada que permita todo o tráfego originado no grupo de segurança. Você pode modificar um grupo de segurança existente e especificá-lo como origem.

Abra a comunicação das portas HTTPS do endpoint da URL (instância NLB ou SAP).

## Opções de conectividade
<a name="sap-odata-connectivity-options"></a>
+ Conexão HTTPS com NLB interno e externo, certificado SSL da autoridade de certificação (CA), certificado SSL não autoassinado
+ Conexão HTTPS com instância do SAP, certificado SSL de autoridade certificadora (CA), certificado SSL não auto-assinado

# Autenticação do SAP
<a name="sap-odata-authentication"></a>

O conector do SAP é compatível com os métodos de autenticação CUSTOM (essa é a autenticação BASIC do SAP) e OAUTH.

## Autenticação personalizada
<a name="sap-odata-custom-authentication"></a>

O AWS Glue é compatível com Custom (autenticação básica) como um método para estabelecer conexões com os sistemas SAP, permitindo o uso de um nome de usuário e senha para acesso seguro. Esse tipo de autorização: funciona bem em cenários de automação, pois permite o uso do nome de usuário e senha antecipadamente com as permissões de um usuário específico na instância OData do SAP. O AWS Glue pode usar o nome de usuário e senha para autenticar as APIs OData do SAP. No AWS Glue, a autorização básica é implementada como autorização personalizada.

Para obter a documentação pública do SAP OData para o fluxo de autenticação básica, consulte [HTTP Basic Authentication](https://help.sap.com/docs/SAP_SUCCESSFACTORS_PLATFORM/d599f15995d348a1b45ba5603e2aba9b/5c8bca0af1654b05a83193b2922dcee2.html).

## Autenticação OAuth 2.0
<a name="sap-odata-oauth-2.0-authentication"></a>

O AWS Glue também é compatível com o OAuth 2.0 como um mecanismo de autenticação seguro para estabelecer conexões com seus sistemas SAP. Isso permite uma integração perfeita, garantindo a conformidade com os padrões modernos de autenticação e aprimorando a segurança do acesso aos dados.

## Tipo de concessão AUTHORIZATION\$1CODE
<a name="sap-odata-authentication-code-grant-type"></a>

O tipo de concessão determina como o AWS Glue se comunica com o SAP OData para solicitar acesso aos seus dados. O SAP OData só oferece suporte ao tipo de concessão `AUTHORIZATION_CODE`. Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. 

Os usuários ainda podem optar por criar a própria aplicação conectada no SAP OData e fornecer ID e segredo do cliente próprios ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o SAP OData para fazer login e autorizar o acesso do AWS Glue aos recursos.

Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.

Para obter documentação pública do SAP OData sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Autenticação usando o OAuth 2.0](https://help.sap.com/docs/ABAP_PLATFORM_NEW/e815bb97839a4d83be6c4fca48ee5777/2e5104fd87ff452b9acb247bd02b9f9e.html).

# AWS Secrets Manager para armazenar o segredo de autenticação
<a name="sap-odata-aws-secret-manager-auth-secret"></a>

Você precisará armazenar os segredos da conexão OData do SAP no AWSSecrets Manager, configurar as permissões necessárias para recuperação conforme especificado na seção [Políticas do IAM](sap-odata-configuring-iam-permissions.md) e usá-las ao criar uma conexão.

Use o AWS Management Console do AWS Secrets Manager para criar um segredo para a sua fonte no SAP. Para obter mais informações, consulte [Create an AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). Os detalhes do AWS Secrets Manager devem incluir os elementos de código a seguir. 

## Serviço de autenticação personalizada
<a name="sap-odata-custom-auth-secret"></a>

Você precisará inserir o nome de usuário do sistema SAP no lugar de *<your SAP username>* e sua senha no lugar de *<your SAP username password>* e True ou False. Nesse contexto, configurar `basicAuthDisableSSO` como `true` desabilita a autenticação única (SSO) para solicitações de Autenticação Básica, exigindo credenciais de usuário explícitas para cada solicitação. Por outro lado, configurar esse valor como `false` permite o uso de sessões de SSO existentes, se disponíveis.

```
{
   "basicAuthUsername": "<your SAP username>",
   "basicAuthPassword": "<your SAP username password>",
   "basicAuthDisableSSO": "<True/False>",
   "customAuthenticationType": "CustomBasicAuth"
}
```

## Segredo do OAuth 2.0
<a name="sap-odata-oauth-2.0-secret"></a>

Caso você esteja usando o OAuth 2.0 como mecanismo de autenticação, o segredo no AWS Secrets Manager deve ter o **ClientId da aplicação cliente gerenciado pelo usuário** no formato a seguir. Você precisará inserir o segredo do cliente SAP no lugar de <your client secret>.

```
{"USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "<your client secret>"
}
```

# Criar conexões
<a name="sap-odata-creating-connections"></a>

Para configurar uma conexão OData no SAP:

1. Faça login no Console de gerenciamento da AWS e abra o [console do AWS Glue](https://console.aws.amazon.com/glue). No AWS Glue Studio, crie uma conexão seguindo as etapas abaixo:

   1. Clique em Conexões de dados no painel esquerdo.

   1. Clique em Criar conexão.

   1. Selecione **OData do SAP** em **Escolher fonte de dados**

   1. Forneça o URL do **host da aplicação da instância** do SAP OData à qual você deseja se conectar. Essa URL do host da aplicação deve pode ser acessada pela Internet pública para conexões que não sejam de VPC.

   1. Forneça o **Caminho do serviço da aplicação** da instância do SAP OData à qual você deseja se conectar. Esse é o mesmo caminho do serviço de catálogo. Por exemplo: `/sap/opu/odata/iwfnd/catalogservice;v=2`. O AWS Glue não aceita um caminho de objeto específico.

   1. Forneça o **Número do cliente** da instância do SAP OData à qual você deseja se conectar. Os valores aceitáveis são [001 a 999]. Exemplo: 010

   1. Forneça o **Número da porta** da instância do SAP OData à qual você deseja se conectar. Exemplo: 443

   1. Forneça o **Idioma de logon** da instância do SAP OData à qual você deseja se conectar. Exemplo: PT\$1BR

   1. Selecione o perfil do AWS IAM que o AWS Glue pode assumir e tem permissões, conforme descrito na seção [Políticas do IAM](sap-odata-configuring-iam-permissions.md).

   1. Selecione o **Tipo de autenticação** que você deseja usar para essa conexão no AWS Glue, na lista suspensa OAUTH2 ou CUSTOM

      1. CUSTOM: selecione o segredo que você criou conforme especificado na seção [AWS Secrets Manager para armazenar o segredo de autenticação](sap-odata-aws-secret-manager-auth-secret.md).

      1. OAUTH 2.0: insira as seguintes entradas apenas no caso do OAuth 2.0:

         1. Em **ClientId da aplicação cliente gerenciado pelo usuário**, insira o ID do cliente.

         1. `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` (o segredo do cliente) no AWS Secrets Manager que você criou na seção [AWS Secrets Manager para armazenar o segredo de autenticação](sap-odata-aws-secret-manager-auth-secret.md).

         1. Em **URL do código de autorização**, insira a URL do código de autorização.

         1. Em **URL dos tokens de autorização**, insira a URL dos tokens de autorização.

         1. Em **Escopos do OAuth**, insira os escopos do OAuth separados por espaços. Exemplo: `/IWFND/SG_MED_CATALOG_0002 ZAPI_SALES_ORDER_SRV_0001`

   1. Selecione as opções de rede se quiser usar sua rede. Consulte mais detalhes em [Conectividade/conexão de VPC](sap-odata-connectivity-vpc-connection.md).

1. Conceda permissão ao perfil do IAM associado ao seu trabalho do AWS Glue para ler `secretName`. Para obter mais detalhes, consulte [Políticas do IAM](sap-odata-configuring-iam-permissions.md).

1. Escolha **Testar conexão** e teste sua conexão. Se o teste de conexão for bem-sucedido, clique em Avançar, insira o nome da conexão e salve-a. A funcionalidade de teste de conexão não está disponível se você tiver escolhido Opções de rede (VPC). 

# Criar um trabalho OData no SAP
<a name="sap-odata-creating-job"></a>

Consulte [Criar trabalhos de ETL visuais com o AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html)

# Fontes de Provisionamento de Dados Operacionais (ODP)
<a name="sap-odata-operational-data-provisioning-sources"></a>

O Provisionamento de Dados Operacionais (ODP) oferece uma infraestrutura técnica que você pode usar para dar suporte à extração e à replicação de dados para várias aplicações de destino e que é compatível com mecanismos delta nesses cenários. No caso de um procedimento delta, os dados de uma fonte (Provedor ODP) são automaticamente gravados em uma fila delta (Fila Delta Operacional, ODQ) usando um processo de atualização ou passados para a fila delta usando uma interface de extração. Um provedor ODP pode ser um DataSource (extratores), visualizações do ABAP Core Data Services (Visualizações do ABAP CDS), SAP BW ou SAP BW/4HANA, SAP Landscape Transformation Replication Server (SLT) e SAP HANA Information Views (visualizações de cálculo). As aplicações de destino (chamados de "assinantes" de ODQ ou, mais geralmente, "Consumidores de ODP") recuperam os dados da fila delta e continuam processando esses dados.

## Carga total
<a name="sap-odata-full-load"></a>

No contexto das entidades OData e ODP do SAP, uma **carga total** se refere ao processo de extrair todos os dados disponíveis de uma entidade ODP em uma única operação. Essa operação recupera todo o conjunto de dados do sistema de origem, garantindo que o sistema de destino tenha uma cópia abrangente e atualizada dos dados da entidade. As cargas totais geralmente são usadas para fontes que não são compatíveis com cargas incrementais ou quando é necessária uma atualização do sistema de destino.

**Exemplo**

Você pode definir explicitamente o sinalizador `ENABLE_CDC` como false ao criar o DynamicFrame. Observação: `ENABLE_CDC` é false por padrão. Se você não quiser inicializar a fila delta, não precisará enviar esse sinalizador nem defini-lo como true. Não definir esse sinalizador como true resultará na extração da carga total.

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

Uma **carga incremental** no contexto das entidades ODP (Operational Data Provisioning) envolve a extração somente dos dados novos ou alterados (deltas) do sistema de origem desde a última extração de dados, evitando o pré-processamento dos registros já processados. Essa abordagem melhora significativamente a eficiência, reduz os volumes de transferência de dados, melhora a performanda, garante a sincronização entre os sistemas e minimiza o tempo de processamento, especialmente para grandes conjuntos de dados que mudam com frequência.

# Transferências incrementais baseadas no token delta
<a name="sap-odata-incremental-transfers"></a>

Para habilitar a transferência incremental usando Change Data Capture (CDC) para entidades habilitadas para ODP compatíveis, siga estas etapas:

1. Crie a tarefa de transferência incremental no modo de script.

1. Ao criar o DataFrame ou o DynamicFrame do Glue, você precisa passar a opção `"ENABLE_CDC": "True"`. Essa opção garante que você receberá um token delta da SAP, que poderá ser usado para subsequente recuperação dos dados alterados.

O token delta poderá ser encontrado na última linha do dataframe, na coluna DELTA\$1TOKEN. Você poderá usar esse token como uma opção de conector em chamadas subsequentes para recuperar o próximo conjunto de dados incrementalmente.

**Exemplo**
+ Definimos o sinalizador `ENABLE_CDC` como `true`, ao criar o DynamicFrame. Observação: `ENABLE_CDC` será `false` por padrão, se você não quiser inicializar a fila delta, não precisará enviar esse sinalizador nem defini-lo como true. Não definir esse sinalizador como true resultará na extração da carga total.

  ```
  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
  ```
+ O token delta extraído pode ser passado como uma opção para recuperar novos 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)
  ```

Observe que o último registro, no qual o `DELTA_TOKEN` está presente, não é um registro transacional da fonte e existe apenas com a finalidade de passar o valor do token delta.

Além do `DELTA_TOKEN`, os campos a seguir são retornados em cada linha do dataframe. 
+ **GLUE\$1FETCH\$1SQ**: esse é um campo sequencial, gerado a partir do timestamp EPOC na ordem de recebimento dos registros e é exclusivo para cada registro. Isso pode ser usado se você precisar conhecer ou estabelecer a ordem das alterações no sistema de origem. Esse campo estará presente apenas para entidades habilitadas para ODP.
+ **DML\$1STATUS**: isso exibirá `UPDATED` para todos os registros recém-inseridos e atualizados a partir da fonte e `DELETED` para os registros que foram excluídos da fonte.

Para obter mais detalhes sobre como gerenciar estado e reutilizar o token delta para recuperar registros alterados por meio de um exemplo, consulte a seção [Uso do script de gerenciamento de estado do SAP OData](sap-odata-state-management-script.md).

## Invalidação do token delta
<a name="sap-odata-invalidation"></a>

Um token delta é associado ao conjunto de serviços e a um usuário. Se uma extração inicial com `“ENABLE_CDC” : “true”` for iniciada para o mesmo conjunto de serviços e usuário, todos os tokens delta anteriores emitidos como resultado de uma inicialização anterior serão invalidados pelo serviço OData do SAP. Invocar o conector com um token delta expirado gerará uma exceção: 

`Could not open data access via extraction API RODPS_REPL_ODP_OPEN` 

# Serviços OData (fontes não ODP)
<a name="sap-odata-non-odp-services"></a>

## Carga total
<a name="sap-odata-non-odp-full-load"></a>

Para sistemas não ODP (Operational Data Provisioning), uma **carga total** envolve extrair todo o conjunto de dados do sistema de origem e carregá-lo no sistema de destino. Como os sistemas não ODP não são inerantemente compatíveis com mecanismos avançados de extração de dados como deltas, o processo é simples, mas pode consumir muitos recursos, dependendo do tamanho dos dados.

## Carga incremental
<a name="sap-odata-non-odp-incremental-load"></a>

Para sistemas ou entidades que não são compatíveis com **ODP (Operational Data Provisioning)**, a transferência incremental de dados pode ser gerenciada manualmente por meio da implementação de um mecanismo baseado em timestamp para rastrear e extrair as alterações.

**Transferências incrementais baseadas em timestamp**

Para entidades não habilitadas para ODP (ou para entidades habilitadas para ODP que não usam o sinalizador ENABLE\$1CDC), você pode usar uma opção `filteringExpression` no conector para indicar o intervalo de `datetime` para o qual queremos recuperar dados. Esse método depende de um campo de timestamp nos dados, que mostra quando cada registro foi criado/modificado a última vez.

**Exemplo**

Recuperação de registros que foram alterados após 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)
```

Nesse exemplo, `LastChangeDateTime` é o campo que representa quando cada registro foi modificado a última vez. O nome real do campo pode variar, dependendo da entidade específica do SAP OData.

Para obter um novo subconjunto de dados em execuções subsequentes, você pode atualizar o `filteringExpression` com um novo carimbo de data e hora. Normalmente, esse seria o valor máximo do carimbo de data e hora dos dados recuperados anteriormente.

**Exemplo**

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

Na próxima seção, forneceremos uma abordagem automatizada para gerenciar essas transferências incrementais com base em carimbo de data e hora, eliminando a necessidade de atualizar manualmente a expressão de filtragem entre as execuções.

# Escrever no SAP OData
<a name="sap-odata-writing"></a>

 Esta seção descreve como gravar dados em seu serviço SAP OData usando o conector AWS Glue para SAP OData. 

**Pré-requisitos**
+ Acessar um serviço SAP OData
+ Um objeto EntitySet do SAP OData em que você gostaria de escrever. Você precisará do nome do objeto.
+ Credenciais válidas do SAP OData e uma conexão válida
+ Permissões apropriadas, conforme descrito nas [políticas do IAM](https://docs.aws.amazon.com/glue/latest/dg/sap-odata-configuring-iam-permissions.html)

O conector do SAP OData oferece suporte duas operações de escrita:
+ INSERT
+ UPDATE

Ao usar a operação de escrita UPDATE, ID\$1FIELD\$1NAMES deve ser fornecido para especificar o campo de ID externo para os registros.

**Exemplo:**

```
sapodata_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="sapodata",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "WRITE_OPERATION": "INSERT"
    }
```

# Uso do script de gerenciamento de estado do SAP OData
<a name="sap-odata-state-management-script"></a>

Para usar o script de gerenciamento de estado OData do SAP no trabalho do AWS Glue, siga estas etapas:
+ Faça o download do script de gerenciamento de estado `s3://aws-blogs-artifacts-public/artifacts/BDB-4789/sap_odata_state_management.zip ` no bucket público do Amazon S3.
+ Carregue o script em um bucket do Amazon S3 que seu trabalho do AWS Glue tenha permissões para acessar.
+ Referencie o script no ttrabalho do AWS Glue: quando criar ou atualizar o trabalho do AWS Glue, passe a opção `'--extra-py-files'` referenciando o caminho do script no bucket do Amazon S3. Por exemplo: `--extra-py-files s3://your-bucket/path/to/sap_odata_state_management.py`
+ Importe e use a biblioteca de gerenciamento de estado nos scripts do trabalho do AWS Glue.

## Exemplo de transferência incremental baseada no token delta
<a name="sap-odata-delta-token-incremental-transfer"></a>

Veja um exemplo de como usar o script de gerenciamento de estado para transferências incrementais com base em tokens 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())
```

## Exemplo de transferência incremental baseada no timestamp
<a name="sap-odata-timestamp-incremental-transfer"></a>

Veja um exemplo de como usar o script de gerenciamento de estado para transferências incrementais com base em tokens 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())
```

Nos dois exemplos, o script de gerenciamento de estado lida com as complexidades de armazenar o estado (token delta ou carimbo de data e hora) entre as execuções do trabalho. Ele recupera automaticamente o último estado conhecido ao obter as opções do conector e atualiza o estado após o processamento, garantindo que cada execução de trabalho só processe dados novos ou alterados.

# Particionamento para entidades não de ODP
<a name="sap-odata-non-odp-entities-partitioning"></a>

No Apache Spark, particionamento se refere ao modo como os dados são divididos e distribuídos entre os nós de trabalho de um cluster para processamento paralelo. Cada partição é um bloco lógico de dados que pode ser processado de modo independente por uma tarefa. Particionamento é um conceito fundamental no Spark que afeta diretamente a performance, a escalabilidade e a utilização de recursos. Os trabalhos do AWS Glue usam o mecanismo de particionamento do Spark para dividir o conjunto de dados em partes menores (partições) que podem ser processadas paralelamente nos nós de trabalho do cluster. Observe que o particionamento não é aplicável a entidades de ODP.

Para obter mais detalhes, consulte [AWS Glue Spark and PySpark jobs](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html).

**Pré-requisitos**

Um objeto OData do SAP que você deseja ler. Você precisará do nome do objeto/EntitySet. Por exemplo: ` /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder `.

**Exemplo**

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

## Particionamento de consultas
<a name="sap-odata-partitioning-queries"></a>

### Particionamento baseado no campo
<a name="sap-odata-field-based-partitioning"></a>

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. Os campos Integer, Date e DateTime oferecem suporte ao particionamento com base em campo no conector do SAP OData.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido.

   Em qualquer campo com dados do tipo DataTime, o formato de timestamp do Spark usado nas consultas em SQL do Spark é aceito.

  Exemplos de valores válidos: `"2000-01-01T00:00:00.000Z"` 
+ `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`: número de partições.
+ `PARTITION_BY`: o tipo de particionamento a ser realizado, `FIELD` a ser passado no caso de particionamento baseado em campo.

**Exemplo**

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

### Particionamento baseado em registro
<a name="sap-odata-record-based-partitioning"></a>

A consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.

O particionamento com base em registros só é compatível para entidades não ODP, pois a paginação em entidades ODP é compatível por meio do próximo token/ignorar token.
+ `PARTITION_BY`: o tipo de particionamento a ser executado. `COUNT` deve ser passado no caso de particionamento baseado em registro.

**Exemplo**

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

# Limitações/legendas
<a name="sap-odata-limitations"></a>
+ As entidades de ODP não são compatíveis com particionamento baseado em registro, pois a paginação é feita usando o token skip/token delta. Assim sendo, para o particionamento baseados em registros, o valor padrão de maxConcurrency é definido como “null”, independentemente da entrada do usuário.
+ Quando tanto limite quanto partição são aplicados, o limite tem precedência sobre a partição.

# Opções de conexão do SAP OData
<a name="sap-odata-connection-options"></a>

Estas são as opções de conexão do SAP OData:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no SAP OData.

  Por exemplo: /sap/opu/odata/sap/API\$1SALES\$1ORDER\$1SRV/A\$1SalesOrder
+ `API_VERSION` (String): (Opcional) usado para leitura. Versão da API Rest do SAP OData que você deseja usar. Exemplo: 2.0.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto.

  Por exemplo: SalesOrder
+ `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL.

  Por exemplo: `SalesOrder = "10"`
+ `QUERY`(string): padrão: vazio. Usado para leitura. Consulta completa do Spark SQL.

  Por exemplo: `SELECT * FROM /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder`
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.

  Por exemplo: `ValidStartDate`
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.

  Por exemplo: `"2000-01-01T00:00:00.000Z"`
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.

  Por exemplo: `"2024-01-01T00:00:00.000Z"`
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL` (String): o URL do host da aplicação da instância do SAP.

  Por exemplo: `https://example-externaldata.sierra.aws.dev`
+ `SERVICE_PATH` (String): o caminho do serviço da aplicação da instância do SAP.

  Por exemplo: `/sap/opu/odata/iwfnd/catalogservice;v=2`
+ `CLIENT_NUMBER` (String): o número do cliente da aplicação da instância do SAP.

  Por exemplo: 100
+ `PORT_NUMBER` (String): padrão: o número da porta da aplicação da instância do SAP.

  Por exemplo: 443
+ `LOGON_LANGUAGE` (String): o idioma de logon da aplicação da instância do SAP.

  Por exemplo: `EN`
+ `ENABLE_CDC` (String): define se deve ser executado um trabalho com a captura de dados de alteração (CDC) habilitada, ou seja, com alterações de faixa.

  Por exemplo: `True/False`
+ `DELTA_TOKEN` (String): executa uma extração de dados incremental com base no token Delta válido fornecido. 

  Por exemplo: `D20241107043437_000463000`
+ `PAGE_SIZE` (inteiro): define o tamanho da página para consultar os registros. O tamanho de página padrão é 50.000. Quando um tamanho de página é especificado, o SAP retorna apenas o número definido de registros por chamada de API, em vez de todo o conjunto de dados. O conector fornecerá também o número total de registros e processará a paginação usando o tamanho de página especificado. Se você precisar de um tamanho de página maior, poderá escolher qualquer valor até 500.000, que é o máximo permitido. Qualquer tamanho de página especificado que exceda 500.000 será ignorado. Em vez disso, o sistema usará o tamanho máximo de página permitido. Você pode especificar o tamanho da página na interface de usuário do AWS Glue Studioadicionando uma opção de conexão `PAGE_SIZE` com o valor desejado. 

  Por exemplo: `20000`

# Detalhes de entidades e campos OData do SAP
<a name="sap-odata-entity-field-details"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/sap-odata-entity-field-details.html)

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

# Conectar ao ServiceNow
<a name="connecting-to-data-servicenow"></a>

O ServiceNow é uma plataforma SaaS baseada na em nuvem para automatizar fluxos de trabalho de gerenciamento de TI. A plataforma ServiceNow se integra facilmente a outras ferramentas, permitindo que os usuários gerenciem projetos, equipes e interações com clientes usando uma variedade de aplicações e plug-ins. Como usuário do ServiceNow, você pode conectar o AWS Glue à conta do ServiceNow. Em seguida, poderá usar o ServiceNow como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o ServiceNow e serviços da AWS ou outras aplicações compatíveis.

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

# Suporte do AWS Glue ao ServiceNow
<a name="servicenow-support"></a>

O AWS Glue oferece suporte ao ServiceNow da seguinte forma:

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

**Compatível como destino?**  
Não.

**Versões da API do ServiceNow com suporte**  
Estas são as versões compatíveis da API do ServiceNow:
+ v2

Para conferir a compatibilidade das entidades por versão específica, consulte as entidades compatíveis para a fonte.

# Políticas que contêm as operações de API para criar e usar conexões
<a name="servicenow-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.

# Configurar o ServiceNow
<a name="servicenow-configuring"></a>

Para usar o AWS Glue para transferir dados do ServiceNow, os seguintes requisitos deverão ser atendidos:

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

São requisitos mínimos:
+ Uma conta do ServiceNow com e-mail e senha. Para obter mais informações, consulte [Criar uma conta do ServiceNow](#servicenow-configuring-creating-servicenow-account).
+ Sua conta do ServiceNow está habilitada para acesso à API. Todo o uso da API do ServiceNow está disponível sem custo adicional.

Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do ServiceNow.

## Criar uma conta do ServiceNow
<a name="servicenow-configuring-creating-servicenow-account"></a>

Para criar uma conta do ServiceNow:

1. Navegue até a página de inscrição em servicenow.com, insira seus dados e clique em **Continuar**.

1. Ao receber um código de verificação em seu e-mail registrado, insira esse código e escolha **Verificar**.

1. Configure a autenticação multifator ou pule essa etapa.

Sua conta é criada e o ServiceNow exibe seu perfil.

## Criar uma instância de desenvolvedor do ServiceNow
<a name="servicenow-configuring-creating-servicenow-developer-instance"></a>

Solicite uma instância de desenvolvedor depois de fazer login no ServiceNow.

1. Na [Página de login do ServiceNow](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), insira as credenciais da sua conta.

1. Escolha a opção **Programa de desenvolvedores do ServiceNow**.  
![\[\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/servicenow-dev-program.png)

1. Escolha **Solicitar instância** no canto superior direito.

1. Insira suas responsabilidades profissionais. Confirme que concorda com os termos de uso e escolha **Concluir configuração**.

1. Depois que a instância for criada, anote o URL e as credenciais da instância.

## Recuperar credenciais de BasicAuth
<a name="servicenow-configuring-basic-auth"></a>

Para recuperar as credenciais de Basic Auth para uma conta gratuita:

1. Na [Página de login do ServiceNow](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), insira as credenciais da sua conta.

1. Na página inicial, escolha a seção de edição do perfil (canto superior direito) e escolha **Gerenciar senha da instância**.

1. Recupere as credenciais de login, como nome de usuário, senha e URL da instância.

**nota**  
Se a MFA estiver habilitada para a conta, anexe o token de MFA ao final da senha do usuário na autenticação básica: <username>:<password><MFA Token>

Para obter mais informações, consulte [Criar aplicações](https://docs.servicenow.com/bundle/xanadu-application-development/page/build/custom-application/concept/build-applications.html) na documentação do ServiceNow.

## Criar credenciais do OAuth 2.0
<a name="servicenow-configuring-basic-auth"></a>

Para usar o OAuth2.0 no conector ServiceNow, é necessário criar um cliente de entrada para gerar o ID do cliente e o segredo do cliente:

1. Na [Página de login do ServiceNow](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), insira as credenciais da sua conta.

1. Na página iniciar, escolha **Iniciar criação**.

1. Na página do App Engine Studio, pesquise por **Registro de aplicações**.

1. Escolha **Novo** no canto superior direito.

1. Escolha a opção **Criar um endpoint da API OAuth para clientes externos**.

1. Faça as alterações necessárias na configuração do OAuth e escolha **Atualizar**.

   Exemplo de URL de redirecionamento: https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Selecione a aplicação cliente OAuth recém-criada para recuperar o ID e o segredo do cliente.

1. Armazene o ID e o segredo do cliente para processamento posterior.

Para configurar a autenticação em uma conta de desenvolvedor de não produção:

1. Crie um perfil de autenticação usando o tópico [Criar um perfil de autenticação](https://docs.servicenow.com/bundle/washingtondc-platform-security/page/integrate/authentication/task/create-an-authentication-profile.html) na documentação do ServiceNow.

1. No Perfil de autenticação do OAuth, selecione **Tipo** como OAuth e selecione o cliente de entrada criado acima para definir a **Entidade OAuth**.

1. Se houver vários clientes, será necessário criar múltiplos perfis de autenticação para definir a entidade OAuth necessária no perfil de autenticação.

1. Se não estiver configurada, crie uma política de acesso à API REST para conceder acesso à API TABLE. Consulte [Criar política de acesso à API REST](https://docs.servicenow.com/bundle/washingtondc-platform-security/page/integrate/authentication/task/create-api-access-policy.html).

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

O tipo de concessão determina como o AWS Glue se comunica com o ServiceNow para solicitar acesso aos seus dados. A escolha afeta os requisitos que você deve atender antes de criar a conexão. O ServiceNow só oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth 2.0.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O console do AWS Glue redirecionará o usuário para o ServiceNow, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do ServiceNow.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no ServiceNow e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o ServiceNow para fazer login e autorizar o acesso do AWS Glue aos seus recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do ServiceNow sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Configuração do OAuth](https://docs.servicenow.com/bundle/vancouver-platform-security/page/administer/security/task/t_SettingUpOAuth.html).

Para configurar uma conexão do ServiceNow:

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

   1. Para autenticação básica, o segredo deve conter o segredo do consumidor da aplicação conectada com `USERNAME` e `PASSWORD` como chave.

   1. Para um tipo de concessão de código de autorização, o segredo deve conter o segredo do consumidor da aplicação conectada com `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como chave.

   1. Nota: é preciso criar um segredo por conexão em 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 ServiceNow.

   1. Forneça o INSTANCE\$1URL da instância do ServiceNow à 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 **Tipo de autenticação** que você deseja usar para essa conexão no AWS Glue.

      1. Autorização básica: esse tipo de autorização funciona bem para cenários de automação, pois permite o uso do nome de usuário e da senha antecipadamente com as permissões de um usuário específico na instância do ServiceNow. O AWS Glue pode usar o nome de usuário e a senha para autenticar APIs do ServiceNow. Insira as entradas a seguir somente no caso de autenticação básica: `Username` e `Password`.

      1. OAuth2: insira as entradas a seguir somente no caso de OAuth2: `ClientId`, `ClientSecret`, `Authorization URL`, `Authorization Token URL`.

   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 ServiceNow
<a name="servicenow-reading-from-entities"></a>

**Pré-requisito**

Um objeto de tabelas do ServiceNow do qual você deseja ler. Você precisará do nome do objeto, como pa\$1bucket ou incidente.

**Exemplo:**

```
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"
    }
)
```

**Detalhes das entidades e dos campos do ServiceNow**:

Para as entidades a seguir, o ServiceNow fornece endpoints para buscar metadados dinamicamente, para que o suporte do operador seja capturado no nível do tipo de dados de cada entidade.

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

**nota**  
O tipo de dados Struct é convertido no tipo de dados String na resposta do conector.

**nota**  
`DML_STATUS` é um atributo adicional definido pelo usuário usado para rastrear registros CREATED/UPDATED.

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

**Particionamento com base em campo**:

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/servicenow-reading-from-entities.html)
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Data e hora, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  "2024-01-30T06:47:51.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

A tabela a seguir descreve os detalhes do suporte do campo de particionamento da entidade:

Exemplo:

```
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"
    }
```

**Particionamento com base em registros**:

Você pode fornecer a opção adicional `NUM_PARTITIONS` do Spark se quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original é dividida em `NUM_PARTITIONS` subconsultas, que podem ser executadas pelas tarefas do Spark simultaneamente.

No particionamento com base em registros, o número total de registros presentes é consultado na API do ServiceNow e dividido pelo número `NUM_PARTITIONS` fornecido. O número resultante de registros é então buscado simultaneamente por cada subconsulta.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do ServiceNow:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no ServiceNow.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do ServiceNow que você deseja usar. Por exemplo: v1, v2, v3, v4.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. Por exemplo: 2024-01-30T06:47:51.000Z.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. Por exemplo: 2024-06-30T06:47:51.000Z.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. Por exemplo: 10.
+ `INSTANCE_URL`(string) (Obrigatório) Um URL de instância válido do ServiceNow no formato https://<nome-da-instância>.servicenow.com.
+ `PAGE_SIZE` (inteiro): define o tamanho da página para consultar os registros. O tamanho de página padrão é 1.000. Quando um tamanho de página é especificado, o ServiceNow retorna apenas o número definido de registros por chamada de API, em vez de todo o conjunto de dados. O conector fornecerá também o número total de registros e processará a paginação usando o tamanho de página especificado. Se você precisar de um tamanho de página maior, poderá escolher qualquer valor até 10.000, que é o máximo permitido. Qualquer tamanho de página especificado que exceda 10.000 será ignorado. Em vez disso, o sistema usará o tamanho máximo de página permitido. É possível especificar o tamanho da página na interface de usuário do AWS Glue Studio adicionando uma opção de conexão `PAGE_SIZE` com o valor desejado. Por exemplo, 5.000.

# Limitações e notas do conector do ServiceNow
<a name="servicenow-connector-limitations"></a>

Estas são as limitações ou notas do conector do ServiceNow:
+ De acordo com a [documentação do SaaS](https://www.servicenow.com/docs/bundle/washingtondc-application-development/page/build/applications/reference/r_GlobalDefaultFields.html), `sys_created_on`, `sys_updated_on` e `sys_mod_count` são campos gerados pelo sistema. O conector depende de APIs SaaS para fornecer esses campos no corpo da resposta.
  + Se o SaaS não gerar esses campos para nenhuma entidade, o particionamento baseado em filtros não poderá ser suportado.
+ Se as APIs SaaS não retornarem os campos `sys_created_on` e `sys_updated_on` na resposta, `DML_STATUS` não poderá ser calculado.
+ Melhore a performance e a eficiência da leitura
  + O conector do ServiceNow agora classifica automaticamente os registros em ordem crescente pelo campo `sys_id` (deve estar presente nos metadados) quando nenhuma cláusula ORDER BY é especificada pelo usuário. Nesse caso, os registros serão paginados pela nova paginação otimizada baseada em conjunto de chaves.
  + Se a cláusula ORDER BY for especificada, a nova otimização não será usada e os registros serão buscados usando o método existente (paginação baseada em Ordenar por e Limite de deslocamento definido pelo usuário).

# Conexão com o Slack no AWS Glue Studio
<a name="connecting-to-data-slack"></a>

 O Slack é um aplicativo de comunicação empresarial que permite aos usuários enviar mensagens e anexos por meio de vários canais públicos e privados. Se você usa o Slack, pode conectar o AWS Glue à conta do Slack. Em seguida, você pode usar o Slack como fonte de dados nos trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Slack e serviços da AWS ou outras aplicações compatíveis. 

**Topics**
+ [Suporte do AWS Glue para o Slack](slack-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](slack-configuring-iam-permissions.md)
+ [Configuração do Slack](slack-configuring.md)
+ [Configuração de conexões do Slack](slack-configuring-connections.md)
+ [Leitura de entidades do Slack](slack-reading-from-entities.md)
+ [Opções de conexão do Slack](slack-connection-options.md)
+ [Limitações](slack-limitations.md)
+ [Criação de uma conta do Slack e configuração da aplicação cliente](slack-new-account-creation.md)

# Suporte do AWS Glue para o Slack
<a name="slack-support"></a>

O AWS Glue oferece suporte ao Slack da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Slack.

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

**Versões compatíveis da API do Slack**  
 API do Slack v2. 

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

 O exemplo de política a seguir descreve as permissões necessárias do 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados em seu nome. Esses recursos incluem AWS Glue, Amazon S3, IAM, Amazon 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 Slack
<a name="slack-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados de ou para o Slack, você precisa atender aos seguintes requisitos:

## Requisitos mínimos
<a name="slack-configuring-min-requirements"></a>
+  Você deve ter uma conta do Slack. Para obter mais informações, consulte [Criação de uma conta do Slack e configuração da aplicação cliente](slack-new-account-creation.md). 

 Se você atender a esses requisitos, poderá conectar o AWS Glue à conta do Slack. 

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

 O Slack é compatível com o tipo de concessão `AUTHORIZATION_CODE` para OAuth 2. 

 Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Slack, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Slack. 

 Os usuários ainda podem optar por criar sua própria aplicação conectada no Slack e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Slack para fazer login e autorizar o acesso do AWS Glue aos recursos. 

 Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso expira uma hora após a criação. Um novo token de acesso pode ser obtido usando o token de atualização. 

 Para obter mais informações sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte a [API do Slack](https://api.slack.com/quickstart). 

Para configurar uma conexão do Slack:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para a conexão no AWS Glue. 

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

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

   1. Forneça o ambiente do Slack.

   1.  Selecione o perfil do 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 Slack
<a name="slack-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Slack do qual você deseja ler. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| conversas | Sim | Sim | Não | Sim | Sim | 

 **Exemplo** 

```
slack_read = glueContext.create_dynamic_frame.from_options(
    connection_type="slack",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversations/C058W38R5J8"
    }
)
```

 **Detalhes das entidades e dos campos do Slack** 


| Entidade | Campo | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | --- | 
| conversas | anexos | Lista | NA | 
| conversas | bot\$1id | String | NA | 
| conversas | blocks | Lista | NA | 
| conversas | client\$1msg\$1id | String | NA | 
| conversas | is\$1starred | Booleano | NA | 
| conversas | last\$1read | String | NA | 
| conversas | latest\$1reply | String | NA | 
| conversas | reações | Lista | NA | 
| conversas | responde | Lista | NA | 
| conversas | reply\$1count | Inteiro | NA | 
| conversas | reply\$1users | Lista | NA | 
| conversas | reply\$1users\$1count | Inteiro | NA | 
| conversas | inscrito | Booleano | NA | 
| conversas | subtipo | String | NA | 
| conversas | text | String | NA | 
| conversas | team | String | NA | 
| conversas | thread\$1ts | String | NA | 
| conversas | ts | String | EQUAL\$1TO, BETWEEN, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL\$1TO, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL\$1TO | 
| conversas | type | String | NA | 
| conversas | usuário | String | NA | 
| conversas | anfitrião | String | NA | 
| conversas | raiz | Struct | NA | 
| conversas | is\$1locked | Booleano | NA | 
| conversas | files | Lista | NA | 
| conversas | sala | Struct | NA | 
| conversas | buffer de | Booleano | NA | 
| conversas | display\$1as\$1bot | Booleano | NA | 
| conversas | channel | String | NA | 
| conversas | no\$1notifications | Booleano | NA | 
| conversas | permalink | String | NA | 
| conversas | pinned\$1to | Lista | NA | 
| conversas | pinned\$1info | Struct | NA | 
| conversas | editado | Struct | NA | 
| conversas | app\$1id | String | NA | 
| conversas | bot\$1profile | Struct | NA | 
| conversas | metadados | Struct | NA | 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valor válido: `"2024-07-01T00:00:00.000Z"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela a seguir. 


| Entity Name | Campo de particionamento | Tipo de dado | 
| --- | --- | --- | 
| conversas | ts | String | 

 **Exemplo** 

```
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"
    }
)
```

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

Estas são as opções de conexão do Slack:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. Nome da entidade compatível. Exemplo: `conversations/C058W38R5J8`. 
+  `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que você 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. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Limitações
<a name="slack-limitations"></a>

Estas são as limitações do conector do Slack:
+  O particionamento com base em registros não é compatível, pois o conector não fornece um meio de buscar o número total de registros (mensagens) disponíveis em uma determinada conversa. 

# Criação de uma conta do Slack e configuração da aplicação cliente
<a name="slack-new-account-creation"></a>

**Criação de uma conta do Slack**

1. Abra a [página inicial do Slack](https://slack.com/intl/en-in/) para cadastrar-se em uma conta. 

1. Escolha **CADASTRAR-SE COM ENDEREÇO DE E-MAIL**. Insira seu ID de email e escolha **Continuar**.

1. Insira o código de seis caracteres enviado ao seu endereço de e-mail. Ele redirecionará você para criar um espaço de trabalho ou ingressar em um espaço de trabalho existente.

1. Escolha **Criar um espaço de trabalho** para criar um espaço de trabalho. Isso redirecionará você para responder a algumas perguntas como parte do processo de configuração.
   + Nome da empresa
   + Seu nome
   + Para adicionar colegas por e-mail
   + Em que sua equipe está trabalhando? (Esse será o nome do canal)

1. Preencha os campos de entrada para essas perguntas e continue. Sua conta agora está pronta para ser usada.



**Criação de uma aplicação para desenvolvedores do Slack**

1. Entre na sua conta do Slack e faça login no espaço de trabalho do Slack.

1. No menu do espaço de trabalho, selecione **Ferramentas e configurações e**, em seguida, selecione **Gerenciar aplicações**.

1. No menu Diretório de aplicações do Slack, selecione **Criar**.

1. Na página **Suas aplicações**, selecione **Criar uma aplicação**.

1. Na página **Criar uma aplicação**, selecione **Do zero**.

1. Na caixa de diálogo **Nomear aplicação e escolher espaço de trabalho** que se abre, adicione um nome de aplicação e **Escolha um espaço de trabalho para implantar a aplicação**. Em seguida, selecione **Criar aplicação**.

1. Anotar seu Id de cliente e o segredo exibidos nas credenciais da aplicação

1. Na barra lateral do OAuth e permissões, acesse Escopos e escolha **Adicionar um escopo do OAuth**. Você pode adicionar os URLs de redirecionamento à aplicação para configuração da geração automática do botão “Adicionar ao Slack” ou para distribuir a aplicação. Role para cima até a seção URLs de redirecionamento, escolha **Adicionar novo URL de redirecionamento** e salve. 

1. Em seguida, role até a seção Tokens OAuth na seção do espaço de trabalho e escolha **Instalar no espaço de trabalho**.

1. Na caixa de diálogo que se abre informando que a aplicação que você criou está solicitando permissão para acessar o espaço de trabalho do Slack ao qual você deseja conectá-lo, selecione **Permitir**.

1. Após a conclusão bem-sucedida, o console exibirá uma tela Tokens OAuth para seu espaço de trabalho..

1. Na tela Tokens OAuth para seu espaço de trabalho, copie e salve o token OAuth que você usará para se conectar ao AWS Glue

1. Em seguida, recupere o ID da sua equipe do Slack. No menu do espaço de trabalho do Slack, selecione **Ferramentas e configurações e**, em seguida, selecione **Gerenciar aplicações**. Você encontrará o ID da sua equipe no URL da página que se abre.

1. Para distribuir publicamente a aplicação, você pode ativá-la acessando o botão **Gerenciar distribuição** na barra lateral. Role para baixo até a seção Compartilhar sua aplicação com outros espaços de trabalho e escolha **Remover informações com codificação rígida**. Forneça consentimento e escolha **Distribuição pública ativa**. 

1. Agora, a aplicação está distribuída publicamente. Para acessar as APIs da entidade, a aplicação precisa ser adicionada a cada canal do espaço de trabalho de onde o usuário deseja acessar.

1. Faça login na sua conta do Slack e abra o espaço de trabalho cujo canal precisa ser acessado.

1. No espaço de trabalho, abra o canal que a aplicação deseja acessar e escolha o título do canal. Selecione a guia **Integrações** no pop-up e adicione a aplicação. Dessa forma, a aplicação é integrada ao canal para ter acesso à API.

   O ID do cliente do OAuth 2.0 deve ter um ou mais URLs de redirecionamento autorizados. Os URLs de redirecionamento têm o seguinte formato:
**nota**  
 Os URLs de redirecionamento do Appflow estarão sujeitos a alterações depois que os URLs de redirecionamento da plataforma do AWS Glue estiverem disponíveis. O ID do cliente e o segredo do cliente são originários das configurações do ID do cliente do OAuth 2.0.     
<a name="slack-redirect-url-detail"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/slack-new-account-creation.html)

# Conectar ao Smartsheet
<a name="connecting-to-smartsheet"></a>

O Smartsheet é um produto SaaS de gerenciamento de trabalho e colaboração. Fundamentalmente, o Smartsheet permite que os usuários usem objetos semelhantes a planilhas para criar, armazenar e utilizar dados de negócios.

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

# Suporte do AWS Glue para Smartsheet
<a name="smartsheet-support"></a>

O AWS Glue oferece suporte ao Smartsheet da seguinte forma:

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

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

**Versões da API do Smartsheet com suporte**  
 v2.0 

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

O exemplo de política a seguir descreve as permissões da AWS necessárias 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 não quiser usar o método anterior, uma alternativa será usar 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 serem executados 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 Smartsheet
<a name="smartsheet-configuring"></a>

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

## Requisitos mínimos
<a name="smartsheet-configuring-min-requirements"></a>
+ Você tem uma conta do Smartsheet com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Smartsheet](smartsheet-create-account.md). 
+ Sua conta do Smartsheet tem acesso à API com uma licença válida.
+ Sua conta do Smartsheet tem um plano de **preços Pro** para a entidade `Sheets` e um plano de preços Enterprise com o complemento Event Reporting para a entidade `Events`.

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

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

 O Smartsheet oferece suporte ao tipo de concessão `AUTHORIZATION_CODE` para OAuth2. 

Esse tipo de concessão é considerado um `OAuth` de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Os usuários ainda podem optar por criar sua própria aplicação conectada no Smartsheet e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Smartsheet para fazer login e autorizar o acesso do AWS Glue aos recursos. 

Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

Para obter a documentação pública do Smartsheet sobre a criação de uma aplicação conectada para o fluxo OAuth AUTHORIZATION\$1CODE, consulte [APIs do Smartsheet](https://smartsheet.redoc.ly/#section/OAuth-Walkthrough). 

Para configurar uma conexão do Smartsheet:

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

   Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

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

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

   1. Forneça o `instanceUrl` do Smartsheet ao qual deseja se conectar.

   1. Selecione o perfil do 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 Smartsheet
<a name="smartsheet-reading-from-entities"></a>

 **Pré-requisitos** 

Um objeto do `Smartsheet` do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Listar planilha | Sim | Sim | Não | Sim | Não | 
| Metadados de linha | Sim | Sim | Não | Sim | Não | 
| Metadados da planilha | Não | Não | Não | Sim | Não | 
| Dados da planilha | Sim | Sim | Sim | Sim | Não | 
| Event | Sim | Sim | Não | Sim | Não | 

 **Exemplo** 

```
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"
    })
```

 **Detalhes de entidade e campo do Smartsheet** 

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

**Entidades com metadados dinâmicos**:

Para a entidade a seguir, o Smartsheet fornece um endpoint para buscar metadados dinamicamente, para que o suporte do operador seja capturado no nível do tipo de dados.


| Entidade |  Tipo de dado  | Operadores com suporte | 
| --- | --- | --- | 
|  Dados da planilha  |  String  | NA | 
| Dados da planilha |  Longo  | "=" | 
| Dados da planilha | Inteiro | NA | 
| Dados da planilha | DateTime | > | 

 **Exemplo** 

```
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"
    }
```

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

Estas são as opções de conexão do Smartsheet:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Smartsheet. 
+ `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Smartsheet que você deseja usar. Por exemplo, v2.0. 
+ `INSTANCE_URL`(string): (obrigatório) usado para leitura. URL da instância do Smartsheet.
+ `SELECTED_FIELDS`(lista<string>): padrão: vazio (SELECT \$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: vazio. Usado para leitura. Consulta completa do Spark SQL. 

# Criação de uma conta do Smartsheet
<a name="smartsheet-create-account"></a>

1. Cadastre-se para obter uma conta do Smartsheet acessando a [página de inscrição do Smartsheet](https://app.smartsheet.com/home). 

1. Escolha **Criar uma** para criar uma nova conta ou faça login usando sua conta registrada do Google, Microsoft ou Apple.

1.   Insira seu endereço de e-mail de trabalho quando solicitado.   

1.   Escolha **Continuar** e, se necessário, verifique sua identidade.  

1. Abra o e-mail de confirmação do Smartsheet e escolha o link de confirmação para verificar sua conta. 

   Você será inscrito no Plano de teste por padrão. 

1. No canto inferior esquerdo, escolha o ícone **Conta** e escolha **Adicionar licenças/Atualizar** para atualizar seu plano de preços.
**nota**  
Isso é necessário para acessar o **Relatório de eventos**, que é um complemento do plano **Enterprise**.

1. No plano **Enterprise**, escolha **Fale conosco** para solicitar uma atualização de conta à equipe de suporte.

1. No formulário de solicitação de suporte, forneça os detalhes necessários e seus requisitos para atualizar o plano.

   Isso conclui a atualização para o plano **Enterprise**.

**Criação de credenciais do `OAuth2.0`**

1. Depois de atualizar o plano de preços da sua conta para ter acesso às **Ferramentas do desenvolvedor**, acesse [Desenvolvedores do Smartsheet](https://developers.smartsheet.com/). 

   Você receberá um e-mail de ativação.

1. Abra o e-mail de ativação do Smartsheet e escolha o link de ativação para ativar as ferramentas do desenvolvedor em sua conta. 

   As ferramentas de desenvolvedor permitem que você crie a aplicação.

1. Abra a página inicial da sua conta do Smartsheet e escolha **Conta** para verificar o acesso.

1. Escolha **Ferramentas do desenvolvedor** na lista de serviços e insira os detalhes do **Perfil do desenvolvedor**.

1. Selecione **Criar nova aplicação**.

1. Insira os detalhes a seguir no formulário de registro da aplicação:
   + **Nome**: o nome da aplicação.
   + **Descrição**: a descrição da aplicação.
   + **URL**: URL que permite que você inicie sua aplicação ou o URL da página de destino.
   + **Contato/suporte**: informações de contato da equipe de suporte.
   + **URL de redirecionamento**: URL (também conhecida como URL de retorno de chamada) dentro da sua aplicação que receberá as credenciais do [OAuth 2.0](https://.console.aws.amazon.com/appflow/oauth). 

1. Escolha **Salvar**.

   O Smartsheet atribui um ID do cliente e um segredo do cliente à sua aplicação. Registre esses valores para as próximas etapas. Você também pode procurá-los novamente mais tarde na seção **Ferramentas do desenvolvedor**.

# Limitações
<a name="smartsheet-connector-limitations"></a>

O Smartsheet não oferece suporte ao particionamento baseado em campos ou baseado em registros.

# Conexão com o Snapchat Ads no AWS Glue Studio
<a name="connecting-to-data-snapchat-ads"></a>

 O Snapchat é uma aplicação e um serviço de mensagens instantâneas multimídia desenvolvido pela Snap Inc., originalmente Snapchat Inc. Um dos principais recursos do Snapchat é que as imagens e mensagens geralmente só ficam disponíveis por um breve período antes de se tornarem inacessíveis para os destinatários. O Snapchat Marketing consiste em publicações pelas quais as empresas podem pagar para servir aos usuários do Snapchat. 

**Topics**
+ [Suporte do AWS Glue ao Snapchat Ads](snapchat-ads-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](snapchat-ads-configuring-iam-permissions.md)
+ [Configuração do Snapchat Ads](snapchat-ads-configuring.md)
+ [Configuração de conexões do Snapchat Ads](snapchat-ads-configuring-connections.md)
+ [Leitura de entidades do Snapchat Ads](snapchat-ads-reading-from-entities.md)
+ [Opções de conexão do Snapchat Ads](snapchat-ads-connection-options.md)
+ [Criação de uma conta do Snapchat Ads e configuração da aplicação cliente](connecting-to-data-snapchat-ads-new-account.md)
+ [Criação de uma aplicação na conta do Snapchat Ads](connecting-to-data-snapchat-ads-managed-client-application.md)

# Suporte do AWS Glue ao Snapchat Ads
<a name="snapchat-ads-support"></a>

O AWS Glue oferece suporte ao Snapchat Ads da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Snapchat Ads.

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

**Versões compatíveis da API do Snapchat Ads**  
 v1. 

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

 O exemplo de política a seguir descreve as permissões da AWS necessárias 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados em seu nome. Esses recursos incluem AWS Glue, Amazon S3, IAM, Amazon 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 Snapchat Ads
<a name="snapchat-ads-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Snapchat Ads, você precisa atender aos seguintes requisitos:

## Requisitos mínimos
<a name="snapchat-ads-configuring-min-requirements"></a>
+  Ter uma conta do Snapchat Ads. Para obter mais informações sobre a criação de uma conta, consulte [Criação de uma conta do Snapchat Ads e configuração da aplicação cliente](connecting-to-data-snapchat-ads-new-account.md). 
+  Ter criado uma aplicação OAuth2 na conta do Snapchat Ads. Essa integração fornece as credenciais que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Criação de uma aplicação na conta do Snapchat Ads](connecting-to-data-snapchat-ads-managed-client-application.md). 

 Se você atender a esses requisitos, poderá conectar o AWS Glue à conta do Snapchat Ads. No Snapchat Ads, uma aplicação conectada é uma estrutura que autoriza aplicações externas, como o AWS Glue, a acessar os dados do Snapchat Ads. 

# Configuração de conexões do Snapchat Ads
<a name="snapchat-ads-configuring-connections"></a>

 O Snapchat Ads só oferece suporte ao tipo de concessão `AUTHORIZATION_CODE`. 

 Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O usuário que está criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue (aplicação cliente gerenciada pelo AWS Glue), na qual ele não precisa fornecer quaisquer informações relacionadas ao OAuth, exceto o URL da instância do Snapchat Ads. O Console do AWS Glue redirecionará o usuário para o Snapchat Ads, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Snapchat Ads. 

 Os usuários ainda podem optar por criar sua própria aplicação conectada no Snapchat Ads e fornecer os próprios ID e segredo de cliente quando criarem conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Snapchat Ads para fazer login e autorizar o acesso do AWS Glue aos recursos. 

 Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso expira uma hora após a criação. Um novo token de acesso pode ser obtido usando o token de atualização. 

 Para obter mais informações sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte a [API do Amazon Ads](https://marketingapi.snapchat.com/docs/#authentication). 

Para configurar uma conexão com o Snapchat Ads:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

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

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**, selecione Snapchat Ads.

   1. Forneça o ambiente do Snapchat Ads.

   1.  Selecione o perfil do 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 Snapchat Ads
<a name="snapchat-ads-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Snapchat Ads do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Organização | Não | Não | Não | Sim | Não | 
| Conta de anúncios | Não | Não | Não | Sim | Não | 
| Criativa | Não | Não | Não | Sim | Não | 
| Mídia | Não | Não | Não | Sim | Não | 
| Campaign | Sim | Não | Não | Sim | Não | 
| Anúncio em conta de anúncio | Sim | Não | Não | Sim | Não | 
| Anúncio em campanha | Não | Não | Não | Sim | Não | 
| Esquadrão de anúncios | Sim | Não | Não | Sim | Não | 
| Segment | Não | Não | Não | Sim | Não | 

 **Exemplo** 

```
snapchatads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="snapchatAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v1"
    }
)
```

 **Detalhes das entidades e dos campos do Snapchat Ads** 

 O Snapchat Ads carrega dinamicamente os campos disponíveis na entidade selecionada. Dependendo do tipo de dados de campo, ele é compatível com os operadores de filtro a seguir. 


| Tipos de dados de campo | Operadores de filtro compatíveis | 
| --- | --- | 
| Booleano | = | 

 **Particionamento de consultas** 
+  Particionamento baseado em campo: não compatível. 
+  Particionamento baseado em registro: não compatível. 

# Opções de conexão do Snapchat Ads
<a name="snapchat-ads-connection-options"></a>

Estas são as opções de conexão do Snapchat Ads:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome da entidade do Snapchat Ads. Exemplo: ` campaign `. 
+  `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Snapchat Ads que você deseja usar. O valor será v1, pois o Snapchat Ads atualmente só é compatível com a versão v1. 
+  `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Lista de colunas separadas por vírgula que você deseja selecionar para a entidade selecionada. 
+  `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. 

# Criação de uma conta do Snapchat Ads e configuração da aplicação cliente
<a name="connecting-to-data-snapchat-ads-new-account"></a>

**Topics**
+ [Cadastrar-se no Snapchat Ads](#snapchat-ads-sign-up)
+ [Etapas para criar uma conta do Snapchat Ads](#snapchat-ads-create-ad-account)

## Cadastrar-se no Snapchat Ads
<a name="snapchat-ads-sign-up"></a>

**Para se cadastrar no Snapchat Ads:**

1.  Navegue até o [Gerenciador do Snapchat Ads](https://ads.snapchat.com/). Escolha **Cadastrar-se** ao lado de **Começando no Snapchat?**. 

1.  Na tela **Criar conta**, siga os prompts para inserir o nome da empresa, e-mail, senha etc. Escolha **Próximo**. 

1.  Na tela **Criar seu perfil**, insira valores para Nome de usuário, Site (opcional) e escolha **Criar conta**. Isso dará a você a opção de adicionar uma foto do perfil e dados biométricos na tela **Editar seu perfil**. Escolha **Confirmar**. 

1.  Na tela **Informações da empresa**, preencha os campos obrigatórios, como País, Moeda, Número de telefone, GSTIN etc. e conclua o processo de criação da conta escolhendo **Avançar**. 

## Etapas para criar uma conta do Snapchat Ads
<a name="snapchat-ads-create-ad-account"></a>

**Para criar uma conta do Snapchat Ads:**

1.  Faça login no **Gerenciador de anúncios**. Em seguida, clique na navegação no canto superior e selecione **Contas de anúncios**. 

1.  Escolha **\$1 Nova conta de anúncios**. Insira os detalhes do anunciante: 
   +  Selecione se você é ou não uma agência que compra anúncios em nome de um anunciante. Se você selecionar “Sim”, seu anúncio poderá ser rejeitado se usar parâmetros de segmentação que podem incluir segmentação por idade, gênero ou nível de código postal. A segmentação por idade mínima pode ser aplicada até 21 anos. 
   +  Selecione se sua conta de anúncios exibirá ou não anúncios imobiliários, de crédito ou de emprego. Se você selecionar “Sim”, seu anúncio poderá ser rejeitado se usar parâmetros de segmentação que podem incluir segmentação por idade, gênero ou nível de código postal. A segmentação por idade mínima pode ser aplicada até 21 anos. 
   +  Selecione se você usará a conta de anúncios para anúncios políticos. Se você estiver veiculando um anúncio político, insira a organização política patrocinadora ou o grupo de apoio que está pagando pelo anúncio. Se você não inserir a organização política com exatidão, seus anúncios poderão ser rejeitados. Você também precisará preencher o “Formulário de análise de anúncios políticos” obrigatório vinculado antes de enviar anúncios. 

1.  Escolha **Detalhes da conta** e preencha as informações da conta de anúncios:     
<a name="snapchat-ads-account-details"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/connecting-to-data-snapchat-ads-new-account.html)

1.  Escolha **Criar conta**. A conta de anúncios será criada e você poderá encontrá-la na parte Contas de anúncios do Gerenciador de anúncios. Para começar a lançar anúncios, você deverá inserir um método de pagamento. Você também pode adicionar membros à sua conta de anúncios. 

1.  Selecione se deseja usar um método de pagamento existente ou criar um. Em seguida, escolha **Salvar método de pagamento**. 

1.  Selecione todos [os membros que você convidou](https://businesshelp.snapchat.com/s/article/manage-members?language=en_US) para sua empresa para adicionar à conta de anúncios. Para obter mais informações sobre os perfis e permissões que podem ser atribuídos, consulte [Visão geral de perfis e permissões](https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US). Os membros adicionados poderão fazer login no Gerenciador de anúncios e acessar a conta de anúncios. Quando concluir, salve os membros. 

 Para obter mais informações sobre contas de anúncios, 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 

# Criação de uma aplicação na conta do Snapchat Ads
<a name="connecting-to-data-snapchat-ads-managed-client-application"></a>

 Para ativar o acesso à API de marketing do Snapchat, certifique-se de ter uma conta comercial configurada. Em seguida, siga as etapas mostradas abaixo. 

1.  Faça login no Gerenciador de anúncios. Em seguida, escolha o menu no canto superior esquerdo, selecione **Painel empresarial** e selecione **Detalhes empresariais**. 

1.  Escolha **Aplicação \$1OAuth**. 

1.  Insira o Nome da aplicação e adicione o URL `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth` como URI de redirecionamento do Snap. Por exemplo, se estiver sendo usada a região us-west-1, o URL será `https://us-west-1.console.aws.amazon.com/gluestudio/oauth) and choose Create OAuth App`. Escolha **Criar aplicação OAuth**. 

1.  As credenciais da aplicação (ID do cliente e Segredo do cliente) serão exibidas. Salve-as, pois elas serão necessárias para criar uma conexão. 

# Conectar ao Snowflake no AWS Glue Studio
<a name="connecting-to-data-snowflake"></a>

**nota**  
 É possível usar o AWS Glue para Spark para ler e gravar em tabelas no Snowflake no AWS Glue 4.0 e versões posteriores. Para configurar uma conexão Snowflake com trabalhos AWS Glue programaticamente, consulte [Conexões do Redshift](aws-glue-programming-etl-connect-redshift-home.md). 

 O AWS Glue fornece suporte integrado para o Snowflake. O AWS Glue Studio fornece uma interface visual para conectar ao Snowflake, criar trabalhos de integração de dados e executá-los no runtime do AWS Glue Studio Spark sem servidor. 

 O AWS Glue Studio cria uma conexão unificada para o Snowflake. Para obter mais informações, consulte [Considerações](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Criar uma conexão com o Snowflake](creating-snowflake-connection.md)
+ [Criar um nó de origem do Snowflake](creating-snowflake-source-node.md)
+ [Criar um nó de destino do Snowflake](creating-snowflake-target-node.md)
+ [Opções avançadas](#creating-snowflake-connection-advanced-options)

# Criar uma conexão com o Snowflake
<a name="creating-snowflake-connection"></a>

**nota**  
 As conexões unificadas (conexão v2) padronizam todas as conexões para usar chaves `USERNAME`, `PASSWORD` para credenciais de autenticação básica. Você ainda pode criar uma conexão v1 via API com segredos contendo `sfUser`, `sfPassword`. 

 Ao adicionar um nó **Fonte de dados – Snowflake**AWS Glue Studio, é possível escolher uma conexão existente do AWS Glue Snowflake ou criar uma nova conexão. Você deve escolher um tipo de conexão do `SNOWFLAKE` e não um tipo de conexão `JDBC` configurada para se conectar ao Snowflake. Faça o seguinte procedimento para criar uma conexão com o AWS Glue Snowflake:

**Criar uma conexão com o Snowflake**

1. No Snowflake, gere um usuário, *SnowflakeUser* e senha, *snowflakePassword*. 

1. *Determine com qual armazém do Snowflake esse usuário interagirá, SnowflakeWarehouse*. Defina-o como o `DEFAULT_WAREHOUSE` para *SnowFlakeUser* no Snowflake ou lembre-se dele para a próxima etapa.

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do Snowflake. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criação de um segredo do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html#create_secret_cli) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **pares de chave/valor**, crie um par para *snowflakeUser* com a chave `sfUser`.
   + Ao selecionar **pares de chave/valor**, crie um par para *snowflakePassword* com a chave `sfPassword`.
   + Ao selecionar **pares de chave/valor**, crie um par para *snowflakeWarehouse* com a chave `sfWarehouse`. Isso não é necessário se for definido um padrão no Snowflake. 

1. No catálogo de dados do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](https://docs.aws.amazon.com//glue/latest/dg/console-connections.html). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para a próxima etapa. 
   + Ao selecionar um **Tipo de conexão**, selecione Snowflake.
   + Ao selecionar o **URL do Snowflake**, forneça o URL da sua instância do Snowflake. O URL usará um nome de host no formulário `account_identifier.snowflakecomputing.com`.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

# Criar um nó de origem do Snowflake
<a name="creating-snowflake-source-node"></a>

## Permissões necessárias
<a name="creating-snowflake-source-node-permissions"></a>

 Trabalhos do AWS Glue Studio usando fontes de dados do Snowflake exigem permissões adicionais. Para obter mais informações sobre como adicionar permissões a trabalhos de ETL, consulte [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 As conexões AWS Glue do `SNOWFLAKE` usam um segredo do AWS Secrets Manager para fornecer informações de credenciais. Os perfis de pré-visualização de trabalhos e dados no AWS Glue Studio devem ter permissão para ler esse segredo.

## Adicionar uma fonte de dados do Snowflake
<a name="creating-snowflake-source-node-add"></a>

**Pré-requisitos:**
+ Um segredo do AWS Secrets Manager para suas credenciais do Snowflake
+ Uma conexão de catálogo de dados do AWS Glue do tipo Snowflake

**Para adicionar um nó **fonte de dados: Snowflake**:**

1.  Escolha a conexão para sua fonte de dados do Snowflake. Isso pressupõe que a conexão já exista e que você possa selecionar entre as conexões existentes. Se precisar criar uma conexão, escolha **Criar conexão com o Snowflake**. Para obter mais informações, consulte [Visão geral do uso de conectores e conexões](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. As informações sobre a conexão estão visíveis, incluindo URL, grupos de segurança, sub-rede, zona de disponibilidade, descrição e timestamps de criação (UTC) e última atualização (UTC). 

1.  Escolha uma opção de fonte do Snowflake: 
   +  **Escolher uma única tabela**: essa é a tabela que contém os dados que você deseja acessar de uma única tabela do Snowflake. 
   +  **Inserir consulta personalizada**: permite que você acesse um conjunto de dados de várias tabelas do Snowflake com base na sua consulta personalizada. 

1.  Se você escolheu uma única tabela, insira o nome de um esquema do Snowflake. 

    Ou escolha **Inserir consulta personalizada**. Escolha essa opção para acessar um conjunto de dados personalizado de várias tabelas do Snowflake. Ao escolher essa opção, insira a consulta do Snowflake. 

1.  Nas opções de **Desempenho e segurança** (opcional), 
   +  **Ative o envio de consultas**: escolha se você deseja transferir o trabalho para a instância do Snowflake. 

1.  Em **Propriedades personalizadas do Snowflake** (opcional), insira parâmetros e valores conforme necessário. 

# Criar um nó de destino do Snowflake
<a name="creating-snowflake-target-node"></a>

## Permissões necessárias
<a name="creating-snowflake-target-node-permissions"></a>

 Trabalhos do AWS Glue Studio usando fontes de dados do Snowflake exigem permissões adicionais. Para obter mais informações sobre como adicionar permissões a trabalhos de ETL, consulte [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 As conexões AWS Glue do `SNOWFLAKE` usam um segredo do AWS Secrets Manager para fornecer informações de credenciais. Os perfis de pré-visualização de trabalhos e dados no AWS Glue Studio devem ter permissão para ler esse segredo.

## Adicionar um destino de dados do Snowflake
<a name="creating-snowflake-target-node-add"></a>

**Para criar um nó de destino do Snowflake:**

1.  Escolha uma tabela existente do Snowflake como destino ou insira um novo nome de tabela. 

1.  Ao usar o nó de destino **Nó de destino: Snowflake**, você pode escolher entre as seguintes opções: 
   +  **APPEND**: se uma tabela já existir, despejar todos os novos dados na tabela como uma inserção. Se a tabela não existir, criar e inserir todos os novos dados. 
   +  **MERGE**: o AWS Glue atualizará ou anexará dados à sua tabela de destino com base nas condições que você especificar. 

      Escolha as opções: 
     + **Escolher chaves e ações simples**: escolha as colunas a serem usadas como chaves de correspondência entre os dados de origem e seu conjunto de dados de destino. 

       Especifique as seguintes opções quando correspondidas:
       + Atualizar o registro em seu conjunto de dados de destino com os dados da fonte.
       + Excluir o registro em seu conjunto de dados de destino.

       Especifique as seguintes opções quando não correspondidas:
       + Inserir os dados de origem como uma nova linha em seu conjunto de dados de destino.
       + Não executar nenhuma ação.
     + **Inserir declaração MERGE personalizada**: você pode então escolher **Validar declaração de Merge** para verificar se a declaração é válida ou inválida.
   +  **TRUNCATE**: se uma tabela já existir, truncar os dados da tabela limpando primeiro o conteúdo da tabela de destino. Se o truncamento for bem-sucedido, inserir todos os dados. Se a tabela não existir, criar a tabela e inserir todos os novos dados. Se o truncamento não tiver sucesso, a operação falhará. 
   +  **DROP**: se uma tabela já existir, excluir os metadados e os dados da tabela. Se a exclusão for bem-sucedida, inserir todos os dados. Se a tabela não existir, criar a tabela e inserir todos os novos dados. Se o drop não tiver sucesso, a operação falhará. 

## Opções avançadas
<a name="creating-snowflake-connection-advanced-options"></a>

Consulte as [ Snowflake connections](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-snowflake-home.html) no guia do desenvolvedor do AWS Glue. 

# Conexão com o Stripe no AWS Glue Studio
<a name="connecting-to-data-stripe"></a>

 O Stripe é uma plataforma online de processamento de pagamentos e de cartões de crédito para empresas. A plataforma Stripe permite que as empresas aceitem pagamentos online, criem assinaturas (faturamento recorrente) para comércio eletrônico e configurem uma conta bancária para receber pagamentos. O Stripe também oferece suporte a pagamentos de várias partes, permitindo que as empresas configurem seu mercado e recebam pagamentos e, em seguida, paguem a vendedores ou a prestadores de serviços por meio de uma conta “conectada”. 

**Topics**
+ [Suporte do AWS Glue para o Stripe](stripe-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](stripe-configuring-iam-permissions.md)
+ [Configuração do Stripe](stripe-configuring.md)
+ [Configuração de conexões do Stripe](stripe-configuring-connections.md)
+ [Leitura de entidades do Stripe](stripe-reading-from-entities.md)
+ [Opções de conexão do Stripe](stripe-connection-options.md)
+ [Limitações](stripe-limitations.md)
+ [Criação de uma conta do Stripe e configuração da aplicação cliente](stripe-new-account-creation.md)

# Suporte do AWS Glue para o Stripe
<a name="stripe-support"></a>

O AWS Glue oferece suporte ao Stripe da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Stripe.

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

**Versões compatíveis da API do Slack**  
 v1. 

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

 O exemplo de política a seguir descreve as permissões necessárias do 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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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 serem executados em seu nome. Esses recursos incluem AWS Glue, Amazon S3, IAM, Amazon 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 Stripe
<a name="stripe-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Stripe, você precisa atender aos seguintes requisitos:

## Requisitos mínimos
<a name="stripe-configuring-min-requirements"></a>
+  Você deve uma conta do Stripe com e-mail e senha. Para obter mais informações, consulte [Criação de uma conta do Stripe e configuração da aplicação cliente](stripe-new-account-creation.md). 
+  A conta do Stripe precisa estar habilitada para acesso à API. Todo o uso da API do Stripe está disponível sem custo adicional. 

 Se você atender a esses requisitos, poderá conectar o AWS Glue à conta do Stripe. 

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

 O Stripe oferece suporte à autenticação personalizada. Para obter mais informações sobre a geração das chaves de API necessárias para autorização personalizada, consulte a [Documentação da STRIPE REST API](https://docs.stripe.com/api/authentication). 

Para configurar uma conexão do Stripe:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

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

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

   1.  Selecione o perfil do 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 Stripe
<a name="stripe-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Stripe do qual você deseja ler. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Equilibrar | Não | Não | Não | Sim | Não | 
| Equilibrar transações | Sim | Sim | Não | Sim | Sim | 
| Cobranças | Sim | Sim | Não | Sim | Sim | 
| Disputas | Sim | Sim | Não | Sim | Sim | 
| Links de arquivos | Sim | Sim | Não | Sim | Sim | 
| PaymentIntents | Sim | Sim | Não | Sim | Sim | 
| SetupIntents | Sim | Sim | Não | Sim | Sim | 
| Pagamentos | Sim | Sim | Não | Sim | Sim | 
| Reembolsos | Sim | Sim | Não | Sim | Sim | 
| Produtos | Sim | Sim | Não | Sim | Sim | 
| Preços | Sim | Sim | Não | Sim | Sim | 
| Cupons | Sim | Sim | Não | Sim | Sim | 
| Códigos de promoção | Sim | Sim | Não | Sim | Sim | 
| Códigos tributários | Não | Sim | Não | Sim | Não | 
| Alíquotas | Sim | Sim | Não | Sim | Sim | 
| Taxas de envio | Sim | Sim | Não | Sim | Sim | 
| Sessões | Sim | Sim | Não | Sim | Sim | 
| Notas de crédito | Sim | Sim | Não | Sim | Sim | 
| Cliente | Sim | Sim | Não | Sim | Sim | 
| Faturas | Sim | Sim | Não | Sim | Sim | 
| Itens da fatura | Sim | Sim | Não | Sim | Não | 
| Planos | Sim | Sim | Não | Sim | Sim | 
| Cotações | Sim | Sim | Não | Sim | Não | 
| Assinaturas | Sim | Sim | Não | Sim |  | 
| Itens de assinatura | Não | Sim | Não | Sim | Não | 
| Programa da assinatura | Sim | Sim | Não | Sim | Sim | 
| Contas | Não | Sim | Não | Sim | Sim | 
| Taxas de inscrição | Sim | Sim | Não | Sim | Sim | 
| Especificações do país | Não | Sim | Não | Sim | Não | 
| Transferências | Sim | Sim | Não | Sim | Sim | 
| Avisos aantecipados de fraude | Sim | Sim | Não | Sim | Sim | 
| Tipos de relatórios | Não | Não | Não | Sim | Não | 

 **Exemplo** 

```
stripe_read = glueContext.create_dynamic_frame.from_options(
    connection_type="stripe",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupons",
        "API_VERSION": "v1"
    }
)
```

 **Detalhes das entidades e dos campos do Stripe** 


| Entidade | Campo | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | --- | 
| Equilibrar |  |  |  | 
|  | available | Lista |  | 
|  | connect\$1reserved | Lista |  | 
|  | pendentes | Lista |  | 
|  | livemode | Booleano |  | 
|  | objeto | String |  | 
|  | instant\$1available | Lista |  | 
|  | emissão | Struct |  | 
| Equilibrar transações |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro |  | 
|  | available\$1on | DateTime | =, >=, <=,<,> | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | description | String |  | 
|  | exchange\$1rate | BigDecimal |  | 
|  | taxa | Inteiro |  | 
|  | fee\$1details | Lista |  | 
|  | net | Inteiro |  | 
|  | reporting\$1category | String |  | 
|  | origem | String | = | 
|  | status | String |  | 
|  | type | String | = | 
|  | cross\$1border\$1classification | String |  | 
| Cobranças |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro | =, <, > | 
|  | amount\$1captured | Inteiro |  | 
|  | amount\$1refunded | Inteiro |  | 
|  | aplicação | String |  | 
|  | application\$1fee | String |  | 
|  | application\$1fee\$1amount | Inteiro |  | 
|  | balance\$1transaction | String |  | 
|  | billing\$1details | Struct |  | 
|  | calculated\$1statement\$1descriptor | String |  | 
|  | capturado | Booleano |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | description | String |  | 
|  | destination | String |  | 
|  | disputa | String |  | 
|  | disputado | Booleano | = | 
|  | failure\$1balance\$1transaction | String |  | 
|  | failure\$1code | String |  | 
|  | failure\$1message | String |  | 
|  | fraud\$1details | Struct |  | 
|  | fatura | String |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | on\$1behalf\$1of | String |  | 
|  | ordem | String |  | 
|  | outcome | Struct |  | 
|  | pago | Booleano |  | 
|  | payment\$1intent | String | = | 
|  | payment\$1method | String |  | 
|  | payment\$1method\$1details | Struct |  | 
|  | receipt\$1email | String |  | 
|  | receipt\$1number | String |  | 
|  | receipt\$1url | String |  | 
|  | reembolsado | Booleano | = | 
|  | reembolsos | Struct |  | 
|  | analisar | String |  | 
|  | envio | Struct |  | 
|  | origem | Struct |  | 
|  | source\$1transfer | String |  | 
|  | statement\$1descriptor | String |  | 
|  | statement\$1descriptor\$1suffix | String |  | 
|  | status | String |  | 
|  | transferência | String |  | 
|  | transfer\$1data | Struct |  | 
|  | transfer\$1group | String | = | 
| Disputas |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro | =, <, > | 
|  | balance\$1transaction | String |  | 
|  | balance\$1transactions | Lista |  | 
|  | cobrança | String | = | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | evidência | Struct |  | 
|  | evidence\$1details | Struct |  | 
|  | is\$1charge\$1refundable | Booleano |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | payment\$1intent | String | = | 
|  | reason | String | = | 
|  | status | String |  | 
|  | payment\$1method\$1details | Struct |  | 
| Links de arquivos |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | expirado | Booleano | = | 
|  | expires\$1at | DateTime |  | 
|  | arquivo | String | = | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | url | String |  | 
| PaymentIntents |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro |  | 
|  | amount\$1capturable | Inteiro |  | 
|  | amount\$1details | Struct |  | 
|  | amount\$1received | Inteiro |  | 
|  | aplicação | String |  | 
|  | application\$1fee\$1amount | Inteiro |  | 
|  | automatic\$1payment\$1methods | Struct |  | 
|  | canceled\$1at | DateTime |  | 
|  | cancellation\$1reason | String |  | 
|  | capture\$1method | String |  | 
|  | client\$1secret | String |  | 
|  | confirmation\$1method | String |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | description | String |  | 
|  | fatura | String |  | 
|  | last\$1payment\$1error | Struct |  | 
|  | latest\$1charge | String |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | next\$1action | Struct |  | 
|  | on\$1behalf\$1of | String |  | 
|  | payment\$1method | String |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | Lista |  | 
|  | payment\$1method\$1configuration\$1details | Struct |  | 
|  | processamento | Struct |  | 
|  | receipt\$1email | String |  | 
|  | analisar | String |  | 
|  | setup\$1future\$1usage | String |  | 
|  | envio | Struct |  | 
|  | origem | String |  | 
|  | statement\$1descriptor | String |  | 
|  | statement\$1descriptor\$1suffix | String |  | 
|  | status | String |  | 
|  | transfer\$1data | Struct |  | 
|  | transfer\$1group | String |  | 
| SetupIntents |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | aplicação | String |  | 
|  | cancellation\$1reason | String |  | 
|  | client\$1secret | String |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | customer | String | = | 
|  | description | String |  | 
|  | flow\$1directions | Lista |  | 
|  | last\$1setup\$1error | Struct |  | 
|  | latest\$1attempt | String |  | 
|  | livemode | Booleano |  | 
|  | mandato | String |  | 
|  | metadados | Struct |  | 
|  | next\$1action | Struct |  | 
|  | on\$1behalf\$1of | String |  | 
|  | payment\$1method | String |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | Lista |  | 
|  | single\$1use\$1mandate | String |  | 
|  | status | String |  | 
|  | uso | String |  | 
|  | automatic\$1payment\$1methods | Struct |  | 
| Pagamentos |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro | =, <, > | 
|  | arrival\$1date | DateTime | =, >=, <=,<,> | 
|  | automatic | Booleano |  | 
|  | balance\$1transaction | String |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | description | String | = | 
|  | destination | String |  | 
|  | failure\$1balance\$1transaction | String |  | 
|  | failure\$1code | String |  | 
|  | failure\$1message | String |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | method | String |  | 
|  | original\$1payout | String |  | 
|  | reversed\$1by | String |  | 
|  | reconciliation\$1status | String |  | 
|  | source\$1type | String |  | 
|  | statement\$1descriptor | String |  | 
|  | status | String |  | 
|  | type | String |  | 
|  | application\$1fee | String |  | 
|  | application\$1fee\$1amount | Inteiro |  | 
| Reembolsos |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro |  | 
|  | balance\$1transaction | String |  | 
|  | cobrança | String | = | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | metadados | Struct |  | 
|  | destination\$1details | Struct |  | 
|  | payment\$1intent | String | = | 
|  | reason | String |  | 
|  | receipt\$1number | String |  | 
|  | source\$1transfer\$1reversal | String |  | 
|  | status | String |  | 
|  | transfer\$1reversal | String |  | 
| Produtos |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | active | Booleano | = | 
|  | attributes | Lista |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | default\$1price | String |  | 
|  | description | String |  | 
|  | imagens | Lista |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | nome | String |  | 
|  | package\$1dimensions | Struct |  | 
|  | enviável | Booleano |  | 
|  | statement\$1descriptor | String |  | 
|  | tax\$1code | String |  | 
|  | type | String | = | 
|  | unit\$1label | String |  | 
|  | updated | DateTime |  | 
|  | url | String |  | 
|  | recursos | Lista |  | 
| Preços |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | active | Booleano | = | 
|  | billing\$1scheme | String |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String | = | 
|  | custom\$1unit\$1amount | Struct |  | 
|  | livemode | Booleano |  | 
|  | lookup\$1key | String |  | 
|  | metadados | Struct |  | 
|  | nickname | String |  | 
|  | product | String | = | 
|  | recorrente | Struct |  | 
|  | tax\$1behavior | String |  | 
|  | tiers\$1mode | String |  | 
|  | transform\$1quantity | Struct |  | 
|  | type | String | = | 
|  | unit\$1amount | Inteiro |  | 
|  | quantidade\$1unitária decimal | String |  | 
| Cupons |  |  |  | 
|  | Id | String |  | 
|  | objeto | String |  | 
|  | amount\$1off | Inteiro |  | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String | = | 
|  | duration | String | = | 
|  | duration\$1in\$1months | Inteiro | =,<,> | 
|  | livemode | Booleano |  | 
|  | max\$1redemptions | Inteiro | =, <, > | 
|  | metadados | Struct |  | 
|  | nome | String |  | 
|  | percent\$1off | Duplo | = | 
|  | redeem\$1by | DateTime | =, >=, <=, <, > | 
|  | times\$1redeemed | Inteiro |  | 
|  | valid | Booleano |  | 
| Códigos de promoção |  |  |  | 
|  | Id | String |  | 
|  | objeto | String |  | 
|  | active | Booleano | = | 
|  | código | String | = | 
|  | cupon | Struct |  | 
|  | created | DateTime | =,>=,<=,<,> | 
|  | customer | String |  | 
|  | expires\$1at | DateTime |  | 
|  | livemode | Booleano |  | 
|  | max\$1redemptions | Inteiro |  | 
|  | metadados | Struct |  | 
|  | restrições | Struct |  | 
|  | times\$1redeemed | Inteiro |  | 
| Códigos tributários |  |  |  | 
|  | Id | String |  | 
|  | objeto | String |  | 
|  | description | String |  | 
|  | nome | String |  | 
| Alíquotas |  |  |  | 
|  | Id | String |  | 
|  | objeto | String |  | 
|  | active | Booleano | = | 
|  | country | String |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | description | String |  | 
|  | display\$1name | String |  | 
|  | inclusive | Booleano | = | 
|  | jurisdição | String |  | 
|  | jurisdiction\$1level | String |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | percentage | Duplo |  | 
|  | effective\$1percentage | Duplo |  | 
|  | estado | String |  | 
|  | tax\$1type | String |  | 
| Taxas de envio |  |  |  | 
|  | Id | String |  | 
|  | objeto | String |  | 
|  | active | Booleano | = | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | delivery\$1estimate | Struct |  | 
|  | display\$1name | String |  | 
|  | fixed\$1amount | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | tax\$1behavior | String |  | 
|  | tax\$1code | String |  | 
|  | type | String |  | 
| Sessões |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | after\$1expiration | Struct |  | 
|  | allow\$1promotion\$1codes | Booleano |  | 
|  | amount\$1subtotal | Inteiro |  | 
|  | amount\$1total | Inteiro |  | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1address\$1collection | String |  | 
|  | cancel\$1url | String |  | 
|  | client\$1reference\$1id | String |  | 
|  | consentimento | Struct |  | 
|  | consent\$1collection | Struct |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | currency | String |  | 
|  | custom\$1text | Struct |  | 
|  | customer | String |  | 
|  | customer\$1creation | String |  | 
|  | customer\$1details | Struct |  | 
|  | customer\$1email | String |  | 
|  | expires\$1at | DateTime |  | 
|  | fatura | String |  | 
|  | invoice\$1creation | Struct |  | 
|  | livemode | Booleano |  | 
|  | locale | String |  | 
|  | metadados | Struct |  | 
|  | modo | String |  | 
|  | payment\$1intent | String | = | 
|  | payment\$1link | String |  | 
|  | payment\$1method\$1collection | String |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | Lista |  | 
|  | payment\$1status | String |  | 
|  | phone\$1number\$1collection | Struct |  | 
|  | recovered\$1from | String |  | 
|  | setup\$1intent | String |  | 
|  | shipping\$1address\$1collection | Struct |  | 
|  | shipping\$1cost | Struct |  | 
|  | shipping\$1details | Struct |  | 
|  | shipping\$1options | Lista |  | 
|  | status | String |  | 
|  | submit\$1type | String |  | 
|  |  Assinatura | String |  | 
|  | success\$1url | String |  | 
|  | tax\$1id\$1collection | Struct |  | 
|  | total\$1details | Struct |  | 
|  | url | String |  | 
|  | ui\$1mode | String |  | 
| Notas de crédito |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | customer\$1balance\$1transaction | String |  | 
|  | discount\$1amount | Inteiro |  | 
|  | discount\$1amounts | Lista |  | 
|  | fatura | String | = | 
|  | lines | Struct |  | 
|  | livemode | Booleano |  | 
|  | memo | String |  | 
|  | metadados | Struct |  | 
|  | número | String |  | 
|  | out\$1of\$1band\$1amount | Inteiro |  | 
|  | pdf | String |  | 
|  | reason | String |  | 
|  | reembolso | String |  | 
|  | status | String |  | 
|  | subtotal | Inteiro |  | 
|  | subtotal\$1excluding\$1tax | Inteiro |  | 
|  | tax\$1amounts | Lista |  | 
|  | total | Inteiro |  | 
|  | total\$1excluding\$1tax | Inteiro |  | 
|  | type | String |  | 
|  | voided\$1at | DateTime |  | 
|  | amount\$1shipping | Inteiro |  | 
|  | effective\$1at | DateTime |  | 
|  | shipping\$1cost | Struct |  | 
| Cliente |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | address | Struct |  | 
|  | balance | Inteiro |  | 
|  | created | DateTime |  | 
|  | currency | String | =, >=, <=, <, > | 
|  | default\$1source | String |  | 
|  | delinquente | Booleano | = | 
|  | description | String |  | 
|  | discount | Struct |  | 
|  | email | String | = | 
|  | invoice\$1prefix | String |  | 
|  | invoice\$1settings | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | nome | String |  | 
|  | next\$1invoice\$1sequence | Inteiro |  | 
|  | phone | String |  | 
|  | preferred\$1locales | Lista |  | 
|  | envio | Struct |  | 
|  | tax\$1exempt | String |  | 
|  | test\$1clock | String |  | 
| Faturas |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | account\$1country | String |  | 
|  | account\$1name | String |  | 
|  | account\$1tax\$1ids | Lista |  | 
|  | amount\$1due | Inteiro |  | 
|  | amount\$1paid | Inteiro |  | 
|  | amount\$1remaining | Inteiro |  | 
|  | aplicação | String |  | 
|  | application\$1fee\$1amount | Inteiro |  | 
|  | attempt\$1count | Inteiro |  | 
|  | tentado | Booleano | = | 
|  | auto\$1advance | Booleano | = | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1reason | String |  | 
|  | cobrança | String |  | 
|  | collection\$1method | String | = | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | currency | String |  | 
|  | custom\$1fields | Lista |  | 
|  | customer | String | = | 
|  | customer\$1address | Struct |  | 
|  | customer\$1email | String |  | 
|  | customer\$1name | String |  | 
|  | customer\$1phone | String |  | 
|  | customer\$1shipping | Struct |  | 
|  | customer\$1tax\$1exempt | String |  | 
|  | customer\$1tax\$1ids | Lista |  | 
|  | default\$1payment\$1method | String |  | 
|  | default\$1source | String |  | 
|  | default\$1tax\$1rates | Lista |  | 
|  | description | String |  | 
|  | discount | Struct |  | 
|  | descontos | Lista |  | 
|  | due\$1date | DateTime | =, >=, <=, <, > | 
|  | ending\$1balance | Inteiro |  | 
|  | rodapé | String |  | 
|  | from\$1invoice | Struct |  | 
|  | hosted\$1invoice\$1url | String |  | 
|  | invoice\$1pdf | String |  | 
|  | last\$1finalization\$1error | Struct |  | 
|  | latest\$1revision | String |  | 
|  | lines | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | next\$1payment\$1attempt | DateTime |  | 
|  | número | String |  | 
|  | on\$1behalf\$1of | String |  | 
|  | pago | Booleano | = | 
|  | paid\$1out\$1of\$1band | Booleano |  | 
|  | payment\$1intent | String |  | 
|  | payment\$1settings | Struct |  | 
|  | period\$1end | DateTime | =, >=, <=, <, > | 
|  | period\$1start | DateTime | =, >=, <=, <, > | 
|  | post\$1payment\$1credit\$1notes\$1amount | Inteiro |  | 
|  | pre\$1payment\$1credit\$1notes\$1amount | Inteiro |  | 
|  | cotação | String |  | 
|  | receipt\$1number | String |  | 
|  | renderização | Struct |  | 
|  | rendering\$1options | Struct |  | 
|  | starting\$1balance | Inteiro |  | 
|  | statement\$1descriptor | String |  | 
|  | status | String | = | 
|  | status\$1transitions | Struct |  | 
|  |  Assinatura | String |  | 
|  | subscription\$1details | Struct |  | 
|  | subtotal | Inteiro | =, <, > | 
|  | subtotal\$1excluding\$1tax | Inteiro |  | 
|  | tax | Inteiro |  | 
|  | test\$1clock | String |  | 
|  | total | Inteiro | =, <, > | 
|  | total\$1discount\$1amounts | Lista |  | 
|  | total\$1excluding\$1tax | Inteiro |  | 
|  | total\$1tax\$1amounts | Lista |  | 
|  | transfer\$1data | Struct |  | 
|  | webhooks\$1delivered\$1at | DateTime |  | 
|  | automatically\$1finalizes\$1at | DateTime |  | 
|  | effective\$1at | DateTime |  | 
|  | issuer (emissor) | Struct |  | 
| Itens da fatura |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro | =, <, > | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | date | DateTime |  | 
|  | description | String |  | 
|  | descontável | Booleano |  | 
|  | descontos | Lista |  | 
|  | fatura | String | = | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | período | Struct |  | 
|  | planejar | Struct |  | 
|  | preço | Struct |  | 
|  | rateio | Booleano | = | 
|  | quantity | Inteiro |  | 
|  |  Assinatura | String |  | 
|  | subscription\$1item | String |  | 
|  | tax\$1rates | Lista |  | 
|  | test\$1clock | String |  | 
|  | unit\$1amount | Inteiro |  | 
|  | quantidade\$1unitária decimal | String |  | 
| Planos |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | active | Booleano | = | 
|  | aggregate\$1usage | String |  | 
|  | valor | Inteiro |  | 
|  | amount\$1decimal | String |  | 
|  | billing\$1scheme | String |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | currency | String | = | 
|  | intervalo | String | = | 
|  | interval\$1count | Inteiro |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | nickname | String |  | 
|  | product | String | = | 
|  | tiers\$1mode | String |  | 
|  | transform\$1usage | Struct |  | 
|  | trial\$1period\$1days | Inteiro | =, <, > | 
|  | usage\$1type | String |  | 
|  | medida | String |  | 
| Cotações |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | amount\$1subtotal | Inteiro |  | 
|  | amount\$1total | Inteiro |  | 
|  | aplicação | String |  | 
|  | application\$1fee\$1amount | Inteiro |  | 
|  | application\$1fee\$1percent | Duplo |  | 
|  | automatic\$1tax | Struct |  | 
|  | collection\$1method | String |  | 
|  | computado | Struct |  | 
|  | created | DateTime |  | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | default\$1tax\$1rates | Lista |  | 
|  | description | String |  | 
|  | descontos | Lista |  | 
|  | expires\$1at | DateTime |  | 
|  | rodapé | String |  | 
|  | from\$1quote | Struct |  | 
|  | cabeçalho | String |  | 
|  | fatura | String |  | 
|  | invoice\$1settings | Struct |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | número | String |  | 
|  | on\$1behalf\$1of | String |  | 
|  | status | String | = | 
|  | status\$1transitions | Struct |  | 
|  |  Assinatura | String |  | 
|  | subscription\$1data | Struct |  | 
|  | subscription\$1schedule | String |  | 
|  | test\$1clock | String |  | 
|  | total\$1details | Struct |  | 
|  | transfer\$1data | Struct |  | 
| Assinaturas |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | aplicação | String |  | 
|  | application\$1fee\$1percent | Duplo |  | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1cycle\$1anchor | DateTime |  | 
|  | billing\$1thresholds | Struct |  | 
|  | cancel\$1at | DateTime |  | 
|  | cancel\$1at\$1period\$1end | Booleano |  | 
|  | canceled\$1at | DateTime |  | 
|  | collection\$1method | String | = | 
|  | created | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | current\$1period\$1end | DateTime | =, >=, <= | 
|  | current\$1period\$1start | DateTime | =, >=, <= | 
|  | customer | String | = | 
|  | days\$1until\$1due | Inteiro |  | 
|  | default\$1payment\$1method | String |  | 
|  | default\$1source | String |  | 
|  | default\$1tax\$1rates | Lista |  | 
|  | description | String |  | 
|  | discount | Struct |  | 
|  | ended\$1at | DateTime |  | 
|  | itens | Struct |  | 
|  | latest\$1invoice | String |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | next\$1pending\$1invoice\$1item\$1invoice | DateTime |  | 
|  | pause\$1collection | Struct |  | 
|  | payment\$1settings | Struct |  | 
|  | pending\$1invoice\$1item\$1interval | Struct |  | 
|  | pending\$1setup\$1intent | String |  | 
|  | pending\$1update | Struct |  | 
|  | planejar | Struct |  | 
|  | quantity | Inteiro |  | 
|  | programar | String |  | 
|  | start\$1date | DateTime |  | 
|  | status | String | = | 
|  | test\$1clock | String |  | 
|  | transfer\$1data | Struct |  | 
|  | trial\$1end | DateTime |  | 
|  | trial\$1start | DateTime |  | 
| Itens de assinatura |  |  |  | 
|  | Id | String |  | 
|  | objeto | String |  | 
|  | billing\$1thresholds | Struct |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | metadados | Struct |  | 
|  | planejar | Struct |  | 
|  | preço | Struct |  | 
|  |  Assinatura | String |  | 
|  | tax\$1rates | Lista |  | 
|  | descontos | Lista |  | 
| Programa da assinatura |  |  |  | 
|  | objeto | String |  | 
|  | aplicação | String |  | 
|  | canceled\$1at | DateTime |  | 
|  | completed\$1at | DateTime |  | 
|  | created | DateTime |  | 
|  | current\$1phase | Struct |  | 
|  | customer | String | = | 
|  | default\$1settings | Struct |  | 
|  | end\$1behavior | String |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | phases | Lista |  | 
|  | released\$1at | DateTime |  | 
|  | released\$1subscription | String |  | 
|  | renewal\$1interval | String |  | 
|  | status | String |  | 
|  |  Assinatura | String |  | 
|  | test\$1clock | String |  | 
| Contas |  |  |  | 
|  | details\$1submitted | Booleano |  | 
|  | tos\$1acceptance | Struct |  | 
|  | type | String |  | 
|  | metadados | Struct |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | default\$1currency | String |  | 
|  | Capacidades | Struct |  | 
|  | charges\$1enabled | Booleano |  | 
|  | configurações | Struct |  | 
|  | requisitos | Struct |  | 
|  | payouts\$1enabled | Booleano |  | 
|  | future\$1requirements | Struct |  | 
|  | external\$1accounts | Struct |  | 
|  | controlador | Struct |  | 
|  | country | String |  | 
|  | email | String |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | business\$1profile | Struct |  | 
|  | business\$1type | String |  | 
|  | company | Struct |  | 
| Taxas de inscrição |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | conta | String |  | 
|  | valor | Inteiro | =, <, > | 
|  | amount\$1refunded | Inteiro | =, <, > | 
|  | aplicação | String |  | 
|  | balance\$1transaction | String |  | 
|  | cobrança | String | = | 
|  | created | DateTime |  | 
|  | currency | String |  | 
|  | livemode | Booleano |  | 
|  | originating\$1transaction | String |  | 
|  | reembolsado | Booleano | = | 
|  | reembolsos | Struct |  | 
|  | fee\$1source | Struct |  | 
| Especificações do país |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | default\$1currency | String |  | 
|  | supported\$1bank\$1account\$1currencies | Struct |  | 
|  | supported\$1payment\$1currencies | Lista |  | 
|  | supported\$1payment\$1methods | Lista |  | 
|  | supported\$1transfer\$1countries | Lista |  | 
|  | verification\$1fields | Struct |  | 
| Transferências |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | valor | Inteiro | =, <, > | 
|  | amount\$1reversed | Inteiro |  | 
|  | balance\$1transaction | String |  | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | currency | String | = | 
|  | description | String |  | 
|  | destination | String | = | 
|  | destination\$1payment | String |  | 
|  | livemode | Booleano |  | 
|  | metadados | Struct |  | 
|  | reversões | Struct |  | 
|  | revertido | Booleano |  | 
|  | source\$1transaction | String |  | 
|  | source\$1type | String |  | 
|  | transfer\$1group | String | = | 
| Avisos aantecipados de fraude |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | acionável | Booleano |  | 
|  | cobrança | String | = | 
|  | created | DateTime | =, >=, <=, <, > | 
|  | fraud\$1type | String |  | 
|  | livemode | Booleano |  | 
|  | payment\$1intent | String | = | 
| Tipos de relatórios |  |  |  | 
|  | id | String |  | 
|  | objeto | String |  | 
|  | data\$1available\$1end | DateTime |  | 
|  | data\$1available\$1start | DateTime |  | 
|  | default\$1columns | Lista |  | 
|  | livemode | Booleano |  | 
|  | nome | String |  | 
|  | updated | DateTime |  | 
|  | version | Inteiro |  | 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valor válido: `"2024-07-01T00:00:00.000Z"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela a seguir. 


| Entity Name | Campo de particionamento | Tipo de dado | 
| --- | --- | --- | 
| Equilibrar transações | created | DateTime | 
| Cobranças | created | DateTime | 
| Disputas | created | DateTime | 
| Links de arquivos | created | DateTime | 
| PaymentIntents | created | DateTime | 
| SetupIntents | created | DateTime | 
| Pagamentos | created | DateTime | 
| Reembolsos | created | DateTime | 
| Produtos | created | DateTime | 
| Preços | created | DateTime | 
| Cupons | created | DateTime | 
| Códigos de promoção | created | DateTime | 
| Alíquotas | created | DateTime | 
| Taxas de envio | created | DateTime | 
| Sessões | created | DateTime | 
| Notas de crédito | created | DateTime | 
| Cliente | created | DateTime | 
| Faturas | created | DateTime | 
| Planos | created | DateTime | 
| Assinaturas | created | DateTime | 
| Programa da assinatura | created | DateTime | 
| Contas | created | DateTime | 
| Taxas de inscrição | created | DateTime | 
| Transferências | created | DateTime | 
| Avisos aantecipados de fraude | created | DateTime | 

 **Exemplo** 

```
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"
    }
)
```

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

Estas são as opções de conexão do Stripe:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Stripe. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Stripe que você deseja usar. Exemplo: v1. 
+  `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. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Limitações
<a name="stripe-limitations"></a>

Estas são as limitações do conector do Stripe:
+  Somente o particionamento com base em campos é compatível com o conector. 
+  O particionamento com base em registros não compatível com o conector e não há provisão para a recuperação da contagem total de registros. 
+  O tipo de dados da chave primária é String. Portanto, o particionamento com base em Id não é compatível com o conector. 

# Criação de uma conta do Stripe e configuração da aplicação cliente
<a name="stripe-new-account-creation"></a>

**Criação de uma conta do Stripe**

1. Clique no link **https://dashboard.stripe.com/register**.

1. Digite seu e-mail, nome completo, senha e escolha **Criar conta**.

1. Depois de fazer login na conta, verifique a conta escolhendo **Abrir o Gmail**.

1. Verifique a conta clicando no link de verificação recebido por e-mail.

1. Depois de clicar em verificar endereço de e-mail, você será redirecionado para outra página

1. Depois de clicar em **Ativar pagamentos** para ativar a conta, ela será redirecionada para a página Ativar pagamentos (**https://dashboard.stripe.com/welcome**) e certifique-se de preencher todos os detalhes válidos. Depois disso, clique no botão **Continuar**.



**Criação de uma aplicação para desenvolvedores do Slack**

1. Faça login no [Stripe](https://dashboard.stripe.com/login).

1. Escolha **Desenvolvedores**, conforme exibido na parte superior da imagem abaixo.

1. Escolha **chaves de API** em Desenvolvedores.

1. Escolha **Revelar chave de teste** para obter as chaves de API.

# Conectar ao Teradata Vantage no AWS Glue Studio
<a name="connecting-to-data-teradata"></a>

 O AWS Glue oferece suporte integrado ao Teradata Vantage. O AWS Glue Studio fornece uma interface visual para conectar ao Teradata, criar trabalhos de integração de dados e executá-los no runtime Spark do AWS Glue Studio sem servidor. 

 O AWS Glue Studio cria uma conexão unificada para o Teradata Vantage. Para obter mais informações, consulte [Considerações](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Criar uma conexão Teradata Vantage](creating-teradata-connection.md)
+ [Criar um nó de origem do Teradata](creating-teradata-source-node.md)
+ [Criar um nó de destino do Teradata](creating-teradata-target-node.md)
+ [Opções avançadas](#creating-teradata-connection-advanced-options)

# Criar uma conexão Teradata Vantage
<a name="creating-teradata-connection"></a>

Para se conectar ao Teradata Vantage via AWS Glue, será necessário criar e armazenar suas credenciais do Teradata em um segredo do AWS Secrets Manager e, em seguida, associar esse segredo a uma conexão ao AWS Glue do Teradata.

**Pré-requisitos**:
+ Se você estiver acessando seu ambiente Teradata via Amazon VPC, configure a Amazon VPC para permitir que seu trabalho do AWS Glue se comunique com o ambiente Teradata. Recomendamos não acessar o ambiente Teradata via Internet pública.

  Na Amazon VPC, identifique ou crie uma **VPC**, uma **Sub-rede** e um **Grupo de segurança** que o AWS Glue usará durante a execução do trabalho. Além disso, você precisa garantir que a Amazon VPC esteja configurada para permitir o tráfego de rede entre sua instância do Teradata e esse local. Seu trabalho precisará estabelecer uma conexão TCP com a porta cliente do Teradata. Para obter mais informações sobre portas do Teradata, consulte a [Documentação do 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).

  Com base no layout da sua rede, a conectividade segura da VPC pode exigir alterações na Amazon VPC e em outros serviços de rede. Para obter mais informações sobre conectividade com a AWS, consulte [Opções de conectividade da AWS](https://docs.teradata.com/r/Teradata-VantageCloud-Enterprise/Get-Started/Connecting-Your-Environment/AWS-Connectivity-Options) na documentação da Teradata.

**Para configurar uma conexão AWS Glue Teradata:**

1. Em sua configuração do Teradata, identifique ou crie um usuário e a senha com os quais o AWS Glue se conectará, *teradataUser* e *teradataPassword*. Para obter mais informações, consulte [Visão geral da segurança do Vantage](https://docs.teradata.com/r/Configuring-Teradata-VantageTM-After-Installation/January-2021/Security-Overview/Vantage-Security-Overview) na documentação do Teradata.

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do Teradata. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `user` com o valor *teradataUsername*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `password` com o valor *teradataPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para a próxima etapa. 
   + Ao selecionar um **Tipo de conexão**, selecione Teradata.
   + Ao fornecer o **URL do JDBC**, forneça o URL da sua instância. Você também pode codificar certos parâmetros de conexão separados por vírgula no URL do JDBC. O URL deve estar de acordo com o seguinte formato: `jdbc:teradata://teradataHostname/ParameterName=ParameterValue,ParameterName=ParameterValue`

     Os parâmetros de URL compatíveis incluem:
     + `DATABASE`: o nome do banco de dados no host a ser acessado por padrão.
     + `DBS_PORT`: a porta do banco de dados usada para execução em uma porta não padrão.
   + Ao selecionar um **Tipo de credencial**, selecione **AWS Secrets Manager** e defina **Segredo da AWS** como *secretName*.

1. Nas seguintes situações, configurações adicionais podem ser necessárias:
   + 

     Para instâncias do Teradata hospedadas na AWS em uma Amazon VPC
     + Será necessário fornecer informações de conexão da Amazon VPC à conexão do AWS Glue que define suas credenciais de segurança do Teradata. Ao criar ou atualizar sua conexão, defina **VPC**, **Sub-rede** e **Grupos de segurança** em **Opções de rede**.

# Criar um nó de origem do Teradata
<a name="creating-teradata-source-node"></a>

## Pré-requisitos necessários
<a name="creating-teradata-source-node-prerequisites"></a>
+ Uma conexão AWS Glue Teradata Vantage configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão Teradata Vantage](creating-teradata-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do Teradata da qual você gostaria de ler, *tableName*, ou consultar *targetQuery*.

## Adicionar uma fonte de dados do Teradata
<a name="creating-teradata-source-node-add"></a>

**Para adicionar um nó de **Fonte de dados – Teradata**:**

1.  Escolha a conexão para sua fonte de dados do Teradata. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão**. Para mais informações, consulte a seção [Criar uma conexão Teradata Vantage](creating-teradata-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1.  Escolha uma opção de **Fonte de dados teradata**: 
   +  **Escolher uma única tabela**: acesse todos os dados de uma única tabela. 
   +  **Inserir consulta personalizada**: acesse um conjunto de dados de várias tabelas com base em sua consulta personalizada. 

1.  Se você escolheu uma única tabela, insira *tableName*. 

    Se você escolheu **Inserir consulta personalizada**, insira uma consulta SQL SELECT. 

1.  Em **Propriedades personalizadas do Teradata**, insira parâmetros e valores conforme necessário. 

# Criar um nó de destino do Teradata
<a name="creating-teradata-target-node"></a>

## Pré-requisitos necessários
<a name="creating-teradata-target-node-prerequisites"></a>
+ Uma conexão AWS Glue Teradata Vantage configurada com um segredo do AWS Secrets Manager, conforme descrito na seção anterior, [Criar uma conexão Teradata Vantage](creating-teradata-connection.md).
+ Permissões apropriadas em seu trabalho para ler o segredo usado pela conexão.
+ Uma tabela do Teradata na qual você gostaria de escrever, *tableName*.

## Adicionar um destino de dados do Teradata
<a name="creating-teradata-target-node-add"></a>

**Para adicionar um nó de **Destino de dados – Teradata**:**

1.  Escolha a conexão para sua fonte de dados do Teradata. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão com o Teradata**. Para obter mais informações, consulte [Visão geral do uso de conectores e conexões](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Configure o **nome da tabela** fornecendo o *tableName*.

1.  Em **Propriedades personalizadas do Teradata**, insira parâmetros e valores conforme necessário. 

## Opções avançadas
<a name="creating-teradata-connection-advanced-options"></a>

É possível fornecer opções avançadas ao criar um nó do Teradata. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte [Conexões do Teradata Vantage](aws-glue-programming-etl-connect-teradata-home.md). 

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

O Twilio fornece ferramentas de comunicação programáveis para fazer e receber chamadas telefônicas, enviar e receber mensagens de texto e realizar outras funções de comunicação usando suas APIs de serviços da Web. As APIs do Twilio alimentam sua plataforma de comunicações. Por trás dessas APIs há uma camada de software conectando e otimizando redes de comunicação em todo o mundo para permitir que seus usuários liguem e enviem mensagens para qualquer pessoa, globalmente. Como usuário do Twilio, é possível conectar o AWS Glue à sua conta do Twilio. Em seguida, será possível usar o Twilio como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Twilio e serviços da AWS ou outras aplicações com suporte.

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

# Suporte do AWS Glue para o Twilio
<a name="twilio-support"></a>

O AWS Glue oferece suporte ao Twilio da seguinte forma:

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

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

**Versões da API do Twilio com suporte**  
Há suporte para as seguintes versões da API do Twilio:
+ v1
+ 2010-04-01

# Políticas que contêm as operações de API para criar e usar conexões
<a name="twilio-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 Twilio
<a name="twilio-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Twilio com nome de usuário e senha.
+ Sua conta do Twilio está habilitada para acesso à API.

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

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

O Twilio oferece suporte a nome de usuário e senha para autenticação básica. A autenticação básica é um método de autenticação simples em que os clientes fornecem credenciais diretamente para acessar recursos protegidos. O AWS Glue é capaz de usar o nome de usuário (SID da conta) e a senha (token de autenticação) para autenticar as APIs do Twilio.

Para obter a documentação pública do Twilio para o fluxo de autenticação básica, consulte [Autenticação básica \$1 Twilio](https://www.twilio.com/docs/glossary/what-is-basic-authentication).

Para configurar uma conexão do Twilio:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes:
   + Para a autenticação básica: o segredo deve conter o segredo do consumidor da aplicação conectada com o **SID da conta** (nome de usuário) e o **Token de autenticação** (senha).
**nota**  
É 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 Twilio.

   1. Forneça o `[Edge\$1Location](https://www.twilio.com/docs/global-infrastructure/edge-locations)` da instância do Twilio à 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 Twilio
<a name="twilio-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Twilio do qual você deseja ler. Você precisará do nome do objeto, como `SMS-Message` ou `SMS-CountryPricing`.

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


| Entidade | Interface | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | --- | 
| SMS-Message | REST | Sim | Sim | Não | Sim | Sim | 
| SMS-CountryPricing | REST | Não | Não | Não | Sim | Não | 
| Voice-Call | REST | Sim | Sim | Não | Sim | Não | 
| Voice-Application | REST | Sim | Sim | Não | Sim | Não | 
| Voice-OutgoingCallerID | REST | Sim | Sim | Não | Sim | Não | 
| Voice-Queue | REST | Sim | Sim | Não | Sim | Não | 
| Conversations-Conversation | REST | Sim | Sim | Não | Sim | Não | 
| Conversations-User | REST | Não | Sim | Não | Sim | Não | 
| Conversas-Função | REST | Não | Sim | Não | Sim | Não | 
| Conversations-Configuration | REST | Não | Não | Não | Sim | Não | 
| Conversations-AddressConfiguration | REST | Sim | Sim | Não | Sim | Não | 
| Conversations-WebhookConfiguration | REST | Não | Não | Não | Sim | Não | 
| Conversations-ParticipantConversation | REST | Não | Não | Não | Sim | Não | 
| Conversations-Credential | REST | Não | Sim | Não | Sim | Não | 
| Conversations-ConversationService | REST | Não | Sim | Não | Sim | Não | 

**Exemplo:**

```
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"
    }
```

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

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

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

**Campos com suporte a particionamento**:

No Twilio, os campos de tipo de dados DateTime oferecem suporte ao particionamento baseado em campos.

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Datetime, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  "2024-05-01T20:55:02.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do Twilio:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Twilio.
+ `EDGE_LOCATION`(string): (obrigatório) um local da borda válido do Twilio.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Twilio que você deseja usar. O Twilio oferece suporte a duas versões de API: 'v1' e '2010-04-01'.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL` (String): (obrigatório) usado para leitura. Um URL válido da instância do Twilio.

# Limitações e notas do conector do Twilio
<a name="twilio-connector-limitations"></a>

Estas são as limitações ou notas do conector do Twilio:
+ Não há suporte para o particionamento com base em registros, e não há provisão para a recuperação da contagem total de registros do Twilio.
+ Os campos `date_sent`, `start_time` e `end_time` são do tipo de dados Datetime, mas, na filtragem, eles só oferecem suporte a valores de data (os componentes de hora não são considerados).
+ A filtragem dos campos "de" ou "para" funciona somente se os valores não incluírem nenhum prefixo (por exemplo, um protocolo ou rótulo). Se houver um prefixo, a filtragem do respectivo campo não funcionará. Por exemplo, se você passar "para": "whatsapp:\$114xxxxxxxxxx" como filtro, o Twilio não retornará uma resposta. Você precisa passá-lo como "para": "\$114xxxxxxxx", e então ele retornará os registros, se existirem.
+ O filtro de campo "identidade" é obrigatório ao consultar a entidade `conversation-participant-conversation`.

# Conectar ao Vertica no AWS Glue Studio
<a name="connecting-to-data-vertica"></a>

 O AWS Glue oferece suporte integrado ao Vertica. O AWS Glue Studio fornece uma interface visual para conectar ao Vertica, criar trabalhos de integração de dados e executá-los no runtime Spark do AWS Glue Studio sem servidor. 

 O AWS Glue Studio cria uma conexão unificada para o Vertica. Para obter mais informações, consulte [Considerações](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Criar uma conexão Vertica](creating-vertica-connection.md)
+ [Criar um nó de origem do Vertica](creating-vertica-source-node.md)
+ [Criar um nó de destino do Vertica](creating-vertica-target-node.md)
+ [Opções avançadas](#creating-vertica-connection-advanced-options)

# Criar uma conexão Vertica
<a name="creating-vertica-connection"></a>

**Pré-requisitos**:
+ Um bucket ou uma pasta do Amazon S3 para usar como armazenamento temporário ao ler e escrever no banco de dados, referido por *tempS3Path*.
**nota**  
Quando o Vertica é usado em pré-visualizações de dados de trabalhos do AWS Glue, os arquivos temporários podem não ser removidos automaticamente de *tempS3Path*. Para garantir a remoção de arquivos temporários, encerre diretamente a sessão de visualização de dados escolhendo **Encerrar sessão** no painel **Visualização de dados**.  
Se não for possível garantir que a sessão de visualização de dados seja encerrada diretamente, considere definir a configuração do ciclo de vida do Amazon S3 para remover dados antigos. Recomendamos remover dados com mais de 49 horas com base no runtime máximo do trabalho somado a uma margem. Para obter mais informações sobre a configuração do Amazon S3, consulte [Gerenciar o ciclo de vida do armazenamento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) na documentação do Amazon S3.
+ Uma política do IAM com permissões apropriadas para seu caminho do Amazon S3 que você pode associar ao seu perfil de trabalho do AWS Glue.
+ Se a sua instância do Vertica estiver em uma Amazon VPC, configure a Amazon VPC para permitir que seu trabalho do AWS Glue se comunique com a instância do Vertica sem que o tráfego passe pela Internet pública. 

  Na Amazon VPC, identifique ou crie uma **VPC**, **Sub-rede** e **Grupo de segurança** que o AWS Glue usará durante a execução do trabalho. Além disso, você precisa garantir que a Amazon VPC esteja configurada para permitir o tráfego de rede entre sua instância do Vertica e esse local. Seu trabalho precisará estabelecer uma conexão TCP com a porta cliente do Vertica (por padrão, 5433). Com base no layout da rede, isso pode exigir alterações em regras do grupo de segurança, ACLs de rede, gateways de NAT e conexões de emparelhamento.

**Para configurar uma conexão com o Vertica:**

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do Vertica, *verticaUsername* e *verticaPassword*. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `user` com o valor *verticaUsername*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `password` com o valor *verticaPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para a próxima etapa. 
   + Ao selecionar um **Tipo de conexão**, selecione Vertica.
   + Ao selecionar **Host do Vertica**, forneça o URL da sua instalação do Vertica.
   + Ao selecionar **Porta do Vertica**, a porta pela qual sua instalação do Vertica está disponível.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

1. Nas seguintes situações, configurações adicionais podem ser necessárias:
   + 

     Para instâncias do Teradata hospedadas na AWS em uma Amazon VPC
     + Forneça informações de conexão da Amazon VPC à conexão do AWS Glue que define suas credenciais de segurança do Vertica. Ao criar ou atualizar sua conexão, defina **VPC**, **Sub-rede** e **Grupos de segurança** em **Opções de rede**.

Será necessário realizar as seguintes etapas antes de executar seu trabalho do AWS Glue:
+ Conceda ao perfil do IAM associado ao seu trabalho do AWS Glue permissão para *tempS3Path*.
+ Conceda ao perfil do IAM associada ao seu trabalho do AWS Glue permissão para ler *secretName*.

# Criar um nó de origem do Vertica
<a name="creating-vertica-source-node"></a>

## Pré-requisitos necessários
<a name="creating-vertica-source-node-prerequisites"></a>
+ Uma conexão de Catálogo de Dados AWS Glue do tipo Vertica, *connectionName* e um local temporário do Amazon S3, *temps3Path*, conforme descrito na seção [Criar uma conexão Vertica](creating-vertica-connection.md) anterior.
+ Uma tabela do Vertica da qual você gostaria de ler, *tableName*, ou consultar *targetQuery*.

## Adicionar uma fonte de dados do Vertica
<a name="creating-vertica-source-node-add"></a>

**Para adicionar um nó de **Fonte de dados – Vertica**:**

1.  Escolha a conexão para sua fonte de dados do Vertica. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão do Vertica**. Para mais informações, consulte a seção [Criar uma conexão Vertica](creating-vertica-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Escolha o **Banco de dados** que contém sua tabela.

1. *Escolha a **Área de preparação no Amazon S3** e insira um URI do S3A para tempS3Path*.

1. Escolha a **Fonte do Vertica**.
   +  **Escolher uma única tabela**: acesse todos os dados de uma única tabela. 
   +  **Inserir consulta personalizada**: acesse um conjunto de dados de várias tabelas com base em sua consulta personalizada. 

1.  Se você escolheu uma única tabela, insira *tableName* e, opcionalmente, selecione um **Esquema**. 

    Se você escolheu **Inserir consulta personalizada**, insira uma consulta SQL SELECT e, opcionalmente, selecione um **Esquema**. 

1.  Em **Propriedades personalizadas do Vertica**, insira parâmetros e valores conforme necessário. 

# Criar um nó de destino do Vertica
<a name="creating-vertica-target-node"></a>

## Pré-requisitos necessários
<a name="creating-vertica-target-node-prerequisites"></a>
+ Uma conexão de Catálogo de Dados AWS Glue do tipo Vertica, *connectionName* e um local temporário do Amazon S3, *temps3Path*, conforme descrito na seção [Criar uma conexão Vertica](creating-vertica-connection.md) anterior.

## Adicionar um destino de dados do Vertica
<a name="creating-vertica-target-node-add"></a>

**Para adicionar um nó de **Destino de dados – Vertica**:**

1.  Escolha a conexão para sua fonte de dados do Vertica. Como você o criou, ele deve estar disponível no menu suspenso. Se precisar criar uma conexão, escolha **Criar conexão do Vertica**. Para mais informações, consulte a seção [Criar uma conexão Vertica](creating-vertica-connection.md) anterior. 

    Depois de escolher uma conexão, você pode visualizar as propriedades da conexão clicando em **Exibir propriedades**. 

1. Escolha o **Banco de dados** que contém sua tabela.

1. *Escolha a **Área de preparação no Amazon S3** e insira um URI do S3A para tempS3Path*.

1. Insira *tableName* e, opcionalmente, selecione um **Esquema**. 

1.  Em **Propriedades personalizadas do Vertica**, insira parâmetros e valores conforme necessário. 

## Opções avançadas
<a name="creating-vertica-connection-advanced-options"></a>

É possível fornecer opções avançadas ao criar um nó do Vertica. Essas opções são as mesmas disponíveis ao programar AWS Glue para scripts do Spark.

Consulte [Conexões do Vertica](aws-glue-programming-etl-connect-vertica-home.md).

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

O WooCommerce é uma solução de software flexível de código aberto criada para sites baseados em WordPress. É comumente usado para criar lojas de comércio eletrônico online. Com essa solução de software, qualquer pessoa pode transformar seu site comum em uma loja online totalmente funcional.

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

# Suporte do AWS Glue para o WooCommerce
<a name="woocommerce-support"></a>

O AWS Glue oferece suporte ao WooCommerce da seguinte forma:

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

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

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

# Políticas que contêm as operações de API para criar e usar conexões
<a name="woocommerce-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 WooCommerce
<a name="woocommerce-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do WooCommerce com um `consumerKey` e um `consumerSecret`.
+ Sua conta do WooCommerce tem acesso à API com uma licença válida.

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

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

O WooCommerce oferece suporte à autenticação personalizada. Para obter a documentação pública do WooCommerce sobre a geração das chaves de API necessárias para autorização personalizada, consulte [Autenticação – Documentação da API REST do WooCommerce](https://woocommerce.github.io/woocommerce-rest-api-docs/#authentication).

Para configurar uma conexão do WooCommerce:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes:
   + Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com `consumerKey` e `consumerSecret` como chaves. Observação: é preciso criar um segredo por conexão em 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 WooCommerce.

   1. Forneça o `INSTANCE_URL` da instância do WooCommerce à 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 WooCommerce
<a name="woocommerce-reading-from-entities"></a>

**Pré-requisito**

Um objeto do WooCommerce do qual você deseja ler. Você precisará do nome do objeto, como cupom, pedido, produto, etc.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Cupom | Sim | Sim | Sim | Sim | Sim | 
| Total do cupom | Não | Não | Não | Sim | Não | 
| Total de clientes | Não | Não | Não | Sim | Não | 
| Ordem | Sim | Sim | Sim | Sim | Sim | 
| Total de pedidos | Não | Não | Não | Sim | Não | 
| Gateway de pagamento | Não | Não | Não | Sim | Não | 
| Produto | Sim | Sim | Sim | Sim | Sim | 
| Atributo do produto | Sim | Sim | Sim | Sim | Sim | 
| Categoria do produto | Sim | Sim | Sim | Sim | Sim | 
| Análise do produto | Sim | Sim | Sim | Sim | Sim | 
| Classe de envio do produto | Sim | Sim | Sim | Sim | Sim | 
| Tag do produto | Sim | Sim | Sim | Sim | Sim | 
| Variação do produto | Sim | Sim | Sim | Sim | Sim | 
| Total de produtos | Não | Não | Não | Sim | Não | 
| Relatório (lista) | Não | Não | Não | Sim | Não | 
| Total de análises | Não | Não | Não | Sim | Não | 
| Relatório de vendas | Sim | Não | Não | Sim | Não | 
| Método de envio | Não | Não | Não | Sim | Não | 
| Zona de envio | Não | Não | Não | Sim | Não | 
| Localização da zona de envio | Não | Não | Não | Sim | Não | 
| Método da zona de envio | Não | Não | Não | Sim | Não | 
| Alíquota | Sim | Sim | Sim | Sim | Sim | 
| Classe fiscal | Não | Não | Não | Sim | Não | 
| Relatório dos mais vendidos | Sim | Não | Não | Sim | Não | 

**Exemplo:**

```
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"
    }
```

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/woocommerce-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="woocommerce-reading-partitioning-queries"></a>

**Particionamento com base em registros**:

É possível fornecer a opção adicional `NUM_PARTITIONS` do Spark se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.

No particionamento com base em registros, o número total de registros presentes é consultado na API do WooCommerce e dividido por um número `NUM_PARTITIONS` fornecido. O número resultante de registros é então buscado simultaneamente por cada subconsulta.
+ `NUM_PARTITIONS`: o número de partições.

As entidades a seguir oferecem suporte ao particionamento baseado em registros:
+ cupon
+ ordem
+ product
+ product-attribute
+ product-attribute-term
+ product-category
+ product-review
+ product-shipping-class
+ product-tag
+ product-variation
+ tax-rate

Exemplo:

```
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"
    }
```

**Particionamento com base em registros**:

A consulta original é dividida em `NUM_PARTITIONS` subconsultas que podem ser executadas pelas tarefas do Spark simultaneamente:
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

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

Estas são as opções de conexão do WooCommerce:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no WooCommerce.
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do WooCommerce que você deseja usar.
+ `REALM_ID`(string): um ID que identifica uma empresa individual do WooCommerce Online para a qual você envia solicitações.
+ `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.
+ `INSTANCE_URL`(string): (obrigatório) um URL de instância do WooCommerce válida com o formato: https://<instância>.wpcomstaging.com
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Conectar ao Zendesk
<a name="connecting-to-data-zendesk"></a>

O Zendesk é uma solução de gerenciamento de help desk baseada na nuvem que oferece ferramentas personalizáveis para criar um portal de atendimento ao cliente, uma base de conhecimento e comunidades on-line.

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

# Suporte do AWS Glue ao Zendesk
<a name="zendesk-support"></a>

O AWS Glue oferece suporte ao Zendesk da seguinte forma:

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

**Compatível como destino?**  
Não.

**Versões da API do Zendesk compatíveis**  
As seguintes versões da API do Zendesk são compatíveis
+ v2

# Políticas que contêm as operações de API para criar e usar conexões
<a name="zendesk-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 utilizar o método acima, 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.

# Configurar o Zendesk
<a name="zendesk-configuring"></a>

Para usar o AWS Glue para transferir dados do Zendesk, os seguintes requisitos deverão ser atendidos:

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

São requisitos mínimos:
+ Uma conta do Zendesk. Para obter mais informações, consulte [Criar uma conta do Zendesk](#zendesk-configuring-creating-account).
+ Sua conta do Zendesk está habilitada para acesso à API.
+ A conta do Zendesk permite a instalação de aplicações conectadas.

Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do Zendesk.

## Criar uma conta do Zendesk
<a name="zendesk-configuring-creating-account"></a>

Para criar uma conta do Zendesk:

1. Acesse https://www.zendesk.com/in/register/

1. Insira detalhes como seu e-mail de trabalho, nome, sobrenome, número de telefone, cargo, nome da empresa, número de funcionários na empresa, senha e idioma preferido. Em seguida, escolha **Concluir inscrição no teste**.

1. Depois que a conta for criada, clique no link de verificação que recebeu para verificar seu endereço de e-mail.

1. Assim que o endereço de e-mail profissional for verificado, você será redirecionado para sua conta do Zendesk. Escolha a opção **Comprar Zendesk** para seu plano preferido. Observação: para o conector Zendesk, recomenda-se comprar o plano Suite Enterprise.

## Criação de uma aplicação cliente e de credenciais do OAuth 2.0
<a name="zendesk-configuring-creating-client-app"></a>

Para criar uma aplicação cliente e credenciais do OAuth 2.0:

1. Faça login na conta do Zendesk na qual você deseja que a aplicação OAuth 2.0 seja criada https://www.zendesk.com/in/login/

1. Clique no ícone de engrenagem. Escolha o link **Ir para o centro de administração** para abrir a página do centro de administração.

1. Escolha **Aplicações e integrações** na barra lateral esquerda e, em seguida, selecione **APIs** > **API do Zendesk**.

1. Na página da API do Zendesk, escolha a guia **Clientes OAuth**.

1. Escolha **Adicionar cliente OAuth** no lado direito.

1. Preencha os seguintes campos para criar um cliente:

   1. Nome do cliente: insira um nome para sua aplicação. Esse é o nome que os usuários verão quando solicitados a conceder acesso à sua aplicação e quando verificarem a lista de aplicações de terceiros que têm acesso ao seu Zendesk.

   1. Descrição: opcional. Uma breve descrição da sua aplicação que os usuários verão quando solicitados a conceder acesso a ele.

   1. Empresa: opcional. O nome da empresa que os usuários verão quando solicitados a conceder acesso à sua aplicação. As informações podem ajudá-los a entender a quem estão concedendo acesso.

   1. Logotipo: opcional. O logotipo que os usuários verão quando solicitados a conceder acesso à sua aplicação. A imagem pode ser JPG, GIF ou PNG. Para obter melhores resultados, faça upload de uma imagem quadrada. Ela será redimensionada para a página de autorização.

   1. Identificador exclusivo: o campo é preenchido automaticamente com uma versão reformatada do nome que você inseriu para a aplicação. Você pode alterá-lo, se desejar.

   1. URLs de redirecionamento: insira o URL ou URLs que o Zendesk deve usar para enviar a decisão do usuário de conceder acesso à sua aplicação.

      Por exemplo: https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Clique em **Salvar**.

1. Depois que a página for atualizada, um novo campo **Segredo** pré-preenchido aparecerá na parte inferior. Esse é o valor de "client\$1secret" definido na especificação do OAuth2. Copie o valor do segredo para a sua área de transferência e salve-o em um lugar seguro. Observação: os caracteres podem ultrapassar a largura da caixa de texto, portanto, certifique-se de selecionar tudo antes de copiar.

1. Clique em **Salvar**.

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

O conector do Zendesk oferece suporte ao tipo de concessão de código de autorização.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O usuário que estiver criando uma conexão pode, por padrão, contar com uma aplicação conectada pertencente ao AWS Glue (aplicação cliente gerenciada pelo AWS Glue), na qual ele não precisa fornecer quaisquer informações relacionadas ao OAuth, exceto o URL da instância do Zendesk. O console do AWS Glue redirecionará o usuário para o Zendesk, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Zendesk.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Zendesk e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, você ainda será redirecionado para o Zendesk para fazer login e autorizar o acesso do AWS Glue aos seus recursos.
+ Esse tipo de concessão resulta em um token de acesso. O token de acesso nunca expira.

Para obter a documentação pública do Zendesk sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Tokens do OAuth para tipos de concessão](https://developer.zendesk.com/api-reference/ticketing/oauth/grant_type_tokens/).

Para configurar uma conexão do Zendesk:

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

   1. Para o tipo de concessão AuthorizationCode: para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter o segredo do consumidor da aplicação conectada com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`.

   1. Nota: é preciso criar um segredo por conexão em 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 Zendesk.

   1. Forneça o INSTANCE\$1URL do Zendesk ao qual deseja se conectar.

   1. Forneça o ambiente do Zendesk.

   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 Zendesk
<a name="zendesk-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Zendesk-do qual você deseja ler. Você precisará do nome do objeto, como tíquete, usuário ou artigo, conforme mencionado na tabela a seguir.


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Tíquete | S | S | S | S | N | 
| Usuário | S | S | S | S | N | 
| Organização | S | S | S | S | N | 
| Artigo | S | S | N | S | N | 
| Evento do tíquete | S | S | N | S | N | 
| Evento de métrica do tíquete | S | S | N | S | N | 
| Comentário do tíquete | S | S | S | S | N | 
| Campo do tíquete | S | S | N | S | N | 
| Métrica do tíquete | S | S | N | S | N | 
| Atividade do tíquete | S | S | N | S | N | 
| Ignorar tíquete | N | S | N | S | N | 
| Grupo | S | S | S | S | N | 
| Associação a grupos | N | S | S | S | N | 
| Classificação de satisfação | S | S | N | S | N | 
| Visualizar | S | S | S | S | N | 
| Trigger | S | S | S | S | N | 
| Categoria do gatilho | N | S | S | S | N | 
| Macro | S | S | S | S | N | 
| Automação | N | S | S | S | N | 

**Exemplo:**

```
Zendesk_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Zendesk",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v2"
    }
```

**Detalhes das entidades e dos campos do Zendesk**:

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

**nota**  
Os tipos de dados Struct e List são convertidos no tipo de dados String na resposta do conector.

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

Não há suporte para partições no Zendesk.

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

Estas são as opções de conexão do Zendesk:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Zendesk.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Zendesk que você deseja usar. Por exemplo: v2.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto. Por exemplo: id, nome, url, created\$1at
+ `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL. Por exemplo: group\$1id = 100
+ `QUERY`(string): padrão: vazio. Usado para leitura. Consulta completa do Spark SQL. Por exemplo: "SELECT id, url FROM users WHERE role=\$1"end-user\$1""
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. O campo padrão é `update_at` para entidades que oferecem suporte à API de exportação incremental (`created_at` para `ticket-events` e `time` para `ticket-metric-events`).
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. Opcional: essa opção será tratada pelo conector se não for fornecida na opção de trabalho. Valor padrão: "2024-05-01T20:55:02.000Z"
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. Opcional: essa opção será tratada pelo conector se não for fornecida na opção de trabalho. Valor padrão: 1.
+ `IMPORT_DELETED_RECORDS`(string): (padrão): FALSE. Usado para leitura. Para obter os registros excluídos durante a consulta.
+ `ACCESS_TOKEN`: token de acesso a ser usado na solicitação.
+ `INSTANCE_URL`: URL da instância em que o usuário deseja executar as operações. Por exemplo: https://yoursubdomain.zendesk.com

# Limitações
<a name="zendesk-limitations"></a>

São limitações do conector do Zendesk:
+ A paginação baseada em offset limita o número de páginas que podem ser buscadas a 100, mas seu uso não é recomendado, pois o número total de registros que podem ser buscados é 10.000. No entanto, a paginação baseada em cursor implementada para o conector Zendesk consegue superar essa limitação. Somente o operador de filtro EQUAL\$1TO é compatível com a API do Zendesk.

  Em função dessa limitação, não há suporte a particionamento pelo conector Zendesk.
+ Para a entidade "Evento de tíquete", o limite de taxa é de 10 solicitações por minuto. Ao executar uma tarefa de ETL do AWS Glue, você pode receber um erro 429 (excesso de solicitações).

# Conexão com o Zoho CRM
<a name="connecting-to-data-zoho-crm"></a>

O Zoho CRM atua como um repositório único para reunir as atividades de vendas, marketing e atendimento ao cliente e simplificar processos, políticas e pessoas em uma única plataforma. O Zoho CRM pode ser facilmente personalizado para atender às necessidades específicas de empresas de qualquer tipo e tamanho.

A plataforma de desenvolvedores do Zoho CRM oferece a combinação certa de ferramentas low-code e pro-code para que negócios/empresas automatizem o trabalho, integrem dados em toda a pilha corporativa e criem soluções personalizadas para a Web e dispositivos móveis.

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

# Suporte do AWS Glue ao Zoho CRM
<a name="zoho-crm-support"></a>

O AWS Glue oferece suporte ao Zoho CRM da seguinte maneira:

**Compatível como fonte?**  
Sim: SYNC e ASYNC. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Zoho CRM.

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

**Versões compatíveis da API do Zoho CRM**  
As seguintes versões da API do Zoho CRM são compatíveis:
+ v7

# Políticas que contêm as operações de API para criar e usar conexões
<a name="zoho-crm-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 Zoho CRM
<a name="zoho-crm-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Zoho CRM, você precisa atender aos seguintes requisitos:

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

Estes são os requisitos mínimos:
+ Ter uma conta do Zoho CRM.
+ A conta do Zoho CRM precisa estar habilitada para acesso à API.
+ Ter um cliente de API registrado no console da API para obter as credenciais do OAuth.

# Configuração de conexões do Zoho CRM
<a name="zoho-crm-configuring-connections"></a>

O tipo de concessão determina como o AWS Glue se comunica com o Zoho CRM para solicitar acesso aos seus dados. A escolha afeta os requisitos que você deve atender antes de criar a conexão. O Zoho CRM só é compatível com o tipo de concessão AUTHORIZATION\$1CODE para OAuth 2.0.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O console do AWS Glue redirecionará o usuário para o Zoho CRM, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo Glue acessem a instância do Zoho CRM.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Zoho CRM e fornecer os próprios ID de cliente, URL de autorização, URL de token e URL de instância quando criarem conexões por meio do Console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Zoho CRM para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso permanecerá válido por uma hora e poderá ser atualizado automaticamente sem a interação do usuário por meio do token de atualização.
+ Para obter a documentação pública do Zoho CRM sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Autenticação](https://www.zoho.com/crm/developer/docs/api/v7/oauth-overview.html).

Para configurar uma conexão do Zoho CRM:

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**, selecione Zoho CRM.

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

   1. Forneça o ID do cliente da aplicação cliente do usuário.

   1. Selecione o **URL de autorização** apropriado no menu suspenso.

   1. Selecione o **URL do token** apropriado no menu suspenso.

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

1. Na configuração do trabalho do AWS Glue, forneça `connectionName` como uma **Conexão de rede adicional**.

# Leitura de entidades do Zoho CRM
<a name="zoho-crm-reading-from-entities"></a>

**Pré-requisito**

Objetos do Zoho CRM dos quais você deseja ler. Você precisará do nome do objeto.

**Entidades compatíveis com a fonte de Sync**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Produto | Sim | Sim | Sim | Sim | Sim | 
| Cotação | Sim | Sim | Sim | Sim | Sim | 
| Ordem de compra | Sim | Sim | Sim | Sim | Sim | 
| Solução | Sim | Sim | Sim | Sim | Sim | 
| Chame | Sim | Sim | Sim | Sim | Sim | 
| Tarefa | Sim | Sim | Sim | Sim | Sim | 
| Event | Sim | Sim | Sim | Sim | Sim | 
| Fatura | Sim | Sim | Sim | Sim | Sim | 
| Conta | Sim | Sim | Sim | Sim | Sim | 
| Contato | Sim | Sim | Sim | Sim | Sim | 
| Fornecedor | Sim | Sim | Sim | Sim | Sim | 
| Campaign | Sim | Sim | Sim | Sim | Sim | 
| Oferta | Sim | Sim | Sim | Sim | Sim | 
| Lead | Sim | Sim | Sim | Sim | Sim | 
| Módulo personalizado | Sim | Sim | Sim | Sim | Sim | 
| Ordem de venda | Sim | Sim | Sim | Sim | Sim | 
| Catálogos de preços | Sim | Sim | Sim | Sim | Sim | 
| Caso | Sim | Sim | Sim | Sim | Sim | 

**Exemplo:**

```
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 compatíveis com a fonte de ASYNC**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Produto | Sim | Não | Não | Sim | Não | 
| Cotação | Sim | Não | Não | Sim | Não | 
| Ordem de compra | Sim | Não | Não | Sim | Não | 
| Solução | Sim | Não | Não | Sim | Não | 
| Chame | Sim | Não | Não | Sim | Não | 
| Tarefa | Sim | Não | Não | Sim | Não | 
| Event | Sim | Não | Não | Sim | Não | 
| Fatura | Sim | Não | Não | Sim | Não | 
| Conta | Sim | Não | Não | Sim | Não | 
| Contato | Sim | Não | Não | Sim | Não | 
| Fornecedor | Sim | Não | Não | Sim | Não | 
| Campaign | Sim | Não | Não | Sim | Não | 
| Oferta | Sim | Não | Não | Sim | Não | 
| Lead | Sim | Não | Não | Sim | Não | 
| Módulo personalizado | Sim | Não | Não | Sim | Não | 
| Ordem de venda | Sim | Não | Não | Sim | Não | 
| Catálogos de preços | Sim | Não | Não | Sim | Não | 
| Caso | Sim | Não | Não | Sim | Não | 

**Exemplo:**

```
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"
    }
```

**Detalhes dos campos do Zoho CRM**:

O Zoho CRM fornece endpoints para a busca de metadados de forma dinâmica para entidades compatíveis. Portanto, o suporte do operador é capturado no nível do tipo de dados.

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

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

O particionamento não é compatível no modo ASYNC.

**Particionamento baseado em filtro (modo SYNC)**:

É possível fornecer as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`: um valor limite inferior **inclusivo** do campo de partição escolhido.

  No campo Datetime, aceitamos o formato de carimbo de data/hora do Spark usado em consultas SQL do Spark.

  Exemplos de valores válidos:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: um valor limite superior **exclusivo** do campo de partição escolhido.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
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"
    }
```

# Opções de conexão do Zoho CRM
<a name="zoho-crm-connection-options"></a>

Estas são as opções de conexão do Zoho CRM:
+ `ENTITY_NAME` (String): (obrigatório) usado para leitura. O nome do seu objeto no Zoho CRM.
+ `API_VERSION` (String): (obrigatório) usado para leitura. Versão da API Rest do Zoho CRM que você deseja usar.
+ `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.
+ `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta.
+ `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido.
+ `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.
+ `INSTANCE_URL` (String): (obrigatório) usado para leitura. Um URL válido da instância do Zoho CRM.
+ `TRANSFER_MODE` (String): usado para indicar se a consulta deve ser executada no modo ASYNC.

# Limitações e notas do conector do Zoho CRM
<a name="zoho-crm-connector-limitations"></a>

Estas são as limitações ou notas do conector do Zoho CRM:
+ Com a versão v7 da API, você pode buscar no máximo 100 mil registros. Consulte a [documentação do Zoho](https://www.zoho.com/crm/developer/docs/api/v7/get-records.html).
+ Para a entidade Evento, o rótulo “Reunião” é exibido conforme mencionado na [documentação do Zoho](https://www.zoho.com/crm/developer/docs/api/v7/modules-api.html).
+ Na funcionalidade Selecionar tudo:
  + Você pode buscar no máximo 50 campos de SaaS para as chamadas GET e POST.
  + Se você quiser ter dados para algum campo específico que não pertença aos primeiros 50 campos, precisará fornecer manualmente a lista dos campos selecionados.
  + Se mais de 50 campos forem selecionados, todos os campos além dos 50 campos serão removidos e conterão dados nulos no Amazon S3. 
  + No caso de uma expressão de filtro, se a lista de 50 campos fornecida pelo usuário não incluir “id” e “Created\$1Time”, uma exceção personalizada será gerada para solicitar que o usuário inclua estes campos.
+ Os operadores de filtro podem variar de campo para campo, apesar de terem o mesmo tipo de dados. Portanto, você deve especificar manualmente um operador diferente para qualquer campo que acione um erro na plataforma SaaS. 
+ Na funcionalidade Classificar por:
  + Os dados só podem ser classificados por um único campo sem uma expressão de filtro, ao passo que os dados podem ser classificados por vários campos quando uma expressão de filtro é aplicada.
  + Se nenhuma ordem de classificação for especificada para o campo selecionado, os dados serão recuperados em ordem crescente, por padrão. 
+ As regiões compatíveis com o conector do Zoho CRM são EUA, Europa, Índia, Austrália e Japão.
+ [Limitações](https://www.zoho.com/crm/developer/docs/api/v7/bulk-read/limitations.html) da funcionalidade de leitura assíncrona:
  + Limite, ordenar por e particionamento não são compatíveis no modo ASYNC. 
  + No modo ASYNC, podemos transferir dados de até 500 páginas com 200 mil registros por página.
  + Em um intervalo de um minuto, somente dez solicitações podem ser baixadas. Quando você excede o limite de download, o sistema retorna um erro HTTP 429 e pausa todas as solicitações de download por um minuto antes que o processamento possa continuar.
  + Depois de concluir o trabalho em massa, você poderá acessar o arquivo para download somente por um dia. Depois disso, você não poderá acessar o arquivo via endpoints.
  + Um máximo de 200 campos selecionados podem ser fornecidos por um endpoint. Se você especificar mais de 200 campos selecionados em um endpoint, o sistema exportará automaticamente todos os campos disponíveis para esse módulo.
  + Os campos externos criados em qualquer módulo não são compatíveis com as APIs de leitura em massa.
  + A classificação e as cláusulas `Group_by` não são compatíveis via esse endpoint da API.
  + Os valores dos campos com dados de saúde confidenciais serão recuperados somente quando a opção **Restringir acesso a dados por meio da API** nas configurações de conformidade estiver **desabilitada**. Se a opção estiver habilitada, o valor ficará **vazio** no resultado.
  + Limites de filtragem e critérios
    + O número máximo de critérios que podem ser usados em uma consulta é 25.
    + A filtragem e os critérios em campos de texto de várias linhas não são compatíveis.

# Conexão com o Zoom Meetings
<a name="connecting-to-data-zoom-meetings"></a>

O Zoom Meetings é uma plataforma de videoconferência baseada em nuvem que pode ser usada para reuniões de videoconferência, audioconferência, webinars, gravações de reuniões e bate-papo ao vivo.

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

# Suporte do AWS Glue para o Zoom Meetings
<a name="zoom-meetings-support"></a>

O AWS Glue oferece suporte ao Zoom Meetings da seguinte forma:

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

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

**Versões da API do Zoom Meetings com suporte**  
Versões da API do Zoom Meetings com suporte:
+ v2

# Políticas que contêm as operações de API para criar e usar conexões
<a name="zoom-meetings-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 Zoom Meetings
<a name="zoom-meetings-configuring"></a>

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

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

Estes são os requisitos mínimos:
+ Você tem uma conta do Zoom Meetings.
+ Sua conta do Zoom precisa estar habilitada para acesso à API.
+ Você criou uma aplicação OAuth2 na sua conta do Zoom Meetings. Essa integração fornece as credenciais que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Configuração da aplicação cliente do Zoom Meetings](zoom-meetings-configuring-client-app.md).

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

# Configuração da aplicação cliente do Zoom Meetings
<a name="zoom-meetings-configuring-client-app"></a>

1. Faça login no Zoom App Marketplace.

1. Escolha **Desenvolver**>**Criar aplicação**.

1. Escolha **Aplicação geral** para uma aplicação baseada em OAuth 2.0.

1. Na página **Informações básicas**, adicione ou atualize informações sobre a aplicação, como o nome da aplicação, como a aplicação é gerenciada, as credenciais da aplicação e as informações do OAuth.

1. Na seção **Selecionar como a aplicação é gerenciada**, confirme como você deseja que sua aplicação seja gerenciada:

   1. **Gerenciada por administrador**: administradores da conta adicionam e gerenciam a aplicação

   1. **Gerenciada pelo usuário**: usuários individuais adicionam e gerenciam a aplicação. A aplicação tem acesso somente aos dados autorizados do usuário.

1. **Credenciais da aplicação**: o fluxo de criação gera automaticamente as credenciais da aplicação (ID do cliente e segredo do cliente) para sua aplicação.

1. Na seção Informações do OAuth, configure o OAuth para a sua aplicação.

   1. **URL de redirecionamento do OAuth** (obrigatório): insira seu URL de redirecionamento ou endpoint para configurar o OAuth entre sua aplicação e o Zoom.

   1. **Usar URL de modo estrito** (opcional)

   1. **Verificação de subdomínio** (opcional)

   1. **Listas de permissão do OAuth** (obrigatório): adicione quaisquer URLs exclusivos que o Zoom deva permitir como redirecionamentos válidos para seus fluxos do OAuth.

1. Na página **Escopos**, selecione os métodos da API do Zoom que sua aplicação tem permissão para chamar. Os escopos definem quais informações e recursos estão disponíveis para seu usuário. Selecione os seguintes escopos granulares:
   + 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

   Depois que os escopos forem adicionados, escolha **Continuar** e a aplicação estará pronta para uso.

Para obter mais informações sobre a configuração do OAuth 2.0, consulte [Integrações (aplicações OAuth](https://developers.zoom.us/docs/integrations/)).

# Configuração das conexões do Zoom Meetings
<a name="zoom-meetings-configuring-connections"></a>

O Zoom Meetings oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2. O tipo de concessão determina como o AWS Glue se comunica com o Zoom Meetings para solicitar acesso aos seus dados.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O usuário que está criando uma conexão precisa fornecer informações relacionadas ao OAuth, como ID do cliente e segredo do cliente, para sua aplicação cliente do Zoom Meetings. O console do AWS Glue redirecionará o usuário para o Zoom, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Zoom Meetings.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Zoom Meetings e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Zoom Meetings para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Zoom Meetings sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Uso do OAuth 2.0](https://developers.zoom.us/docs/api/using-zoom-apis/#using-oauth-20).

Para configurar uma conexão do Zoom Meetings:

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

   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 Zoom Meetings.

   1. Forneça o ambiente do Zoom Meetings ao qual 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 Zoom Meetings
<a name="zoom-meetings-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Zoom Meetings do qual você deseja ler. Você precisará do nome do objeto, como `Group` ou `Zoom Rooms`.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Zoom Rooms | Não | Sim | Não | Sim | Não | 
| Grupo | Não | Não | Não | Sim | Não | 
| Membro do grupo | Sim | Sim | Não | Sim | Não | 
| Administrador do grupo | Não | Sim | Não | Sim | Não | 
| Relatório (diário) | Sim | Não | Não | Sim | Não | 
| Perfis | Não | Não | Não | Sim | Não | 
| Usuários | Sim | Sim | Não | Sim | Não | 

**Exemplo:**

```
zoom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="zoom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v2"
    }
)
```

**Detalhes de entidade e campo do Zoom Meetings**:

O Zoom Meetings carrega dinamicamente os campos disponíveis na entidade selecionada. Dependendo do tipo de dados de campo, ele é compatível com os operadores de filtro a seguir.

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

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

O Zoom Meetings oferece suporte ao particionamento baseado em filtros ou ao particionamento baseado em registros.

# Opções de conexão do Zoom Meetings
<a name="zoom-meetings-connection-options"></a>

Estas são as opções de conexão do Zoom Meetings:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome da entidade do Zoom Meetings. Por exemplo, .`group`
+ `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Zoom Meetings que você deseja usar. O valor será `v2`, pois o Zoom Meetings atualmente oferece suporte somente à versão v2.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Uma lista de colunas separadas por vírgula que você deseja selecionar para a entidade selecionada.
+ `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 Zoom Meetings
<a name="zoom-meetings-limitations"></a>

A seguir estão as limitações ou notas do Zoom Meetings:
+ O Zoom Meetings não oferece suporte para orderby.
+ O Zoom Meetings não oferece suporte ao particionamento baseado em filtros, pois não há nenhum campo que possa satisfazer aos critérios exigidos.
+ O Zoom Meetings não oferece suporte ao particionamento baseado em registros, pois não há suporte para o limite de paginação e a paginação baseada em offset.

# Adicionar uma conexão JDBC usando seus próprios drivers JDBC
<a name="console-connections-jdbc-drivers"></a>

 Você pode usar seu próprio driver JDBC quando usar uma conexão JDBC. Quando o driver padrão utilizado pelo crawler do AWS Glue não consegue se conectar a um banco de dados, você pode usar seu próprio driver JDBC. Por exemplo, se quiser usar o SHA-256 com seu banco de dados Postgres e os drivers postgres mais antigos não forem compatíveis, você poderá usar seu próprio driver JDBC. 

## Fontes de dados compatíveis
<a name="w2aac25c27d135b5"></a>


| Fontes de dados compatíveis | Fontes de dados não compatíveis | 
| --- | --- | 
| MySQL | Snowflake | 
| Postgres |  | 
| Oracle |  | 
| Redshift |  | 
| SQL Server |  | 
| Aurora\$1 |  | 

 \$1Compatível se o driver JDBC nativo estiver sendo usado. Nem todos os recursos do driver podem ser aproveitados. 

## Adicionar um driver JDBC a uma conexão JDBC
<a name="w2aac25c27d135b9"></a>

**nota**  
 Se você optar por trazer suas próprias versões do driver JDBC, os crawlers do AWS Glue consumirão recursos em trabalhos do AWS Glue e buckets do Amazon S3 para garantir que o driver fornecido seja executado em seu ambiente. O uso adicional de recursos será refletido em sua conta. O custo dos crawlers e trabalhos do AWS Glue se enquadram na categoria do AWS Glue para cobrança. Além disso, fornecer seu próprio driver JDBC não significa que o crawler seja capaz de aproveitar todos os atributos do driver. 

**Para adicionar uma conexão JDBC a uma conexão JDBC:**

1.  Adicione o arquivo do driver JDBC a um local do Amazon S3. Você pode criar um bucket e/ou uma pasta ou usar os já existentes. 

1.  No console do AWS Glue, escolha **Conexões** no menu à esquerda em **Catálogo de dados** e crie uma nova conexão. 

1.  Preencha os campos para **Propriedades da conexão** e escolha JDBC como **Tipo de conexão**. 

1.  *Em **Acesso à conexão**, insira a **URL do JDBC** e o **Nome da classe do driver JDBC**, opcional*. O nome da classe do driver deve ser para uma fonte de dados compatível com os crawlers do AWS Glue.   
![\[A captura de tela mostra uma fonte de dados com o JDBC selecionado e uma conexão na janela Adicionar fonte de dados.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/add-connection-connection-access.png)

1.  *Escolha o caminho do Amazon S3 em que o driver JDBC está localizado em **Caminho do Amazon S3 do driver JDBC**, campo opcional*. 

1.  Preencha os campos de Tipo de credencial se estiver inserindo um nome de usuário e senha ou segredo. Ao concluir, escolha **Criar conexão**. 
**nota**  
 O teste de conexão não é compatível atualmente. Ao fazer crawling na fonte de dados com um driver JDBC que você forneceu, o crawler pula essa etapa. 

1.  Adicione a conexão recém-criada a um crawler. No console do AWS Glue, escolha **Crawlers** no menu esquerdo em **Catálogo de dados** e crie um novo crawler. 

1.  No assistente **Adicionar crawler**, na etapa 2, escolha **Adicionar uma fonte de dados**.   
![\[A captura de tela mostra uma fonte de dados com o JDBC selecionado e uma conexão na janela Adicionar fonte de dados.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/add-crawler-add-data-source.png)

1.  Escolha **JDBC** como fonte de dados e escolha a conexão que foi criada nas etapas anteriores. Completo 

1.  Para usar seu próprio driver JDBC com um crawler do AWS Glue, adicione as seguintes permissões ao perfil usado pelo crawler:
   +  Conceda permissões para as seguintes ações: `CreateJob`, `DeleteJob`, `GetJob`, `GetJobRun`, `StartJobRun`. 
   +  Conceda permissões para as ações do IAM: `iam:PassRole` 
   +  Conceda permissões para as ações do Amazon S3: `s3:DeleteObjects`, `s3:GetObject`, `s3:ListBucket`, `s3:PutObject`. 
   +  Conceda acesso de entidade principal de serviço a bucket/pasta na política do IAM. 

    Exemplo de política do IAM: 

------
#### [ 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"
         ]
       }
     ]
   }
   ```

------

    O crawler do AWS Glue cria duas pastas: \$1glue\$1job\$1crawler e \$1crawler.

   Se o arquivo jar do driver estiver localizado na pasta `s3://amzn-s3-demo-bucket/driver.jar"`, adicione os seguintes recursos: 

   ```
   "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket/_glue_job_crawler/*",
     		 "arn:aws:s3:::amzn-s3-demo-bucket/_crawler/*"
               ]
   ```

   Se o arquivo jar do driver estiver localizado na pasta `s3://amzn-s3-demo-bucket/tmp/driver/subfolder/driver.jar"`, adicione os seguintes recursos: 

   ```
   "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket/tmp/_glue_job_crawler/*",
     		"arn:aws:s3:::amzn-s3-demo-bucket/tmp/_crawler/*"
               ]
   ```

1.  Se você estiver usando uma VPC, deverá permitir o acesso ao endpoint do AWS Glue criando o endpoint de interface e adicionando-o à sua tabela de rotas. Para obter mais informações, consulte [Creating an interface VPC endpoint for AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/vpc-interface-endpoints.html#vpc-endpoint-create) 

1.  Ao usar a criptografia no catálogo de dados, crie o endpoint de interface do AWS KMS e adicione-o à tabela de rotas. Para obter mais informações, consulte [Creating a VPC endpoint for AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html#vpce-create-endpoint). 