对“Cognito 用户池和身份池”执行“import amplify auth”并传递“Web 客户端”以及“本机客户端”失败

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

import amplify auth
执行
Cognito User Pool and Identity Pool
并传递
Web Client
以及
Native client
失败,并出现以下错误。有什么遗漏请告诉我。 TIA

Cannot import Identity Pool without roles.
Error: Cannot import Identity Pool without roles.
    at IdentityPoolService.getIdentityPoolRoles (/usr/local/lib/node_modules/@aws-amplify/cli/node_modules/amplify-provider-awscloudformation/src/aws-utils/IdentityPoolService.ts:88:13)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at importServiceWalkthrough (/usr/local/lib/node_modules/@aws-amplify/cli/node_modules/@aws-amplify/amplify-category-auth/src/provider-utils/awscloudformation/import/index.ts:322:74)
    at Object.importResource (/usr/local/lib/node_modules/@aws-amplify/cli/node_modules/@aws-amplify/amplify-category-auth/src/provider-utils/awscloudformation/import/index.ts:45:42)
    at Object.executeAmplifyCommand (/usr/local/lib/node_modules/@aws-amplify/cli/node_modules/@aws-amplify/amplify-category-auth/src/index.js:421:3)
    at executePluginModuleCommand (/usr/local/lib/node_modules/@aws-amplify/cli/src/execution-manager.ts:178:3)
    at executeCommand (/usr/local/lib/node_modules/@aws-amplify/cli/src/execution-manager.ts:30:5)
    at Object.run (/usr/local/lib/node_modules/@aws-amplify/cli/src/index.ts:205:5)

amazon-web-services amazon-iam aws-amplify aws-cdk
2个回答
2
投票

也遇到这个问题了。 Amplify Auth 导入文档提到以下内容:

您的身份池需要:

  • 与您的身份池具有信任关系的经过身份验证的角色
  • 如果您想对您的 Amplify 类别使用任何访客用户访问权限,请使用
  • 可选 未经身份验证的角色。 (示例:S3 存储桶或 REST API 端点的访客访问)

然而,我:

  • 使用具有“经过身份验证”角色的身份池,并且具有完整的正确信任关系(角色、策略、身份池角色附件)。
  • 确保我用于部署此更改的 IAM 角色具有列出和读取身份池和角色的适当权限。

仍然没有帮助。

然后我启用了“允许未经身份验证的身份”(尽管我不想要这个),事情进展顺利。这是因为此设置将自动生成两个经过身份验证和未经身份验证的角色并为您附加它们。

但是,由于我不想进行未经身份验证的身份访问,所以我再次禁用了它。根据该设置的工作原理,我想知道未经身份验证的角色是否真的是“可选”,但事实证明并非如此。至少在最新的 Amplify 系统中不是这样。一定有人在没有更新文档的情况下改变了这种行为。

解决方案:

您的身份池需要:

与您的身份池具有信任关系的经过身份验证的角色
  • 与您的身份池具有信任关系的未经身份验证的角色
要检查您的身份池是否设置正确,请在 AWS CLI 中运行此函数:

aws cognito-identity get-identity-pool-roles --identity-pool-id "your identity pool id here"

你应该得到这样的东西:

{ "IdentityPoolId": "your identity pool id here", "Roles": { "authenticated": "your authenticated role ARN here" "unauthenticated": "your authenticated role ARN here" } }



0
投票

© www.soinside.com 2019 - 2024. All rights reserved.