Versions (relevant - OpenSearch/Dashboard/Server OS/Browser):
v 2.7.0
Describe the issue:
I am creating a small Python script to import dashboard into saved objects. I can do this manually via GUI and I can see my dashboards under `endpoint/_dashboards/app/management/opensearch-dashboards/objects
However importing the same file via python request, I can’t see this file even when I get status_code = 200. Another interesting thing is that when I examine the logs in Cloudwatch (my script is run by a Lambda function) I see the request is actually a GET rather than a POST. Has anyone seen this issue before
Configuration:
My simple lambda handler
def dashboard_import_lambda(event, context):
# Define the path to the file to be uploaded
file_path = 'dashboard_template/test_file_2.ndjson'
# Define the OpenSearch endpoint URL
opensearch_url = 'https://<end_point_url>/_dashboards/api/saved_objects/_import'
# Define the headers for the POST request
headers = {
'kbn-xsrf': 'true',
'Content-Type': 'application/x-ndjson',
}
try:
# Define the file to upload
files = {
'file': ('test_file.ndjson', open(file_path, 'rb'))
}
# Make the POST request to import the file as a saved object
response = requests.post(opensearch_url, headers=headers, files=files)
# Check if the request was successful
print(f'Request headers {response.request.headers}')
print(f'Request method {response.request.method}')
if response.status_code == 200:
return {
'statusCode': 200,
'body': 'File imported Successfully.'
}
else:
return {
'statusCode': response.status_code,
'body': 'Failed to import the file as a saved object.'
Relevant Logs or Screenshots:
{
“statusCode”: 200,
“body”: “File imported Successfully.”
}
Request method GET