web-dev-qa-db-fra.com

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.

50
Asif Ali

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();
107
franklinsijo

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.

11
Sid

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

AmazonS3ClientBuilder.defaultClient();
1
Sach