我可以将哪些选项传递给 Amplify.configure()?

时间:2021-03-23 10:42:53

标签: aws-amplify aws-appsync

似乎有两种不同的方式来配置 Amplify。一些示例使用键值属性格式:

import aws_exports from "./aws-exports";
Amplify.configure(aws_exports);

aws-exports 是这样的:

    const awsmobile = {
        "aws_project_region": "ap-southeast-2",
        "aws_appsync_graphqlEndpoint": "<my graphQL endpoint URL>",
        "aws_appsync_region": "ap-southeast-2",
        "aws_appsync_authenticationType": "API_KEY",
        "aws_appsync_apiKey": "<my API key>",
        "aws_cognito_region": "ap-southeast-2",
        "aws_user_pools_id": "<my user pool id>",
        "aws_user_pools_web_client_id": "<my user pool web client id>",
        "aws_cognito_identity_pool_id": "<my cognito id pool id>",
    };
    export default awsmobile;

和其他示例配置 Amplify(及其模块)以 json 格式传递属性:

Amplify.configure({
  Auth: {
    mandatorySignIn: true,
    region: "ap-southeast-2",
    userPoolId: "<my user pool id>",
    identityPoolId: "<my cognito id pool id>",
    userPoolWebClientId: "<my user pool web client id>"
  },
});

属性相似但不同。我目前使用键值属性,但想使用 json 格式重新配置 Appsync 以使用 authenticationType AMAZON_COGNITO_USER_POOLS。

这两种格式有什么区别,key-value 是如何转换成 Json 结构的?

1 个答案:

答案 0 :(得分:1)

对于这两种格式,我没有遇到任何明确的解释。但是如果你查看设置 Amplify API 的文档页面,这两种格式用于不同的场景。 自动化设置使用 Amplify CLI 生成的键值文件(通过导入“./aws-exports”)。另一方面,手动设置使用嵌套的 json 格式。

文档对设置 AuthenticationAnalytics 等进行了类似的区分。我认为这意味着“./aws-exports”是由 Amplify CLI 生成的文件,因此它应该' 不会被手动修改,因此它的键值格式更适合内部使用。手动配置的例子倾向于使用嵌套的json格式。

话虽如此,文档并不是 100% 一致的。 Amplify GraphQL 的文档说明了在您使用 AWS AppSync 作为 GraphQL 服务器时使用键值格式的配置。为了配置其他类型的 GraphQL 服务器,它使用嵌套的 json 格式。

我最好的猜测是 Amplify 库最初设计为自包含的,其键值配置文件仅供内部使用。随着时间的推移,他们将其打开以进行自定义,然后创建嵌套的 json 格式以使配置更具可读性(并可能添加类型检查)。然而,事情还没有完全转变,所以我们看到两种格式都在使用。