AWS Lambda 関数を呼び出したユーザーに関する情報 (userIdentity、sourceIPAddress、userAgent などの詳細) を把握したいです。
解決策
Lambda 関数を呼び出したユーザーに関する情報を確認するには、AWS CloudTrail でデータイベントのログ記録を有効にする必要があります。デフォルトでは、CloudTrail は Lambda Invoke API コールをログに記録せず、CloudTrail のイベント履歴にもその記録は行われません。
CloudTrail でのデータイベントに対する料金の詳細については、「AWS CloudTrail の料金」を参照してください。
データイベントのログ記録を有効にするには、新しい証跡を作成するか、既存の証跡を更新してから、データイベント設定を構成します。[データイベントタイプ] の [ソース] で [Lambda] を選択し、[ログセレクターテンプレート] で [すべてのイベントをログに記録する] を選択します。
次のサンプルログは、Invoke API コールの詳細を示しています。
{
"eventVersion": "1.06",
"userIdentity": {
"type": "IAMUser",
"principalId": "AIDAIOR74VCJ2M3NB8U4M",
"arn": "arn:aws:iam::999999999999:user/kyle",
"accountId": "999999999999",
"accessKeyId": "AK2IU7DKE7U2KOI8CCBP",
"userName": "kyle"
},
"eventTime": "2017-11-29T08:47:45Z",
"eventSource": "lambda.amazonaws.com",
"eventName": "Invoke",
"awsRegion": "us-west-2",
"sourceIPAddress": "[IP_ADDRESS]",
"userAgent": "aws-cli/1.11.129 Python/2.7.8 Linux/3.1.56-0.6.839hdh3.x86_64 botocore/1.5.92",
"requestParameters": {
"invocationType": "RequestResponse",
"functionName": "arn:aws:lambda:us-west-2:999999999999:function:BlogFunction:prod",
"clientContext": "ew0KICAiY29udGV4dGtleSIgOiAiY29udGV4dHZhbHVlIg0KfQ==",
"qualifier": "prod"
},
"responseElements": null,
"additionalEventData": {
"functionVersion": "arn:aws:lambda:us-west-2:999999999999:function:BlogFunction:4"
},
"requestID": "eaccb900-8f45-11e7-b60d-179cdf501g92",
"eventID": "0e205f1d-3929-4803-b887-0d2aca122148",
"readOnly": false,
"resources": [{
"accountId": "999999999999",
"type": "AWS::Lambda::Function",
"ARN": "arn:aws:lambda:us-west-2:999999999999:function:BlogFunction"
}],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "999999999999",
"sharedEventID": "6159da59-ad2f-4e04-9669-cf0a6b6b4827"
}
上記の例で Lambda 関数を呼び出したユーザーに関する情報を確認するには、次のフィールドを確認します。
- userIdentity は、リクエストを行ったユーザーに関する情報を示します。
- sourceIPAddress は、ユーザーがリクエストを行った IP アドレスを示します。
注: このフィールドには、IPv4 アドレスも IPv6 アドレスも使用できます。
- userAgent は、ユーザーがリクエストを行う際に使用したエージェントを示します。
関連情報
Gain visibility into the execution of your AWS Lambda functions with AWS CloudTrail (AWS CloudTrail を使用して AWS Lambda 関数の実行状況を可視化する)
AWS CloudTrail を使用した AWS Lambda API コールのロギング
Understanding the CloudTrail Lake event schema (CloudTrail Lake イベントスキーマについて)
CloudTrail record contents for management, data, and network activity events (管理、データ、ネットワークアクティビティイベントに関する CloudTrail レコードのコンテンツ)