Предостережение: я опытный разработчик C #, но новичок в Python.Я создал функцию Python AWS Lambda, которую я ожидаю опубликовать в своем сервисе AWS ElasticSearch для создания нового индекса.
Функция завершается успешно без сообщений об ошибках, но в моем домене ES нет активности (я ожидал, что будет создан новый индекс).Код и результат приведены ниже (я использую данные теста JSON из консоли AWS).Я, вероятно, нуждаюсь в некоторой обработке исключений, но не уверен, как получить результат от сообщения ES?
Допустим следующее: - У меня есть переменные среды Lambda для ключа доступа, секретного ключа и конечной точки ES.Я настроил свой домен ES с правильной политикой доступа для данного пользователя IAM.
Код:
from __future__ import print_function
from requests_aws4auth import AWS4Auth
import boto3
import requests
import json
import os
def send_signed(method, url, service='es', region='ap-southeast-2', body=None):
credentials = boto3.Session().get_credentials()
auth = AWS4Auth(os.environ['ACCESS_KEY_ID'], os.environ['SECRET_ACCESS_KEY'],
region, service, session_token=credentials.token)
fn = getattr(requests, method)
if body and not body.endswith("\n"):
body += "\n"
fn(url, auth=auth, data=body,
headers={"Content-Type":"application/json"})
def lambda_handler(event, context):
print("Executing function handler")
print("Event incoming: " + json.dumps(event,indent=2))
url = os.environ['ES_ENDPOINT']
doc = json.dumps(event,indent=2)
send_signed('post', url, body=doc)
Результат в консоли:
START RequestId: 8e41edee-fda0-11e8-949a-357d7cb2ae6f Version: $LATEST
Executing function handler
Event incoming: {
"key3": "value3",
"key2": "value2",
"key1": "value1"
}
END RequestId: 8e41edee-fda0-11e8-949a-357d7cb2ae6f
REPORT RequestId: 8e41edee-fda0-11e8-949a-357d7cb2ae6f Duration: 386.81 ms Billed Duration: 400 ms Memory Size: 128 MB Max Memory Used: 36 MB