У меня есть конечная точка API в API-шлюзе, определенная как:
/guide/{proxy+}
, которая имеет методы get и пути запроса, определенные как прокси.
Затем я использую лямбда-прокси, который имеет и URL-путьпараметры как:
proxy - method.request.path.proxy
Я моя лямбда-функция Я хочу получить файл S3 из корзины на основе этого пути, поэтому у меня есть:
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event, context, callback) => {
var bucketName = 'my-bucket';
var keyName = 'guide/' + event.proxy;
var fileContent;
let data = await getS3File(bucketName, keyName)
let response = {
"statusCode": 200,
"body": data.Body
};
callback(null, response);
};
async function getS3File(bucket, key) {
const params = {
Bucket: bucket,
Key: key
};
return s3.getObject(params, (err) => {
if (err) {
// handle errors
}
}).promise();
}
К сожалению, когда я проверяю этов тесте в API-шлюзе, когда я передаю путь как: en/guide.pdf
я получаю следующий ответ:
{
"errorMessage": "The specified key does not exist.",
"errorType": "NoSuchKey",
}
Файл там 100%, когда я проверяю его в лямбда-выражении (как тест), онзагружается.Почему так?Не могу понять.
ПРИМЕЧАНИЕ. Я не хочу устанавливать флажок Use Lambda Proxy integration
, потому что в противном случае я теряю некоторые параметры.