gpt4 book ai didi

amazon-web-services - AWS CloudFormation/SAM 模板中的 DataFormatConversion.InvalidSchema 错误

转载 作者:行者123 更新时间:2023-12-03 07:38:23 33 4
gpt4 key购买 nike

我在 AWS CloudFormation 的 SAM 模板中定义了一个 Glue:Table 和一个 KinesisFirehose:DeliveryStream(请参阅下面的代码),并且我在 S3 输出存储桶中收到了错误文件,出现以下错误:"errorCode":"DataFormatConversion.InvalidSchema","errorMessage":"架构无效。指定的表没有列。"

检查表格,我看到了列。错误的原因可能是什么?

模板

我省略了很多细节,保留了我认为或多或少重要的内容。正如你所看到的,我定义了一个模式、一个表和一个传输流;在省略的代码中,也定义了数据库。

# template.yaml #

Resources:
...

myTable:
Type: AWS::Glue::Table
Properties:
...
CatalogId: !Ref AWS::AccountId
DatabaseName: myDatabase
TableInput:
Name: myTable
StorageDescriptor:
SchemaReference:
SchemaVersionId: !GetAtt mySchema.InitialSchemaVersionId

mySchema:
Type: AWS::Glue::Schema
Properties:
...
CheckpointVersion:
IsLatest: true
VersionNumber: 1
Compatibility: BACKWARD
DataFormat: AVRO
Name: myTable
SchemaDefinition: |
{
"type": "record",
"namespace": "myDatabase",
"name": "myTable",
"fields": [
{
"name": "field1",
"type": "string"
},
{
"name": "field2",
"type": "int"
}
]
}


myDeliveryStream:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
ExtendedS3DestinationConfiguration:
...
SchemaConfiguration:
Region: eu-central-1
DatabaseName: myDatabase
TableName: myTable
CatalogId: !Ref AWS::AccountId
VersionId: "0"
RoleARN: !GetAtt FirehoseAccessRole.Arn

最佳答案

事实证明 this answer (与 Terraform 模板相关),Kinesis Data Firehose (KDF)“如果从现有架构创建表,则无法读取表的架构”。

以下架构可解决错误。 注意Firehose部分中的表格版本必须更改,将其增加到与我们现在所做的更改相对应的数字(我必须直接从控制台查找它,并且没有办法强制使用数字或检索我所知道的模板中的最新版本);如果版本没有改变,那么就会得到和以前一样的错误,因为 Firehose 流引用的是旧版本。

# template.yaml #

Resources:
...

myTable:
Type: AWS::Glue::Table
Properties:
...
CatalogId: !Ref AWS::AccountId
DatabaseName: myDatabase
TableInput:
Name: myTable
StorageDescriptor:
Columns:
- Name: daytime
Type: string
- Name: step_code
Type: int
- Name: id_spot
Type: int
- Name: id_phase
Type: int
- Name: duration
Type: int
- Name: n_sample
Type: int

myDeliveryStream:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
ExtendedS3DestinationConfiguration:
...
SchemaConfiguration:
Region: eu-central-1
DatabaseName: myDatabase
TableName: myTable
CatalogId: !Ref AWS::AccountId
VersionId: "1" # CHANGE THIS ACCORDINGLY!
RoleARN: !GetAtt FirehoseAccessRole.Arn

关于amazon-web-services - AWS CloudFormation/SAM 模板中的 DataFormatConversion.InvalidSchema 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76618928/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com