Serverless AppSync Plugin内联Lambda数据源Resolver配置报错求助
问题分析与解决方案
你的配置存在两个核心问题,导致插件报错:
- 缺少顶层
appSync节点:官方示例中所有AppSync相关配置都嵌套在appSync根节点下,而你直接写了resolvers,这会让插件无法识别正确的配置结构,进而抛出「must have required property 'functions'」的错误。 - 内联Lambda函数配置不完整:即使补上
appSync节点,内联定义的函数也需要指定runtime等必要参数,否则Serverless框架无法正确创建Lambda资源。
可运行配置示例
示例1:完全内联定义Lambda数据源
这种方式直接在Resolver配置里定义Lambda函数的所有属性:
service: your-app-service-name appSync: name: your-appsync-api schema: ./schema.graphql # 需指定你的GraphQL schema路径 resolvers: Query.get_data: dataSource: type: AWS_LAMBDA config: function: name: GetDataFunction # 自定义Lambda函数名 runtime: nodejs18.x # 必须指定运行时(根据你的代码环境调整) timeout: 30 memorySize: 256 handler: functions/get_data.handler
示例2:引用预定义的Lambda函数(更推荐)
这种方式先在functions块中统一定义Lambda函数,再在Resolver中引用,便于集中管理:
service: your-app-service-name # 预定义Lambda函数 functions: GetDataFunction: handler: functions/get_data.handler runtime: nodejs18.x timeout: 30 memorySize: 256 appSync: name: your-appsync-api schema: ./schema.graphql resolvers: Query.get_data: dataSource: type: AWS_LAMBDA config: function: GetDataFunction # 直接引用上方定义的函数名
关键注意事项
- 所有AppSync配置必须放在
appSync顶层节点下,这是插件识别配置的基础。 - Lambda函数的
runtime是必填项,必须与你的代码运行环境匹配(如nodejs18.x、python3.11等)。 - 如果使用引用预定义函数的方式,Resolver中的
function字段只需填写函数名,无需重复定义handler、timeout等属性。
内容的提问来源于stack exchange,提问作者berimbolo
相关产品推荐
相关产品推荐

