Соединение с Dynamodb: странное поведение
Я создал базу данных динамо amason в докере контейнера, используя этот запрос:
curl -X POST http://192.168.99.100:8000/ -H 'accept-encoding: identity' -H 'authorization: AWS4-HMAC-SHA256 Credential=key/20170515/us-east-1/execute-api/aws4_request, SignedHeaders=accept-encoding;content-length;content-type;host;x-amz-date;x-amz-target, Signature=f2f21c6263ad5380aaa' -H 'cache-control: no-cache' -H 'content-type: application/json' -H 'x-amz-date: 20170515T151032Z' -H 'x-amz-target: DynamoDB_20120810.CreateTable' -d '{"AttributeDefinitions": [{"AttributeName": "userId","AttributeType": "S"}],"TableName": "User","KeySchema": [{"AttributeName": "userId","KeyType": "HASH"}],"ProvisionedThroughput": {"ReadCapacityUnits": 1,"WriteCapacityUnits": 1}}'
Когда я перечисляю таблицы, используя команду curl, вот так:
curl -X POST http://192.168.99.100:8000/ -H 'authorization: AWS4-HMAC-SHA256 Credential=key/20170515/us-east-1/execute-api/aws4_request, SignedHeaders=accept-encoding;content-length;content-type;host;x-am z-date;x-amz-target' -H 'cache-control: no-cache' -H 'content-type: application/json' -H 'x-amz-date: 20 170515T151032Z' -H 'x-amz-target: DynamoDB_20120810.ListTables ' -d '{}'
Все работает отлично. Я получаю список таблиц:
{"TableNames":["UserTable1","User", "TestTable]}
Проблема в том, что когда я подключаюсь к этой базе данных с помощью RazorSQL, на ней нет таблицы. У меня та же проблема с моим приложением, Spring-Boot вызывает исключение:
Cannot do operations on a non-existent table (Service: AmazonDynamoDBv2; Status Code: 400;
Есть ли у вас какие-либо идеи об этом странном поведении?
это скриншот моего профиля подключения:
С наилучшими пожеланиями
0 ответов
При локальном использовании DynamoDB вы должны знать следующее:
- Если вы используете
-sharedDb
Опция DynamoDB создает один файл базы данных с именем shared-local-instance.db. Каждая программа, которая подключается к DynamoDB, получает доступ к этому файлу. Если вы удалите файл, вы потеряете все данные, которые вы сохранили в нем. - Если вы опустите
-sharedDb
файл базы данных называется myaccesskeyid_region.db с идентификатором ключа доступа AWS и регионом, указанными в конфигурации вашего приложения. Если вы удалите файл, вы потеряете все данные, которые вы сохранили в нем.
Итак, убедитесь, что вы проходите -shareDb
,
Те, кто использует официальный образ DynamoDB Local Docker, могут сделать это следующим образом:
docker run -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDb
Оригинал ENTRYPOINT
а также CMD
используется изображение можно увидеть в docker inspect amazon/dynamodb-local
вывод и есть:
"Entrypoint": [
"java"
]
"Cmd": [
"-jar",
"DynamoDBLocal.jar",
"-inMemory"
]
Таким образом, мы в основном скопировали их и добавили -sharedDb
,