Pular para o conteúdo
fernando.moretes.com
BlogEstudosCursosE-booksOpen SourcePodcasts
Loading…
Fernando Azevedo

Arquiteto de TI Especialista

Arquitetura, AWS, IA em produção, sistemas financeiros e FinOps, escritos a partir do que foi operado, com os números.

  • LinkedIn
  • GitHub
  • E-mail

Conteúdo

  • Blog
  • Estudos de arquitetura
  • Cursos
  • E-books
  • Open Source
  • Podcasts
  • Assuntos
  • Trilhas

Ferramentas

  • Moretes Architect MCP
  • Well-Architected self-check
  • Arquitetura deste site
  • Números públicos
  • Histórico de estudo

Sobre

  • Comunidade
  • IA Builder
  • Perfil
  • Currículo (CV)
  • Trabalhe comigo
  • Media kit
  • RSS do blog
  • RSS dos estudos
  • Artigos narrados (podcast)
  • llms.txt
  • Termos, privacidade e uso de IA

(c) 2026 Fernando Francisco Azevedo

Blog/Artigo
RSSMarkdownLLMs
AWS & CloudNotas de Campo

Uma listagem, várias entidades jurídicas: subsidiárias no AWS Marketplace

30 de out. de 2026 8 minAvançado Com apoio de IA000 visualizações00 reproduções
Ouvir artigo

cerca de 8 min · áudio gerado ao tocar

Quem já operou um grupo com uma entidade por país conhece o custo escondido do AWS Marketplace: a mesma listagem recriada em cada conta vendedora, com descrição e dimensões de preço que divergem em silêncio. Em 29/10/2026 a AWS passou a permitir publicar o produto uma vez na conta primária e autorizar as subsidiárias a vender por oferta privada direta, cada uma com sua identidade fiscal, suas moedas e sua conta bancária. O anúncio vende isso como o fim da duplicação. Eu leio de outro jeito: a duplicação sai do catálogo e vira um problema de autorização, com estados, defaults e uma revogação que não faz o que o nome sugere.

A situação: o problema nunca foi o catálogo

Num grupo com uma entidade nos EUA, uma Ltda no Brasil e uma subsidiária na Índia, o motivo de ter três contas vendedoras não é técnico, é fiscal. Cada entidade precisa ser seller of record no seu mercado: segura o contrato com o cliente, fatura na moeda local, paga as próprias taxas do Marketplace e recebe na própria conta bancária. A documentação deixa isso explícito, e a funcionalidade nova não muda essa premissa. Ela só remove a obrigação de manter o produto dentro de cada conta.

O custo que pesava não era criar a listagem. Era manter três cópias sincronizadas por anos: cada dimensão de preço nova, cada ajuste de descrição, cada versão do produto multiplicada pelo número de entidades, e cada divergência descoberta por um cliente antes de ser descoberta por você. Esse é o custo de manutenção que a funcionalidade ataca, e ele é real.

O que ela coloca no lugar merece o mesmo cuidado. A conta primária passa a emitir autorizações, uma por produto e por subsidiária, dizendo em quais países e com quais dimensões de preço aquela entidade pode vender. Isso é controle de acesso sobre receita. Em ambiente regulado, qualquer coisa que decide quem vende o quê, para quem e onde cai no mesmo balde de um IAM role: precisa de dono, de trilha de auditoria e de revisão periódica.

Um detalhe que encurta o otimismo de quem já tem listagens duplicadas: agreements vivos numa listagem própria da subsidiária ficam nela e não podem ser movidos para o produto da primária. A migração vale para ofertas novas, não para a base instalada. Você vai conviver com os dois modelos até o último contrato antigo vencer.

O modelo: duas camadas e nada compartilhado por padrão

A autorização tem duas camadas, e confundir uma com a outra é o primeiro erro que eu esperaria ver em produção.

