Создание таблицы в DynamoDB дает ошибку синтаксиса YML - PullRequest
0 голосов
/ 20 октября 2018

Не является ли LocalSecondaryIndexes массивом?Я попробовал много разных версий этого.С и без -, отступы строк / реквизита.Но я не могу заставить его работать.Этот синтаксис дает мне Expected params.LocalSecondaryIndexes to be an Array.

CoordinatesTable:
  Type: 'AWS::DynamoDB::Table'
  Properties:
    KeySchema:
      - AttributeName: hashKey
        KeyType: HASH
      - AttributeName: rangeKey
        KeyType: RANGE
    AttributeDefinitions:
      - AttributeName: hashKey
        AttributeType: "N"
      - AttributeName: rangeKey
        AttributeType: "S"
      - AttributeName: geohash
        AttributeType: "N"
    LocalSecondaryIndexes:
      IndexName: geohash-index
      KeySchema:
        - AttributeName: hashKey
          KeyType: HASH
        - AttributeName: geohash
          KeyType: RANGE
      Projection: 
        ProjectionType: All
    ProvisionedThroughput:
      ReadCapacityUnits: 10
      WriteCapacityUnits: 5
    TableName: CoordinatesTable

Это таблица в формате json, взятая из проекта github.

{
  TableName: config.tableName,
  ProvisionedThroughput: {
    ReadCapacityUnits: 10,
    WriteCapacityUnits: 5
  },
  KeySchema: [
    {
      KeyType: "HASH",
      AttributeName: config.hashKeyAttributeName
    },
    {
      KeyType: "RANGE",
      AttributeName: config.rangeKeyAttributeName
    }
  ],
  AttributeDefinitions: [
    { AttributeName: config.hashKeyAttributeName, AttributeType: 'N' },
    { AttributeName: config.rangeKeyAttributeName, AttributeType: 'S' },
    { AttributeName: config.geohashAttributeName, AttributeType: 'N' }
  ],
  LocalSecondaryIndexes: [
    {
      IndexName: config.geohashIndexName,
      KeySchema: [
        {
          KeyType: 'HASH',
          AttributeName: config.hashKeyAttributeName
        },
        {
          KeyType: 'RANGE',
          AttributeName: config.geohashAttributeName
        }
      ],
      Projection: {
        ProjectionType: 'ALL'
      }
    }
  ]
};

}}

1 Ответ

0 голосов
/ 20 октября 2018

Я полагаю, что сообщение об ошибке вводит в заблуждение и должно указывать, что LocalSecondaryIndexes должен быть списком, потому что это то, что находится в представлении JSON.Так что составление списка из него в YAML должно работать нормально:

LocalSecondaryIndexes:
  - IndexName: geohash-index
    KeySchema:
      - AttributeName: hashKey
        KeyType: HASH
      - AttributeName: geohash
        KeyType: RANGE
    Projection: 
      ProjectionType: All
...