Получить двоичное изображение от S3 через шлюз API
Мне нужно получить изображение через https://xxx.yyy/zzz/1040 rest api, и я покажу изображение инструменту SNS (Line) через API-интерфейс imagemap.
Я пытаюсь получить изображение, сохраненное в S3 Bucket через лямбду. Вот поток, который я пытаюсь реализовать:
- Сохранить изображение на S3
- Лямбда, чтобы получить изображение base64 от S3 с помощью aws sdk и вернуть кодированное изображение base64
- Config api gateway для преобразования изображения base64 в двоичное изображение
- Нажмите на конечную точку api rest, чтобы получить реальное изображение
Выпуск:
Я не мог получить реальное изображение через браузер и почтальон
пожалуйста помоги! и дайте мне знать, если вам нужна более подробная информация...
Lambda:
'use strict';
const aws = require('aws-sdk');
const s3 = new aws.S3({ region: 'ap-northeast-1' });
const BUCKET = 'test';
module.exports.handler = (event, context, callback) => {
console.log('====== started ====');
s3.getObject({ Bucket: BUCKET, Key: 'line-service-menu-option2.jpg' }).promise()
.then(data => {
callback(null, {
statusCode: 200,
headers: { 'Content-Type': 'image/jpeg'},
body: data.Body.toString('base64'),
isBase64Encoded: true,
});
}).catch(e => console.log(e));
};
Журнал лямбда-теста
{"statusCode": 200, "headers": {"Content-Type": "image / jpeg"}, "body": "/ 9j / 4AAQSkZJRgABAQAAAQABAAD / 2wC ************** *********",
"isBase64Encoded": true}
Конфигурация шлюза API
[Настройка API][1] [запрос метода][2] [запрос интеграции][3] [ответ интеграции][4] [ответ метода] [5]