不推荐使用AmazonS3Client(凭据)

Asi*_*Ali 50 java amazon-s3 deprecated amazon-web-services aws-sdk

我正在尝试阅读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
    }
 }
Run Code Online (Sandbox Code Playgroud)

有帮助吗?如果需要更多解释,请提及.我查看了SDK的.zip文件中提供的示例代码,它是一样的.

fra*_*ijo 108

您可以使用AmazonS3ClientBuilderAwsClientBuilder作为替代方案.

对于S3,最简单的是AmazonS3ClientBuilder,

BasicAWSCredentials creds = new BasicAWSCredentials("access_key", "secret_key"); 
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build();
Run Code Online (Sandbox Code Playgroud)

  • 当您使用AmazonS3ClientBuilder时,myClient.setRegion()不再有效.你必须使用AmazonS3ClientBuilder.standard().withCredential().withRegion("eu-west-1").build(); (3认同)
  • 这种弃用背后是否有任何原因?使用 AmazonS3ClientBuilder.standard() 与新的 AmazonS3Client(来自以前的 SDK)相比是否有任何好处 (2认同)
  • "AmazonS3ClientBuilder"和"AwsClientBuilder"都不存在于.Net 4.0的最新NuGet包中,但各种方法都被折旧,包括"StoredProfileAWSCredentials"(我目前正在使用).有谁知道推荐的.Net 4.0方法? (2认同)

Sid*_*Sid 11

使用下面列出的代码创建没有凭据的S3客户端:

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();
Run Code Online (Sandbox Code Playgroud)

用法示例是调用S3的lambda函数.


Abh*_*tap 6

您需要通过区域信息传递

com.amazonaws.regions.Region object.

Use AmazonS3Client(credentials, Region.getRegion(Regions.REPLACE_WITH_YOUR_REGION))
Run Code Online (Sandbox Code Playgroud)