【问题标题】:For an Amplify Datastore setup, is there a way to turn off AWS AppSync to just work locally?对于 Amplify Datastore 设置,有没有办法关闭 AWS AppSync 以仅在本地工作?
【发布时间】:2021-08-19 03:06:49
【问题描述】:

我正在使用启用了 AppSync 的 Amplify Datastore。数据同步在本地和云端之间工作,但在开发过程中必须执行放大推送以更新云端可能会占用大量时间。

如何关闭 AWS AppSync?

【问题讨论】:

    标签: aws-amplify aws-appsync datastore


    【解决方案1】:

    是的! DataStore 可以在有或没有任何云同步的情况下使用。

    安卓

    在您添加 API 插件时启用云同步。要禁用云同步,请不要添加AWSApiPlugin()

    Amplify.addPlugin(AWSDataStorePlugin())
    
    // Comment out this line:
    // Amplify.addPlugin(AWSApiPlugin())
    
    Amplify.configure(applicationContext)
    

    iOS

    存在 API 插件时启用同步。要禁用同步,请不要添加AWSAPIPlugin()

    let dataStorePlugin =
        AWSDataStorePlugin(modelRegistration: AmplifyModels())
    try Amplify.add(plugin: dataStorePlugin)
    
    // Comment out this line:
    // try Amplify.add(plugin: AWSAPIPlugin())
    
    try Amplify.configure()
    

    JavaScript

    方法略有不同。在 aws-exports.js 文件中查找任何 API 配置,然后将其删除。具体来说,您应该删除前缀中带有aws_appsync_* 的所有配置条目:

    const awsmobile = {
        // ...
        "aws_appsync_graphqlEndpoint": "https://yourid.appsync-api.us-east-1.amazonaws.com/graphql",
        "aws_appsync_region": "us-east-1",
        "aws_appsync_authenticationType": "AMAZON_COGNITO_USER_POOLS",
        // ...
    };
    

    【讨论】:

    • 感谢您的快速回复,我会试一试。在可能不同但相关的切线上,当应用同步打开时,是否可以指定某些查询以从本地数据中读取?
    • @Chuender 所有 DataStore 查询都针对本地数据。 Apollo 客户端允许您在从服务器获取或本地缓存之间进行选择。但 DataStore 总是获取本地数据。
    • 在 aws-exports.js 中注释掉 AppSync 配置后,我收到以下警告:[WARN] 32:13.74 DataStore - 数据不会同步。未配置 GraphQL 端点。你忘了Amplify.configure(awsconfig)吗?还有什么我需要禁用的吗?
    • 该输出表明您希望的行为。对吗?
    • 是的,没错。正在考虑是否有其他东西我可以禁用以不收到警告。
    【解决方案2】:

    你可以看看Full offline option using AWS DataStore and then allow an optional activation for the the cloud sync features in Android

    似乎DataStore mind set 首先离线,API 可在 AWS 中使用,因此在执行amplify push 时无法在 AWS 中创建 API。

    【讨论】:

      【解决方案3】:

      在开发期间脱机工作的正常解决方案是在项目设置期间不运行amplify push。您可以在本地运行您的应用程序,一切正常,但没有尝试同步到云端。当您更改架构时,您会运行 amplify codegen models,所有模型都会在本地更新。

      当您最终准备好部署到云并开始以在线/离线模式运行时,您可以运行 amplify push 来配置所有云资源。即使在此之后,您仍然只能通过使用浏览器开发工具禁用网络连接来在本地运行。

      我不知道如何将项目设置回amplify push 之前的状态,但我想要答案。我确定这是项目中放大配置中某处的设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2020-03-02
        相关资源
        最近更新 更多