Firehose를 사용하여 S3에 EventBridge 이벤트 로깅
4051 단어 serverlessaws
내가 만난 문제는 JSON의 모든 이벤트가 모두 한 줄에 있었지만 줄 바꿈으로 구분하는 것을 선호한다는 것입니다. 이것은 JSON Lines 형식으로 알려져 있습니다. Firehose의 Data Transformation 기능을 활용하면 이것이 가능하다는 것을 알았지만 이것은 옳지 않다고 느꼈습니다(즉, 비용을 지불하고 싶지 않았습니다 :-). 내가 이것을 조사했을 때 나는 그것에 대한 수정 사항을 찾았고 . 다른 사람들은 이 솔루션에 익숙하지 않을 수 있으므로 Twitter의 스레드보다 쉽게 찾을 수 있도록 이에 대해 자세히 설명하는 게시물을 작성하기로 결정했습니다.
해결책은 결국 비교적 간단하다는 것이 밝혀졌습니다. 규칙에서 입력 변환기를 구성하여 EventBridge에서 transform the input해야 합니다. 줄 바꿈을 포함하도록 이벤트를 수정합니다. 입력 경로로 다음을 구성해야 합니다.
{}
템플릿으로 다음을 구성해야 합니다.
<http://aws.events.event>
요령은 < http://aws.events.event > 뒤에 개행을 추가하는 것입니다.
콘솔에서 작업하는 것보다 CloudFormation을 사용하는 것이 좋습니다.
AllAccountEventsRule:
Type: AWS::Events::Rule
Properties:
EventBusName: !GetAtt EventBus.Name
EventPattern:
account:
- Ref: 'AWS::AccountId'
State: ENABLED
Targets:
- Id: FirehoseLogger
Arn: !GetAtt FirehoseStream.Arn
RoleArn: !GetAtt EventBridgeFirehoseDeliveryRole.Arn
InputTransformer:
InputPathsMap: { }
InputTemplate: |
<aws.events.event>
# empty because of the newline ^
CDK 솔루션을 제공해 주셔서 감사합니다.
return new targets.KinesisFirehoseStream(kinesisStream, {
message: {
bind: () => ({inputPathsMap: {}, inputTemplate: '<http://aws.events.event>\n'}),
},
});
Firehose가 S3에 작성한 파일에는 줄 바꿈으로 구분된 모든 이벤트가 있습니다.
{"version":"0","id":"493acfe4-35fd-4050-a850-de2191261310","detail-type":"action_a","source":"your_app","account":"your_account_id","time":"2022-08-02T01:02:08Z","region":"eu-west-1","resources":[],"detail":{"foo":"bar"}}
{"version":"0","id":"c76450da-079c-463d-b02a-edad99783952","detail-type":"action_b","source":"your_app","account":"your_account_id","time":"2022-08-02T01:02:08Z","region":"eu-west-1","resources":[],"detail":{"foo":"bar"}}
{"version":"0","id":"857dcf59-d54c-4ca7-8342-9eaa0988cad1","detail-type":"action_c","source":"your_app","account":"your_account_id","time":"2022-08-02T01:02:08Z","region":"eu-west-1","resources":[],"detail":{"foo":"bar"}}
Object Lock로 S3 버킷을 구성하면 애플리케이션에서 발생한 모든 일에 대해 쉽게 구문 분석할 수 있는 변경 불가능한 로그를 갖게 됩니다.
이벤트를 쉽게 쿼리하기 위해 물론 선택한 데이터베이스(DynamoDB, Elasticsearch, Postgres)에 이벤트를 저장할 수 있습니다. 이벤트별로가 아니라 이벤트 배치로 데이터베이스를 채우려면 Firehose에서 새 로그 파일을 작성할 때 트리거되는 Lambda를 생성할 수 있습니다. 그런 다음 S3에서 파일을 읽고 줄 바꿈으로 분할하고 이벤트를 데이터베이스로 푸시할 수 있습니다.
Reference
이 문제에 관하여(Firehose를 사용하여 S3에 EventBridge 이벤트 로깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/slootjes/logging-eventbridge-events-to-s3-with-firehose-2hkc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)