#amazon-s3 #pre-signed-url
#amazon-s3 #предварительно подписанный URL
Вопрос:
Я использую приведенный ниже код для возврата временных URL-адресов для файлов в корзине S3, которые отображаются на моем веб-сайте.
export function PreURL(IAM_USER_KEY, IAM_USER_SECRET, BUCKET_NAME, Key1) {
let s3bucket = new AWS.S3({
endpoint: 's3-us-west-1.amazonaws.com',
signatureVersion: 'v4',
region: 'us-west-1',
accessKeyId: IAM_USER_KEY,
secretAccessKey: IAM_USER_SECRET,
Bucket: BUCKET_NAME
});
var params = {Bucket: BUCKET_NAME, Key: Key1, Expires: 60};
var url = s3bucket.getSignedUrl('getObject', params);
console.log('Image The URL is', url); // expires in 60 seconds
return url.toString()
} // End of PreURL
Он возвращает URL-адрес в следующих строках:
https://BUCKET.s3-РЕГИОН.amazonaws.com /FILE?X-Amz-Algorithm= AWS4-HMAC-SHA256amp;X-Amz-Credential=IAM_KEY/20200909/REGION/s3/aws4_requestamp;X-Amz-Date=TIMEamp;X-Amz-Expires= 60amp;X-Amz-Signature=ПОДПИСЬamp;X-Amz-SignedHeaders=ЗАГОЛОВКИ#t =0.1
Этот URL-адрес меня несколько беспокоит, поскольку он выдает все, кроме secret_access_key. Я знаю, что к корзине нельзя получить доступ без нее, но я бы предпочел временный URL-адрес без такого большого количества информации в нем. (Bucket_Name, .amazonaws, IAM_KEY). Есть ли какой-либо другой способ создания временного URL-адреса для файлов в корзине S3, который не выдает так много информации?
Ответ №1:
Нет, нет возможности создать «псевдоним» для объектов.
Я понимаю, что вы обеспокоены тем, что он отображает значения вашей корзины и ключа, но это обычный способ работы с предварительно подписанными URL-адресами.
Если вам действительно не нравится то, что он делает, вы могли бы:
- Скопируйте файлы в «случайный» ключ
- Укажите предварительно подписанный URL-адрес для временного объекта
- Используйте политику жизненного цикла для удаления объектов через 1 день
Комментарии:
1. Большое вам спасибо, хотя меня больше беспокоит информация о корзине и IAM, чем ключ файла.