【问题标题】:java.lang.IllegalArgumentException : Failed to read S3TransferUtility please check your setup or awsconfiguration.json filejava.lang.IllegalArgumentException:无法读取 S3TransferUtility 请检查您的设置或 awsconfiguration.json 文件
【发布时间】:2018-09-01 20:45:44
【问题描述】:

我已尝试使用“TransferUtility”将文件上传到 AWS s3 存储桶,并且已在 Mobile HUB 上注册了该应用程序,并将“awsconfiguration.json”文件粘贴到 res/raw 中,如文档中所述。

我收到了这个日志:

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: 致命异常: main 进程:xxxx.xxxx.com,PID:28698 java.lang.IllegalArgumentException:无法读取 S3TransferUtility 请检查您的设置或 awsconfiguration.json 文件 在 com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility$Builder.build(TransferUtility.java:248)

任何人都可以帮助我解决这个问题并指导我在这里做错了什么。

我们真的很感激你的努力。谢谢

【问题讨论】:

  • 您是否解除了此问题的限制?

标签: java android amazon-s3 aws-cognito aws-mobilehub


【解决方案1】:

你提到的错误来自这里:https://github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-s3/src/main/java/com/amazonaws/mobileconnectors/s3/transferutility/TransferUtility.java#L248

此错误表示您有 awsconfiguration.json 文件,但 json 文件中可能没有 S3TransferUtility 块。你能检查一下你的json文件中是否有需要的块吗?

【讨论】:

    【解决方案2】:

    为了详细说明 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"
            }
        }
    }
    

    我遇到的问题是,当我生成 S3TransferUtility 时,它在我的 awsconfiguration.json 文件中不存在。原因是我有一个与我的移动集线器应用程序绑定的存储桶,但是我想与现有的存储桶集成。按照这些说明集成到现有存储桶https://docs.aws.amazon.com/aws-mobile/latest/developerguide/how-to-integrate-an-existing-bucket.html

    【讨论】:

      【解决方案3】:

      确保你初始化了 mobileClient 实例并且配置文件在 s3 块中有默认选项,那么只有你可以访问配置。

      private void initializeAwsMClient() {
          AWSMobileClient.getInstance().initialize(this, awsStartupResult ->
              Timber.d("AWSMobileClient is instantiated and you are connected to AWS!"))
              .execute();
      }
      

      【讨论】:

        猜你喜欢
        • 2018-08-25
        • 1970-01-01
        • 2019-05-08
        • 2021-03-26
        • 2013-12-11
        • 2014-10-18
        • 1970-01-01
        • 1970-01-01
        • 2020-03-31
        相关资源
        最近更新 更多