无法删除AWS Amplify Auth,执行amplify push提示资源不存在如何解决
问题1:amplify remove auth后执行push/publish失败的解决方案
报错原因是你项目中其他已部署的 Amplify 资源(API、Function 等)仍然保留了对已删除 Auth 资源的依赖引用,CloudFormation 模板中存在无效的Fn::GetAtt调用,按以下步骤修复:
- 清理项目依赖配置
打开amplify/backend/backend-config.json文件,搜索所有dependsOn字段,删除所有关联auththisismyappg986421b的依赖条目 - 清理各资源的CloudFormation模板
依次检查amplify/backend/api/、amplify/backend/function/目录下各资源对应的.template.jsonCloudFormation模板,搜索所有包含auththisismyappg986421b的Fn::GetAtt、Ref引用并删除 - 清理环境元数据
打开amplify/backend/amplify-meta.json文件,找到auth对应的整个配置块并删除 - 强制推送配置
执行命令amplify push --force完成部署,如果仍报错可先执行amplify env checkout <你的当前环境名>刷新本地环境缓存后再次推送
如果以上步骤仍无法解决,可以登录AWS控制台进入CloudFormation服务,找到对应环境的Amplify栈,手动删除模板中关联Auth资源的引用后执行栈更新,再回到本地执行amplify pull同步云端配置即可。
问题2:AWS Amplify + React + React Router 受保护路由适配方案
以下是适配React Router v6的稳定方案:
- 安装必要依赖
npm install @aws-amplify/ui-react aws-amplify react-router-dom - 项目入口配置Amplify
在src/main.jsx或src/index.js中添加配置:import { Amplify } from 'aws-amplify'; import config from './amplifyconfiguration.json'; Amplify.configure(config); - 封装受保护路由组件
新建src/components/ProtectedRoute.jsx:import { Navigate, Outlet } from 'react-router-dom'; import { useAuthenticator } from '@aws-amplify/ui-react'; const ProtectedRoute = () => { const { user } = useAuthenticator(context => [context.user]); return user ? <Outlet /> : <Navigate to="/login" replace />; }; export default ProtectedRoute; - 路由配置中使用受保护路由
修改src/App.jsx:import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import { Authenticator } from '@aws-amplify/ui-react'; import '@aws-amplify/ui-react/styles.css'; import Home from './pages/Home'; import Dashboard from './pages/Dashboard'; import ProtectedRoute from './components/ProtectedRoute'; function App() { return ( <Authenticator.Provider> <Router> <Routes> <Route path="/" element={<Home />} /> <Route path="/login" element={<Authenticator />} /> {/* 所有需要登录才能访问的路由都嵌套在ProtectedRoute下 */} <Route element={<ProtectedRoute />}> <Route path="/dashboard" element={<Dashboard />} /> </Route> </Routes> </Router> </Authenticator.Provider> ); } export default App;
- 如果使用Auth0作为身份提供商,只需在Amplify Auth配置中添加Auth0的OIDC对接配置即可,路由逻辑无需修改。
内容的提问来源于stack exchange,提问作者HardBurn
相关产品推荐
相关产品推荐

