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.