问题标签 [aws-appsync]

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 回答
236 浏览

amazon-web-services - AWS CodeStar 的 AWS AppSync GraphQL 解析器

GraphQL 解析器有没有办法从由 CodeStar 生成的 lambda 函数公开的端点解析数据源?

AppSync 文档中提供的示例显示了我如何从单个 lambda 函数解析数据,但在我的例子中,我使用 AWS Codestar 使用 lambda 生成 REST API,其中有几个端点返回不同的数据集。

例如,当我想解析 fetchPosts 时,我需要从https://my-prod-example-url/posts端点解析它,而不仅仅是调用 lambda 函数。

0 投票
1 回答
693 浏览

amazon-web-services - 通过 AppSync 上的自定义 Lambda 授权方对突变进行身份验证

我正在尝试创建一个完全 AppSync 托管的 API。

我正在使用自定义 Lambda 授权方,我想对一些mutations 进行身份验证。我已经阅读了关于嵌套解析器的这篇非常有趣的文章和这篇stackoverflow 文章,但我仍然找不到解决我的问题的方法。

所以,我有一个mutation,说createReview应该由 DynamoDB 解析器解决,我希望我的自定义 Lambda 授权器同时授权和验证createReview请求。

这应该如何组织?

我知道我可以createReview通过使用Lambda解析器来解决我的请求,或者我可以使用 AWS Cognito 作为授权方,但我正在努力实现我所要求的正确。

谢谢你的任何建议

0 投票
2 回答
2837 浏览

ios - AWS AppSync 使用错误的 Iam 角色

我正在使用包括 dynamodb 和 s3 在内的服务和 ios 用于自定义登录用户池,该用户池由联合身份使用,为经过身份验证和未经身份验证的用户提供角色。这完美无缺。

然后,当我使用 AWS AppSync 时,我只是在执行一个 Mutation 并且我收到一条错误消息 Unable to take role arn:aws:iam::xxxxxxxxxx:role/xxxxxxxxx 。尝试由 AppSync 使用的这个 arn:aws:iam:xxx/xxx 角色不是我想要使用的角色,并且 iam 角色与 DynamoDb 和 s3 出于某种原因使用的角色不同,即使我是不改变代码中使用的任何 cognitoid。请参阅下面的一些示例代码。

AWS AppSync 尝试使用错误的 Iam 名称的任何帮助/原因?

0 投票
1 回答
45 浏览

amazon-web-services - AWS Data Structure and Stack Suggestion for highly filterable data

Firstly, let me know if I should place this in a different Community. It is programming related but less than I would prefer.

I am creating a mobile app based which I intend to base on AWS App Sync unless I can determine it is a poor fit.

I want to store a fairly large set of data, say a half million records.

From these records, I need to be able to grab all entries based on a tag and page them from the larger set.

An example of this data would be:

Various objects may or may not have a specific tag but may have up to 500 tags or more (the seed of initial data has 130 tags). My filter would ignore them if they did not match but return them if they did.

In reading about Query vs Scan on DyanmoDB, I feel like my current data structure would require mostly scanning and be in-efficient. Efficiency is only a real restriction due to cost.

With cost in mind, I will focus on the cost per user to access this data in filtered sets. Say 100,000 users for now each filtering and paging data many times a day.

0 投票
1 回答
1591 浏览

amazon-web-services - AWS AppSync - 指令“aws_subscribe”不能用于 FIELD_DEFINITION

我正在尝试掌握 AWS AppSync。我对 GraphQL 很陌生。我有以下 GraphQL:

AWS 控制台上的一切似乎都设置得很好。我得到了 schema.json,然后运行命令:

aws-appsync-codegen generate AWSGraphQL.graphql --schema schema.json --output AppsyncAPI.swift 并得到回应:

../SnatchHQ/snatch_appsync/AppSync/AWSGraphQL.graphql: Directive "aws_subscribe" may not be used on FIELD_DEFINITION. .../SnatchHQ/snatch_appsync/AppSync/AWSGraphQL.graphql: Directive "aws_subscribe" may not be used on FIELD_DEFINITION. .../SnatchHQ/snatch_appsync/AppSync/AWSGraphQL.graphql: Directive "aws_subscribe" may not be used on FIELD_DEFINITION. error: Validation of GraphQL query document failed

任何人都可以帮忙吗?

0 投票
3 回答
3626 浏览

amazon-web-services - 通过 AWS Appsync 解析器和 Dynamodb 自动添加时间戳

我尝试在创建一些帖子时自动添加时间戳。但它不适用于 appsync resolver-context-reference 的示例。

https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html#time-helpers-in-util-time

0 投票
1 回答
1945 浏览

amazon-web-services - DynamoDB:我的用例的最佳哈希/排序键 [与 AppSync/GraphQL 混淆]

