Как читать данные из потока Kinesis, используя AWS CLI? - PullRequest
0 голосов
/ 21 марта 2020

У меня есть поток Kinesis в AWS, и я могу отправить в него данные (JSON) с помощью команды kinesis и могу получить его из потока с помощью:

SHARD_ITERATOR=$(aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name mystream --query 'ShardIterator' --profile myprofile)
aws kinesis get-records --shard-iterator $SHARD_ITERATOR --profile myprofile

Вывод этого выглядит следующим образом что-то вроде:

HsKCQkidmlkZW9Tb3VyY2UiOiBbCgkJCXsKCQkJCSJicmFuZGluZyI6IHt9LAoJCQkJInByb21vUG9vbCI6IFtdLAoJCQkJImlkIjogbnVsbAoJCQl9CgkJXSwKCQkiaW1hZ2VTb3VyY2UiOiB7fSwKCQkibWV0YWRhdGFBcHByb3ZlZCI6IHRydWUsCgkJImR1ZURhdGUiOiAxNTgzMzEyNTA0ODAzLAoJCSJwcm9maWxlIjogewoJCQkiY29tcG9uZW50Q291bnQiOiAwLAoJCQkibmFtZSI6ICJTUUVfQVRfUFJPRklMRSIsCgkJCSJpZCI6ICJTUUVfQVRfUFJPRklMRV9JRCIsCgkJCSJwYWNrYWdlQ291bnQiOiAwLAoJCQkicGFja2FnZXMiOiBbCgkJCQl7CgkJCQkJIm5hbWUiOiAiUEVBQ09DSy1MVEEiLAoJCQkJCSJpZCI6ICJmZDk5NTRmZC03NDYwLTRjZjItOTU5Ni05YzBhMjcxNTViODgiCgkJCQl9CgkJCV0KCQl9LAoJCSJ3b3JrT3JkZXJJZCI6ICJTUUVfQVRfSk9CX1NVQk1JU1

Как мне получить реальное JSON сообщение в необработанном формате (чтобы выглядеть как JSON) - так же, как это было в оригинале, когда я отправил его?

Спасибо

1 Ответ

3 голосов
/ 21 марта 2020

Согласно документам , вам нужно использовать инструмент декодирования Base64 или библиотеку KCL, чтобы получить данные в том формате, в котором они были отправлены:

Первое, что вы Вероятно, вы заметите, что ваша запись в этой части руководства состоит в том, что данные выглядят как мусор; это не текстовые данные теста, которые мы отправили. Это связано с тем, что put-record использует кодировку Base64 для отправки двоичных данных. Однако поддержка потоков данных Kinesis в CLI AWS не обеспечивает декодирование Base64, поскольку декодирование Base64 в необработанный двоичный контент, распечатанный на стандартный вывод, может привести к нежелательному поведению и потенциальным проблемам безопасности на определенных платформах и терминалах. Если вы используете декодер Base64 (например, https://www.base64decode.org/) для ручного декодирования dGVzdGRhdGE =, вы увидите, что на самом деле это тестовые данные. Этого достаточно для данного руководства, поскольку на практике CLI AWS редко используется для потребления данных, но чаще для мониторинга состояния потока и получения информации, как показано ранее (description-stream и list- потоки). В следующих руководствах вы узнаете, как создавать потребительские приложения производственного качества с использованием Kinesis Client Library (KCL), где Base64 позаботится о вас. Дополнительные сведения о KCL см. В разделе «Разработка потребителей KCL 1.x».

...