Время ожидания при попытке доступа к DynamoDB локально
Я могу получить доступ к DynamoDB на AWS с помощью своего кода. Я могу получить доступ к локальному DynamoDB с помощью интерфейса командной строки. Но я не могу заставить их поговорить друг с другом.
# deploying dynamodb
docker run \
--detach \
--tty \
--interactive \
--publish 8000:8000 \
--name lokal_dynamodb amazon/dynamodb-local
# deploying Go with SAM
sam local start-api \
--template sam/template.yaml \
--region eu-central-1 \
--profile default
Создание сеанса
sess, err := session.NewSessionWithOptions(session.Options{
// Provide SDK Config options, such as Region.
Config: aws.Config{
Endpoint: aws.String("http://localhost:8000/"),
Region: aws.String("eu-central-1"),
},
})
if err != nil {
logger.Println(err)
return nil
}
Возвращена ошибка
unction 'ShopFunction' timed out after 20 seconds
Function returned an invalid response (must include one of: body, headers, multiValueHeaders or statusCode in the response object). Response received:
2019-09-21 21:22:03 127.0.0.1 - - [21/Sep/2019 21:22:03] "GET /shop/f10b7ab5-9508-4cfd-acb2-efb2299dd460 HTTP/1.1" 502 -
1 ответ
По какой-то причине лямбды SAM не могут подключиться к DynamoDB локального хоста, поэтому вам нужно создать петлевой IP-адрес, на который они ссылаются для доступа к нему.
ifconfig lo0 alias 172.16.123.1
Затем обновите конфигурацию сеанса до:
sess, err := session.NewSessionWithOptions(session.Options{
// Provide SDK Config options, such as Region.
Config: aws.Config{
Endpoint: aws.String("http://172.16.123.1:8000/"),
Region: aws.String("eu-central-1"),
},
})
if err != nil {
logger.Println(err)
return nil
}