ハンズオン(簡易版): EventBridge入門

3.2. CloudWatch Logsログイベントの取得 (ロググループ: /aws/lambda/handson-cli-events-gettings-ebs-function)

目的

CloudWatch Logsロググループ"/aws/lambda/handson-cli-events-gettings-ebs-function"の最後に更新されたログストリームからログイベントを取得します。

パラメータの指定

作業に必要なパラメータを変数に格納をします。

0. リージョンの指定

リージョンを指定します。

環境変数の設定

export AWS_DEFAULT_REGION='ap-northeast-1'

1. CloudWatch Logsロググループ名

CloudWatch Logsロググループ名を指定します。

変数の設定:

LOGS_GROUP_NAME='/aws/lambda/handson-cli-events-gettings-ebs-function'

2. ログイベント数

取得するログイベント数を指定します。

変数の設定:

LOGS_EVENT_MAX_ITEMS='7'

各変数に正しいパラメータ値が格納されていることを確認します。

変数の確認:

cat << END

  # 0. AWS_DEFAULT_REGION:"ap-northeast-1"
       AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1. LOGS_GROUP_NAME:"/aws/lambda/handson-cli-events-gettings-ebs-function"
       LOGS_GROUP_NAME="${LOGS_GROUP_NAME}"
  # 2. LOGS_EVENT_MAX_ITEMS:"7"
       LOGS_EVENT_MAX_ITEMS="${LOGS_EVENT_MAX_ITEMS}"

END

手順

最新のイベントが格納されたログストリームを取得します。

コマンド:

LOGS_STREAM_NAME=$( \
  aws logs describe-log-streams \
    --log-group-name ${LOGS_GROUP_NAME} \
    --query 'max_by(logStreams[], &lastEventTimestamp).logStreamName' \
    --output text \
) \
  && echo ${LOGS_STREAM_NAME}

結果(例):

2020/09/07/[\$LATEST]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

CloudWatch Logsログストリームからログイベントを取得します。

変数の確認:

cat << END

  # LOGS_GROUP_NAME:"/aws/lambda/handson-cli-events-gettings-ebs-function"
    LOGS_GROUP_NAME="${LOGS_GROUP_NAME}"
  # LOGS_STREAM_NAME:"2020/09/07/[\$LATEST]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    LOGS_STREAM_NAME="${LOGS_STREAM_NAME}"
  # LOGS_EVENT_MAX_ITEMS:"7"
    LOGS_EVENT_MAX_ITEMS="${LOGS_EVENT_MAX_ITEMS}"

END

コマンド:

aws logs get-log-events \
  --log-group-name ${LOGS_GROUP_NAME} \
  --log-stream-name ${LOGS_STREAM_NAME} \
  --limit ${LOGS_EVENT_MAX_ITEMS} \
  --query 'events[].[join(``, [ to_string(timestamp) ,`: `,message])]' \
  --output text

結果(例):