我计划使用 AWS Cognito 进行用户身份验证,使用 DynamoDB 进行持久性,并使用 AppSync(以及许多 Mobile Hub)来支持 API -一个书评网站

我很难确定哪个字段应该是我的哈希键,哪个应该是我的排序键,以及我应该创建哪个 LSI/GSI。

我有一个书籍清单,详细信息如下:

每次用户写关于一本书的评论时,我都有一个评论记录。

就我而言,书籍可以有多种类型 - 例如“幻想”和“戏剧”。书籍也有用户的评论,他们的数据存储在 Cognito 中。我们将在每本书旁边按时间倒序显示评论。

问题 1:如果我非规范化并Drama用作流派而不是流派 ID 2,那么如果我需要稍后将流派重命名为Dramatic... 我不需要更新每个项目吗?

我至少需要能够回答:

  • 获取目前在书店推荐的所有书籍 [ currently_featured_in_book_stores== True]
  • 获取所有“即将出版”的书籍 [ upcoming_release== True]
  • 获取按大多数拇指排序的所有书籍 [按count_thumbsDESC 排序]
  • 获取所有类型为“喜剧”的书籍 [genre_ids包含123或“喜剧”,具体取决于对Q1的回答]
  • 查询名为“哈利波特”的书籍 [ titleLIKE '%Harry Potter%']
  • 获取所有 ISBN 为 1、2、3、4 或 9 的图书 [ isbnIN [1,2,3,4,9] ]

问题 2:在 DynamoDB 中构建图书数据的最佳方式是什么,您会使用哪种哈希/排序/LSI/GSI?

由于我使用的是 Cognito,因此用户配置文件数据存储在 DynamoDB 之外。

问题 3:我是否应该User在 DynamoDB 中有一个表并双重写入新注册,以便在显示评论时使用 AppSync 填充评论的详细信息?如果没有,在填充书评详细信息时如何获取用户的用户名/名字/姓氏?

问题 4:既然我们已经走了这么远,对 graphql 模式有什么建议吗?

0 投票
1 回答
553 浏览

reactjs - 如何在需要返回有效凭据的异步函数中刷新 Cognito 会话

我有一个在配置 Redux 存储后立即运行的函数:

我正在使用 react-cognito 来管理凭据,并将它们存储在 redux 商店中store.getState().cognito.creds。我的问题是,当凭据过期并需要刷新时,react-cognito 会导出一个函数,该函数performLogin返回一个“COGNITO_LOGIN”操作的承诺,该操作具有带有刷新凭据的有效负载。

我觉得我应该分派返回的操作并在更新后从商店中提取新凭据,但分派没有回调。

我想我可以从 COGNITO_LOGIN 操作中读取凭据,调度操作,而不必担心从 COGNITO_LOGIN 操作中读取凭据store.getState()

...但这似乎是错误的。如果 reducer 将凭证保存到 store 中出现错误怎么办?然后我的 AWSAppSyncClient 的凭证与我的应用程序的其余部分不同步。

这里有更好的方法吗?

0 投票
1 回答
1796 浏览

amazon-web-services - AppSync GraphQL 订阅以分组数据

我已经为我的 GraphQL 查询和突变实现了 AWS Lambda 授权层,这样用户只能在特定 DynamoDB 表项中读取/写入数据,前提是他们是该项目所属组的成员,使用 groupId 分区实现key 和 itemId 的排序键。这样表就可以有许多具有共同 groupId 的 itemId,也可以有许多不同的 groupId。这一切都按预期工作。

现在我希望能够将此组授权扩展到我的实时 GraphQL 订阅。我观察到未参数化的订阅向所有用户广播。我需要一个限制订阅事件的解决方案,以便所有组成员和只有组成员接收订阅事件,以便对包含相应 groupID 键的表数据进行突变。作为许多组的成员的用户将收到他们所属的所有组的订阅事件。

组和组成员是动态的,通过应用程序业务逻辑创建组和添加成员。

我观察了多种 AWS 授权技术,包括静态的和动态的。我已经看到参数化订阅和订阅解析器的示例,它们仅针对一项订阅,但我看不到任何符合我特定“多组”需求的东西。

我正在使用 AWS Amplify API 进行客户端 GraphQL 调用。我观察到 Apollo 有一个 subscribeToMore() 可能对这种情况有所帮助,但我目前更愿意远离我需要的返工,以使我的 UI 适合 Apollo 2 的 Render Props 模式。

有什么想法吗?

0 投票
1 回答
814 浏览

amazon-web-services - 从 AWS AppSync 上的项目中手动删除解析程序?

我目前正在使用亚马逊的仪表板来创建我的架构并附加一个解析器。当我在命令行上执行拉取请求以将我的更改同步到我的前端客户端时,我会拉取所有已创建的解析器(甚至是我删除架构中关联类型的解析器)。有没有办法从我的 AppSync 后端手动删除解析器?