AWS Amplify 在创建 DynamoDB 表后创建全局二级索引
Posted
技术标签:
【中文标题】AWS Amplify 在创建 DynamoDB 表后创建全局二级索引【英文标题】:AWS Amplify create Global Secondary Index after DynamoDB table creation 【发布时间】:2020-11-12 14:09:14 【问题描述】:我有一个包含约 70 个表的大型架构,其中许多表相互连接(194 个@connection 指令),如下所示:
type table1 @model
id:ID!
name: String!
...
table2: table2 @connection
type table2 @model
id:ID!
....
这很好用。现在我的数据量正在稳步增长,我需要能够查询结果并对其进行排序。
我已经阅读了几篇文章,发现一篇文章建议我创建一个 @key 指令来生成具有 2 个字段的 GSI,因此我可以说“根据我的过滤器属性过滤结果,按字段排序”名称" 并返回前 10 个条目,其余可通过 nextToken 参数访问"
所以我尝试像这样添加 GSI:
type table1 @model
@key(name: "byName", fields:["id","name"], queryField:"idByName")
id:ID!
name: String!
...
table2: table2 @connection
运行
amplify push --minify
我收到错误提示
Attempting to add a local secondary index to the table1Table table in the table1 stack. Local secondary indexes must be created when the table is created.
An error occured during the push operation: Attempting to add a local secondary index to the table1Table table in the table1 stack.
Local secondary indexes must be created when the table is created.
为什么它会创建 LSI 而不是 GSI?在创建和填充表格后,有什么方法可以将 @key 指令添加到表格中?来自不同表的大量数据集相互关联,因此仅设置一个新架构需要很长时间。
Billingmode 是 PAY_PER_REQUEST,如果这有一些影响的话。
任何想法如何进行?
提前致谢!
问候克里斯蒂安
【问题讨论】:
有这方面的消息吗?我有同样的问题github.com/aws-amplify/amplify-cli/issues/… 这对medium.com/swlh/… 有帮助吗?他们说一次推一个 GSI 【参考方案1】:如果您使用的是新环境,请先删除文件夹#current-cloud-backend。
然后amplify init
再次创建了该文件夹,但可惜其中只有一个文件 amplify-meta.json。
【讨论】:
以上是关于AWS Amplify 在创建 DynamoDB 表后创建全局二级索引的主要内容,如果未能解决你的问题,请参考以下文章
AWS Amplify + Graphql + Dynamodb:突变时出现 ConditionalCheckFailedException 错误
在 AWS Amplify GraphQL DynamoDB 中按另一个表的字段(也称为交叉表或嵌套过滤)过滤列表查询
aws amplify appsync 中的 Graphql 突变错误