Подтвердить что ты не робот

AmazonS3Client (учетные данные) устарел

Я пытаюсь прочитать файлы, доступные на Amazon S3, так как вопрос объясняет проблему. Я не смог найти альтернативный вызов для устаревшего конструктора.

Вот код:

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

Любая помощь? Если нужно больше объяснений, пожалуйста, укажите это. Я проверил пример кода, предоставленного в .zip файле SDK, и это то же самое.

4b9b3361

Ответ 1

Вы можете использовать AmazonS3ClientBuilder или AwsClientBuilder как альтернативы.

Для S3 проще всего использовать AmazonS3ClientBuilder,

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

Ответ 2

Используйте следующий код, чтобы создать клиент S3 без учетных данных:

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

Пример использования - это лямбда-функция, вызывающая S3.

Ответ 3

Вы можете создать клиент по умолчанию S3 следующим образом (с помощью aws-java-sdk-s3-1.11.232):

AmazonS3ClientBuilder.defaultClient();

Ответ 4

Вам необходимо передать информацию о регионе через

com.amazonaws.regions.Region object.

Use AmazonS3Client(credentials, Region.getRegion(Regions.REPLACE_WITH_YOUR_REGION))