{
  "events": [
    {
        "timestamp": 1599448173216,
        "message": "START RequestId: cc28401c-4799-4697-b9da-a41985962618 Version: $LATESTn",
        "ingestionTime": 1599448182506
    },
    {
        "timestamp": 1599448173217,
        "message": "## ENVIRONMENT VARIABLESn",
        "ingestionTime": 1599448182506
    },
    {
        "timestamp": 1599448173217,
        "message": "environ({'AWS_LAMBDA_FUNCTION_VERSION': '$LATEST', 'AWS_SESSION_TOKEN': 'IQoJb3JpZ2luX2VjEAMaDmFwLW5vcnRoZWFzdC0xIkYwRAIgJY7l5VJO126pDYCqKXRyNxXg0+oHHel26bShWWkM2vACIEiMQ6uqedrafP8v2d6Y44TuSfvHZyNC1yqFLn3P8kE2KucBCPz//////////wEQAhoMMTA4NzMwOTQwMDI2IgwD9lyH3tIo75Lb96AquwE4hVhaLnANk7J22grklQXGLxOIRoMp/NAE2eTkUKBbk702V4Z6mMpnRASrx3/JLGXGMZpu0Ut4MDojilxEP6HogxtElJarKoK6erSexDgPlWAjLkVThACVzm3djeFh/FmvU2bfQjTOmikOGUb3o2DslXvp65OTM3sphZyQKaZ94kfnKGJHEP3fLWZY40Ov3rLzeagwLpHRYov8OIOzEeM5+dk5ZzihCSwaGvL89vyZaOYWQ0Fd5wB+2yV6MO3I1voFOuEBO3E4Ktdvf4aFRH14waAsCXHNxDk9ny3mq+X4bHzSzozYua2k7n6xIw8d+UI4Fem9x057QVoxDtArbvChKL0uHEpjwwrVHjk8H0cNvfCsxQfrtgCVaM0IXH53bSk8we6aYX5n0YEPcPr4q7lo8QiOVTq3Tu1ObeC49EhG+BSPvcpx1wLTThBmwdB0aK7FXwmzVxX9kRJ88dnyBgI0DCVZSjo4UyjoS459H2zH2/+88KDxkbMIELXW4Yvwsa3LnytaZlaaqrJjsMP/65BQzNeex4/bx662pKW2SE3g/Mp8oauB', 'LAMBDA_TASK_ROOT': '/var/task', 'LD_LIBRARY_PATH': '/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib', 'AWS_LAMBDA_LOG_GROUP_NAME': '/aws/lambda/handson-cli-events-ebs-function', 'AWS_LAMBDA_LOG_STREAM_NAME': '2020/09/07/[$LATEST]b3b39d7d5ecb4799b732075f5b3d9d3c', 'AWS_EXECUTION_ENV': 'AWS_Lambda_python3.8', 'AWS_LAMBDA_FUNCTION_NAME': 'handson-cli-events-ebs-function', 'AWS_XRAY_DAEMON_ADDRESS': '169.254.79.2:2000', 'PATH': '/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin', 'AWS_DEFAULT_REGION': 'ap-northeast-1', 'PWD': '/var/task', 'AWS_SECRET_ACCESS_KEY': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'LANG': 'en_US.UTF-8', 'LAMBDA_RUNTIME_DIR': '/var/runtime', 'AWS_REGION': 'ap-northeast-1', 'TZ': ':UTC', 'AWS_ACCESS_KEY_ID': 'ASIARSUG6PJ5LGY5SXMN', 'SHLVL': '0', '_AWS_XRAY_DAEMON_ADDRESS': '169.254.79.2', '_AWS_XRAY_DAEMON_PORT': '2000', 'AWS_XRAY_CONTEXT_MISSING': 'LOG_ERROR', '_HANDLER': 'handson-cli-events-ebs-function.lambda_handler', 'AWS_LAMBDA_FUNCTION_MEMORY_SIZE': '128', 'PYTHONPATH': '/var/runtime', '_X_AMZN_TRACE_ID': 'Root=1-5f55a46c-4c8d7cd314f8323cc395466b;Parent=4775084a55762583;Sampled=0'})n",
        "ingestionTime": 1599448182506
    },
    {
        "timestamp": 1599448173217,
        "message": "## EVENTn",
        "ingestionTime": 1599448182506
    },
    {
        "timestamp": 1599448173217,
        "message": "{'version': '0', 'id': 'a1fac754-7667-5374-da61-675a36e0d644', 'detail-type': 'EBS Volume Notification', 'source': 'aws.ec2', 'account': '|AWS_ID|', 'time': '2020-09-07T03:09:32Z', 'region': 'ap-northeast-1', 'resources': ['arn:aws:ec2:ap-northeast-1:XXXXXXXXXXXX:volume/vol-054a7492fc8e731d7'], 'detail': {'result': 'available', 'cause': '', 'event': 'createVolume', 'request-id': 'f1be37c7-7846-423f-84e8-85c96f5ab2b8'}}n",
        "ingestionTime": 1599448182506
    },
    {
        "timestamp": 1599448173217,
        "message": "END RequestId: cc28401c-4799-4697-b9da-a41985962618n",
        "ingestionTime": 1599448182506
    },
    {
        "timestamp": 1599448173217,
        "message": "REPORT RequestId: cc28401c-4799-4697-b9da-a41985962618tDuration: 1.59 mstBilled Duration: 100 mstMemory Size: 128 MBtMax Memory Used: 52 MBtInit Duration: 128.92 mstn",
        "ingestionTime": 1599448182506
    }
  ],
  "nextForwardToken": "f/35668886169167589178295584432110820126864320943035449350",
  "nextBackwardToken": "b/35668886169145288433097053808969284408591672581529468928"
}

完了確認

「CloudWatch Logsロググループ"/aws/lambda/handson-cli-events-gettings-ebs-function"の最後に更新されたログストリームのイベントを取得できている。」ことを確認します。