问题标签 [aws-amplify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
44 浏览

amazon-web-services - 我的基于 Cognito 的应用程序如何确定登录用户应该可以使用哪个 UI?

在单页 ReactJS 应用程序中,我想显示控制当前用户可以访问的功能的 UI 元素,并在当前用户不被允许时隐藏元素。该应用程序通过AWS Amplify使用 Cognito 。它通过 AWS API Gateway 发出 REST 请求,其中 IAM 策略确定是否允许每个端点。在我看来,应用程序需要预测允许哪些 API 网关端点,以确定哪些 UI 元素是可见的。例如,当我更改控制对后端 API 的访问的策略时,我想确保相应的更改发生在前端 UI 中。

我注意到 Google Cloud 有一个测试权限功能,可能对这个目标有用。该应用程序可以查询当前用户允许使用哪些端点和方法。AWS 是否有类似的技术?IAM 策略模拟器看起来不是为这个用例设计的。

0 投票
1 回答
710 浏览

amazon-web-services - Pinpoint 未在 Android 上提供推送通知

我将 aws mobileHub 用于我的 react-native 项目。我正在使用 aws-amplify 库在我的应用程序中使用 aws 功能,并且我按照 aws-Pinpoint 和 aws-amplify 的所有步骤在 android 中推送通知。当应用程序打开时,我从“aws-amplify-react-native”获得令牌,但是当我开始活动时,它有时会发送很少的消息,有时没有,但我没有收到任何消息,当我尝试直接消息时,它说成功从 pinpoint 发送推送通知控制台,但我在应用程序中什么也没收到。这是成功消息的图像

控制台图片

0 投票
0 回答
1071 浏览

amazon-web-services - AWS Amplify 权限被拒绝

我正在尝试使用 AWS amplify 访问 API 网关端点,但我一直被拒绝许可。

但是,我可以直接使用 api gateway url 直接访问 api。知道原因可能是什么吗?

这是我的设置 CloudFront -> ReactApp -> API Gateway

我在 Amplify 配置中有强制登录:false

0 投票
0 回答
991 浏览

javascript - 如何在javascript中使用aws amplify s3列出与所有上传文件关联的自定义元数据

使用 javascript 和 AWS Amplify,我正在尝试将一些自定义元数据附加到上传到我的 s3 存储桶的文件中。大多数可用的选项都没有在文档中描述,但是在挖掘了源代码之后,我发现添加,例如,{metadata: { 'your-custom-key-1': 'foo', 'your-custom-key-2': 'bar' }作为 Storage.put() 中的选项参数将自动在您的文件上创建自定义元数据,它会自动为您的文件添加前缀带有“x-amz-meta-”的自定义键。因此,在上述情况下,您'x-amz-your-custom-key-1': 'foo', 'x-amz-your-custom-key-2': 'bar'将实际元数据附加并保存到该特定文件中。

问题是,据我所知,我看不到任何使用放大检索此元数据的方法。我想我必须在核心 s3 类中更深入地挖掘一层来检索这些信息。让事情变得更加混乱......我发现使用放大,如果我使用隐藏选项 { download: true} 作为我的选项参数调用 Storage.get(),我会得到一个实际上具有元数据键的响应, 但是它总是空的,即使我确实有自定义元数据附加到我的文件。我猜这是一个已更改或不完整的功能?查看核心 s3 类,我发现headObject,但我不清楚这是否会给我我的自定义元数据或只是默认值。我的最终目标是在调用 Storage.list() 时列出所有关联的元数据以及存储桶中的所有文件。感谢您的任何建议

0 投票
3 回答
4997 浏览

javascript - 用户池允许两个用户使用相同的电子邮件,尽管配置

背景

aws-amplify用来与 Cognito 交互。因此,当用户注册我的应用程序时,我会调用Auth.signUp(). 我只将用户名(电子邮件)和密码传递给这个函数。

我的用户池配置为仅允许通过电子邮件登录:

用户池属性配置


错误?

在我的前端代码中,我不小心注册了一个事件监听器两次,因此Auth.signUp()被调用了两次(同时,或至少快速连续地)使用相同的参数。

这导致在我的用户池中创建了两个用户,使用相同的电子邮件。我对我的用户池配置的理解表明这是不可能的。


种族条件?

我的第一个想法是,由于我发送的两个请求如此接近,这可能是某种不可避免的竞争条件。如果我在调用之间引入人为的暂停(比如断点,或者setTimeout说),一切都会按预期工作。

但是,即使请求间隔非常紧密,第二个请求也会返回我期望的错误响应:

可悲的是,此响应具有误导性,因为我确实通过此请求在我的池中创建了第二个(重复的)用户。


MCVE

Auth.signUp这很容易通过在节点脚本或浏览器中同时 执行两次来重现。此存储库包含两者的示例。


问题

  • 这是 Cognito 的合法错误吗?
  • preSignUp Lambda 触发器是我唯一防御这种情况的方法吗?如果是这样,那么该实施的大致流程是什么样的?
0 投票
0 回答
430 浏览

amazon-web-services - AWS Cognito /aws-amplify 错误 - 加密未定义

我正在尝试为 aws cognito 创建一个 vuejs 包装器,但在使用他们的 API 时遇到了问题。文档很差,但是我"Cannot read property 'crypto' of undefined在控制台中给了我一个。

设置配置放大

这是在初始化时运行以导致错误的所有代码。我究竟做错了什么?我只是希望能够访问Auth它上面的调用方法。

为清楚起见,我正在导出一个函数来注册 vuex 模块,下面的代码(除了导入)在 init 操作中。

0 投票
1 回答
209 浏览

ionic3 - Cognito 和 Ionic 3 - 让用户保持登录状态

我正在结合 cognito 和 amplify 在 ionic 3 中构建一个应用程序。目前,我正在尝试让用户保持登录状态——即使应用程序已关闭。登录很顺利,用户也可以保持登录状态,但是强制关闭应用程序,用户将再次看到登录页面。

在显示登录页面之前,我在控制台中收到以下消息:[DEBUG] 41:22.567 AuthClass - 获取当前经过身份验证的用户。来源没有凭据。

据我从文档中可以看出 - 在调用 currentSession() 时,amplify 将处理会话的刷新。我还可以看到令牌存储在本地存储中,并且在应用程序关闭并重新打开时仍然存在。

你们有什么线索我需要开始挖掘吗?

PS 我确实告诉 cognito 将刷新令牌的有效期设置为 365 天。

0 投票
1 回答
1476 浏览

apollo - AWS Amplify -- AppSync 离线

Amplify 是否支持此处概述的离线功能: https ://docs.aws.amazon.com/appsync/latest/devguide/building-a-client-app-react.html#offline-settings

我应该这样设置吗? https://aws.github.io/aws-amplify/media/api_guide#configuration-for-graphql-server

或者对于离线功能,我是否必须使用像 Apollo 这样的东西?

0 投票
1 回答
466 浏览

amazon-web-services - aws-amplify 在中国有用吗?中国用户可以访问在欧洲服务器中设置的 aws-amplify

aws-amplify 在中国有用吗?中国用户可以访问欧洲服务器中设置的 aws-amplify。我查看了 AWS 页面,但找不到信息。

0 投票
2 回答
4570 浏览

amazon-web-services - AppSync 和 GraphQL 枚举突变

我在 AppSync for GraphQL 中有以下架构

但是,当我尝试使用 AWS Amplify 库通过

我收到以下错误:Validation error of type VariableTypeMismatch: Variable type doesn't match

如何更新我的代码以使用此枚举类型?