我尝试使用“TransferUtility”将文件上传到AWS s3存储桶,我已经在移动HUB上注册了该应用,并在文档中提到的res / raw中粘贴了'awsconfiguration.json'文件。
我收到了这个日志:
I / AWSMobileClient:欢迎使用AWS!您已成功连接。
当我在'onCreate()'
中调用它时AWSMobileClient.getInstance().initialize(this).execute();
执行此代码时出现此错误
TransferUtility transferUtility =
TransferUtility.builder()
.context(getApplicationContext())
.awsConfiguration(AWSMobileClient.getInstance().getConfiguration())
.s3Client(new AmazonS3Client(AWSMobileClient.getInstance().getCredentialsProvider()))
.build();
TransferObserver uploadObserver =
transferUtility.upload(
s3Bucket+"/"+s3Folder+"/"+fileName,
new File(fileUrl));
错误:
E / AndroidRuntime:致命异常:主要 处理:xxxx.xxxxx.com,PID:28698 java.lang.IllegalArgumentException:无法读取S3TransferUtility 请检查您的设置或awsconfiguration.json文件 在 com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility $ Builder.build(TransferUtility.java:248)
任何人都可以帮助我解决这个问题,并指导我在这里做错了什么。
您的努力真的很受欢迎。谢谢
答案 0 :(得分:1)
要详细说明Karthikeyan的答案,示例awsconfiguration.json看起来像这样
{
"Version": "1.0",
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "COGNITO-IDENTITY-POOL-ID",
"Region": "COGNITO-IDENTITY-POOL-REGION"
}
}
},
"IdentityManager" : {
"Default" : { }
},
"S3TransferUtility": {
"Default": {
"Bucket": "S3-BUCKET-NAME",
"Region": "S3-REGION"
}
}
}
我遇到的问题是,当我生成它时,awsconfiguration.json文件中不存在S3TransferUtility。原因是我有一个与移动集线器应用程序绑定的存储桶,但是,我想与现有存储桶集成。请按照以下说明将其集成到现有存储桶https://docs.aws.amazon.com/aws-mobile/latest/developerguide/how-to-integrate-an-existing-bucket.html
答案 1 :(得分:1)
确保已初始化mobileClient实例,并且配置文件在s3块中具有默认选项,然后只有您才能访问配置。
private void initializeAwsMClient() {
AWSMobileClient.getInstance().initialize(this, awsStartupResult ->
Timber.d("AWSMobileClient is instantiated and you are connected to AWS!"))
.execute();
}
答案 2 :(得分:0)
此错误表示您拥有awsconfiguration.json文件,但在json文件中可能没有S3TransferUtility
块。你能检查一下json文件中是否有所需的块吗?