我想让“来宾/公共”访问AppSync中的某些查询。但是,只有完全注册的用户才能运行变异或其他查询。
我已经安装了Amplify并配置了auth模块以生成身份池和用户池。我可以在身份池的仪表板上看到我有一个未经授权的访问(自我测试)。
但是如果我没有注册,我将无法执行任何查询。我的AppSync设置被设置为“默认用户”允许的“认知用户池”。
有人解决了吗?
答案 0 :(得分:1)
AppSync现在为不同的查询支持不同的身份验证权限类型。参见Using multiple authorization types with AWS AppSync GraphQL APIs 。
因此,考虑到这一点,您可以在受保护的查询上使用@aws_cognito_user_pools
,在公共查询上使用@aws_api_key
,在AppSync设置中定义一个API密钥,以供应用程序在“访客/公共”模式。
您希望公开/私有访问的任何查询/变异都需要同时添加@aws_cognito_user_pools @aws_api_key
到查询中。
但是,这样做的复杂之处在于,AWS在AppSync API密钥上设置了到期时间,默认为7天。对于公共路线几乎不实用。使用AWS API,您可以将该有效期从当前日期延长到365天。
我创建了此Lambda Function,以遍历您在帐户中定义的所有AppSync API密钥,并将有效期从现在开始延长到365天。因此,如果您将其添加到您的帐户中,并创建了Cloudwatch Event来安排在不到365天的时间间隔内调用此lambda函数,则您的API密钥将永不过期。