S3拡張宛先構成とは何ですか?AWSドキュメントのどこにそれが明確に説明されていますか?
名前が示すように、これはS3の宛先に関するものでなければなりません。ただし、AWSドキュメントのS3宛先部分は言及されていません。
明確な説明がある記事やブログがある場合は、ポインタを提供してください。
以下のようなドキュメンテーションで手掛かりを探していますが、AWSドキュメンテーションと同じように、それは明確ではありません。入力レコード変換またはレコード処理に部分的に関連しているように見えます。
Amazon Kinesis Data Firehose APIリファレンス-ExtendedS3DestinationConfiguration
Amazon S3の宛先の構成について説明します。
Amazon Kinesis Data Firehose開発者ガイドPDF -入力レコード形式の変換(API)
Kinesis Data Firehoseで入力データの形式をJSONからParquetまたはORCに変換する場合は、オプションのDataFormatConversionConfiguration要素をExtendedS3DestinationConfiguration ...
AWS CloudFormation-AWS :: KinesisFirehose :: DeliveryStream ExtendedS3DestinationConfiguration
ExtendedS3DestinationConfigurationプロパティタイプは、Amazon Kinesis Data Firehose配信ストリームのAmazon S3宛先を設定します。
resource "aws_kinesis_firehose_delivery_stream" "extended_s3_stream" {
name = "terraform-kinesis-firehose-extended-s3-test-stream"
destination = "extended_s3"
extended_s3_configuration {
role_arn = "${aws_iam_role.firehose_role.arn}"
bucket_arn = "${aws_s3_bucket.bucket.arn}"
processing_configuration {
enabled = "true"
processors {
type = "Lambda"
parameters {
parameter_name = "LambdaArn"
parameter_value = "${aws_lambda_function.lambda_processor.arn}:$LATEST"
}
}
}
}
}
Terraformのドキュメントは、S3宛先と拡張S3宛先の違いを示すのに最適です。 https://www.terraform.io/docs/providers/aws/r/kinesis_firehose_delivery_stream.html
S3 Extendedは、data_format_conversion_configuration
やerror_output_prefix
などの追加パラメーターを使用して、S3宛先構成パラメーターを継承します
最初のExtendedS3DestinationConfigurationプロパティタイプは、Amazon Kinesis Data Firehose配信ストリームのAmazon S3宛先を設定します。参照: https://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html
ありがとう。
この小さなスクリーンショットは、ExtendedS3DestinationConfiguration
と比較したS3DestinationConfiguration
の新しいコンポーネントを示しています。
また、拡張s3構成の定義と定義は、API documentation に示されています。
{
"RoleARN": "string",
"BucketARN": "string",
"Prefix": "string",
"ErrorOutputPrefix": "string",
"BufferingHints": {
"SizeInMBs": integer,
"IntervalInSeconds": integer
},
"CompressionFormat": "UNCOMPRESSED"|"GZIP"|"Zip"|"Snappy",
"EncryptionConfiguration": {
"NoEncryptionConfig": "NoEncryption",
"KMSEncryptionConfig": {
"AWSKMSKeyARN": "string"
}
},
"CloudWatchLoggingOptions": {
"Enabled": true|false,
"LogGroupName": "string",
"LogStreamName": "string"
},
"ProcessingConfiguration": {
"Enabled": true|false,
"Processors": [
{
"Type": "Lambda",
"Parameters": [
{
"ParameterName": "LambdaArn"|"NumberOfRetries"|"RoleArn"|"BufferSizeInMBs"|"BufferIntervalInSeconds",
"ParameterValue": "string"
}
...
]
}
...
]
},
"S3BackupMode": "Disabled"|"Enabled",
"S3BackupUpdate": {
"RoleARN": "string",
"BucketARN": "string",
"Prefix": "string",
"ErrorOutputPrefix": "string",
"BufferingHints": {
"SizeInMBs": integer,
"IntervalInSeconds": integer
},
"CompressionFormat": "UNCOMPRESSED"|"GZIP"|"Zip"|"Snappy",
"EncryptionConfiguration": {
"NoEncryptionConfig": "NoEncryption",
"KMSEncryptionConfig": {
"AWSKMSKeyARN": "string"
}
},
"CloudWatchLoggingOptions": {
"Enabled": true|false,
"LogGroupName": "string",
"LogStreamName": "string"
}
},
"DataFormatConversionConfiguration": {
"SchemaConfiguration": {
"RoleARN": "string",
"CatalogId": "string",
"DatabaseName": "string",
"TableName": "string",
"Region": "string",
"VersionId": "string"
},
"InputFormatConfiguration": {
"Deserializer": {
"OpenXJsonSerDe": {
"ConvertDotsInJsonKeysToUnderscores": true|false,
"CaseInsensitive": true|false,
"ColumnToJsonKeyMappings": {"string": "string"
...}
},
"HiveJsonSerDe": {
"TimestampFormats": ["string", ...]
}
}
},
"OutputFormatConfiguration": {
"Serializer": {
"ParquetSerDe": {
"BlockSizeBytes": integer,
"PageSizeBytes": integer,
"Compression": "UNCOMPRESSED"|"GZIP"|"SNAPPY",
"EnableDictionaryCompression": true|false,
"MaxPaddingBytes": integer,
"WriterVersion": "V1"|"V2"
},
"OrcSerDe": {
"StripeSizeBytes": integer,
"BlockSizeBytes": integer,
"RowIndexStride": integer,
"EnablePadding": true|false,
"PaddingTolerance": double,
"Compression": "NONE"|"ZLIB"|"SNAPPY",
"BloomFilterColumns": ["string", ...],
"BloomFilterFalsePositiveProbability": double,
"DictionaryKeyThreshold": double,
"FormatVersion": "V0_11"|"V0_12"
}
}
},
"Enabled": true|false
}
}
キネシスファイアホースのドキュメントはあまりよく書かれていないと思いますが、ドキュメントだけで人々がファイアホースの使い方を理解するにはどうしたらいいのでしょうか。
元々はFirehoseがS3バケットにデータをリレーするだけで、組み込みの変換メカニズムはなく、S3宛先構成には AWS :: KinesisFirehose :: DeliveryStream S3DestinationConfiguration のような処理構成はありません。
次に AWS Lambdaを使用したAmazon Kinesis Firehoseデータ変換 のように、2017年の初めごろにレコードを変換するメカニズムが導入されたため、 AWS :: KinesisFirehose :: DeliveryStream ExtendedS3DestinationConfiguration が追加されました。
どうやら人々は設定方法を見つけるのに苦労しています:
さて、私は多くの努力とドキュメントの精査の後にそれを理解しました。
AWSドキュメントを読むだけで誰がそれを理解できるでしょうか?
AWSドキュメントからはわかりませんでしたが、インターネットでの実際の実装を調べた後、必要な構成は以下のように見えます。
Kevin Eidの提案に従って。
s3_configuration-(オプション)S3以外の宛先に必要です。 S3宛先の場合は、代わりにextended_s3_configurationを使用します。
The extended_s3_configuration object supports the same fields from s3_configuration as well as the following:
data_format_conversion_configuration - (Optional) Nested argument for the serializer, deserializer, and schema for converting data from the JSON format to the Parquet or ORC format before writing it to Amazon S3. More details given below.
error_output_prefix - (Optional) Prefix added to failed records before writing them to S3. This prefix appears immediately following the bucket name.
processing_configuration - (Optional) The data processing configuration. More details are given below.
s3_backup_mode - (Optional) The Amazon S3 backup mode. Valid values are Disabled and Enabled. Default value is Disabled.
s3_backup_configuration - (Optional) The configuration for backup in Amazon S3. Required if s3_backup_mode is Enabled. Supports the same fields as s3_configuration object.
互換性やレガシーの理由により、s3_configurationはまだ存在していると私は信じているため、extended_s3_configurationを使用するだけで十分ですが、AWSのドキュメントでは適切に説明されていません。 AWSのドキュメントが真実のソースとして機能しないのは残念です。