AmazonS3Client (credenciais) está desactualizado

estou a tentar ler os ficheiros disponíveis na Amazon S3, pois a pergunta explica o problema. Não consegui encontrar uma alternativa para um construtor obsoleto.

Aqui está o código:

private String AccessKeyID = "xxxxxxxxxxxxxxxxxxxx";
private String SecretAccessKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
private static String bucketName     = "documentcontainer";
private static String keyName     = "test";
//private static String uploadFileName    = "/PATH TO FILE WHICH WANT TO UPLOAD/abc.txt";

AWSCredentials credentials = new BasicAWSCredentials(AccessKeyID, SecretAccessKey);

void downloadfile() throws IOException
{

    // Problem lies here - AmazonS3Client is deprecated
    AmazonS3 s3client = new AmazonS3Client(credentials);
        try {
        System.out.println("Downloading an object...");
        S3Object s3object = s3client.getObject(new GetObjectRequest(
                bucketName, keyName));
        System.out.println("Content-Type: "  +
                s3object.getObjectMetadata().getContentType());
        InputStream input = s3object.getObjectContent();

        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        while (true) {
            String line = reader.readLine();
            if (line == null) break;

            System.out.println("    " + line);
        }
        System.out.println();
    } catch (AmazonServiceException ase) {
          //do something
    } catch (AmazonClientException ace) {
        // do something
    }
 }
Alguma ajuda? se precisar de mais explicações, por favor, mencione-o. Verifiquei o código da amostra fornecido .arquivo zip de SDK é o mesmo.

Author: franklinsijo, 2017-01-31

3 answers

Pode usar AmazonS3ClientBuilder ou Construtor de edifícios Awsclient como alternativas.

Para S3, o mais simples seria com AmazonS3ClientBuilder,

BasicAWSCredentials creds = new BasicAWSCredentials("access_key", "secret_key"); 
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build();
 91
Author: franklinsijo, 2017-02-06 14:30:31

Utilize o código abaixo para criar um cliente S3 sem credenciais:

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();

Um exemplo de Utilização seria uma função lambda chamada S3.

 9
Author: Sid, 2017-07-20 22:51:05

Você pode criar o cliente padrão S3 da seguinte forma (com aws-java-sdk-s3-1.11.232):

AmazonS3ClientBuilder.defaultClient();
 1
Author: Sach, 2017-11-21 11:32:16