Conexão: feita no AWS Partner Central. A primária envia o pedido, com até 10 IDs de conta por envio, e um administrador da subsidiária aceita. O aceite tem um efeito colateral que precisa passar pelo jurídico: ele registra o consentimento da subsidiária em compartilhar receita atribuída e os relatórios do Marketplace insights com a primária. A conexão sozinha não autoriza venda nenhuma.

Autorização: uma entidade SubsidiaryAuthorization@1.0 no Catalog API, criada pela primária com StartChangeSet e a change type CreateSubsidiaryAuthorization. Ela nasce em Draft, vira Active com UpdateAvailability e termina em Restricted. Carrega o ARN do produto (imutável), a lista de Dimensions, o SubsidiaryAccountId (também imutável, vira a SubsidiaryTargetingRule) e um BuyerTargetingTerm com CountryCodes e OfferTargeting, que hoje aceita só PrivateOffer.

Service role: as duas contas precisam do AWSMarketplaceSubsidiaryAuthorizationServiceRole, que a AWS usa para criar o resource share entre elas. Sem ele, pelo console a autorização é criada e nunca fica ativa, e a subsidiária não enxerga nada. Pela API o erro aparece como INCOMPATIBLE_ACCOUNT_STATE na primária ou INCOMPATIBLE_SUBSIDIARY_ACCOUNT_STATE na subsidiária, e só no DescribeChangeSet, porque a validação é assíncrona.

IAM das pessoas: separado do service role, e você precisa dos dois. Para autorizar, a primária usa AWSMarketplaceSellerFullAccess ou AWSMarketplaceSellerProductsFullAccess; para criar oferta pela página de ofertas privadas, a subsidiária usa AWSMarketplaceSellerOfferManagement. Essas managed policies são largas. Em produção eu escreveria policy própria, restrita às ações do Catalog API que cada time de fato usa.

Quem controla o quê: produto na primária, contrato e dinheiro na subsidiária

O diagrama responde a uma pergunta: onde passa a fronteira de controle entre as contas. A primária é dona do produto e da autorização; a subsidiária é seller of record, define o preço e recebe. A linha tracejada é só visibilidade de relatório, não move dinheiro. Simplificação: conexão no Partner Central e service role ficam implícitos na seta de compartilhamento.

Primary account
  • Authorization repo · Catalog API
  • Product listing · SaaSProduct
  • SubsidiaryAuthorization · Draft, Active, Restricted
  • Marketplace insights · consolidated
Subsidiary account
  • Private offer · seller of record
  • Disbursement · local bank, currency
Buyer
  • Buyer account · tax address

Onde mora o risco: revogar não é desligar

O anúncio diz que revogar a autorização impede imediatamente a subsidiária de criar ofertas novas. Correto, e incompleto para quem desenha controle. A documentação detalha quatro comportamentos que mudam o runbook.

Oferta publicada sobrevive: revogar não cancela ofertas já publicadas. O comprador ainda pode aceitar uma oferta que a subsidiária publicou antes da revogação, e os agreements existentes seguem pelos termos acordados, com renovações e desembolsos para a subsidiária. Se o motivo da revogação é a venda da entidade, uma restrição num país ou uma disputa societária, o bloqueio não alcança a exposição que já está na rua.

Restricted é terminal: não existe reativação. Para autorizar de novo, crie outra autorização, que ganha outro ID. Qualquer sistema que use o ID da autorização como chave de negócio quebra na primeira revogação por engano.

Conexão derruba tudo: encerrar a conexão no Partner Central encerra todas as autorizações entre as duas contas. Um analista que desfaz a conexão para corrigir atribuição de receita derruba a capacidade de venda da entidade inteira.

Estreitar quebra rascunho: remover um país ou uma dimensão faz falhar a publicação de ofertas em draft que usavam aquele escopo. A oferta fica parada e o vendedor local só descobre na hora de publicar, em geral na véspera do fechamento do trimestre.

A lição prática: revogação é um processo, não um clique. Revogue a autorização, levante as ofertas publicadas e ainda não aceitas daquela subsidiária, decida o destino de cada uma e só então mexa na conexão. Para encurtar a janela de exposição, use datas de expiração curtas nas ofertas privadas que as subsidiárias publicam.

