AWS S3. Место, где можно хранить файлы. Это то, что большинство из вас уже знает об этом. S3 - один из старейших сервисов, предоставляемых Amazon, до того, как появились революционные функции Lambda и изменившие правила игры Alexa Skills. Вы можете хранить практически любые типы файлов, от doc до pdf, и размером от 0 до 5 ТБ.
Согласно их официальным документам, AWS S3:
«S 3 обеспечивает комплексные возможности обеспечения безопасности и соответствия требованиям, которые отвечают даже самым строгим нормативным требованиям. Это дает клиентам гибкость в способах управления данными для оптимизации затрат, контроля доступа и соблюдения нормативных требований. »- Документы AWS
Если я попытаюсь выразить это простым языком, AWS S3 - это объектно-ориентированная система хранения, в которой каждый файл в вашем магазине сохраняется как объект, а не как файл. Есть много крупных технических специалистов, использующих S3, и Dropbox - один из них. Недавно Dropbox начал сохранять метаданные своего файла в собственном сервисе, но они по-прежнему сохраняют основные данные в S3. Почему? Что ж, S3 не так уж и дорог и доступен на 99,9%. Кроме того, у вас есть возможность использовать такие сервисы, как Glacier, которые могут сохранять данные и взимать почти 0,01 доллара за ГБ.
Пока что, если я привлек ваше внимание, и вы думаете, как использовать S3 в моем приложении nodejs. Что ж, не нужно долго ждать.
У AWS есть официальный пакет, который предоставляет API-интерфейсы S3 для приложений node js и упрощает разработчикам доступ к S3 из своих приложений.
Начнем с установки пакета NPM:
npm install — save aws-sdk
После установки импортируйте пакет в свой код:
import AWS from ‘aws-sdk’; const S3 = new AWS.S3(); // You don’t need to pass params if you have already set aws creds as env variables // Else pass it in constructor const S3 = new AWS.S3({ accessKeyId: “<your_access_key>”, secretAccessKey: “<secret_access_key>” });
Теперь у вас есть экземпляр S3, который может получить доступ ко всем сегментам в вашей учетной записи AWS.
Ниже представлен простой прототип того, как загрузить файл на S3. Здесь Bucket - имя вашей корзины, а key - имя подпапки. Итак, если имя вашей корзины - «test-bucket» и вы хотите сохранить файл в «test-bucket / folder / subfolder / file.csv», то значение ключа должно быть «folder / subfolder / file.csv».
Примечание. S3 - это объектно-ориентированное хранилище, а не файловое. Таким образом, даже в консоли AWS вы можете видеть вложенные папки, за сценой они никогда не сохраняются в таком виде. У каждого объекта есть два поля: Ключ и Значение. Ключ здесь - это просто имя файла, а значение - это данные, которые сохраняются.
Итак, если в корзине «bucket1» есть ключ «key1 / key2 / file.mp3», вы можете визуализировать это так:
{ “bucket1”: { “key1/key2/file.mp3”: “<mp3-data>” } }
Ниже приведен простой фрагмент кода для загрузки файла с использованием Key и BucketName.
const params = { Bucket: ‘bucket’, Key: ‘key’, Body: stream }; s3.upload(params, function(err, data) { console.log(err, data); });
Хорошо, давайте напишем простой код для сохранения файла на S3.
Сначала создайте файл, скажем contacts.csv, и запишите в него данные.
Выше представлены фиктивные данные для начала. Вы можете использовать этот файл csv или создать свой собственный csv или, если уж на то пошло, любой файл. Теперь у вас есть файл contacts.csv, давайте прочитаем его с помощью модуля fs и сохраним в S3.
import fs from ‘fs’ import AWS from ‘aws-sdk’ const s3 = new AWS.S3(); fs.readFile(‘contacts.csv’, (err, data) => { if (err) throw err; const params = { Bucket: ‘testBucket’, // pass your bucket name Key: ‘contacts.csv’, // file will be saved as testBucket/contacts.csv Body: JSON.stringify(data, null, 2) }; s3.upload(params, (s3Err, data) => { if (s3Err) throw s3Err console.log(`File uploaded successfully at ${data.Location}`) }); });
Метод загрузки S3 возвращает ошибку и данные в обратном вызове, где поле данных содержит местоположение, сегмент и ключ загруженного файла. Для получения полной справки по API обратитесь к их официальной документации.
Если в приведенном выше фрагменте ошибок нет, значит, файл должен быть в вашей корзине.
Вот и все, вы загрузили файл в AWS S3 с помощью менее 20 строк кода. Вы можете найти полный проект здесь.
С этим пакетом можно делать множество вещей, например:
- Составьте список ведер и объектов
- Установить разрешения для корзины
- Создание, получение или удаление корзины и многое другое
Я настоятельно рекомендую вам просмотреть этот документ для API, они очень хорошо объяснены с параметрами, которые вы можете передать каждому API, и форматом ответа, который они возвращают.
Я надеюсь, что вы нашли этот пост полезным, и, пожалуйста, дайте мне знать, если у вас возникнут какие-либо вопросы или вопросы. Если вам понравился этот пост, вы можете аплодировать ему или подписаться на меня на Medium, чтобы увидеть мои последние посты, или в Twitter.