下記のやり方に則って、EC2上にpythonプログラムを配置し
kinesisへのputを検知して、ログを出力したいです。
リンク内容
コンシューマプログラムは、
以下のコマンドを実行して生成されたコマンドを実行することで
kinesisからデータを取り出すことに成功するのですが、logの出力に失敗します。
python
1python samples/amazon_kclpy_helper.py --print_command --java `which java` --properties sample.properties
log
1^C2021-08-14 06:00:36,469 [multi-lang-daemon-0001] ERROR s.a.k.multilang.DrainChildSTDERRTask [NONE] - Received error line from subprocess [Record (Partition Key: cat, Sequence Number: 249621021207286676391593542136605032695602445830552813570, Subsequence Number: 0, Data Size: 3Encountered an exception while processing records. Exception was write() argument must be str, not bytes] for shard shardId-000000000000
プロデューサー側は、
以下のコマンドを実行することでkinesisへputするのですが
引数の文字(dog,bird,lobster)が、バイナリとして認識されているため
エラーになっているようです。これをstrとして認識して処理するためにはどうすればよいですか?
python
1sample_kinesis_wordputter.py --stream words -w cat -w dog -w bird -w lobster --region ap-northeast-1
sample_kclpy_app.pyのprocess_record関数に
以下のプログラムを追加しただけです。
pyyhon
1 print(data) 2 with open('./test.log', mode='a') as f: 3 f.write(data) 4 return
あなたの回答
tips
プレビュー