Получение «AccessDenied» при доступе к S3 с использованием Cognito Token - PullRequest
0 голосов
/ 12 ноября 2018

Я следую приведенному ниже руководству, чтобы разрешить загрузку на основе браузера в мое S3 ведро.

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html

Я закончил весь урок, но когда я отправляю фотографию с localhost, я получаю 403 отказ в доступе с acl, установленным на public-read и 400 с acl, установленным на public.

Моя IAM политика, как показано там

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "s3:*"
         ],
         "Resource": [
            "arn:aws:s3:::BUCKET_NAME/*"
         ]
      }
   ]
}

и я использую неаутентифицированного анонимного пользователя.

Консоль cognito показывает unauthenticated пользователей, но я также не знаю, почему.

Функция, которую я использую для загрузки, показана ниже

function uploadPDF() {

    var file = $('#fileUpload').val();
    var fileName = Date.now().toString() + ".pdf";
    var albumPhotosKey = encodeURIComponent("files") + '/';

    var photoKey = albumPhotosKey + fileName;
    s3.upload({
        Key: photoKey,
        Body: file,
        ACL: 'public'
    }, function(err, data) {
        if (err) {
            console.log(err);
            return alert('There was an error uploading your photo: ', err.message);
        }
        alert('Successfully uploaded photo.');
    });
}

и я настроил AWS SDK как показано ниже

    AWS.config.update({
            region: 'ap-south-1',
            credentials: new AWS.CognitoIdentityCredentials({
                IdentityPoolId: 'ap-south-1:IdentityPoolKey'
            })
        });

        var s3 = new AWS.S3({
            apiVersion: '2006-03-01',
            params: {Bucket: albumBucketName}
        });

На основе этого ответа я попытался изменить IdentityPoolId на us-east-1, но он не показал никаких изменений.

...