У меня был простой пример использования. Я создавал проект доска вакансий , и пришло время создать форму для отправки нового предложения о работе.
Рекрутер может ввести сведения о компании, сведения о работе и изображение логотипа компании.
Данные хранятся в базе данных, и сначала я попытался сохранить логотип в базе данных, но через некоторое время я понял, что, хотя технически все в порядке, у меня возникли некоторые проблемы с хранением двоичных данных, и это заняло слишком много времени для выполнения задачи. Поэтому я сказал: “Хорошо, давайте просто загрузим его в S3”.
S3 – один из замечательных сервисов, предоставляемых AWS. Поскольку я уже использую AWS для других целей, добавить корзину S3 несложно.
Поэтому я пошел создавать корзину S3.
У меня уже был аккаунт AWS. Если вы этого не сделаете, начните здесь: https://aws.amazon.com .
Как только у вас будет настроена учетная запись, создайте пользователя IAM в AWS. Войдите в AWS, нажмите свое имя сверху, а затем “Мои учетные данные безопасности”.
На боковой панели нажмите “Пользователи” и “Добавить пользователя”. Включите “Программный доступ”.
Перейдите к следующему экрану с помощью кнопок, которые вы найдете в нижней части страницы (“Далее: Разрешения”).
Нажмите кнопку “Прикрепить существующие политики напрямую”.:
Введите “S3” в фильтр, чтобы отобразить политики S3
Выберите разрешение AmazonS3FullAccess :
Как только пользователь будет создан, у вас будет пара идентификаторов ключа доступа и секретный ключ доступа. Скопируйте их в свой файл .env в проекте, который у вас есть, или сохраните их где-нибудь, чтобы вы могли использовать их позже.
Затем зайдите в S3 и создайте корзину. С домашней страницы S3 https://s3.console.aws.amazon.com нажмите кнопку “Создать корзину”.
Задайте имя, выберите регион AWS, отключите “Блокировать весь общедоступный доступ” (мы перейдем к разрешениям в другом посте) и нажмите кнопку “Создать корзину” в нижней части страницы.
Сделано! Теперь пришло время погрузиться в Node.js . Я использую этот код в Next.js, на стороне сервера, в вызове API.
Сначала установите пакет aws-sdk с помощью npm install aws-sdk .
Как уже упоминалось, храните свои коды доступа AWS в .env :
AWS_ACCESS_KEY_ID=AWS_SECRET_ACCESS_KEY= AWS_BUCKET_NAME=
Добавь
import AWS from 'aws-sdk'
наверху.
Затем инициализируйте объект s3 с помощью:
const s3 = new AWS.S3({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
})Теперь, когда вы хотите загрузить файл, загрузите его из хранилища
const filename = 'the-file-name'
const fileContent = fs.readFileSync(fileName)
const params = {
Bucket: process.env.AWS_BUCKET_NAME,
Key: `${filename}.jpg`,
Body: fileContent
}
s3.upload(params, (err, data) => {
if (err) {
reject(err)
}
resolve(data.Location)
})Оригинал: “https://flaviocopes.com/node-upload-files-s3/”