Melhores práticas para o desenvolvimento da AWS com o AWS SDK para Java - AWS SDK para Java 1.x

O AWS SDK para Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e o fim do suporte está previsto para 31 de dezembro de 2025. Recomendamos que você migre para o AWS SDK for Java 2.x para continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.

Melhores práticas para o desenvolvimento da AWS com o AWS SDK para Java

As melhores práticas a seguir podem ajudar a evitar problemas à medida que você desenvolve aplicativos da AWS com o AWS SDK para Java. Organizamos as melhores práticas por serviço.

S3

Evitar ResetExceptions

Ao fazer upload de objetos para o Amazon S3 usando streamings (por meio de um cliente do AmazonS3 ou TransferManager), é possível ter problemas com a conectividade de rede ou o tempo de limite. Por padrão, o AWS SDK para Java tenta repetir transferências com falha marcando o fluxo de entrada antes do início de uma transferência e redefinindo antes de tentar novamente.

Se o streaming não oferecer suporte a marcar e redefinir, o SDK lançará um ResetException quando houver falhas transitórias, e novas tentativas forem permitidas.

Melhor prática

Recomendamos usar fluxos que deem suporte a operações de marcar e redefinir.

A maneira mais confiável de evitar um ResetException é fornecer dados usando um File ou FileInputStream, que o AWS SDK para Java pode processar sem restrição por limites de marcar e redefinir.

Se o streaming não for um FileInputStream, mas não oferecer suporte a marcar e redefinir, será possível definir o limite da marca usando o método setReadLimit de RequestClientOptions. O valor padrão é 128 KB. Definir o valor limite de leitura como um byte maior que o tamanho do fluxo certamente evitará um ResetException.

Por exemplo, se o tamanho esperado máximo de um fluxo for 100.000 bytes, defina o limite de leitura como 100.001 (100.000 + 1) bytes. A marca e a redefinição sempre funcionarão para 100.000 bytes ou menos. Lembre-se de que isso pode fazer alguns fluxos armazenarem em buffer esse número de bytes na memória.