В обработчиках функции Lambda у вас будет объект события, обычно этот объект будет содержать информацию о запросе. В соответствии с документацией , это кодируется в base64 и архивируется. Я предполагаю, что это потому, что журналы, как ожидается, станут довольно большими.
Разархивированная структура:
{ messageType: 'DATA_MESSAGE',
owner: '123456789123',
logGroup: 'testLogGroup',
logStream: 'testLogStream',
subscriptionFilters: [ 'testFilter' ],
logEvents:
[ { id: 'eventId1',
timestamp: 1440442987000,
message: '[ERROR] First test message' },
{ id: 'eventId2',
timestamp: 1440442987001,
message: '[ERROR] Second test message' } ] }
Это можно найти в Документах AWS в журналах CloudWatch.
Вы можете проверить поле subscriptionFilters
в данных события, чтобы проверить, какой фильтр активировал лямбду.
Если ваша Lambda была в NodeJS, вы могли бы написать что-то вроде следующего:
const zlib = require('zlib');
const YOUR_FILTER = 'filter1';
exports.handler = async (event) => {
const zippedInput = new Buffer(event.awslogs.data, 'base64');
await new Promise((resolve, reject) => {
zlib.gunzip(zippedInput, function (e, buffer) {
const awslogsData = JSON.parse(buffer.toString('utf-8'));
// Conditions on filters to do something
if (awslogsData.subscriptionFilters.includes(YOUR_FILTER)) {
// do something
} else if (awslogsData.subscriptionFilters.includes('your_other_filter')) {
// do something else
}
resolve();
});
})
return 'Hello from Lambda!'
};