Как распечатать самый последний журнал Cloudwatch для определенной функции Lambda из интерфейса командной строки AWS? - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь использовать AWS CLI и ASK CLI для кодирования навыка Alexa, и я хотел бы иметь возможность использовать симулятор Alexa и просматривать журналы консоли непосредственно из командной строки, чтобы упростить эту задачу, но я не уверен, как просмотреть последний из командной строки.

Я уже установил интерфейс командной строки AWS и ASK и могу просматривать журналы Cloudwatch, но нет последних способов просмотреть последние.

Ответы [ 3 ]

0 голосов
/ 24 июня 2019

Вы можете использовать aws logs description-log-streams , чтобы получить последнее имя потока, а затем aws logs get-log-events , чтобы получить сами записи журнала.

LOG_GROUP=log-group
aws logs get-log-events --log-group-name $LOG_GROUP --log-stream-name `aws logs describe-log-streams --log-group-name $LOG_GROUP --max-items 1 --order-by LastEventTime --descending --query logStreams[].logStreamName --output text | head -n 1` --query events[].message --output text
0 голосов
/ 29 июня 2019

Используя флаг типа журнала, вы сможете получить журналы облачных часов от выполнения. Например:

LOG_RESULT=$(aws lambda invoke --function-name arn:aws:lambda:REGION:111122223333:function:YOUR_LAMBDA_NAME --log-type Tail outfile --query LogResult --output text)

echo $LOG_RESULT | base64 -D

OUTPUT

START RequestId: 3ab54034-ed40-4fd7-b660-17db96a25f59 Version: $LATEST
END RequestId: 3ab54034-ed40-4fd7-b660-17db96a25f59
REPORT RequestId: 3ab54034-ed40-4fd7-b660-17db96a25f59  Duration: 71.48 ms  Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 74 MB

Предполагается, что функция выполняется синхронно, однако с eventType RequestResponse.

Если вам все еще нужен фактический журнал CloudWatch, вы можете выполнить запрос на основе идентификатора запроса.

REQUEST_ID=$(echo $LOG_RESULT | base64 -D | grep START | cut -d " " -f 3)
aws logs filter-log-events --log-group-name /aws/lambda/YOUR_LAMBDA_NAME --filter-pattern \"$REQUEST_ID\" 

OUTPUT

{
    "events": [
        {
            "logStreamName": "2019/06/29/[$LATEST]f94a9c338ec445cda688c015b460621d",
            "timestamp": 1561775888037,
            "message": "START RequestId: 3ab54034-ed40-4fd7-b660-17db96a25f59 Version: $LATEST\n",
            "ingestionTime": 1561775888119,
            "eventId": "34828766136322027826299000340819150179641895561445048320"
        },
        {
            "logStreamName": "2019/06/29/[$LATEST]f94a9c338ec445cda688c015b460621d",
            "timestamp": 1561775888113,
            "message": "END RequestId: 3ab54034-ed40-4fd7-b660-17db96a25f59\n",
            "ingestionTime": 1561775903178,
            "eventId": "34828766138016884461387327717780753707358087734557278208"
        },
        {
            "logStreamName": "2019/06/29/[$LATEST]f94a9c338ec445cda688c015b460621d",
            "timestamp": 1561775888113,
            "message": "REPORT RequestId: 3ab54034-ed40-4fd7-b660-17db96a25f59\tDuration: 71.48 ms\tBilled Duration: 100 ms \tMemory Size: 128 MB\tMax Memory Used: 74 MB\t\n",
            "ingestionTime": 1561775903178,
            "eventId": "34828766138016884461387327717780753707358087734557278209"
        }
    ],
    "searchedLogStreams": [
        {
            "logStreamName": "2019/06/29/[$LATEST]f94a9c338ec445cda688c015b460621d",
            "searchedCompletely": true
        }
    ]
}

Однако этот вывод не в порядке и включает информацию о самом потоке журнала и о том, какие группы журналов были найдены.

Вы можете отфильтровать его с помощью этой команды:

aws logs filter-log-events --log-group-name /aws/lambda/YOUR_LAMBDA_NAME --filter-pattern \"$REQUEST_ID\" --query 'sort_by(events, &timestamp)[*].[message]' | jq .[][0]

OUTPUT

"START RequestId: 610dcebf-bb7b-4c39-895b-8989b46386a8 Version: $LATEST\n"
"END RequestId: 610dcebf-bb7b-4c39-895b-8989b46386a8\n"
"REPORT RequestId: 610dcebf-bb7b-4c39-895b-8989b46386a8\tDuration: 154.04 ms\tBilled Duration: 200 ms \tMemory Size: 128 MB\tMax Memory Used: 73 MB\t\n"
0 голосов
/ 24 июня 2019

Есть несколько полезных инструментов с открытым исходным кодом, которые могут помочь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...