# Conectores SaaS nativos do Glue: contra AppFlow, zero-ETL e código próprio

O AWS Glue ganhou 100 conectores nativos para SaaS e APIs REST, de Adyen e Xero a PagerDuty e Anthropic, no Glue 5.0 ou superior. Para mim, a pergunta não é se o conector funciona. É quem mantém o incremental, o segredo e a reconciliação daqui a três anos. Comparo quatro caminhos e digo onde cada um vale a pena.

- URL: https://fernando.moretes.com/blog/conectores-saas-nativos-do-glue-contra-appflow-zero-etl-e-codigo

- Markdown: https://fernando.moretes.com/blog/conectores-saas-nativos-do-glue-contra-appflow-zero-etl-e-codigo/article.md?lang=pt

- Published: 2026-11-10T10:13:59.817Z

- Category: Dados & Plataformas

- Tags: aws-glue, saas-ingestion, data-platform, finops, appflow, zero-etl, payments

- Reading time: 6 min

- Source: [AWS Glue adds 100 new native connectors for popular SaaS applications](https://aws.amazon.com/about-aws/whats-new/2026/11/aws-glue-adds-100-new-native-connectors/)

---

Em 9 de novembro de 2026 a AWS anunciou 100 novos conectores nativos no AWS Glue para aplicações SaaS e APIs REST: pagamentos (Adyen, Square, Checkout.com), contabilidade (Xero, QuickBooks), billing (Chargebee, Recurly, Zuora), operação (PagerDuty, Sentry, Jenkins, Vercel) e até dados de uso e custo da Anthropic. A conexão é criada uma vez no Glue Data Catalog e reaproveitada por qualquer job, com o mesmo modelo de permissões do Glue, no Glue 5.0 ou superior e em todas as regiões comerciais. Já escrevi e mantive extratores de API de adquirente à mão. Eles nunca quebraram no deploy. Quebraram no dia em que o fornecedor mudou a paginação e ninguém percebeu por uma semana. Por isso este texto não pergunta se o conector funciona. Pergunta qual dos quatro caminhos disponíveis hoje custa menos para manter.

## A escolha real: quatro caminhos para tirar dado de um SaaS

Quando um time de finanças pede "as transações do Adyen no lake até amanhã", hoje existem quatro respostas na AWS.

**Conector nativo do Glue:** um job Spark no Glue 5.0 lê a entidade pelo `connection_type` do SaaS, com `ENTITY_NAME`, `SELECTED_FIELDS`, `FILTER_PREDICATE` em Spark SQL e particionamento por `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS`. O segredo fica no Secrets Manager, um por conexão.

**Zero-ETL do Glue:** replicação gerenciada, sem job, para Redshift, S3 ou S3 Tables pela arquitetura de lakehouse do SageMaker. O problema é a cobertura: na documentação atual, as fontes SaaS são Salesforce, Salesforce Marketing Cloud Account Engagement, SAP OData, ServiceNow, Zendesk, Zoho CRM, Facebook Ads e Instagram Ads. Nenhum dos conectores de pagamento do anúncio está nessa lista.

**Amazon AppFlow:** fluxo gerenciado cobrado por execução e por GB processado, bom para cópia agendada sem transformação.

**Extrator próprio:** Lambda ou Step Functions chamando a API, gravando em S3. Controle total, e dívida total.

O anúncio muda o equilíbrio porque o primeiro caminho passou a cobrir a cauda longa que antes só o quarto cobria. Para fontes fora dos 100, ainda existe o conector REST do Glue (`RegisterConnectionType`), com OAuth2 client credentials, authorization code, JWT, basic ou autenticação customizada, e paginação por cursor ou offset. Ou seja, mesmo o caso "meu SaaS não está na lista" tem saída declarativa antes de partir para código.

## Os quatro caminhos lado a lado
| Critério | Conector nativo Glue | Zero-ETL Glue | AppFlow | Extrator próprio |
| --- | --- | --- | --- | --- |
| Cobertura SaaS | 100 novos + anteriores; REST para o resto | 8 aplicações SaaS hoje | Catálogo próprio de conectores | Qualquer API |
| Transformação na ingestão | Spark completo, `QUERY` e `FILTER_PREDICATE` | Nenhuma, replica | Mapeamento e filtro simples | O que você escrever |
| Modelo de custo | US$ 0,44/DPU-hora (Flex: US$ 0,29) | Por volume ingerido, mínimo 1 MB por requisição | US$ 0,001/execução + US$ 0,02/GB | Centavos de Lambda + horas de engenharia |
| Incremental | Você controla a marca d'água via filtro | Gerenciado | Gerenciado onde o conector suporta | Você escreve e testa |
| Quem absorve mudança de API | AWS (conector); você (contrato do schema) | AWS | AWS | Seu plantão |

## O incremental é seu, e é onde o pagamento quebra

A documentação do conector Stripe deixa claro um detalhe que vale para boa parte da cauda longa: só existe particionamento por campo. Não há particionamento por registro (o conector não tem como obter a contagem total) nem por ID, porque a chave primária é string. Na prática, isso significa que o paralelismo e o incremental dependem de um campo de tempo que você escolhe, e a responsabilidade pela marca d'água é sua.

O desenho que uso é simples. Uma tabela DynamoDB com partition key `source#entity` guarda o último `created` processado. O job lê esse valor, monta `FILTER_PREDICATE` com uma janela de sobreposição de 15 a 30 minutos para trás, define `LOWER_BOUND` e `UPPER_BOUND` sobre o mesmo campo e grava num staging em Iceberg. O `MERGE` pela chave natural da transação (o ID do pagamento no adquirente) torna a reexecução idempotente. Só depois do commit o job atualiza a marca d'água, com `ConditionExpression` sobre o valor anterior para evitar duas execuções concorrentes avançando o ponteiro.

A sobreposição existe porque API de pagamento não é append-only. Estorno, chargeback e mudança de status alteram registro antigo, e um campo `updated` nem sempre está disponível como filtro. Sem janela, você perde a atualização. Sem `MERGE`, você duplica a transação. Os dois erros aparecem do mesmo jeito: a conciliação com o extrato bancário não fecha, e alguém descobre no fechamento do mês, não no dia.

## Ingestão de SaaS de pagamento com conector nativo e marca d'água própria

O conector resolve autenticação e paginação; a marca d'água, o MERGE idempotente e a publicação para o Redshift continuam sendo seus. A linha tracejada é a atualização da marca d'água, que só acontece depois do commit no Iceberg. Simplifiquei: um SaaS, uma entidade, sem Lake Formation no desenho.

### SaaS

- Adyen API REST, paginated (external)

### Control plane

- Secrets Manager one secret per connection (security)
- Glue connection Data Catalog (data)
- Watermark DynamoDB source#entity (data)

### Lake

- Glue 5.0 job FILTER_PREDICATE (compute)
- S3 Iceberg MERGE by payment ID (storage)
- Redshift reconciliation (data)

### Fluxos

- conn -> secret: lê credencial
- job -> conn: usa conexão
- job -> wm: lê marca d'água
- job -> saas: HTTPS, janela de tempo
- job -> s3: MERGE idempotente
- job -> wm: avança após commit
- s3 -> rs: publica

## Custo: o DPU é a parte barata

Faço a conta para uma fonte de pagamento puxada de hora em hora. Um job com 2 workers G.1X (2 DPU) rodando 10 minutos consome cerca de 0,33 DPU-hora: uns US$ 0,15 por execução a US$ 0,44, ou perto de US$ 105 por mês com 24 execuções diárias. Em Flex, a US$ 0,29, cai para perto de US$ 70, ao custo de início não garantido. O mesmo volume no AppFlow, com 720 execuções e 1 GB por execução, fica em torno de US$ 15: US$ 0,72 de execuções e US$ 14,40 de dados.

Olhando só a fatura, o AppFlow ganha. Mas a fatura não é o custo. O AppFlow cobra execução que não encontrou dado novo e cobra como sucesso a execução que falhou por configuração errada, e ele não transforma: alguém ainda precisa deduplicar, tipar e fazer o `MERGE` depois. Se essa etapa já é um job Glue, você paga o DPU de qualquer forma e ganha uma segunda ferramenta para operar.

O extrator próprio tem a fatura mais baixa de todas, centavos de Lambda. O custo dele aparece em outro lugar: rotação de credencial, mudança de versão da API, rate limit novo, campo renomeado. Em plataformas que mantive, um extrator de adquirente consumia algo como dois a três dias de engenharia por trimestre só para continuar funcionando, e esse número nunca entrava no business case.

**Regra que uso:** se a frequência é horária ou menor, comece por Flex e só mova para padrão quando o SLO de frescor exigir.

## Segurança e governança: o que muda numa plataforma regulada

O ganho de governança mais concreto é a conexão como recurso do Data Catalog. Antes, cada extrator tinha seu próprio jeito de guardar chave de API, quase sempre uma variável de ambiente que alguém copiou entre contas. Agora existe um segredo por conexão no Secrets Manager, e o acesso passa por IAM.

Três ajustes que faço antes de liberar em produção:

**Escopo do role:** o exemplo da documentação concede `secretsmanager:GetSecretValue`, `PutSecretValue` e as ações de ENI em `"Resource": "*"`. Em ambiente auditado por BACEN 4.893 ou PCI-DSS, eu restrinjo o recurso ao ARN do segredo da conexão e uso `aws:ResourceTag/data-domain` para que o job de finanças não leia o segredo do Gusto, que tem dado de folha.

**Minimização na origem:** `SELECTED_FIELDS` não é só otimização. Se o relatório de transações do adquirente traz dados de titular que a análise não precisa, não traga. O que não entra no lake não entra no escopo da auditoria.

**Rede:** a conexão aceita opções de rede próprias. Rodar o job em subnet privada com saída por NAT de IP fixo facilita a allowlist do lado do SaaS, e alguns adquirentes exigem isso.

Por fim, observabilidade: alarme em `glue.driver.aggregate.numCompletedTasks` igual a zero não basta. O sinal que importa é volume ingerido contra a média móvel da mesma hora, porque o modo de falha típico não é erro, é zero linha com status de sucesso.

## Matriz de decisão

### Conector nativo Glue

**Pros**
- Cobre a cauda longa de pagamento, billing e operação
- Conexão reaproveitável, segredo por conexão, IAM do Glue
- Transformação e MERGE no mesmo job

**Cons**
- Marca d'água e janela de sobreposição são suas
- Particionamento limitado por campo em vários conectores
- DPU caro para volume pequeno em alta frequência

**Verdict:** Padrão para fontes de finanças fora do zero-ETL

### Zero-ETL Glue

**Pros**
- Sem job para operar, incremental gerenciado
- Destino em Redshift, S3 ou S3 Tables

**Cons**
- Só 8 fontes SaaS, nenhuma de pagamento
- Sem transformação na entrada

**Verdict:** Use sempre que a fonte estiver na lista

### AppFlow

**Pros**
- Fatura mais baixa para cópia agendada
- Nenhum código

**Cons**
- Cobra execução vazia e falha de configuração
- Exige uma segunda etapa para deduplicar

**Verdict:** Bom para marketing e CRM sem SLO de conciliação

### Extrator próprio

**Pros**
- Controle total de rate limit e webhook
- Fatura de centavos

**Cons**
- Todo breaking change da API cai no seu plantão
- Segredo e retry reinventados por fonte

**Verdict:** Só para near real-time por webhook ou API exótica

> **O conector tira a paginação, não o contrato:** O conector nativo transfere para a AWS a parte que mais quebrava: autenticação, paginação e mudança de endpoint. O que continua seu é o contrato de dados. Se o Adyen renomeia um campo, o job não falha, ele grava nulo. Um check de Glue Data Quality sobre nulidade e volume na camada de staging é o que transforma essa falha silenciosa em alarme.

> **O que eu faria:** Eu começaria inventariando os extratores próprios que já existem e mapeando cada um contra a lista de 100. Os que aparecem na lista viram job Glue com marca d'água em DynamoDB e MERGE em Iceberg, e o código antigo é apagado no mesmo sprint, não deixado como fallback. A lição que paguei caro: extrator caseiro de adquirente nunca é aposentado por decisão, é aposentado por incidente. Fazer a troca enquanto ele ainda funciona sai muito mais barato do que fazer durante o fechamento do mês.

## Recomendação

Use o **zero-ETL** quando a fonte estiver entre as 8 suportadas e você não precisar transformar na entrada. Use o **conector nativo do Glue** quando a fonte for de pagamento, billing ou contabilidade, houver conciliação envolvida e você puder assumir a marca d'água e o MERGE idempotente: hoje é o padrão que eu adotaria para Adyen, Square, Xero e Chargebee. Use **AppFlow** para cópia agendada de marketing e CRM, onde uma linha duplicada não fecha balanço errado. Mantenha **extrator próprio** só para webhook em near real-time ou API que nem o conector REST cobre. Em todos os casos, o alarme que importa é volume contra a média, não status do job.

**Rating:** Glue native connector for finance source

## Referências

- [AWS Glue adds 100 new native connectors for popular SaaS applications (AWS What's New, 2026-11-09)](https://aws.amazon.com/about-aws/whats-new/2026/11/aws-glue-adds-100-new-native-connectors/)
- [AWS Glue: Available connections](https://docs.aws.amazon.com/glue/latest/dg/available-connections.html)
- [AWS Glue: REST API connections](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html)
- [AWS Glue: Stripe connection options](https://docs.aws.amazon.com/glue/latest/dg/stripe-connection-options.html)
- [AWS Glue: Stripe connector limitations](https://docs.aws.amazon.com/en_us/glue/latest/dg/stripe-limitations.html)
- [AWS Glue: Zero-ETL integrations](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-using.html)
- [AWS Glue pricing](https://aws.amazon.com/glue/pricing/)
- [Amazon AppFlow pricing](https://aws.amazon.com/appflow/pricing/)
