Как подключить AWS Opensearch к проекту Django на AWS Lambda
Я работаю над проектом, который почти закончен, за исключением одной вещи, и мне отчаянно нужна помощь...
Бэкэнд моего проекта, написанного на Django/Python, развернут на AWS Lambda с помощью библиотеки под названием Zappa, потому что мои знания о AWS очень малы, и это показалось (для первой версии) лучшим и самым быстрым способом запустить мой проект. Он использует базу данных AWS RDS PostgreSQL для работы с моей базой данных.
Фронтенд моего проекта, написанный на Javascript/ReactJS, был помещен на S3 bucket en made publicly available through Cloudfront by following this tutorial.
Теперь, все вышеперечисленное уже прекрасно работает, просто теперь, поскольку у нас есть много данных, которые должны быть отправлены с нашего бэкенда/базы данных на наш фронтенд через API, я хочу использовать elasticsearch.
Итак, я начал использовать AWS Opensearch Service (и использовать elasticsearch версии 7.10), который затем сгенерировал конечную точку для подключения. Все это отлично работает на моем localhost, я могу подключиться, используя приведенный ниже код, создать мои индексы с помощью библиотеки ElasticsearchDSL.
Кроме того, поскольку конечная точка общедоступна, я могу просто сделать GET-запрос с конечной точкой, которую дает мне AWS opensearch, и использовать url Kibana.
import boto3, os
from requests_aws4auth import AWS4Auth
from elasticsearch import RequestsHttpConnection
service = "es"
region = "eu-central-1"
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(
credentials.access_key,
credentials.secret_key,
region,
service,
session_token=credentials.token
)
ELASTICSEARCH_DSL = {
'default': {
'hosts': 'my-opensearch-domain.com/',
"http_auth": awsauth,
"use_ssl": True,
"verify_certs": True,
"connection_class": RequestsHttpConnection,
}
}
Проблема возникает только при развертывании этого на моем проекте лямбда. где он просто выдает мне таймаут при попытке сохранить(индексировать) объект вручную.
Итак, после некоторого чтения и исследования я обнаружил, что моя функция Lambda работает в VPC. Я попробовал поместить свой домен в тот же VPC и security-group.
Теперь, когда проект развернут, я могу установить соединение с конечной точкой и вручную индексировать объект при его сохранении, но я не могу установить соединение на моем localhost, не могу использовать url kibana и не могу использовать их конечные точки API.
Есть мнения, что делать? Я вижу это неправильно?
Заранее спасибо