AWS Amplify 和 Cognito 出现无效身份池配置错误

问题描述 投票:0回答:1

描述:

我正在使用 AWS Amplify 开发一个 React 应用程序,它与用于用户身份验证的 AWS Cognito 和用于 GraphQL API 的 AWS AppSync 集成。我的后端是使用 Node.js 中的 CloudFormation Serverless 框架构建的,我的 GraphQL API 支持两种身份验证模式:Cognito 和 IAM。

在这里,我尝试允许未经授权的访客用户使用 IAM 身份验证来访问某些 API 操作,而经过身份验证的用户则使用 Cognito。

问题:

尝试使用 AWS Amplify 的 API 模块中的

generateClient
以及 IAM authMode 从我的 GraphQL 终端节点获取数据以进行未经授权的访问时,我遇到以下错误:

Invalid identity pool configuration. Check assigned IAM roles for this pool.
InvalidIdentityPoolConfigurationException: Invalid identity pool configuration. Check assigned IAM roles for this pool.

详情:

  • 放大配置(src/index.js):

    Amplify.configure({
      Auth: {
        Cognito: {
          userPoolId: "****", 
          userPoolClientId: "****", 
          identityPoolId: "****", 
          allowGuestAccess: true,
        },
      },
      API: {
        GraphQL: {
          endpoint: "https://****.appsync-api.us-east-1.amazonaws.com/graphql", 
          region: "us-east-1",
          defaultAuthMode: "userPool",
        },
      },
    });
    
    

    这里我使用 graphql API 来使用 src/App.js 中的 id 来获取一本书:

    虽然默认授权模式是 cognito 用户池,但我正在将身份池与 IAM 角色一起用于未经授权的用户,这将允许他们访问 graphql API。

    import React from "react";
    import { generateClient } from "aws-amplify/api";
    import { Authenticator } from "@aws-amplify/ui-react";
    import { getBookById } from "./graphql/queries";
    import "@aws-amplify/ui-react/styles.css";
    
    export default function App() {
      const [book, setBook] = React.useState({}); 
      const getBook = async () => {
        const client = generateClient("bookstore");
        const bookId = "358748d6-f047-4***-8b**-e********";
        const book = await client.graphql({
          query: getBookById,
          variables: { id: bookId },
          authMode: "identityPool",
        });
        setBook(book.data.getBookById);
      };
      return (
        <div style={{ margin: "20px" }}>
          <!--code to display book details-->
        </div>
      );
    }
    
    

    问题背景:

    • 此设置旨在允许访客用户使用 IAM 身份验证(包括 Amazon Cognito 身份池)访问某些 API 查询。

    • 使用 IAM 的访客用户在AWS 控制台上查询成功,表明 IAM 角色已正确配置。

请求帮助:我正在寻求有关如何在 AWS Amplify 中为未经授权的访客用户使用 IAM authMode 和

InvalidIdentityPoolConfigurationException
时解决此
generateClient
错误的指导。任何见解或替代方法将不胜感激!

  • 故障排除工作:

    • 已清除浏览器缓存并检查 AWS IAM 角色。

    • 已验证 AWS Amplify 和 Cognito 配置是否正确。

    • 探索了 AWS Amplify 和 AppSync 文档,但没有找到针对此场景的具体指南。

amazon-web-services amazon-cognito aws-amplify aws-appsync
1个回答
0
投票

我也遇到同样的问题

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.