Autorização como código: o UpdateInformation substitui tudo

Com mais de duas subsidiárias, autorização feita no console vira deriva em semanas. O Catalog API permite tratar cada autorização como recurso versionado, e três detalhes tornam isso obrigatório, não estético.

Substituição total: UpdateInformation substitui Name, Description, Resource e Terms inteiros; o que você omitir é removido. A validação síncrona devolve 422 se Dimensions vier vazio, mas um BuyerTargetingTerm sem CountryCodes passa, e lista vazia significa todos os países. Um script que só queria trocar a descrição pode abrir a venda da entidade brasileira para o mundo inteiro. A única forma segura é enviar sempre o estado completo, lido de um arquivo versionado.

O default está do lado errado: a elegibilidade do comprador é avaliada pelo endereço fiscal dele. Uma autorização sem países contradiz a premissa fiscal que justificou criar a entidade local. No pipeline, eu bloquearia merge de qualquer autorização com CountryCodes vazio.

Produto não propaga: adicionar uma dimensão ao produto não chega à subsidiária; é preciso chamar UpdateInformation com a lista nova. Se o produto tem dimensões Metered ou ExternallyMetered, todas precisam estar na autorização, senão a change set falha com INCOMPATIBLE_PRODUCT_DIMENSIONS.

O resto é idempotência e observabilidade. StartChangeSet é assíncrono: guarde o ChangeSetId, consulte DescribeChangeSet até SUCCEEDED ou FAILED e leia o ErrorDetailList. Duas autorizações para o mesmo produto e a mesma subsidiária não podem sobrepor países e dimensões (DUPLICATE_SUBSIDIARY_AUTHORIZATION), o que dá uma chave natural para o seu estado: produto, subsidiária e conjunto de países, não o ID. Reconcilie todo dia com ListEntities usando EntityType: SubsidiaryAuthorization e compare com o repositório.

Playbook para amanhã

  1. 1

    Mapeie entidade, país e moeda

    Monte a tabela entidade por país e por moeda e confirme que cada subsidiária tem tax interview, KYC e payment setup completos, com banco e ao menos uma moeda de desembolso. Sem payment setup a subsidiária não cria oferta, mesmo com autorização ativa. Na Índia, a conta precisa ser standalone, fora do AWS Organizations, desembolsa só em INR e vende só para compradores na Índia.

  2. 2

    Crie o service role nas duas pontas

    Em cada conta, no Partner Central, Settings, aba Service roles, crie o AWSMarketplaceSubsidiaryAuthorizationServiceRole antes da primeira autorização. Sem ele a autorização nunca ativa e ninguém recebe aviso pelo console.

  3. 3

    Aceite a conexão com aval jurídico

    O aceite registra o consentimento de compartilhar receita atribuída e relatórios de insights com a primária. Em grupo com acionistas minoritários ou joint venture, isso é decisão societária, não de TI.

  4. 4

    Versione cada autorização

    Um arquivo por produto e subsidiária, com CountryCodes explícito e a lista completa de Dimensions. O pipeline envia o estado inteiro via UpdateInformation, faz polling de DescribeChangeSet e falha o build em qualquer ErrorDetailList não vazio.

  5. 5

    Libere em dois tempos

    Crie em Draft, revise o DescribeEntity contra o arquivo e só então chame UpdateAvailability com Active. A ativação leva alguns minutos; não prometa ao time local que a oferta sai no mesmo minuto.

  6. 6

    Escreva o runbook de revogação

    Revogar autorização, levantar ofertas publicadas e não aceitas, decidir o destino de cada uma, só então tocar na conexão. Inclua quem aprova, porque Restricted não volta atrás.

  7. 7

    Reconcilie todo dia

    ListEntities com SubsidiaryAuthorizationFilters por status e conta, comparado ao repositório. Use o Marketplace insights consolidado da primária para cruzar ofertas, agreements e renovações por subsidiária.

