当使用AWS AppSync和Lambda解析器时,有时会遇到$context.identity为null的问题。这通常是由于未正确配置AppSync和Lambda函数之间的授权引起的。下面是解决此问题的步骤:
确保在AppSync中正确配置了Lambda数据源。在AppSync控制台选择Lambda数据源,并确保已正确选择Lambda函数。
确保AppSync数据源的请求模板正确设置。在Lambda解析器的请求模板中,确保包含$context.identity字段。例如:
{
"version": "2018-05-29",
"operation": "Invoke",
"payload": {
"field": "myFunction",
"arguments": $util.toJson($context.arguments),
"identity": $util.toJson($context.identity)
}
}
确保Lambda函数已正确配置了AppSync数据源的授权。在Lambda函数的配置中,选择AppSync数据源,并选择适当的授权类型(例如API key、IAM角色等)。确保已为该授权类型提供了正确的权限和访问凭证。
确保AppSync和Lambda函数在同一AWS区域。如果AppSync和Lambda函数不在同一AWS区域,则可能会导致授权失败。
检查AppSync和Lambda函数的日志以获取更多信息。在AppSync和Lambda函数的控制台中查看相应的日志,以了解是否有任何错误或警告信息。
通过按照上述步骤检查和调试配置,您应该能够解决$context.identity为null的问题,并正确获取用户的身份信息。