Как я могу включить numpy.ndarray в качестве метаданных с boto3? - PullRequest
0 голосов
/ 24 мая 2019

Я хотел бы включить массив метаданных размером 2096 байт для изображения, которое я загружаю на S3

Мой код загрузки для boto3:

s3_response = s3.put_object(
                    Body=img,
                    Bucket='mybucket',
                    Key='test',
                    Metadata={
                        'f_vector': frame.f_vector
                    }

Где frame.f_vector - это numpy.ndarray

При этом я получаю AttributeError: у объекта 'numpy.ndarray' нет атрибута 'encode'

Я пытался преобразовать его в список с помощью f_vector.tolist(), но затем я просто получаю AttributeError: 'list' object has no attribute 'encode' снова

Как я могу отправить это img в S3 с пустым массивом (или каким-нибудь средним форматом, который я могу преобразовать обратно в простой массив) в качестве метаданных?

1 Ответ

0 голосов
/ 24 мая 2019

Welp, похоже, что boto3 допускает только строки в качестве метаданных, поэтому вам придется использовать numpy.array2string (x)

К сожалению, я обнаружил, что максимальный размер метаданных для S3 составляет 2 КБ, а это значит, что массив (256,1) слишком велик!

В виде строки оказалось 3135 байт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...