メインコンテンツまでスキップ
Sumo Logic Japanese

AWS Lambda のログの収集

CloudWatch Lambda ログと CloudTrail Lambda データ イベントを収集するためのステップです。

AWS Lambda のログの収集

Amazon CloudWatch ログ

AWS Lambda は、Lambda 関数をモニタリングして、Amazon CloudWatch 経由でメトリクスをレポートします。次いで、Lambda は関数で処理されたすべてのリクエストをログに記録し、CloudWatch ログとして格納します。

Amazon CloudWatch ログの収集方法については、「Amazon CloudWatch ログ」を参照してください。

AWS Lambda 用 Sumo Logic アプリケーションは、CloudWatch からの Lambda ログを使用し、ご使用のアカウントのすべての Lambda 関数についての運用とパフォーマンスの傾向を視覚化して、メモリ使用量や実行時間などの実行に関する情報を関数バージョンやエイリアス別に分析できます。

CloudTrail Lambda データ イベント

CloudTrail Lambda データ イベントにより、Lambda 関数の実行アクティビティを継続的にモニタリングして、いつ誰が API コールを行ったかについての詳細を記録します。 

AWS Lambda 用 Sumo Logic アプリケーションは、Lambda 関数でアクティビティをキャプチャして記録する CloudTrail Lambda データ イベントを使用して、関数名、バージョン、AWS サービス、脅威詳細別に Lambda 関数の呼び出しへのインサイトを提供します。

CTDE-Flow.png

CloudTrail ソースを設定するには、次の手順を実行します。

  1. Amazon S3 バケットに、Sumo Logic へのアクセス権を与えます
  2. AWS アカウントで CloudTrail を使用してデータ イベントを設定します。
  3. ログが、Amazon S3 バケットに配信されることを確認します。
  4. AWS CloudTrail ソースを Sumo Logic に追加します。

ログ メッセージのサンプル

Amazon CloudWatch ログ

{"id":"32563142671071560797760688825700039436306340248688066573","timestamp":1511808906799,"message":"REPORT RequestId: cf75cfa3-fe16-11e5-9b16-e3e4c70845f2    Duration: 50.23 ms    Billed Duration: 100 ms     Memory Size: 128 MB    Max Memory Used: 24 MB    
","requestID":null,"logStream":"2017/11/27/[Prod]1108153ced144f8cbb161aef096218d1","logGroup":"/aws/lambda/AWSlambda1"}

CloudTrail Lambda データ イベント

{
   "eventVersion":"1.06",
   "userIdentity":{
      "type":"IAMUser",
      "principalId":"AIDAJ45Q7YFFAREXAMPLE",
      "arn":"arn:aws:iam::111111111111:user/duc",
      "accountId":"111111111111",
      "accessKeyId":"AKIAIOSFODNN7EXAMPLE",
      "userName":"duc"
   },
   "eventTime":"2017-11-27T19:05:20.524Z",
   "eventSource":"lambda.amazonaws.com",
   "eventName":"Invoke",
   "awsRegion":"us-west-1",
   "sourceIPAddress":"155.14.186.236",
   "userAgent":"aws-cli/1.11.129 Python/2.7.8 botocore/1.5.92",
   "requestParameters":{
      "invocationType":"RequestResponse",
      "functionName":"arn:aws:lambda:us-west-1:111111111111:function:function237",
      "clientContext":"ew0KICAiB99udGV6lGtleSIgOiAiY29udGV4dHZhbEXAMPLE=="
   },
   "responseElements":null,
   "additionalEventData":{
      "functionVersion":"arn:aws:lambda:us-west-1:111111111111:function:function238:$LATEST"
   },
   "requestID":"e38fb262-8f45-11e7-9845-e5f2f205b110",
   "eventID":"277a6881-66f4-4f3e-ade5-ba76255b7d93",
   "readOnly":false,
   "resources":[
      {
         "accountId":"111111111111",
         "type":"AWS::Lambda::Function",
         "ARN":"arn:aws:lambda:us-west-1:111111111111:function:function239"
      }
   ],
   "eventType":"AwsApiCall",
   "managementEvent":false,
   "recipientAccountId":"111111111111"
}

クエリのサンプル

CloudTrail Lambda 関数を呼び出した IAM ユーザ数

_sourceCategory=cloudtrail/lambda "lambda.amazonaws.com" Invoke

| json field=_raw "eventName" as event_name

| json field=_raw "sourceIPAddress" as src_ip

| json field=_raw "requestParameters.functionName" as func_name nodrop

| json field=_raw "additionalEventData.functionVersion" as func_version nodrop

| parse regex field=func_name "\w+:\w+:\S+:[\w-]+:\S+:\S+:(?<function_name>[\S]+)$"

| parse regex field=func_version "\w+:\w+:\S+:[\w-]+:\S+:\S+:(?<function_version>[\S]+:[\S ]+)$" | json field=_raw "userAgent" as user_agent

| json field=_raw "userIdentity.type" as caller_type

| json field=_raw "userIdentity.invokedBy"as invoked_by nodrop

| json field=_raw "userIdentity.userName"as user_name nodrop

| if (isNull(user_name), invoked_by, user_name ) as caller

| if (isNull(invoked_by), user_name, invoked_by ) as caller

| where caller_type = "IAMUser" 

| count by caller

| sort by _count

 

使用最大メモリ量 (MB)

_sourceCategory=aws_lambda/lambda*| json "message","logStream","logGroup"

| parse field=message "REPORT RequestId: *Duration: * ms\tBilled Duration: * ms \tMemory Size: * MB\tMax Memory Used: * MB" as RequestId, Duration,BilledDuration,MemorySize,MaxMemoryUsed

| parse field=logstream "*/[*]*" as logstreamDate,version,logstreamID

| parse field=loggroup "/aws/lambda/*" as function

| timeslice 1h

| sum(MaxMemoryUsed) as MaxMemoryUsed by function, _timeslice

| sort by _timeslice

| transpose row _timeslice column function

  • この記事は役に立ちましたか?