使用aws cli将全局二级索引添加到DynamoDB中的现有表

时间:2017-03-28 21:24:17

标签: amazon-dynamodb aws-cli

我无法找到如何使用aws cli将全局二级索引添加到DynamoDB中的现有表的示例。
这是我迄今为止所知道的docs

任何指针都将不胜感激

3 个答案:

答案 0 :(得分:3)

以下是update-table document

示例:

aws dynamodb update-table --table-name <tableName> --global-secondary-index-updates file://gsi-command.json

创建基于更新,创建或删除操作的JSON文件:

从下面的示例JSON中保留其中一个操作(更新,创建或删除)并相应地更新属性定义

[
  {
    "Update": {
      "IndexName": "string",
      "ProvisionedThroughput": {
        "ReadCapacityUnits": long,
        "WriteCapacityUnits": long
      }
    },
    "Create": {
      "IndexName": "string",
      "KeySchema": [
        {
          "AttributeName": "string",
          "KeyType": "HASH"|"RANGE"
        }
        ...
      ],
      "Projection": {
        "ProjectionType": "ALL"|"KEYS_ONLY"|"INCLUDE",
        "NonKeyAttributes": ["string", ...]
      },
      "ProvisionedThroughput": {
        "ReadCapacityUnits": long,
        "WriteCapacityUnits": long
      }
    },
    "Delete": {
      "IndexName": "string"
    }
  }
  ...
]

答案 1 :(得分:1)

“更新表”文档的“选项”部分中有一小部分提到了所需的options specific to creating a new global secondary index,它要求属性定义包含新索引的关键元素。只需将该选项添加到@notionquest提供的示例的末尾就可以了。

aws dynamodb update-table --table-name <tableName> --global-secondary-index-updates file://gsi-command.json --attribute-definitions AttributeName=<attributeName>, AttributeType=<attributeType>

答案 2 :(得分:0)

在现有表中创建全局二级索引。 使用此CLI命令和JSON文件进行更新。

aws dynamodb update-table --table-name sample--cli-input-json file://gsi-update.json --endpoint-url http://localhost:8000

以JSON格式保存参数。

{  
   "AttributeDefinitions":[  
      {  
         "AttributeName":"String",
         "AttributeType":"S"
      },
      {  
         "AttributeName":"String",
         "AttributeType":"S"
      }
   ],
   "GlobalSecondaryIndexUpdates":[  
      {  
         "Create":{  
            "IndexName":"index-name",
            "KeySchema":[  
               {  
                  "AttributeName":"String",
                  "KeyType":"HASH"
               },
               {  
                  "AttributeName":"String",
                  "KeyType":"RANGE"
               }
            ],
            "Projection":{  
               "ProjectionType":"ALL"
            },
            "ProvisionedThroughput":{  
               "ReadCapacityUnits":5,
               "WriteCapacityUnits":5
            }
         }
      }
   ]
}