O nome da autorização é interface

A subsidiária escolhe a autorização pelo Name (1 a 100 caracteres) na hora de criar a oferta. Coloque produto e escopo no nome, por exemplo Security Suite | BR, AR | users, api, e gere esse nome a partir do arquivo versionado. Nome escrito à mão diverge do escopo real na primeira mudança, e o vendedor local escolhe a autorização errada sem perceber.

Três formas de vender por mais de uma entidade

CritérioAutorização de subsidiáriaResale authorization (CPPO)Listagem duplicada
Quem vendeOutra conta vendedora do próprio grupoChannel Partner terceiroCada conta, com produto próprio
PreçoSubsidiária define; a autorização não carrega preçoMarkup sobre o wholesale definido pelo ISVCada conta define
MoedaAs configuradas na própria subsidiáriaA definida pelo ISV na autorizaçãoA da própria conta
Tipos de ofertaSó privada diretaPrivada via parceiroPública e privada
Custo de manutenção1 listagem + N autorizações versionadas1 listagem + autorização por parceiroN listagens sincronizadas à mão
Use quandoEntidade local precisa ser seller of record e vende por oferta privadaUm terceiro revende e precisa de margemA entidade local precisa de oferta pública ou de CPPO própria

Anti-padrões que eu esperaria ver no primeiro trimestre

  • Autorização sem CountryCodes: lista vazia significa todos os países, e a entidade criada para um mercado fiscal passa a vender para qualquer endereço fiscal.
  • Tratar revogação como kill switch: ofertas já publicadas continuam aceitáveis e agreements seguem renovando; o bloqueio vale só para oferta nova.
  • Update parcial por script: UpdateInformation remove tudo o que não foi enviado, então um patch de descrição pode apagar países e dimensões.
  • Desfazer a conexão para arrumar atribuição: encerrar a conexão encerra todas as autorizações entre as duas contas de uma vez.
  • ID da autorização como chave de negócio: Restricted é terminal e a reautorização gera ID novo; use produto, subsidiária e países como chave.
  • Lançar dimensão nova e esquecer a autorização: a subsidiária continua vendendo a versão antiga do produto até alguém chamar UpdateInformation.

Perguntas que vão aparecer

A subsidiária pode criar CPPO para um canal local com o produto autorizado?

Não. O Catalog API rejeita resale authorization criada a partir de produto autorizado pela primária. A subsidiária só cria CPPO para produtos que ela mesma possui.

Consigo migrar os agreements da listagem duplicada para o produto da primária?

Não. Eles ficam na listagem original. Planeje a convivência até o vencimento e use a autorização nas renovações, como oferta nova.

A primária pode criar oferta ou fazer KYC em nome da subsidiária?

Não. Cada conta cria as próprias ofertas e completa o próprio tax interview e KYC. O service role também não dá à primária acesso a ofertas, agreements ou dados financeiros da subsidiária.

As taxas do Marketplace são consolidadas na primária?

Não. Listing e transaction fees são cobradas da subsidiária que transacionou e não são agrupadas, compensadas nem refaturadas entre contas. Seu modelo de transfer pricing continua fora do Marketplace.

Quanto custa e onde está disponível?

Sem custo adicional, em todas as regiões em que o AWS Marketplace está disponível, segundo o anúncio de 29/10/2026.

FA
Nota do curador
Arquiteto de TI Especialista

Eu começaria pela subsidiária de menor volume, com um único produto e dois países, e só passaria para a próxima depois de executar o runbook de revogação de ponta a ponta num ambiente de teste. Antes da primeira autorização ativa, o pipeline já estaria bloqueando CountryCodes vazio e update parcial. A lição dura que trago de plataformas financeiras: o controle que mais dá problema não é o que bloqueia, é o que parece bloquear e não bloqueia. Aqui, esse controle se chama revogação, e o nome dele promete mais do que ele entrega.

Veredito

