如何通过CloudFormation为AWS Glue爬虫设置‘Inherit schema from table’参数
核心配置方法
要在CloudFormation中实现“Inherit schema from table”这个功能,你需要结合**SchemaChangePolicy和CrawlerConfiguration**两个部分的配置来完成,具体步骤如下:
设置SchemaChangePolicy的UpdateBehavior为LOG
这是启用继承模式的基础前提,对应控制台里“仅记录变更”的底层行为。在CFN模板中你需要这样定义:SchemaChangePolicy: UpdateBehavior: "LOG" DeleteBehavior: "LOG" # DeleteBehavior可根据需求调整,比如改为DELETE_FROM_DATABASE在CrawlerConfiguration中开启继承模式
这一步是核心,通过JSON格式的配置来触发“Inherit schema from table”的逻辑。你需要在CrawlerConfiguration属性中加入以下内容:CrawlerConfiguration: | { "Version": 1.0, "CrawlerOutput": { "Tables": { "InheritFromTable": true } } }
把这两部分结合起来,完整的Glue爬虫资源示例大概是这样的:
Resources: MyInheritSchemaCrawler: Type: AWS::Glue::Crawler Properties: Name: MyInheritSchemaCrawler Role: !Ref GlueCrawlerServiceRole DatabaseName: !Ref TargetGlueDatabase Targets: S3Targets: - Path: s3://my-data-storage-bucket/target-path/ SchemaChangePolicy: UpdateBehavior: "LOG" DeleteBehavior: "LOG" CrawlerConfiguration: | { "Version": 1.0, "CrawlerOutput": { "Tables": { "InheritFromTable": true } } }
关于Schema Change Policy选项差异的解释
你提到控制台有3个选项,但CloudFormation的SchemaChangePolicy只暴露了2个直接属性(UpdateBehavior和DeleteBehavior),这是因为第三个选项“Inherit schema from table”并不是一个独立的SchemaChangePolicy属性,而是**UpdateBehavior=LOG加上CrawlerConfiguration里InheritFromTable=true的组合效果**。
控制台把这个组合封装成了一个直观的选项,方便用户快速选择;而CloudFormation更偏向于暴露底层的配置参数,需要我们手动组合这两个配置来达到和控制台选项完全一致的效果。
内容的提问来源于stack exchange,提问作者Cherry

