繁体   English   中英

AWS ProfileCredentialProvides AWS SDK1 VS AWS SDK 2 JAVA

[英]AWS ProfileCredentialProvides AWS SDK1 VS AWS SDK 2 JAVA

有人可以解释下面两个库之间的区别吗 -

我有两段代码,都试图在帐户中列出 s3 存储桶。

JAVA 1 图书馆。 使用来自com.amazonaws.auth.profile.ProfileCredentialsProvider的 CredentialProvider ;

            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider("default"))
                    .withRegion("us-east-1")
                    .build();

            System.out.println("Number of buckets: " + s3Client.listBuckets().size());

Java 2 使用 CredentialProvider 的库

软件.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;

S3Client s3Client = S3Client.builder()
                   .credentialsProvider(ProfileCredentialsProvider.builder().profileName("default")
                    .build())
                    .region(Region.of("us-east-1"))
                    .build();
            System.out.println("Number of buckets: " + s3Client.listBuckets().buckets().size());

Java2 库调用成功,我可以看到正在打印的桶数。

Java 1 库在使用时,总是无法从配置中加载配置文件。

ENV 变量已设置。 我得到以下异常:

java.lang.IllegalArgumentException: No AWS profile named 'default'
    at com.amazonaws.auth.profile.ProfilesConfigFile.getCredentials(ProfilesConfigFile.java:158)
    at com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:161)
    at com.s3.test.TestS3.testRead(TestS3.java:12)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

证书

以上是凭证文件的定义方式。 您可能错过了第一行。 我猜想有一个库希望以这种方式定义凭据文件,而另一个则没有

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM