Как устранить несоответствующее свойство атрибутов AWS CloudFormation? - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь создать таблицу AWS DynamoDB с помощью AWS CloudFormation,
Я получаю сообщение об ошибке при создании того же.

Ранее я указывал все нужные мне столбцы таблицы,
Но казалось, что свойства AttributeDefinitions и KeySchema должны как-то совпадать, хотя и не уверен.

Я сузил до 2 столбцов, которые должны быть в моей таблице,
то есть. user_id and expiry
user_id - это первичный ключ , а expiry - это столбец, используемый для цели TTL .

Я все еще получаю следующую ошибку, хотя -
Свойство AttributeDefinitions не согласуется с KeySchema таблицы и вторичными индексами

Ниже приведен фрагмент моего шаблона, где я получаю проблему в соответствии с CloudFormation StatusReason -

userExpiry:
    Type: 'AWS::DynamoDB::Table'
    Properties:
      TableName: !Join ['_', [!Ref "prefix",'user_expiry'] ]
      AttributeDefinitions:
        -
          AttributeName: 'expiry'
          AttributeType: 'N'
        -
          AttributeName: 'user_id'
          AttributeType: 'S'
      KeySchema:
        - AttributeName: "user_id"
          KeyType: "HASH"
      TimeToLiveSpecification:
        AttributeName: "expiry"
        Enabled: true
      ProvisionedThroughput:
        ReadCapacityUnits: 1
        WriteCapacityUnits: 1
      Tags:
        -
          Key: 'Project'
          Value: !Ref "ProjectName"
        -
          Key: 'Environment'
          Value: !Ref "ResourceEnvironment"

Я следую этой ссылке Doc -
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html

1 Ответ

0 голосов
/ 03 июля 2019

Yaml использует фиксированный шаблон / схему отступов для файлов, возможно, это может быть причиной получения ошибок. Я попробовал следующий код и смог создать таблицу DynamoDB. Надеюсь, что вы можете внести достаточные изменения в соответствии с требованием на вашем конце:

AWSTemplateFormatVersion: "2010-09-09" Описание: «Шаблон AWS CloudFormation для создания таблицы DynamoDB - userExpiry». Ресурсы: userExpiry: Тип: 'AWS :: DynamoDB :: Table' Свойства: TableName: NewTableName AttributeDefinitions: - AttributeName: 'user_id' AttributeType: 'S'

KeySchema: - AttributeName: "user_id" KeyType: "HASH" TimeToLiveSpecification: AttributeName: "expiry" Включено: правда ProvisionedThroughput: ReadCapacityUnits: 1 WriteCapacityUnits: 1 Метки: - Ключ: «MyKey» Значение: «ProjectName»

(*) Таблица (NewTableName), созданная с использованием вышеуказанного файла Yml - содержит только один столбец для «user_id». Столбец спецификации TTL "expiry" может быть помещен во время вставки записи.

...