AWS Lambda
Guia do desenvolvedor

Uso do AWS Lambda com o AWS CloudTrail

O AWS CloudTrail é um serviço que fornece um registro das ações executadas por um usuário, uma função ou um serviço da AWS. O CloudTrail captura as chamadas de API como eventos. Para obter um registro contínuo de eventos em sua conta da AWS, crie uma trilha. Uma trilha permite que o CloudTrail forneça arquivos de log de eventos a um bucket do Amazon S3.

Você pode aproveitar o recurso de notificação do bucket do Amazon S3 e direcionar o Amazon S3 para publicar eventos criados por objetos no AWS Lambda. Sempre que o CloudTrail gravar logs no bucket do S3, o Amazon S3 poderá invocar a função do Lambda passando o evento criado por objeto do Amazon S3 como um parâmetro. O evento do S3 fornece informações, incluindo o nome do bucket e o nome da chave do objeto de log que o CloudTrail criou. O código da função Lambda pode ler o objeto de log e processar os registros de acesso realizados pelo CloudTrail. Por exemplo, você pode escrever um código de função do Lambda para ser notificado sobre a chamada de API específica realizada em sua conta.

Nesse cenário, o CloudTrail grava logs de acesso no bucket do S3. Quanto ao AWS Lambda, o Amazon S3 é a origem do evento, portanto, o Amazon S3 publica eventos no AWS Lambda e invoca a função do Lambda.

exemplo Log do 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" } ] }

Para obter informações detalhadas sobre como configurar o Amazon S3 como a origem de evento, consulte Uso do AWS Lambda com o Amazon S3.