如何解决接收错误属性验证失败:[属性值{/ TableInput / ViewOriginalText}与类型{String}不匹配] AWS cloudformation
我正在尝试使用表中的数据创建外部视图,但是收到错误属性验证失败:[AWS]中使用云形成在AWS胶水中创建视图时[属性{/ TableInput / ViewOriginalText}的值与类型{String}不匹配]
任何关于分辨率的想法都将不胜感激。以下是我正在使用的yaml文件代码段。
预先感谢
---
AWSTemplateFormatVersion: 2010-09-09
Description: "Glue Athena database and table configuration"
Parameters:
MarketingAndSalesDatabaseName:
Type: String
MinLength: "4"
Default: "marketingandsales_qs"
Description: "Name of the AWS Glue database to contain this CloudFormation template's tables."
SalesPipelineTableName:
Type: String
MinLength: "4"
Default: "salespipeline_qs"
Description: "Name of the Sales Pipeline data table in AWS Glue."
Resources:
### AWS GLUE RESOURCES ###
MarketingAndSalesDatabase:
Type: "AWS::Glue::Database"
Properties:
DatabaseInput:
Description: "Marketing and Sales database (Amazon QuickSight Samples)."
Name: !Ref MarketingAndSalesDatabaseName
CatalogId: !Ref AWS::AccountId
SalesPipelineTable:
Type: "AWS::Glue::Table"
DependsOn: MarketingAndSalesDatabase
Properties:
TableInput:
Description: "Sales Pipeline table (Amazon QuickSight Sample)."
TableType: "VIRTUAL_VIEW"
Parameters: {
"CrawlerSchemaDeserializerVersion": "1.0","compressionType": "none","classification": "csv","recordCount": "16831","typeOfData": "file","CrawlerSchemaSerializerVersion": "1.0","columnsOrdered": "true","objectCount": "1","delimiter": ",","skip.header.line.count": "1","averageRecordSize": "119","sizeKey": "2002910","presto_view": "true"
}
StorageDescriptor:
StoredAsSubDirectories: False
Parameters: {
"CrawlerSchemaDeserializerVersion": "1.0","sizeKey": "2002910"
}
InputFormat: "org.apache.hadoop.mapred.TextInputFormat"
OutputFormat: "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
Columns:
- Type: string
Name: salesperson
- Type: string
Name: lead_name
ViewOriginalText:
'Fn::Sub':
- '/* Presto View: ${View} */'
- View:
'Fn::Base64': !sub '{"catalog": "awsdatacatalog","schema":"default","columns": [ { "name": "salesperson","type": "varchar" },{ "name": "lead_name","type": "varchar" }],"originalSql": "SELECT salesperson AS salesperson,lead_name AS lead_name FROM marketing_qs_1"
}'
Retention: 0
Name: !Ref SalesPipelineTableName
DatabaseName: !Ref MarketingAndSalesDatabaseName
CatalogId: !Ref AWS::AccountId
解决方法
这些属性应位于StorageDescriptor
下方,而不是ViewOriginalText
:
Compressed: False
Location: !Sub "s3://${DataBucketName}/sales/"
建议在创作模板时尝试在CloudFormation Linter中的VSCode内联查看其中一些错误:
[cfn-lint] E3002: Property is an object instead of String at Resources/SalesPipelineTable/Properties/TableInput/ViewOriginalText
Sub
中也不需要
[cfn-lint] W1020: Fn::Sub isn't needed because there are no variables at Resources/SalesPipelineTable/Properties/TableInput/ViewOriginalText/Fn::Sub/1/View/Fn::Base64/Fn::Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。