Boto3 как создать объект с метаданными?

82
9

В приведенном ниже примере я хочу установить атрибут метаданных timestamp при создании объекта S3. Как мне это сделать? Документация не ясна.


import uuuid
import json
import boto3
import botocore
import time

from boto3.session import Session
session = Session(aws_access_key_id='XXX',
aws_secret_access_key='XXX')

s3 = session.resource('s3')

bucket = s3.Bucket('blah')

for filename in glob.glob('json/*.json'):
with open(filename, 'rb') as f:
data = f.read().decode('utf-8')
timestamp = str(round(time.time(),10))
my_s3obj = s3.Object('blah', str(uuid.uuid4())).put(Body=json.dumps(data))

спросил(а) 2015-11-18T06:28:00+03:00 4 года, 11 месяцев назад
1
Решение
92

Вы можете указать метаданные для объекта в виде пар ключ-значение, например:


s3.Object('bucket-name', 'uuid-key-name').put(Body='data', 
Metadata={'key-name':'value'})

Смотрите boto3 docs для других параметров, которые вы можете использовать внутри put().

ответил(а) 2015-11-18T08:13:00+03:00 4 года, 11 месяцев назад
58

Что касается boto3, у вас есть опция upload_file, подробно описанная на сайте boto3 здесь.


import boto3
#Create the S3 client
s3ressource = client(
service_name='s3',
endpoint_url= param_3,
aws_access_key_id= param_1,
aws_secret_access_key=param_2,
use_ssl=True,
)

Загрузка файла, вы должны указать ключ (который в основном является вашим именем robject/file), а добавление метаданных при создании ключа будет выполнено с помощью опции "ExtraArgs":


s3ressource.upload_file(Filename, bucketname, key, ExtraArgs={"Metadata": {"metadata1":"ImageName","metadata2":"ImagePROPERTIES" ,"metadata3":"ImageCREATIONDATE"}})

ответил(а) 2017-04-24T17:24:00+03:00 3 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема