Considerações sobre o Amazon S3 - AWS SDK para JavaScript

O Guia de referência da API do AWS SDK para JavaScript V3 descreve em detalhes todas as operações da API para o AWS SDK para JavaScript versão 3 (V3).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Considerações sobre o Amazon S3

Upload fracionado do Amazon S3

Na v2, o cliente do Amazon S3 contém uma operação upload() compatível com o upload de objetos grandes com o recurso de upload fracionado oferecido pelo Amazon S3.

O pacote @aws-sdk/lib-storage está disponível na v3. Ele é compatível com todos os recursos oferecidos na operação upload() da v2 e oferece suporte tanto ao Node.js quanto ao runtime dos navegadores.

URL pré-assinado do Amazon S3

Na v2, o cliente do Amazon S3 contém as operações getSignedUrl()e getSignedUrlPromise() para gerar um URL que os usuários podem usar para fazer upload ou baixar objetos do Amazon S3.

O pacote @aws-sdk/s3-request-presigner está disponível na v3. Este pacote contém as funções para as operações getSignedUrl() e getSignedUrlPromise(). Esta publicação do blog discute os detalhes desse pacote.

Redirecionamentos de região no Amazon S3

Se uma região incorreta for passada ao cliente do Amazon S3 e um erro subsequente PermanentRedirect (status 301) for gerado, o cliente do Amazon S3 na v3 oferecerá suporte a redirecionamentos de região (anteriormente conhecido como cliente global do Amazon S3 na v2). Você pode usar o sinalizador followRegionRedirects na configuração do cliente para fazer com que o cliente do Amazon S3 siga os redirecionamentos de região e ofereça suporte a sua função como cliente global.

nota

É importante ressaltar que este recurso pode resultar em latência adicional, pois as solicitações com falha são repetidas com uma região corrigida ao receber um erro PermanentRedirect com status 301. Esse recurso só deve ser usado caso a região dos buckets não for conhecida com antecedência.

Streaming e respostas armazenadas em buffer do Amazon S3

A v3 do SDK opta por não armazenar respostas potencialmente grandes. Este é um comportamento comum encontrado na operação GetObject do Amazon S3, que retorna um Buffer na v2, mas um Stream na v3.

Para o Node.js, é preciso consumir o fluxo ou a coleta de resíduos do cliente ou de seu manipulador de solicitações para manter as conexões abertas para novos tráfegos liberando soquetes.

// v2 const get = await s3.getObject({ ... }).promise(); // this buffers consumes the stream already.
// v3, consume the stream to free the socket const get = await s3.getObject({ ... }); // object .Body has unconsumed stream const str = await get.Body.transformToString(); // consumes the stream // other ways to consume the stream include writing it to a file, // passing it to another consumer like an upload, or buffering to // a string or byte array.

Para obter mais informações, consulte a seção sobre exaustão de soquetes.