이전 글에 이어서 제대로 쌓이지 않은 로그들을 재처리하기 위해서 processing-failed/ 내의 데이터를 재전송하는 작업을 했다.
작업을 처리 중에
An error occurred (InvalidArgumentException) when calling the PutRecord operation: This operation is not permitted on KinesisStreamAsSource delivery stream type.
에러가 발생했다. (처음에는 PutRecordBatch 로 했는데 안 돼서 PutRecord로 변경했는데도 똑같이 발생)
여기저기 찾아봤는데 aws cli 에선
--cli-binary-format raw-in-base64-out 인자를 추가하라는 글이 많았다.
그런데 processing-failed/ 내의 파일들을 읽으려면 gzip, base64, json 처리가 필요해서 python으로 해결하고 싶었다.
그래서 생각해보다 Firehose 말고 Kinesis로 전송하는 걸로 변경해봤다. (사실 처음에는 lambda에 전송하려 했는데 lambda에 생각보다 많은 값을 요구해서 채우는 게 쉽지 않아 kinesis로 우회했다.)
다행히 Kinesis를 사용하니 정상적으로 작동되는 걸 확인할 수 있었다. 그런데 put_record를 사용했더니 속도가 매우 느렸다.. put_records로 변경하여 해결할 수 있었다.
근데 aws는 processing-failed에 있는 걸 재전송하는 건 안 만들어주는건가..?
'Programming > Tip&Informaion' 카테고리의 다른 글
ec2에서 docker 설치하기 (0) | 2023.03.08 |
---|---|
리눅스 방화벽 처리 (Oracle Cloud) (0) | 2023.02.02 |
[Kinesis/Firehose/Lambda] The Lambda function was successfully invoked but it returned an error result. 해결 (0) | 2022.11.15 |
[MWAA] plugins 폴더의 No module named 에러 (0) | 2022.08.05 |
[postgresql/docker] postmaster.pid: No space left on device 에러 (0) | 2022.08.03 |