こんにちは!
AWSのKinesis Data StreamsとFirehoseを比較して、大量のデータを処理するための最適な選択をご紹介します。Kinesis Data StreamsとFirehoseは、AWSのストリームデータ処理サービスです。この記事では、Kinesis Data StreamsとFirehoseの違いを比較し、どちらが大量のデータを処理するための最適な選択かを詳しく解説します。
Kinesis Data StreamsとFirehoseは、AWSのストリームデータ処理サービスです。Kinesis Data Streamsは、大量のデータを受け取り、処理してから保存するためのサービスです。Firehoseは、受け取ったデータを受け取ってからすぐに保存するためのサービスです。Kinesis Data StreamsとFirehoseの違いを比較し、どちらが大量のデータを処理するための最適な選択かを詳しく解説します。
Kinesis Data StreamsとFirehoseは、それぞれ異なる用途で使用されます。Kinesis Data Streamsは、大量のデータを受け取り、処理してから保存するためのサービスです。Firehoseは、受け取ったデータを受け取ってからすぐに保存するためのサービスです。
Kinesis Data Streamsを使用すると、受け取ったデータを複数のストリームに分割して処理することができます。また、ストリーム内のデータを検索したり、フィルタリングしたりすることも可能です。
Firehoseは、受け取ったデータを受け取ってからすぐに保存するためのサービスです。Firehoseを使用すると、受け取ったデータをAmazon S3やAmazon Redshiftなどのデータストアに保存することができます。Firehoseを使用すると、データを受け取ってからすぐに保存することができるため、ストリーム処理を行う必要がない場合に効率的かつ実装が容易です。
Kinesis Data StreamsとFirehoseを使用するためのCloudFormationのサンプルです。
Resources:
MyKinesisDataStream:
Type: AWS::Kinesis::Stream
Properties:
Name: my-kinesis-data-stream
RetentionPeriodHours: 24
ShardCount: 1
MyKinesisDataProducer:
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket: my-lambda-code-bucket
S3Key: my-lambda-code.zip
Description: "My Kinesis Data Producer"
FunctionName: "my-kinesis-data-producer"
Handler: "lambda_function.lambda_handler"
MemorySize: 128
Role: "arn:aws:iam::123456789012:role/MyLambdaRole"
Runtime: "python3.7"
Timeout: 60
Environment:
Variables:
STREAM_NAME: !Ref MyKinesisDataStream
REGION: !Ref AWS::Region
MyKinesisDataProducerPermission:
Type: AWS::Lambda::Permission
Properties:
Action: "lambda:InvokeFunction"
FunctionName: !Ref MyKinesisDataProducer
Principal: "kinesis.amazonaws.com"
SourceArn: !GetAtt MyKinesisDataStream.Arn
MyKinesisDataConsumer:
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket: my-lambda-code-bucket
S3Key: my-lambda-code.zip
Description: "My Kinesis Data Consumer"
FunctionName: "my-kinesis-data-consumer"
Handler: "lambda_function.lambda_handler"
MemorySize: 128
Role: "arn:aws:iam::123456789012:role/MyLambdaRole"
Runtime: "python3.7"
Timeout: 60
Environment:
Variables:
STREAM_NAME: !Ref MyKinesisDataStream
REGION: !Ref AWS::Region
MyKinesisDataConsumerPermission:
Type: AWS::Lambda::Permission
Properties:
Action: "lambda:InvokeFunction"
FunctionName: !Ref MyKinesisDataConsumer
Principal: "kinesis.amazonaws.com"
SourceArn: !GetAtt MyKinesisDataStream.Arn
MyKinesisDataConsumerSubscription:
Type: AWS::Kinesis::StreamConsumer
Properties:
ConsumerName: "my-kinesis-data-consumer"
StreamARN: !GetAtt MyKinesisDataStream.Arn
RoleARN: "arn:aws:iam::123456789012:role/MyConsumerRole"
StartingPosition: "TRIM_HORIZON"
Resources:
MyDeliveryStream:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
DeliveryStreamName: my-delivery-stream
S3DestinationConfiguration:
BucketARN: arn:aws:s3:::my-s3-bucket
RoleARN: arn:aws:iam::123456789012:role/my-firehose-role
Prefix: my-data/
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 1
CompressionFormat: UNCOMPRESSED
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: my-delivery-stream-logs
LogStreamName: my-delivery-stream
ExtendedS3DestinationConfiguration:
RoleARN: arn:aws:iam::123456789012:role/my-firehose-role
BucketARN: arn:aws:s3:::my-s3-bucket
Prefix: my-data/
ErrorOutputPrefix: my-data/errors/
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 1
CompressionFormat: UNCOMPRESSED
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: my-delivery-stream-logs
LogStreamName: my-delivery-stream
ProcessingConfiguration:
Enabled: true
Processors:
- Type: Lambda
Parameters:
- ParameterName: "LambdaArn"
ParameterValue: "arn:aws:lambda:us-east-1:123456789012:function:my-lambda-function"
S3BackupMode: Disabled
Kinesis Data StreamsとFirehoseは、AWSのストリームデータ処理サービスです。Kinesis Data Streamsは、大量のデータを受け取り、処理してから保存するためのサービスです。Firehoseは、受け取ったデータを受け取ってからすぐに保存するためのサービスです。Kinesis Data StreamsとFirehoseを比較し、どちらが大量のデータを処理するための最適な選択かを解説しました。
サーバーレス開発、低コストなAWS開発内製化はお気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