Я пытаюсь создать лямбда-функцию aws, которая будет читать строки из нескольких документов Google Sheets с помощью Google Sheet API, а затем объединять их и записывать в другую электронную таблицу. Для этого я выполнил все необходимые шаги в соответствии с несколькими руководствами:
- Создайте учетные данные для пользователя AWS, чтобы иметь пару ключей.
- Создайте учетную запись службы Google, загрузите учетные данные. json файл.
- Совместное использование каждой необходимой электронной таблицы с учетной записью службы Google client_email .
При выполнении программы локально он работает отлично, он успешно входит в систему с использованием учетных данных . json файл и читает и записывает все необходимые документы.
Однако при загрузке в AWS Lambda с использованием serverless framework и google-spreadsheet , программа молча терпит неудачу на этапе аутентификации. Я попытался изменить разрешения, как рекомендовано в этом вопросе , но все равно не удалось. Файл прочитан правильно, и я могу распечатать его на консоли.
Это упрощенный код:
async function getData(spreadsheet, psychologistName) {
await spreadsheet.useServiceAccountAuth(clientSecret);
// It never gets to this point, it fails silently
await spreadsheet.loadInfo();
... etc ...
}
async function main() {
const promises = Object.entries(psychologistSheetIDs).map(async (psychologistSheetIdPair) => {
const [psychologistName, googleSheetId] = psychologistSheetIdPair;
const sheet = new GoogleSpreadsheet(googleSheetId);
psychologistScheduleData = await getData(sheet, psychologistName);
return psychologistScheduleData;
});
//When all sheets are available, merge their data and write back in joint view.
Promise.all(promises).then(async (psychologistSchedules) => {
... merge the data ...
});
}
module.exports.main = async (event, context, callback) => {
const result = await main();
return {
statusCode: 200,
body: JSON.stringify(
result,
null,
2
),
};