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

3.4. 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

結果(例):

1599457616439: START RequestId: ea2628aa-aada-4ed6-8cff-251844f2d130 Version: $LATEST

1599457616439: ## ENVIRONMENT VARIABLES

1599457616439: environ({'AWS_LAMBDA_FUNCTION_VERSION': '$LATEST', 'AWS_SESSION_TOKEN': 'IQoJb3JpZ2luX2VjEAYaDmFwLW5vcnRoZWFzdC0xIkcwRQIgeaWDGjEpKQwp1/MfQc8pSnnClFm8ys/fbX0Vmv5uSmcCIQCtiKw7GvFGj2Pj9ljNesmBIUOAs+qS3SLA13ENMzKtMCrnAQj///////////8BEAIaDDEwODczMDk0MDAyNiIMnsDF/hRdDLl55vK8KrsBD/Nc8yU+UnG3cCmIxhnxvvmeasFbJL6AJyZyd9bNFDUo2e/7ZucqLegF1A5xnHhpB4MLPILkNny37VS3MLBQPwBwSaSj+yUpdCSate3ElLsSU+aopaYsS7WufUQzIHwWHeSh1qzORYlC8S7o9ocNkfZQ/gSU6FD9JlOT+wedoqMVh8lgjsQ1OezSR/7V3za7CDVkZSUBCFLu050U8N/e3y46DjTnWwh7rr84q8P/IgYkYDxDGU4wg4f4EDDQktf6BTrgAa/57ipL6QG9bjvviGApyFyktDsHsNLrOGEEr5FJXqoe4kiV8803NaDBG7Dg1sZnt6CO9HONCcePiLrb0yJICvYq/j/OPz+558Y9JqDh/VKyeB8wvSBPm0TI7SaYQoHynGpvQ715O4itzgQ6wrfHDbBVBUV35JtH2uRgb3JeKLD6wdL+oQOObwVsfUyWlv+cp9XkzDBHVpVzF8hBfObvBni91JLqdEtxqHUIe+nhi5htgfTjtoUkKNZfmXGUQ9uF3pmDUHVQdsSPst3g6i0WNXDz3i2qiC+/kE5orMXiNAir', 'AWS_LAMBDA_LOG_GROUP_NAME': '/aws/lambda/handson-cli-events-ebs-function', 'LD_LIBRARY_PATH': '/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib', 'LAMBDA_TASK_ROOT': '/var/task', 'AWS_LAMBDA_LOG_STREAM_NAME': '2020/09/07/[$LATEST]3ceebaa6f1754949977972254a54bbf5', 'AWS_EXECUTION_ENV': 'AWS_Lambda_python3.8', 'AWS_XRAY_DAEMON_ADDRESS': '169.254.79.2:2000', 'AWS_LAMBDA_FUNCTION_NAME': 'handson-cli-events-ebs-function', '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', 'LAMBDA_RUNTIME_DIR': '/var/runtime', 'LANG': 'en_US.UTF-8', 'TZ': ':UTC', 'AWS_REGION': 'ap-northeast-1', 'AWS_ACCESS_KEY_ID': 'ASIARSUG6PJ5OKGY5CTZ', '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-5f55c950-e098798330f5a9bcbab158f7;Parent=65e633a8682c957b;Sampled=0'})

1599457616439: ## EVENT

1599457616439: {'version': '0', 'id': '85920669-9ce1-925c-c2ed-d5a849b57cbd', 'detail-type': 'EBS Volume Notification', 'source': 'aws.ec2', 'account': 'XXXXXXXXXXXX', 'time': '2020-09-07T05:46:55Z', 'region': 'ap-northeast-1', 'resources': ['arn:aws:ec2:ap-northeast-1:XXXXXXXXXXXX:volume/vol-054a7492fc8e731d7'], 'detail': {'result': 'deleted', 'cause': '', 'event': 'deleteVolume', 'request-id': '34476078-aaba-4954-bc24-77d3b8602ebc'}}

1599457616440: END RequestId: ea2628aa-aada-4ed6-8cff-251844f2d130

1599457616440: REPORT RequestId: ea2628aa-aada-4ed6-8cff-251844f2d130   Duration: 1.66 ms       Billed Duration: 100 ms Memory Size: 128 MB     Max Memory Used: 52 MB  Init Duration: 124.33 ms

完了確認

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