Amplify删除旧Auth添加新Auth时出现Fn::GetAtt引用未定义资源错误如何解决
解决方案
报错的核心原因是你之前创建的API已经绑定了旧Cognito用户池作为身份验证源,CloudFormation模板中残留了对旧Auth资源testd50c8ec7的引用,直接删除Auth资源后就会出现引用不存在资源的错误。按以下步骤操作即可解决:
- 第一步:解除API与旧Auth资源的绑定
运行amplify update api,选择你的testApi资源,在授权配置环节,暂时移除所有基于原有Cognito用户池的授权规则,可以临时切换为API Key授权,确认配置后保存。 - 第二步:删除旧Auth资源
运行amplify remove auth,选择旧Auth资源名testd50c8ec7,确认删除操作。 - 第三步:添加新的Auth资源
运行amplify add auth,在配置向导中选择手机号作为登录标识,完成所有适配需求的配置后保存。 - 第四步:重新绑定API与新Auth资源
再次运行amplify update api,重新添加Cognito User Pool授权规则,选择刚创建的新Auth资源作为身份验证源,确认配置后保存。 - 第五步:执行推送
运行amplify push,此时CloudFormation模板已无对旧Auth资源的引用,推送可正常完成。
如果你的开发环境没有重要的用户数据或存量配置,也可以选择直接删除当前开发环境后重建,操作更便捷:
- 运行
amplify env list查看当前环境名 - 运行
amplify env remove <你的环境名>删除旧环境 - 运行
amplify env add <新环境名>创建新环境,重新配置Auth和API后推送即可。
内容的提问来源于stack exchange,提问作者Fahad Alrashed
相关产品推荐
相关产品推荐

