AWS Glue Crawler可以根据数据源自动创建和更新表的模式,但有时可能不希望Crawler自动创建表。以下是一种解决方法,其中包含代码示例:
import boto3
def lambda_handler(event, context):
glue = boto3.client('glue')
crawler_name = 'your-crawler-name' # 替换为实际的Crawler名称
# 获取Crawler的当前配置
response = glue.get_crawler(Name=crawler_name)
# 更新Crawler的配置,将CreateTable属性设置为False
response['Crawler']['TableCreatePolicy']['CreateTable'] = False
# 更新Crawler的配置
glue.update_crawler(Name=crawler_name, CrawlerUpdate=response['Crawler'])
return {
'statusCode': 200,
'body': 'Crawler table creation skipped'
}
将上述代码保存为Python文件,并创建一个新的Lambda函数。确保将Lambda函数与适当的IAM角色关联,以便具有对Glue资源的访问权限。
在AWS Glue控制台中,打开“事件”选项卡,并将创建的Lambda函数与Crawler的“BeforeCrawlerStarts”事件关联。
这样,当Crawler运行时,它将在模式中不创建表。您可以根据需要调整代码,以适应不同的Crawler配置和需求。