当前位置: 首页 > 知识库问答 >
问题:

Amazon S3Client(凭据)已弃用

岳浩宕
2023-03-14

我正在尝试阅读亚马逊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
    }
 }

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

共有3个答案

桂坚
2023-03-14

您需要通过

com.amazonaws.regions.Region object.

Use AmazonS3Client(credentials, Region.getRegion(Regions.REPLACE_WITH_YOUR_REGION))
汪飞捷
2023-03-14

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

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

一个使用示例是调用S3的lambda函数。

霍修筠
2023-03-14

您可以使用Amazon S3ClientBuilder或AwsClientBuilder作为替代方案。

对于 S3,最简单的方法是使用亚马逊 S3 客户端生成器

BasicAWSCredentials creds = new BasicAWSCredentials("access_key", "secret_key"); 

AmazonS3 s3Client = AmazonS3ClientBuilder
    .standard()
    .withCredentials(new AWSStaticCredentialsProvider(creds))
    .build();
 类似资料:
  • 问题内容: 今天,我决定将我的android应用程序从Java转换为Kotlin!:)但是,当我输入以下内容时,我感到非常惊讶: 然后Android Studio告诉我:“’getActionView(MenuItem!):View!’ 已弃用。Java中已弃用“ 因此,在问您解决方案之前,我先问谷歌解决方案是什么,我相信我找到了解决方案:“直接使用getActionView()”。 所以我像这样

  • 目前我正在开发一个带有三个菜单项的底部导航栏的应用程序。我曾使用来单击项目。但现在我面临的问题是该方法已贬值。 应用程序语言:Java 问题:“setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedLi

  • 由于API 27已弃用。对此最好的替代方案是什么? 在我的例子中,我知道需要使用之类的东西,但我不知道在我的代码中这需要去哪里。 我在班上得到了这些进口货: 但是 被划掉了。

  • 我一直在开发一个使用Google Drive API的Android应用程序。它最初是从这里的quickstart示例构建的。API调用的简化序列(此处未显示正确的错误处理)是: 它一直运行良好,我正准备发布我的应用程序。但是,在驱动器API更新之后,我突然收到一个警告 方法usingOAuth2(Context,String,String...)GoogleAccountCredential是不

  • Variable (已弃用) Variable 是早期添加到 RxSwift 的概念,通过 “setting” 和 “getting”, 他可以帮助我们从原先命令式的思维方式,过渡到响应式的思维方式。 但这只是我们一厢情愿的想法。许多开发者滥用 Variable,来构建 重度命令式 系统,而不是 Rx 的 声明式 系统。这对于新手很常见,并且他们无法意识到,这是代码的坏味道。所以在 RxSwift

  • 问题内容: 我正在3.6.0版中使用Hibernate,并且AnnotationConfiguration标记为已弃用。 这是我的HibernateUtil.java类中的行: 什么是AnnotationConfiguration的替代品? 问题答案: “所有功能已移至配置”:http : //docs.jboss.org/hibernate/core/3.6/javadocs/org/hiber