Using AWS Lambda with AWS CloudTrail - AWS Lambda

Using AWS Lambda with AWS CloudTrail

AWS CloudTrail은 사용자, 역할 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스입니다. CloudTrail은 API 호출을 이벤트로 캡처합니다. AWS 계정의 이벤트 기록을 보유하려면 추적을 생성하십시오. 추적은 CloudTrail이 Amazon S3 버킷으로 이벤트의 로그 파일을 전송할 수 있도록 합니다.

Amazon S3의 버킷 알림 기능을 활용하고 Amazon S3가 직접 객체 생성 이벤트를 AWS Lambda에 게시하게 할 수 있습니다. CloudTrail이 로그를 S3 버킷에 쓸 때마다 Amazon S3는 파라미터로서 Amazon S3 객체 생성 이벤트를 전달하여 Lambda 함수를 호출할 수 있습니다. S3 이벤트는 이 생성한 로그 객체의 버킷 이름 및 키 이름을 포함한 정보를 제공합니다. Lambda 함수 코드는 로그 객체를 읽고 CloudTrail이 기록한 액세스 레코드를 처리할 수 있습니다. 예를 들어 함수 코드를 작성하여 특정 API 호출이 계정에 생성되는 경우 알릴 수 있습니다.

이 시나리오에서 CloudTrail은 S3 버킷에 액세스 로그를 씁니다. AWS Lambda의 경우 Amazon S3는 이벤트 소스이므로 Amazon S3는 이벤트를 AWS Lambda에 게시하고 Lambda 함수를 호출합니다.

예 CloudTrail 로그

{ "Records":[ { "eventVersion":"1.02", "userIdentity":{ "type":"Root", "principalId":"123456789012", "arn":"arn:aws:iam::123456789012:root", "accountId":"123456789012", "accessKeyId":"access-key-id", "sessionContext":{ "attributes":{ "mfaAuthenticated":"false", "creationDate":"2015-01-24T22:41:54Z" } } }, "eventTime":"2015-01-24T23:26:50Z", "eventSource":"sns.amazonaws.com", "eventName":"CreateTopic", "awsRegion":"us-east-2", "sourceIPAddress":"205.251.233.176", "userAgent":"console.amazonaws.com", "requestParameters":{ "name":"dropmeplease" }, "responseElements":{ "topicArn":"arn:aws:sns:us-east-2:123456789012:exampletopic" }, "requestID":"3fdb7834-9079-557e-8ef2-350abc03536b", "eventID":"17b46459-dada-4278-b8e2-5a4ca9ff1a9c", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }, { "eventVersion":"1.02", "userIdentity":{ "type":"Root", "principalId":"123456789012", "arn":"arn:aws:iam::123456789012:root", "accountId":"123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext":{ "attributes":{ "mfaAuthenticated":"false", "creationDate":"2015-01-24T22:41:54Z" } } }, "eventTime":"2015-01-24T23:27:02Z", "eventSource":"sns.amazonaws.com", "eventName":"GetTopicAttributes", "awsRegion":"us-east-2", "sourceIPAddress":"205.251.233.176", "userAgent":"console.amazonaws.com", "requestParameters":{ "topicArn":"arn:aws:sns:us-east-2:123456789012:exampletopic" }, "responseElements":null, "requestID":"4a0388f7-a0af-5df9-9587-c5c98c29cbec", "eventID":"ec5bb073-8fa1-4d45-b03c-f07b9fc9ea18", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" } ] }

이벤트 소스로 Amazon S3를 구성하는 방법에 대한 자세한 내용은 Using AWS Lambda with Amazon S3 단원을 참조하십시오.