FluentBit × Kinesis × S3로 로그 보존 기반 만들기 ~Kinesis&S3 실장편~
8934 단어 CloudFormationS3KinesisAWS
소개
이전에 쓴 FluentBit × Kinesis × S3로 로그 보존 기반 만들기 ~ 개요 편 ~의 계속입니다.
이번에는 AWS측의 구현인 Kinesis Firehose Delivery Stream에서 S3로 데이터를 흘리는 기반을 만듭니다.
리소스 생성
이번에는 CloudFormation을 사용하여 리소스를 만들었습니다.
필요한 리소스
이번에는 CloudFormation을 사용하여 리소스를 만들었습니다.
필요한 리소스
※ Kinesis Firehose Delivery Stream이 길기 때문에 이후에는 Firehose라고합니다.
템플릿
위의 요구 사항을 충족하는 템플릿은 다음과 같습니다.
버킷 이름은 반드시 쓰여 버리므로, 적절히 바꾸도록 하는 것이 좋다고 생각합니다.
(샘플용으로 쓰고 있으므로 자원명의 적당성은 용서해 주세요...)
firehose_to_s3.yaml
AWSTemplateFormatVersion: 2010-09-09
Resources:
LogBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: log-bucket-stream-sample0021
AccessControl: Private
LogToS3Stream:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
DeliveryStreamName: log-to-s3-stream
DeliveryStreamType: DirectPut
ExtendedS3DestinationConfiguration:
BucketARN: !GetAtt LogBucket.Arn
RoleARN: !GetAtt FirehoseToS3IamRole.Arn
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 50
CompressionFormat: GZIP
FirehoseToS3IamRole:
Type: AWS::IAM::Role
Properties:
RoleName: firehose-to-s3-iam-role
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- firehose.amazonaws.com
Action:
- sts:AssumeRole
ManagedPolicyArns:
- !Ref FirehoseToS3DeliveryPolicy
FirehoseToS3DeliveryPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
PolicyDocument:
Version: 2012-10-17
Statement:
-
Sid: AllowFirehoseToS3Delivery
Effect: Allow
Action:
- s3:AbortMultipartUpload
- s3:GetBucketLocation
- s3:GetObject
- s3:ListBucket
- s3:ListBucketMultipartUploads
- s3:PutObject
- kinesis:DescribeStream
- kinesis:GetShardIterator
- kinesis:GetRecords
- kinesis:ListShards
- kms:Decrypt
- kms:GenerateDataKey
- logs:PutLogEvents
- lambda:InvokeFunction
- lambda:GetFunctionConfiguration
Resource: "*"
여기를 CloudFormation에서 흘려 보냅니다.
변수는 특별히 포함되지 않으므로 설정이 필요하지 않습니다.
리소스 확인
S3
버킷이 생성되었습니다.
여기가 Firehose에서 전송되는 데이터가 기록되는 곳입니다.
Firehose
이런 식으로 리소스가 만들어졌습니다.
캐치 한 데이터를 쓰는 S3도 제대로 지정됩니다.
덧붙여서 여기의 Buffer conditions는, Firehose가 데이터를 캐치하고 나서, S3에 보내기까지의 간격치등의 버퍼 설정입니다.
움직여 보자
데이터 보내기
Firehose의 콘솔 화면에는 테스트 데이터를 보내는 버튼이 설치되어 있으므로 이것을 사용하여 Firehose에 데이터를 보냅니다.
센딩 데모 데이터를 클릭하면 데이터가 전송되기 시작합니다.
1번 누르면 1건 데이터가 보내지는 것이 아니라, 몇건이나 데이터가 연속으로 보내지는 것 같습니다.
그 때문에, 「Stop sending demo data」를 클릭하지 않으면 데이터의 송신이 멈추지 않으므로 주의를!
그건 그렇고{"ticker_symbol":"QXZ", "sector":"HEALTHCARE", "change":-0.05, "price":84.51}
가 여러 번 보내지는 형태입니다. JSON 문자열입니다.
Firehose 모니터링을 확인해 봅니다.
Monitoring을 클릭하면 Firehose가 수신한 데이터의 양, S3에 전송한 데이터의 양 등의 지표를 볼 수 있습니다.
잠시 기다려 화면 업데이트를 해보면 Firehose가 데이터를 스트리밍하는 것을 알 수 있는 지표 데이터가 나타납니다.
이번에는 60개 데이터를 Firehose에 흘리고, 그것을 잡은 Firehose가 60개의 데이터를 S3에 썼습니다.
버킷 확인
S3을 살펴보면 날짜와 시간으로 구분된 디렉터리가 자동으로 생성되고, 그 안에 Firehose가 스트리밍으로 쓴 데이터의 파일이 배치됩니다.
gz 파일을 다운로드하고 less 명령 등으로 확인.
그러면
Firehose에서 보낸 데이터를 확인할 수있었습니다.
마지막으로
이번에는 Firehose에서 S3로 데이터를 스트리밍하는 기반을 구축했습니다.
다음은 컨테이너 측의 구현이되는 FluentBit에서 Firehose로 데이터를 보내는 부분에 대해 정리합니다.
Reference
이 문제에 관하여(FluentBit × Kinesis × S3로 로그 보존 기반 만들기 ~Kinesis&S3 실장편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Canon11/items/56bb6eda9aa299127c2e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 Firehose에서 S3로 데이터를 스트리밍하는 기반을 구축했습니다.
다음은 컨테이너 측의 구현이되는 FluentBit에서 Firehose로 데이터를 보내는 부분에 대해 정리합니다.
Reference
이 문제에 관하여(FluentBit × Kinesis × S3로 로그 보존 기반 만들기 ~Kinesis&S3 실장편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Canon11/items/56bb6eda9aa299127c2e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)