В статье мы увидим, как загружать метаданные объекта при загрузке в S3 программно.
Я буду использовать Node.js, чтобы продемонстрировать то же самое.
Прежде чем перейти к этому, давайте посмотрим, что такое метаданные и их использование
У нас есть 2 типа метаданных
- Системные метаданные, например, дата, длина контента
- Пользовательские метаданные
Пока мы загружаем объект, мы можем добавить собственные метаданные об этом объекте в виде пары ключ-значение
Примечание : Все пользовательские — определенные ключи метаданных в нижнем регистре
Допустим, у нас есть платформа, на которой контент добавляется несколькими организациями. В этом случае удобно добавить OrganizationID в качестве одного из метаданных.
Следующий код поможет вам загрузить объект в s3 вместе с его метаданными.
JavaScript
1
var AWS = require('aws-sdk')
2
var credentials = require('./cred');
3
var s3 = new AWS.S3({accessKeyId: credentials.accesskey,
4
secretAccessKey: credentials.secretkey,region:credentials.region});
5
var fs = require('fs');
6
fs.readFile('file2.txt', function (err, data) {
8
if (err) { throw err; }
9
var base64data = new Buffer(data, 'binary');
10
s3.putObject({
11
Bucket: 'uploadmetatest',
12
Key: 'vijaykishan.txt',
13
Metadata: {OrgID: 'TEKKIHUT', PROFILE: 'HD'},
14
Body: base64data,
15
ACL: 'public-read'
16
}, function (resp) {
17
console.log('Successfully uploaded package.');
18
});
19
});
Давайте посмотрим, как получить метаданные загруженного объекта с помощью node.js.
Следующий код поможет вам получить метаданные объекта, загруженного в s3.
JavaScript
xxxxxxxxxx
1
var params = {
2
Bucket: "uploadmetatest",
3
Key: "file2.txt"
4
};
5
s3.headObject(params, function (err, data) { if (err) console.log(err, err.stack); // an error occurred
6
else {
7
console.log(data.Metadata['orgid']);
8
console.log(data.Metadata['profile']);
9
}
10
});
Запись
Размер заголовка запроса PUT ограничен 8 КБ. В заголовке запроса PUT размер пользовательских метаданных ограничен 2 КБ. Размер пользовательских метаданных измеряется путем взятия суммы количества байтов в кодировке UTF-8 каждого ключа и значения.
Надеюсь это поможет