我正在使用 Java 中的 AWS SDK 2.x 创建 KinesisClient 类的对象,如下所示
AwsCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(
AwsBasicCredentials.create("access-key",
"secret-key")
);
KinesisClient kinesisClient = KinesisClient.builder()
.credentialsProvider(credentialsProvider)
.build();
当我执行此代码时,出现以下异常
Exception in thread "main" java.lang.IllegalArgumentException: Expected a profile definition on line 1
at software.amazon.awssdk.utils.Validate.isTrue(Validate.java:76)
at software.amazon.awssdk.profiles.internal.ProfileFileReader.readPropertyDefinitionLine(ProfileFileReader.java:125)
at software.amazon.awssdk.profiles.internal.ProfileFileReader.parseLine(ProfileFileReader.java:78)
at software.amazon.awssdk.profiles.internal.ProfileFileReader.lambda$parseFile$0(ProfileFileReader.java:58)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
at software.amazon.awssdk.profiles.internal.ProfileFileReader.parseFile(ProfileFileReader.java:58)
at software.amazon.awssdk.profiles.ProfileFile$BuilderImpl.build(ProfileFile.java:265)
at software.amazon.awssdk.profiles.ProfileFile.lambda$addCredentialsFile$0(ProfileFile.java:142)
at java.util.Optional.ifPresent(Optional.java:159)
at software.amazon.awssdk.profiles.ProfileFile.addCredentialsFile(ProfileFile.java:139)
at software.amazon.awssdk.utils.builder.SdkBuilder.applyMutation(SdkBuilder.java:61)
at software.amazon.awssdk.profiles.ProfileFile.defaultProfileFile(ProfileFile.java:90)
at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.mergeGlobalDefaults(SdkDefaultClientBuilder.java:196)
at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:149)
at software.amazon.awssdk.services.kinesis.DefaultKinesisClientBuilder.buildClient(DefaultKinesisClientBuilder.java:28)
at software.amazon.awssdk.services.kinesis.DefaultKinesisClientBuilder.buildClient(DefaultKinesisClientBuilder.java:22)
at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:124)
我是否缺少该配置文件的任何内容,或者有其他方法来创建客户端对象。 预先感谢!
无效的键值/字符可能会导致该异常。您能否检查一下
cat ~/.aws/credentials
或 cat ~/.aws/config
文件中是否存在无效字符或值。
除了 Venkata 的答案之外,凭证文件的格式似乎很重要,并且错误可能不会使这一点变得明显。
例如,我发现这种格式不起作用(Mac OS 在 ~/.aws/credentails 中):
[default]
aws_access_key_id=AKIARQV2GJHGK78 aws_secret_access_key=Op+kW9cXLL9dddtSNRuRccULcL5gt4VUx6ywOObN
虽然这种格式确实如此(即在单独的行上):
[default]
aws_access_key_id=AKIARQV2GJHGK78
aws_secret_access_key=Op+kW9cXLL9dddtSNRuRccULcL5gt4VUx6ywOObN
(以上不是真正的钥匙!)
更多信息请参见:https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html