Я загрузил изображение в хранилище Amazon S3. Но как я могу получить доступ к этому изображению по URL-адресу? Я сделал папку и файл общедоступными, но все равно получаю ошибку AccessDenied, если попытаюсь получить к ней доступ по URL https://s3.amazonaws.com/bucket/path/image.png
Amazon S3 Доступ к изображению по URL
Ответ 1
Это старый вопрос, но для любого, кто сталкивается с этим вопросом, как только я сделал файл открытым, я смог получить доступ к моему изображению как https://mybucket.s3.amazonaws.com/myfolder/afile.jpg
Ответ 2
Вы можете получить доступ к своему изображению, используя:
https://s3.amazonaws.com/bucketname/foldername/imagename.jpg
или если нет папок, вы можете сделать:
https://s3.amazonaws.com/bucketname/imagename.jpg
upvote, если помогает. Он соответствует настоящему AWS от 30 мая 2017 года.
Ответ 3
Похоже, теперь вы можете просто щелкнуть правой кнопкой мыши по любой папке внутри ведра и выбрать "Сделать общедоступным", чтобы сделать все в этой папке общедоступным. Он может не работать на уровне ковша.
Ответ 4
убедитесь, что вы получаете доступ к изображению, используя тот же случай, который был загружен и сохранен на S3. например, если вы загрузили image_name. JPG, вы должны использовать одно и то же имя, но не имя_файла. jpg
Ответ 5
Я столкнулся с этим вопросом, ища решение подобной проблемы с невозможностью доступа к изображениям.
Оказывается, что изображения с %
в имени файла при обращении к нему должны иметь URL-адрес %
, закодированный в %25
.
то есть. photo%20of%20a%20banana%20-%2019%20june%202016.jpg
должен быть доступен через photo%2520of%2520a%2520banana%2520-%252019%2520june%25202016.jpg
.
Однако URL-кодирование полного пути не сработало для нас, поскольку косые черты и т.д. будут закодированы, и путь не будет работать. В нашем конкретном случае просто замена %
на %25
на всех путях доступа сделала разницу.
Ответ 6
У меня была такая же проблема. У меня проблема с интервалом в URL-адресе изображения. Я сделал это, чтобы он работал:
String imgUrl=prizes.get(position).getImagePreview().replaceAll("\\s","%20");
теперь передайте этот url для picasso:
Picasso.with(mContext)
.load(imgUrl)
.into(mImageView);
Ответ 7
На вашей консоли щелкните правой кнопкой мыши по изображению, которое вы хотите получить, и нажмите "Сделать общедоступным"; после этого щелкните правой кнопкой мыши по изображению и нажмите "Свойства" и скопируйте ссылку с расширенного вида.
Ответ 8
Один из самых простых способов - создать политику с ведром.
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "MakeItPublic",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::yourbucketname.com/*"
}]
}
Ответ 9
Чтобы получить доступ к частным изображениям через URL, вы должны предоставить аутентификацию строки запроса. Для аутентификации строки запроса версии 4 требуются параметры X-Amz-Algorithm, X-Amz-Credential, X-Amz-Signature, X-Amz-Date, X-Amz-SignedHeaders и X-Amz-Expires.
Ответ 10
в моем случае я загрузил изображение в частном порядке, поэтому я не смог получить к нему доступ. я сделал следующий код
const AWS = require('aws-sdk')
const myBucket = 'BUCKET_NAME'
const myKey = 'FILE_NAME.JPG'
const signedUrlExpireSeconds = 60 * 1
const s3 = new AWS.S3({
accessKeyId: "ACCESS_KEY_ID",
signatureVersion: 'v4',
region: 'S3_REGION',
secretAccessKey: "ACCESS_SECRET"
});
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myKey,
Expires: signedUrlExpireSeconds
})
console.log(url)