В настоящее время я создаю таблицу в DynamoDB, используя клиентское приложение AWS.Команда, которую я использую:
aws dynamodb create-table --cli-input-json file://.feature_promotions-dynamodb.json --endpoint-url http://localhost:8000
Исходя из документов для create-table
, я смогу установить для режима биллинга значение PAY_PER_REQUEST
, не устанавливая выделенную пропускную способность, но каждый разЗапустив команду, я получаю следующую ошибку:
An error occurred (ValidationException) when calling the CreateTable operation: No provisioned throughput specified for the table
Я обновил awscli
вчера до
aws-cli/1.16.90 Python/3.7.2 Darwin/18.2.0 botocore/1.12.80
Кроме этого, у меня нет идей о том, как это исправить,Мой обходной путь в настоящее время состоит в том, чтобы просто создать таблицу с выделенной пропускной способностью и затем перейти к консоли, чтобы изменить ее, но это кажется ненужным.В конечном итоге я хотел бы иметь возможность запускать эту команду в сценарии bash без необходимости впоследствии исправлять настройки таблицы в консоли AWS.
Ниже приведен файл JSON, который я загружаю в команде create-table
.Атрибут и значение "BillingMode": "PAY_PER_REQUEST"
устанавливаются после "AttributeDefinition"
, и я ожидаю, что это будет работать без ошибок.Если я удалю строку режима биллинга и добавлю следующий атрибут в файл
"ProvisionedThroughput": {
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
}
, он создаст таблицу без ошибок.
{
"TableName": "dev.feature_promotions",
"AttributeDefinitions": [
{
"AttributeName": "display_title",
"AttributeType": "S"
},
{
"AttributeName": "end_date",
"AttributeType": "N"
},
{
"AttributeName": "id",
"AttributeType": "N"
},
{
"AttributeName": "partner_id",
"AttributeType": "N"
},
{
"AttributeName": "start_date",
"AttributeType": "N"
},
{
"AttributeName": "view_scope_id",
"AttributeType": "N"
}
],
"BillingMode": "PAY_PER_REQUEST",
"KeySchema": [
{
"AttributeName": "id",
"KeyType": "HASH"
}
],
"GlobalSecondaryIndexes": [
{
"IndexName": "start_date-index",
"KeySchema": [
{
"AttributeName": "start_date",
"KeyType": "HASH"
},
{
"AttributeName": "id",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "ALL"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
}
},
{
"IndexName": "display_title-index",
"KeySchema": [
{
"AttributeName": "display_title",
"KeyType": "HASH"
},
{
"AttributeName": "id",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "ALL"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
}
},
{
"IndexName": "end_date-index",
"KeySchema": [
{
"AttributeName": "end_date",
"KeyType": "HASH"
},
{
"AttributeName": "id",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "ALL"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
}
},
{
"IndexName": "partner_id-index",
"KeySchema": [
{
"AttributeName": "partner_id",
"KeyType": "HASH"
},
{
"AttributeName": "id",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "ALL"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
}
},
{
"IndexName": "view_scope_id-index",
"KeySchema": [
{
"AttributeName": "view_scope_id",
"KeyType": "HASH"
},
{
"AttributeName": "id",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "ALL"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
}
}
],
"StreamSpecification": {
"StreamEnabled": true,
"StreamViewType": "NEW_AND_OLD_IMAGES"
},
"SSESpecification": {
"Enabled": true,
"SSEType": "AES256",
"KMSMasterKeyId": ""
}
}
Что я делаю не так?