是否可在AWS Lambda中访问Amplify Datastore存储S3上传文件相关数据
解答
可行性确认
可以在AWS Lambda中操作Amplify Datastore。Amplify Datastore的底层是对AppSync GraphQL API + 托管DynamoDB的封装,你不需要在Lambda侧启动完整的Datastore离线同步客户端,只要调用对应AppSync的GraphQL接口完成数据增删改查,写入的内容就会自动同步到所有接入Datastore的前端应用,和前端侧调用Datastore API写入的效果完全一致。
实操步骤
- 给你现有的S3触发Lambda开通AppSync GraphQL API调用权限:如果是用Amplify CLI管理的资源,执行
amplify update function选择目标Lambda,在权限配置项中勾选GraphQL API,按需分配增删改查权限即可;如果是手动管理的Lambda,给Lambda执行角色添加AppSync的appsync:GraphQL操作权限即可。 - Lambda代码中引入轻量GraphQL客户端(比如
graphql-request),不要引入完整的Amplify Datastore依赖包,避免不必要的资源消耗。 - 从Lambda环境变量中获取Amplify自动注入的
API_<你的API名称>_GRAPHQLENDPOINT、API_<你的API名称>_APIKEY参数,构造对应你数据模型的GraphQL Mutation语句,执行写入即可。
注意:不建议直接操作Datastore对应的底层DynamoDB表,这种方式需要你手动维护
_version、_lastChangedAt、_deleted等Datastore同步依赖的系统字段,一旦字段值不符合规则会导致前端Datastore同步报错,调用AppSync接口的方式会由Amplify自动处理这些系统字段,稳定性更高。
内容的提问来源于stack exchange,提问作者Aanal Shah
相关产品推荐
相关产品推荐

