web-dev-qa-db-ja.com

Kinesis Firehose-S3拡張宛先構成とは何ですか?

質問

S3拡張宛先構成とは何ですか?AWSドキュメントのどこにそれが明確に説明されていますか?

名前が示すように、これはS3の宛先に関するものでなければなりません。ただし、AWSドキュメントのS3宛先部分は言及されていません。

明確な説明がある記事やブログがある場合は、ポインタを提供してください。

以下のようなドキュメンテーションで手掛かりを探していますが、AWSドキュメンテーションと同じように、それは明確ではありません。入力レコード変換またはレコード処理に部分的に関連しているように見えます。

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"
        }
      }
    }
  }
}
3
mon

Terraformのドキュメントは、S3宛先と拡張S3宛先の違いを示すのに最適です。 https://www.terraform.io/docs/providers/aws/r/kinesis_firehose_delivery_stream.html

S3 Extendedは、data_format_conversion_configurationerror_output_prefixなどの追加パラメーターを使用して、S3宛先構成パラメーターを継承します

1
Kevin Eid

最初のExtendedS3DestinationConfigurationプロパティタイプは、Amazon Kinesis Data Firehose配信ストリームのAmazon S3宛先を設定します。参照: https://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html

ありがとう。

1
Syed Raza

この小さなスクリーンショットは、ExtendedS3DestinationConfigurationと比較したS3DestinationConfigurationの新しいコンポーネントを示しています。

enter image description here

また、拡張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
  }
}
0
Marcin

キネシスファイアホースのドキュメントはあまりよく書かれていないと思いますが、ドキュメントだけで人々がファイアホースの使い方を理解するにはどうしたらいいのでしょうか。

元々はFirehoseがS3バケットにデータをリレーするだけで、組み込みの変換メカニズムはなく、S3宛先構成には AWS :: KinesisFirehose :: DeliveryStream S3DestinationConfiguration のような処理構成はありません。

次に AWS Lambdaを使用したAmazon Kinesis Firehoseデータ変換 のように、2017年の初めごろにレコードを変換するメカニズムが導入されたため、 AWS :: KinesisFirehose :: DeliveryStream ExtendedS3DestinationConfiguration が追加されました。

どうやら人々は設定方法を見つけるのに苦労しています:

AWSドキュメントを読むだけで誰がそれを理解できるでしょうか?

ラムダ変換用のFirehose拡張S3構成

AWSドキュメントからはわかりませんでしたが、インターネットでの実際の実装を調べた後、必要な構成は以下のように見えます。

enter image description here


更新

Kevin Eidの​​提案に従って。

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のドキュメントが真実のソースとして機能しないのは残念です。

0
mon