Sobre o projeto

O AWS SDK para JavaScript v3 é uma reescrita da versão 2 que mantém o objetivo de trabalhar com Amazon Web Services, mas muda o empacotamento e a arquitetura interna. Em vez de um SDK grande, ele é dividido em pacotes modulares, com um pacote separado para cada serviço, permitindo que aplicações importem apenas o que usam. Também adiciona suporte de primeira classe a TypeScript e uma nova pilha de middleware. Começar segue um padrão familiar: crie um projeto Node.js, adicione um pacote de serviço como @aws-sdk/client-dynamodb, instancie um cliente e envie um comando. O README mostra tanto o estilo modular (DynamoDBClient com ListTablesCommand e client.send) quanto um estilo não modular, semelhante ao v2 (DynamoDB com client.listTables). Ele observa que a interface não modular aumenta o tamanho do bundle quando tree shaking é usado. Para React Native, lista polyfills necessários para valores aleatórios, manipulação de URL e web streams, e menciona habilitar suporte a exports de pacotes no Metro. Mudanças principais do v2 incluem a remoção de um objeto de configuração global do SDK; a configuração agora é passada para cada instância de cliente, embora ainda possa ser compartilhada manualmente. O tratamento do ciclo de vida de requisições muda de listeners de eventos para uma pilha de middleware, onde cada middleware chama o próximo e pode ser adicionado com nome, etapa e opção de override. O README linka para UPGRADING.md para uma análise completa das mudanças de API. Conceitos de alto nível cobertos incluem clientes e comandos básicos versus clientes agregados, layout de código gerado, streams, paginadores e o abort controller. Clientes de serviço gerados ficam em /clients e são produzidos com smithy-typescript; código utilitário compartilhado fica em /packages; wrappers de nível superior como lib-dynamodb e lib-storage ficam em /lib. Saídas de stream recebem métodos mixin como transformToString, que leem o stream uma vez e não podem ser chamados repetidamente. Paginadores expõem funções geradoras assíncronas como paginateListTables, utilizáveis com for await...of. A interface AbortController permite abortar requisições. O README também discute uso com Lambda, recomendando um cliente SDK por serviço e região inicializado fora do handler, com chamadas de API feitas dentro do handler para evitar skew de tempo de assinatura. Aponta para documentação de performance e menciona melhor comportamento de cold start no Node 18. Explica instalação a partir do código-fonte clonando, construindo com yarn, empacotando um cliente individual e instalando o arquivo resultante. Canais de feedback incluem issues no GitHub e chat no Gitter, e contribuições são aceitas sob licença Apache 2.0. O documento também referencia cadência de releases, política de suporte a Node.js e ECMAScript, política de suporte a versões de TypeScript, estabilidade de pacotes modulares e problemas conhecidos como funcionalidades que exigem o AWS Common Runtime.