Есть ли способы установить значения для системных полей CloudWatch Logs?

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

fmt.Print(`{"requestId":"come on!!"}`)

Ни ниже код

fmt.Print(`{"@requestId":"come on!!"}`)

Защищены ли системные поля?

1 ответ

Когда запускается функция AWS Lambda, context элемент передается в функцию.

Из обработчика лямбда-функций AWS в Go - лямбда-AWS:

func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
        return fmt.Sprintf("Hello %s!", name.Name ), nil
}

Из AWS Lambda Context Object в Go - AWS Lambda:

Свойства контекста

AwsRequestID - Идентификатор запроса вызова.

Таким образом, вы можете получить идентификатор запроса из context, Затем все, что печатает ваша функция, будет записано в журналах CloudWatch. Поэтому, включите идентификатор запроса в ваше заявление на печать.