67 votes

AmazonS3Client (informations d'identification) est obsolète

J'essaie de lire les fichiers disponibles sur Amazon S3, car la question explique le problème. Je ne pouvais pas trouver un autre appel pour le constructeur obsolète.

Voici le code:

 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
    }
 }
 

De l'aide? Si d'autres explications sont nécessaires, merci de les mentionner. J'ai vérifié sur l'exemple de code fourni dans le fichier .zip du SDK, et c'est la même chose.

136voto

franklinsijo Points 9862

Vous pouvez utiliser AmazonS3ClientBuilder ou AwsClientBuilder comme alternatives.

Pour S3, le plus simple serait avec AmazonS3ClientBuilder,

 BasicAWSCredentials creds = new BasicAWSCredentials("access_key", "secret_key"); 
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build();
 

13voto

Sid Points 413

Utilisez le code répertorié ci-dessous pour créer un client S3 sans informations d'identification:

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

Un exemple d'utilisation serait une fonction lambda appelant S3.

2voto

Sach Points 43

Vous pouvez créer un client S3 par défaut comme suit (avec aws-java-sdk-s3-1.11.11.232):

 AmazonS3ClientBuilder.defaultClient();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X