Adote com runbook

Adote a autorização de subsidiárias quando o grupo tem entidades locais que precisam ser seller of record, vende majoritariamente por oferta privada e hoje mantém listagens duplicadas: o ganho de manutenção é direto. Faça isso com as autorizações em repositório, CountryCodes sempre explícito e um runbook de revogação que trate ofertas publicadas. Mantenha a listagem local quando a entidade precisa de oferta pública ou de CPPO própria, porque nenhum dos dois é suportado nesta versão.

Referências

AWS What's New: AWS Marketplace now enables partners to list once and sell through multiple subsidiary accounts (29/10/2AWS Marketplace Seller Guide: Creating private offers as a subsidiary accountAWS Partner Central: Managing AWS subsidiary account connectionsAWS Marketplace API: Work with subsidiary authorizationsAWS Marketplace Seller Guide: Subsidiary authorization service roleAWS Marketplace Seller Guide: Creating private offers as an AWS Marketplace Channel PartnerAWS Marketplace Seller Guide: Getting started as a seller in India
#aws-marketplace#governance#catalog-api#multi-entity#iam#finops
Compartilhar:LinkedInWhatsAppXBaixar em Markdown
Fonte analisada: AWS Marketplace now enables partners to list once and sell through multiple subsidiary accounts
Próximo passo
Trilha Arquiteto de IA, gratuitaFundamentos, LLMs, RAG, tools, MCP e arquitetura na AWS, em aulas curtas e interativas.Começar a trilhaAgentes de IA em produção na AWSComo eu desenho, oriento e audito agentes que vão ao ar, com os números e as fontes.Ver o IA Builder

Continue lendo

AWS & CloudWell-Architected Agent: a revisão de arquitetura vira processo semanalA AWS colocou em preview um agente que analisa contas, cruza sinais de Trusted Advisor, Compute Optimizer, Security Hub CSPM e Resilience Hub e devolve recomendações priorizadas por metas de negócio em texto livre. O que muda para o arquiteto não é o volume de achados, é que a meta escrita vira função de ranqueamento, e a lista de tipos de recurso não suportados vira ponto cego de auditoria.Ler AWS & CloudNotebook fora do cluster: migrar para Spark Connect no EMR on EKSEm 24/09/2026 o Amazon EMR on EKS ganhou sessões interativas via Spark Connect: o driver Spark vira um servidor gRPC no seu cluster EKS e o cliente PySpark fica no IDE de quem escreve o código. Tratei isso como uma migração, não como uma feature, e a parte difícil não é conectar, é o que o endpoint arrasta de rede, de IAM e de custo parado.Ler AWS & CloudAMI com contrato: anatomia do novo bloqueio de tipos no EC2Em 4 de setembro de 2026 o EC2 passou a aceitar InstanceTypeSpecification no AMI: duas listas, avaliadas no RunInstances, que bloqueiam o lançamento em tipo incompatível. O padrão move a compatibilidade do chamador para o artefato, e traz junto uma armadilha que quase ninguém vai ver antes de sangrar: a especificação casa strings, não capacidades de hardware.Ler
AnteriorMigrando agentes do GPT-5.6 Terra para o GPT-6.1 Terra no BedrockPróximoAWS Builder Loft São Paulo: uma nova casa para quem quer construir junto
Gostou desta análise? Receba a próxima.

Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.

Sem spam · cancele quando quiser

Pergunte ao Fernando sobre isto

Uma resposta focada sobre este artigo, do meu assistente de IA, baseada no meu trabalho.

Participe da conversa

Entre para comentar

Confirme seu e-mail para participar, você também recebe a newsletter. Sem senha.

Neste artigo
A situação: o problema nunca foi o catálogoO modelo: duas camadas e nada compartilhado por padrãoArquiteturaOnde mora o risco: revogar não é desligarAutorização como código: o UpdateInformation substitui tudoPlaybook para amanhãTrês formas de vender por mais de uma entidadeAntipadrõesFAQVereditoReferências