java - 尝试使用匿名凭证从 AWS S3 中列出对象,但它仍在检查 ~/.aws/credentials

标签 java amazon-web-services amazon-s3 aws-sdk

这是我用来listSummaries 对象的代码(与 http://docs.aws.amazon.com/AmazonS3/latest/dev/ListingObjectKeysUsingJava.html 有 99% 相同)。

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());  

    System.out.println("bucketname = " + bucketName + "key =" + key);


    ListObjectsRequest listObjectsRequest = new ListObjectsRequest().withBucketName(bucketName).withPrefix(key);
    List<S3ObjectSummary> summaries = new ArrayList<S3ObjectSummary>();

    ObjectListing objectListing;

    do {
        line 147 >>> objectListing = s3client.listObjects(listObjectsRequest);
        for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
            summaries.add(objectSummary);
        }
        listObjectsRequest.setMarker(objectListing.getNextMarker());
    } while (objectListing.isTruncated());

此处显示您可以使用匿名凭证访问可公开访问的存储桶 (http://docs.aws.amazon.com/AmazonS3/latest/dev/AuthUsingAcctOrUserCredJava.html) 我确信我正在访问的存储桶是开源的。我收到以下错误消息,我不知道为什么会这样:

Exception in thread "main" java.lang.IllegalArgumentException: AWS credential profiles file not found in the given path: /home/xxx/.aws/credentials
at com.amazonaws.auth.profile.internal.ProfilesConfigFileLoader.loadProfiles(ProfilesConfigFileLoader.java:45)
at com.amazonaws.auth.profile.ProfilesConfigFile.loadProfiles(ProfilesConfigFile.java:194)
at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:119)
at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:93)
at com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:149)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3589)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3548)
at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:647)
at xxx.xxx.xxx.LocalInterface.ListBucket(LocalInterface.java:147)

最佳答案

我想出了自己的答案。我没有使用匿名凭证。以下是如何使用它们:

AWSCredentials creds = new AnonymousAWSCredentials();
    AmazonS3 s3client = new AmazonS3Client(creds);  

希望这对某人有帮助。

关于java - 尝试使用匿名凭证从 AWS S3 中列出对象,但它仍在检查 ~/.aws/credentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33966370/

相关文章:

java - 调试java中的面向对象编程代码输出

java - 显示图像而不在 xml 中指定 src

java - Servlet 线程中由 AsyncContext 启动的 Runnable 是否安全?

amazon-web-services - CloudFormation 可选映射属性 - DeadLetterQueue

java - 如果改造多次调用返回您需要的内容,如何仅通知用户一次?

amazon-web-services - Cloudformation 启动配置用户数据文件

python-3.x - 无法卸载 AWS CLI : Cannot uninstall requirement awscli, 未安装

ruby - 随机 "SignatureDoesNotMatch"禁止请求,即使通过 POST 将相同文件上传到 Amazon S3

amazon-s3 - 在 Amazon S3 上使用带有存储桶的 HTTPS 证书作为域名

python - 更新 s3 中的元数据