Как подключить 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.

Есть мнения, что делать? Я вижу это неправильно?

Заранее спасибо

Вернуться на верх