Невозможно поместить событие в поток журнала наблюдения за облаком, используя aws-sdk с безсерверным - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь записать некоторую информацию в поток журнала, который я создал в журнале наблюдения aws, используя лямбда-функцию с aws-sdk, но я не могу получить какие-либо журналы, даже когда лямбда запускается.

Это мой код,

Запуск лямбда-кода

...
const lambda = new aws.Lambda();
  lambda.invoke({
    FunctionName: 'email-api-dev-logError',
    Payload: JSON.stringify(err)
  }, (err, data) => {
    if(err) console.log('Lambda error is ', err);
    else console.log('Lambda Data is ', data);
  })
...

Лямбда-функция

module.exports.logError = async (event) => {
  const cloudwatchlogs = new aws.CloudWatchLogs();

  const logEventParams = {
    logEvents: [
      {
        message: event,
        timestamp: new Date().getTime()
      }
    ],
    logGroupName: 'EmailAPIErrors',
    logStreamName: 'Error'
  };

  cloudwatchlogs.putLogEvents(logEventParams, (err, data) => {
    if (err) console.log(err, err.stack);
    else console.log('Log data is ', data);
  });

};

serverless.yml

  iamRoleStatements:
    - Effect: Allow
      Action:
        - lambda:InvokeFunction
      Resource: "*"

    - Effect: "Allow"
      Action:
        - "sqs:SendMessage"
        - "sqs:ReceiveMessage"
      Resource: "arn:aws:sqs:${self:provider.region}:*:EmailQueueDev"

    - Effect: "Allow"
      Action:
        - "logs:CreateLogStream"
        - "logs:PutLogEvents"
      Resource: "arn:aws:logs:*:*:log-group:/aws/rds/*:log-stream:*"
functions:
  logError:
    handler: handler.logError

Я не уверен, что здесь происходит, пожалуйста, помогите мне найти возможную ошибку и исправить ее.

1 Ответ

0 голосов
/ 08 мая 2019

Вы не можете писать в пользовательскую лог-группу из AWS lambda.Группа журналов по умолчанию, связанная с лямбда-выражением, будет иметь значение /aws/lambda/function-name.

. Так устроена лямбда-версия AWS.Сервис AWS Lambda является своего рода соглашением по конфигурации.Итак, шаблон потока журнала по умолчанию уже определен.

Вы можете сделать подобное поведение, если вам случится использовать EC2 машину, установив cloudwatch агент на машине.

cloudwatchконфигурация агента-EC2

...