Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓亚马逊S3实用程序_Android_Amazon Web Services_Amazon S3_Amazon - Fatal编程技术网

Android 安卓亚马逊S3实用程序

Android 安卓亚马逊S3实用程序,android,amazon-web-services,amazon-s3,amazon,Android,Amazon Web Services,Amazon S3,Amazon,我试图使用以下代码将一个图像上传到amazon(AWS SDK 2.3.0)s3 CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), "XXXXXXX", // Identity Pool ID Re

我试图使用以下代码将一个图像上传到amazon(AWS SDK 2.3.0)s3

        CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
            getApplicationContext(),
            "XXXXXXX",
            // Identity Pool ID
            Regions.EU_WEST_1 // Region
    );
    AmazonS3Client s3Client = new AmazonS3Client(credentialsProvider);

    TransferUtility transferUtility = new TransferUtility(s3Client, this.
            getApplicationContext());

    TransferObserver observer = transferUtility.upload("testbucketzzzz", "test.jpg",
            file);
每次我试图上传一个图像时,我都会遇到以下错误

UploadTask:无法上载:37,因为不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。(服务:Amazon S3;状态代码:400;错误代码:InvalidRequest;请求ID:9787E5373D02BA7)

我认为这只是AWS SDK旧版本的问题。经过无数个小时的努力,我发现了下面的“诀窍”,但这只会导致另一个错误,根本不需要

        System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");

您可以使用以下snipet将图像上载到
Amazon S3
(确保您在
main-thread
中未执行此操作):


如果您想了解更多关于为什么您的方法不起作用的信息,您可以参考

我认为建议您使用CognitoCachingCredentialsProvider,而不再使用硬核凭证?我知道了问题的原因,我的桶位于法兰克福,我刚刚在爱尔兰用另一个水桶测试了它,它工作得完美无缺,这至少是一个解决方案。
    BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(
          ACCESS_KEY,
          SECRET_KEY
      );
    AmazonS3Client s3Client = new AmazonS3Client(basicAWSCredentials);
      s3Client.setEndpoint(ENDPOINT);
      s3Client.setRegion(Region.getRegion(Regions.EU_WEST_1));;
    PutObjectRequest por = new PutObjectRequest(
                "YOUR_BUCKET_NAME", "YOUR_KEY", file);
    }
    s3Client.putObject(por);