Kinesis Firehose - Что такое расширенная конфигурация пункта назначения S3? - PullRequest
0 голосов
/ 12 марта 2020

Вопрос

Что такое расширенная конфигурация назначения S3 и где в документации AWS четко объясняется, для чего она нужна?

Как следует из названия, она должна быть о назначении S3. Однако в части назначения S3 документа AWS ничего не сказано.

Если есть статьи или блоги, которые имеют четкое объяснение, пожалуйста, предоставьте указатели.

Я искал подсказку в документации, как показано ниже, но, как часто в документации 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"
        }
      }
    }
  }
}

Ответы [ 4 ]

1 голос
/ 09 апреля 2020

Документация Terraform лучше всего показывает разницу между пунктами назначения S3 и Extended S3: https://www.terraform.io/docs/providers/aws/r/kinesis_firehose_delivery_stream.html

S3 Extended наследует параметры конфигурации пункта назначения S3 с дополнительными параметрами, такими как data_format_conversion_configuration или error_output_prefix

0 голосов
/ 14 марта 2020

Боюсь, что документ Kinesis Firehose написан так плохо, что мне интересно, как люди могут понять, как использовать Firehose, просто из документации.

Похоже, что пожарный шланг просто передает данные в корзину S3 и нет встроенного механизма преобразования, а конфигурация назначения S3 не имеет конфигурации обработки, как в AWS :: KinesisFirehose :: DeliveryStream S3DestinationConfiguration .

Тогда, как в Amazon Kinesis Firehose Data Transformation с AWS Lambda , механизм для преобразования записей был введен, по-видимому, в начале 2017 года, поэтому был добавлен AWS :: KinesisFirehose :: DeliveryStream ExtendedS3DestinationConfiguration .

Очевидно, peopel изо всех сил пытается найти способ настройки:

Кто может понять это, просто прочитав документ AWS?

Firehose расширенные конфигурации S3 для лямбда-преобразования

Не удалось выяснить из документа AWS, но похоже, что требуемые конфигурации приведены ниже, после изучения фактических реализаций в Inte rnet.

enter image description here


Обновление

Согласно предложению Кевина Эйд.

  • Ресурс: aws_kinesis_firehose_delivery_stream

    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 не является источником истины.

0 голосов
/ 14 марта 2020

Первый тип свойства ExtendedS3DestinationConfiguration настраивает назначение Amazon S3 для потока доставки Amazon Kinesis Data Firehose. См .: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html

Спасибо.

0 голосов
/ 12 марта 2020

Что именно и как определяется расширенная конфигурация s3, показано в документации API :

{
  "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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...