Существует ли какой-либо стандартный способ анализа содержимого события AWS API в AWS Lambda?
У меня есть функция lambda nodejs (обработчик), подобная этой. Эта функция вызывается интеграцией прокси-сервера AWS API Gateway. Короче говоря, интеграция прокси передает запрос http как есть лямбде.
exports.handler = async(event, context, callback) => {
...
}
Мое мероприятие будет содержать изображения или документы. Другими словами, сейчас, используя Postman, я загружаю контент с помощью метода HTTP Post в URL-адрес AWS API.
Затем я хотел бы вызвать загрузку AWS S3 с содержимым.
Как есть, объект события, если мы JSON.stringify, он содержит эти вещи
{
"resource": "/UploadToS3",
"path": "/UploadToS3",
"httpMethod": "POST",
"headers": {
"Accept": "*/*",
"accept-encoding": "gzip, deflate",
"Cache-Control": "no-cache",
"Content-Type": "multipart/form-data; boundary=--------------------------286169661413777803563037",
"Host": "rzm85vjr13.execute-api.us-east-1.amazonaws.com",
"Postman-Token": "84182d22-7193-480f-8642-0fede39b4458",
"User-Agent": "PostmanRuntime/7.11.0",
"X-Amz-Date": "20190506T191534Z",
"X-Amzn-Trace-Id": "Root=1-5cd087d7-73a9f50e5b2c20a2628852fb",
"X-Forwarded-For": "100.18.45.29",
"X-Forwarded-Port": "443",
"X-Forwarded-Proto": "https"
},
"multiValueHeaders": {
"Accept": [
"*/*"
],
"accept-encoding": [
"gzip, deflate"
],
"Cache-Control": [
"no-cache"
],
"Content-Type": [
"multipart/form-data; boundary=--------------------------286169661413777803563037"
],
"Host": [
"rzm85vjr13.execute-api.us-east-1.amazonaws.com"
],
"Postman-Token": [
"84182d22-7193-480f-8642-0fede39b4458"
],
"User-Agent": [
"PostmanRuntime/7.11.0"
],
"X-Amz-Date": [
"20190506T191534Z"
],
"X-Amzn-Trace-Id": [
"Root=1-5cd087d7-73a9f50e5b2c20a2628852fb"
],
"X-Forwarded-For": [
"100.18.45.29"
],
"X-Forwarded-Port": [
"443"
],
"X-Forwarded-Proto": [
"https"
]
},
"queryStringParameters": null,
"multiValueQueryStringParameters": null,
"pathParameters": null,
"stageVariables": null,
"requestContext": {
"resourceId": "f80gn4",
"resourcePath": "/UploadToS3",
"httpMethod": "POST",
"extendedRequestId": "ZRopnE9AIAMF2ig=",
"requestTime": "06/May/2019:19:15:35 +0000",
"path": "/test/UploadToS3",
"accountId": "364714536632",
"protocol": "HTTP/1.1",
"stage": "test",
"domainPrefix": "rzm85vjr13",
"requestTimeEpoch": 1557170135135,
"requestId": "5319988d-7033-11e9-a592-f9fb3565e98f",
"identity": {
"cognitoIdentityPoolId": null,
"accountId": null,
"cognitoIdentityId": null,
"caller": null,
"sourceIp": "100.18.45.29",
"principalOrgId": null,
"accessKey": null,
"cognitoAuthenticationType": null,
"cognitoAuthenticationProvider": null,
"userArn": null,
"userAgent": "PostmanRuntime/7.11.0",
"user": null
},
"domainName": "rzm85vjr13.execute-api.us-east-1.amazonaws.com",
"apiId": "rzm85vjr13"
},
"body": "----------------------------286169661413777803563037\r\nContent-Disposition: form-data; name=\"test\"; filename=\"b002.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n**CONTENT GOES HERE**\r\n",
"isBase64Encoded": false
}
Если я скажу event.body , это то, что мы получаем. Для краткости я сократил так много данных изображения (все данные изображения находятся между image / jpeg и ---- ).
----------------------------286169661413777803563037
Content-Disposition: form-data; name="test"; filename="b002.jpg"
Content-Type: image/jpeg
����JFIF��C
----------------------------286169661413777803563037--
Мне нужно каким-то образом разобрать это, чтобы получить содержимое изображения и, возможно, тип.
Этот контент выглядит как фрагмент HTTP-запроса.
Если я использую этот контент как есть и передаю его в S3.upload, он не подходит для последующего открытия.
У некоторых примеров, которые я видел в Интернете, есть несколько библиотек.
Может кто-нибудь объяснить, почему мне понадобятся библиотеки для извлечения контента при необходимости загрузки S3 или для некоторых других функций.