Ошибка при попытке включить «время жизни» на локальном DynamoDB - PullRequest
1 голос
/ 21 января 2020

Я использую локальную DynamoDB на Docker и хочу настроить функцию времени жизни ( TTL ) для таблицы.

Для создания таблицы я использую:

aws dynamodb create-table \
    --table-name activity \
    --attribute-definitions \
        AttributeName=deviceId,AttributeType=S \
        AttributeName=time,AttributeType=S \
    --key-schema \
        AttributeName=deviceId,KeyType=HASH \
        AttributeName=time,KeyType=RANGE \
    --billing-mode 'PAY_PER_REQUEST' \
    --endpoint-url http://dynamo:8000

И все работает как нужно.

Но когда я пытаюсь включить TTL:

aws dynamodb update-time-to-live \
    --table-name activity \
    --time-to-live-specification Enabled=true,AttributeName=ttl

Я получил сообщение об ошибке: An error occurred (UnrecognizedClientException) when calling the UpdateTimeToLive operation: The security token included in the request is invalid

фиктивные учетные данные для Docker, отправленного с использованием среды docker:

AWS_ACCESS_KEY_ID: 0
AWS_SECRET_ACCESS_KEY: 0
AWS_DEFAULT_REGION: eu-central-1

Используется Docker изображения:

  • Для DynamoDB - dwmkerr / DynamodB
  • Для внутреннего AWS CLI - гирлянда / aws -cli- docker

Что не так? Как я могу включить эту функцию, используя локальный Docker? Спасибо за любой ответ.

Best.

1 Ответ

0 голосов
/ 22 января 2020

После нескольких часов сбоев у меня есть ответ. Я надеюсь, что это поможет кому-то сэкономить немного времени:

  • Даже если вы используете локальную среду, вы должны использовать реальные AWS учетные данные (AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY). Вы можете получить его здесь после регистрации.
  • Если вы используете параметр --endpoint-url для создания БД, вам следует использовать его с тем же значением для update-time-to-live или любым другим действием для DB.

Ура!

...