Почему мой шаблон CloudFormation продолжает давать сбой при сборке простой DynamoDB с одним ключом раздела? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь создать простую таблицу DynamoDB с помощью CloudFormation.

Создание самого стека (даже не до создания таблицы) не удается с сообщением Internal Failure. Rollback requested by user.

На вкладке событий нет дополнительной информации. Что странно, так это то, что он не работает при создании стека и даже не пытается создать ресурс DynamoDB.

Это для простой таблицы DynamoDB с ключом разделения и без ключа сортировки:

Resources:
  PortalRolesTable:
    Type: AWS::DynamoDB::Table
    Properties:
     TableName: test-env-wb-portal-roles
        AttributeDefinitions:
         - AttributeName: name
           AttributeType: S
        KeySchema:
            - AttributeName: name
              KeyType: HASH

Это должно создать таблицу. У меня есть еще один более сложный шаблон, который успешно создается и создает стек со вторичными индексами, ключами сортировки, TTL и т. Д. Я не знаю, почему мне не повезло с этим.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Я думаю, что настоящей проблемой было отсутствие ProvisionedThroughput свойства.

Документ AWS говорит, что ProvisionedThroughput требуется, если для BillingMode задано значение PROVISIONED (это также значение по умолчанию для BillingMode)

Когда вы использовали Консольный рекордер для AWS - Интернет-магазин Chrome , аддон также генерировал свойство ProvisionedThroughput.

Итак, этот код правильный:

AttributeDefinitions:
- AttributeName: name
  AttributeType: S

но если вы действительно хотите решить проблему, правильный ответ - добавить свойство ProvisionedThroughput или изменить BillingMode

0 голосов
/ 18 января 2019

Я просто использовал замечательный Консольный рекордер для AWS - Интернет-магазин Chrome для генерации шаблона и получил:

AWSTemplateFormatVersion: "2010-09-09"
Resources:
    dynamodb1a42db5:
        Type: "AWS::DynamoDB::Table"
        Properties:
            TableName: "test-env-wb-portal-roles"
            BillingMode: "PROVISIONED"
            KeySchema: 
              - 
                AttributeName: "name"
                KeyType: "HASH"
            ProvisionedThroughput: 
                ReadCapacityUnits: 5
                WriteCapacityUnits: 5
            SSESpecification: 
                Enabled: false

Похоже, что KeySchema - это список словарей, для которого необходимо использовать тире отдельно от значений словаря.

См. Примеры кода YAML: AWS :: DynamoDB :: Table - AWS CloudFormation

...