Amplify CLI更新API时删除API Gateway Cognito授权器求助
以下是常见原因和解决办法:
检查本地API配置文件
打开amplify/backend/api/[你的API名称]/parameters.json,确认里面存在Cognito授权相关配置:比如defaultAuthorizationType设为AMAZON_COGNITO_USER_POOLS,同时正确填写userPoolArn、authRoleArn和unauthRoleArn。如果这些配置缺失,Amplify CLI更新时会覆盖云端的手动配置,导致授权器丢失。不要直接在AWS控制台改配置
Amplify是靠本地配置文件同步云端资源的,如果你手动在API Gateway控制台加了Cognito授权器,下次用CLI更新时,本地没这个配置,就会把云端的删掉。所有授权设置都要在本地通过CLI或配置文件定义,再部署到云端。用CLI重新配置授权器
运行amplify update api,跟着交互步骤选择修改授权设置,明确指定用Cognito用户池做授权。完成后执行amplify push,这样授权配置会被写入本地文件,后续更新就不会被移除了。检查GraphQL Schema的授权指令
如果是GraphQL API,要确保schema里的类型/字段加对了@auth指令,比如:type Post @auth(rules: [{ allow: owner, identityClaim: "sub" }, { allow: private, provider: userPools }]) { id: ID! title: String! }没加这些指令的话,Amplify可能不会自动维护Cognito授权器的关联。
查看部署日志定位问题
执行amplify push --debug,看部署时的详细日志,找一找有没有删除授权器的相关操作,能帮你精准定位是哪个配置出了问题。
内容的提问来源于stack exchange,提问作者elishapiro

