【问题标题】:How do I subscribe directly to my AWS AppSync data source?如何直接订阅我的 AWS AppSync 数据源?
【发布时间】:2019-01-10 13:10:13
【问题描述】:

我有一个连接到步进函数的 DynamoDB,我正在构建一个 UI 来显示更改。我将数据库连接到 AppSync 实例并尝试通过 AppSync 使用订阅,但似乎他们只观察到当前 AppSync 中的突变。

如何直接订阅数据源变更?

【问题讨论】:

    标签: amazon-dynamodb graphql aws-appsync


    【解决方案1】:

    你是对的。目前,AppSync 订阅仅由 GraphQL 突变触发。如果从 AppSync 以外的来源对 DynamoDB 进行了更改,则不会触发订阅。

    如果您想跟踪对 DynamoDB 表所做的所有更改并使用 AppSync 发布它们,您可以执行以下操作:

    1) 设置 DynamoDB 流以捕获更改并将更改馈送到 AWS Lambda

    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.Lambda.html

    2) 使用本地(无数据源)解析器设置 AppSync 突变。您可以使用它向订阅者发布消息,而无需写入数据源。

    https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-local-resolvers.html

    3) 使 DynamoDB Stream Lambda 函数(步骤 1 中的设置)调用 AWS AppSync 突变(步骤 2 中的设置)。

    这将允许将对 DynamoDB 表所做的所有更改发布给 AppSync 订阅者,无论更改来自何处。

    【讨论】:

    • 如果需要 Cognito 登录,我如何授权 Lambda 调用 AppSync 实例?
    • 取决于身份验证类型。对于 API Key,只需添加一个标头。 OIDC 和 Cognito 用户池也是如此。如果您使用的是 AWS_IAM,则还有更多工作要做,因为您必须使用 AWS AppSync 开发工具包签署连接。
    • @AdrianHall 我要添加什么标头来连接到 Cognito 池?
    • 添加带有不记名 JWT 令牌的 Authorization 标头
    • @AdrianHall 你不需要用户名和密码来生成这个令牌吗?
    猜你喜欢
    • 2018-09-30
    • 2020-12-28
    • 2019-06-15
    • 2019-02-14
    • 2019-09-16
    • 2019-12-27
    • 2021-03-08
    • 2019-12-27
    • 2019-03-05
    相关资源
    最近更新 更多