代码之家  ›  专栏  ›  技术社区  ›  micah

是否可以在AWS Cloudformation中指定数据格式转换?

  •  3
  • micah  · 技术社区  · 6 年前

    AWS文档使它看起来好像你可以指定 DataFormatConversionConfiguration 为了一个 AWS::KinesisFirehose::DeliveryStream 在cloudformation中,但不是关于属性应该去哪里的文档。尝试将其添加到 Properties ExtendedS3DestinationConfiguration , ProcessingConfiguration ,和 Processors . 每次,CF都会抱怨-

    以下资源更新失败:[EventFirehose]。

    有医生说-

    1 回复  |  直到 6 年前
        1
  •  11
  •   jmullercuber    5 年前

    根据SDK documentation ,应该在里面 ExtendedS3DestinationConfiguration ExtendedS3DestinationUpdate . 然而,目前云层的形成 docs . 这是cloudformation和其他AWS服务之间非常常见的差异。这里提到了一个类似的问题 AWS ECS: Severe bug in ECS Service Cloudformation template (最近解决了)。

    目前,您可以通过SDK进行更新,或者等待一段时间,以便cloudformation跟上。

    如果希望Kinesis Data firehouse将输入数据的格式从JSON转换为Parquet或ORC,请在ExtendedS3DestinationConfiguration或ExtendedS3DestinationUpdate中指定可选的DataFormatConversionConfiguration元素

    截至2019年6月 DataFormatConversionConfiguration https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/ReleaseHistory.html

        2
  •  3
  •   Ihor Konovalenko Paritosh Tripathi    4 年前

    这是我如何解决这个问题的。Firehose strem以拼花格式将数据写入S3桶:

      LogsCollectionDatabase:
        Type: AWS::Glue::Database
        Properties:
          DatabaseInput:
            Description: Database for Kinesis Analytics
            Name: !Ref DatabaseName
          CatalogId: !Ref AWS::AccountId
    
      LogsCollectionTable:
        Type: AWS::Glue::Table
        DependsOn: LogsCollectionDatabase
        Properties:
          DatabaseName: !Ref LogsCollectionDatabase
          CatalogId: !Ref AWS::AccountId
          TableInput:
            Name: serverlogs
            Description: Table for storing logs from kinesis
            TableType: EXTERNAL_TABLE
            StorageDescriptor:
              Columns:
                - Type: string
                  Name: col1
                - Type: string
                  Name: col2
              Location: !Sub s3://${DestinationBucketName}/${DestinationBucketPrefix}
              InputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
              OutputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
              SerdeInfo:
                SerializationLibrary: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
    
      KinesisFirehoseDeliveryStream:
        Type: AWS::KinesisFirehose::DeliveryStream
        DependsOn: FirehoseDeliveryIAMPolicy
        Properties:
          DeliveryStreamName: !Ref RegionalStreamName
          DeliveryStreamType: DirectPut
          ExtendedS3DestinationConfiguration:
            BucketARN: !Ref DestinationBucketArn
            Prefix: !Ref DestinationBucketPrefix
            BufferingHints:
              IntervalInSeconds: 60
              SizeInMBs: 64
            ErrorOutputPrefix: errors/
            RoleARN: !GetAtt FirehoseDeliveryIAMRole.Arn
            DataFormatConversionConfiguration:
              Enabled: true
              InputFormatConfiguration:
                Deserializer:
                  HiveJsonSerDe: {}
              OutputFormatConfiguration:
                Serializer:
                  ParquetSerDe: {}
              SchemaConfiguration:
                CatalogId: !Ref AWS::AccountId
                RoleARN: !GetAtt FirehoseDeliveryIAMRole.Arn
                DatabaseName: !Ref LogsCollectionDatabase
                TableName: !Ref LogsCollectionTable
                Region: !Ref AWS::Region
                VersionId: LATEST