Основная цель этой статьи — понять основы загрузки данных в корзины AWS-S3. Перед началом не забудьте создать корзину s3 и пользователя IAM с необходимыми разрешениями для вашей корзины в консоли AWS. Вы можете найти руководства по этим шагам в конце этой статьи :)

Я получил образование в области компьютерных наук. Через некоторое время я начал интересоваться веб-технологиями. Я новичок в веб-разработке и хотел бы поделиться с вами небольшой частью моего последнего проекта NodeJS.

Я хочу начать с модуля awsService.js. Во-первых, мы собираемся импортировать библиотеку AWS для использования. Затем мы собираемся обновить нашу конфигурацию по мере необходимости. Этот проект был посвящен хранению некоторых данных в корзинах S3, поэтому мы воспользуемся функцией загрузки библиотеки AWS, затем экспортируем и используем ее в нашем основном файле javascript.

// 1- Import the AWS Library
var AWS = require('aws-sdk');
// 2- Update region in AWS.config
AWS.config.update({region: 'Your buckets region here'});
// 3- We will define a few constants with necessary information
const bucket = 'Your buckets name here';
const IAM_USER_KEY = 'Your IAM user key here';
const IAM_USER_SECRET = 'Your IAM user secret here';
// 4- Then we are going to use AWS.S3 and those constants to define
// an s3 service interface object.
const s3 = new AWS.S3({
    accessKeyId: IAM_USER_KEY,
    secretAccessKey: IAM_USER_SECRET,
    Bucket: bucket
});
// 5- Now we can define our own upload function by using s3
// object's upload function. This function is async because s3
// object's upload function is async.
const upload = async (data) => {
    // 6- Define an object to keep our data
    const uploadParams = {Bucket: bucket, Key: '', Body: ''};
    // 7- Convert data into string and put it into that object
    uploadParams.Body = JSON.stringify(data);
    // 8- Define the key, you can assume it is the filename :)
    uploadParams.Key = 'filename.txt';
    // 9- Now, let's call the s3 object's upload function and 
    // convert it to a Promise. So we can wait for the process, 
    // then/catch return whatever we want
    await s3.upload(uploadParams).promise()
        .then((data) => {
            console.log(`File uploaded successfully. ${data.Location}`);
        })
        .catch((err) => {
            console.error("Upload failed", err);
        });
    };
// 10- Let's export our upload function to use it in main javascript
// file
module.exports = { upload };

Теперь все, что нам нужно сделать, это импортировать нашу функцию загрузки в основной файл javascript и использовать ее!

// Import our awsService module
const awsService = require('./awsService');
// Call an async function directly to keep it short :)
(async() => {
    // Get and process your data, then pass it to our upload
    // function which is in the awsService module
    await awsService.upload(data);
})();

Это очень простой способ загрузки данных в корзины AWS-S3. В библиотеке AWS есть много разных функций для разных целей и операций. Я оставлю несколько ссылок ниже, которые, я думаю, вы найдете очень полезную информацию :)