【问题标题】:Getting Error while Uploading Media to S3 Bucket from android从 android 将媒体上传到 S3 存储桶时出错
【发布时间】:2019-02-01 22:39:23
【问题描述】:

我正在使用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());
        }
    });
}

【问题讨论】:

    标签: java android amazon-s3


    【解决方案1】:

    首先,需要检查 s3 存储桶的权限。并转到存储桶策略并检查 json 对象,该对象是 put、get 和 post 的权限。

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

    尝试以上权限。

    【讨论】:

    • 感谢 shavareppa,它正在工作,但这让我的存储桶公开。我无法从网络读取媒体文件
    【解决方案2】:

    您需要检查您当前使用的配置的用户[Access Key & Secret Key]是否有使用S3的权限。您可以查看详细信息information,或转到您的 IAM 以更改权限,有关 IAM 的详细信息请访问 this

    首先尝试使用 S3 完全访问权限

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 1970-01-01
      • 2018-08-19
      • 2015-05-05
      • 2021-04-26
      • 1970-01-01
      • 2015-03-12
      • 2022-01-23
      • 2022-11-19
      相关资源
      最近更新 更多