Я следую приведенному ниже руководству, чтобы разрешить загрузку на основе браузера в мое 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
, но он не показал никаких изменений.