从Android将媒体上传到S3存储桶时出错

时间:2018-08-27 11:40:07

标签: java android amazon-s3

我正在使用android aws依赖项com.amazonaws:aws-android-sdk-s3:2.6.+

上传图片时出现以下错误

  

com.amazonaws.services.s3.model.AmazonS3Exception:访问被拒绝   (服务:Amazon S3;状态代码:403;错误代码:AccessDenied;   请求ID:XXXXXXXXXXX),S3扩展请求ID:XXXXXXXXXXXX

这是上传图片的代码

 private void beginUpload(String filePath, final String mediaCaption, 
 Message message,boolean isThumb,final 
 UploadFileToStorageCompletionListener listener) {
    getLogger().log(Strings.TAG, "########## 3:  " + filePath);
    //construct a bucket path
    final String fullBucketPath = 
 constructBucketPath(message.getMediaType(), message.getId(), 
 isThumb);
    File file = new File(filePath);
    mObserver = mTransferUtility.upload(fullBucketPath, mediaCaption, 
   file);

    mObserver.setTransferListener(new TransferListener() {
        @Override
        public void onStateChanged(int id, TransferState state) {
            getLogger().log(Strings.TAG," onStateChanged() " + state);
            if (state.equals(TransferState.COMPLETED)) {
                listener.onUploadSuccess(fullBucketPath);
            }
        }

        @Override
        public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
            getLogger().log(Strings.TAG,"onProgressChanged() " + bytesCurrent + "/" + bytesTotal);
            dismissProgressDialog();
        }

        @Override
        public void onError(int id, Exception ex) {
            listener.onDatabaseError(new FirebaseFailure(ex));
            getLogger().log(Strings.TAG, "onError() " + ex.getMessage());
        }
    });
}

2 个答案:

答案 0 :(得分:0)

您需要检查您正在使用的当前配置的用户 [访问密钥和秘密密钥] 是否具有使用S3的权限。您可以查看详细信息information,或转到您的 IAM 更改权限,有关IAM访问的详细信息this

对于初学者,请尝试使用 S3完全访问权限

希望这会有所帮助

答案 1 :(得分:0)

首先,需要检查s3存储桶的权限。然后转到存储桶策略并检查json对象,该对象是放置,获取和发布的权限。

 {
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "s3:PutObject",
            "s3:GetObject"
        ],
        "Resource": "arn:aws:s3:::{FILE NAME}/*"
    }
]
}

尝试上述权限。