Registro em log de chamadas de API do CodePipeline com o AWS CloudTrail - AWS CodePipeline

Registro em log de chamadas de API do CodePipeline com o AWS CloudTrail

O AWS CodePipeline é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações desempenhadas por um usuário, um perfil ou um AWS service (Serviço da AWS) no CodePipeline. O CloudTrail captura as chamadas de API do CodePipeline como eventos. As chamadas capturadas incluem as chamadas do console do CodePipeline e as chamadas de código para as operações de API do CodePipeline. Se você criar uma trilha, poderá habilitar a entrega contínua de eventos do CloudTrail para um bucket do Amazon S3, incluindo eventos do CodePipeline. Se você não configurar uma trilha, ainda poderá visualizar os eventos mais recentes no console do CloudTrail em Event history (Histórico de eventos). Com as informações coletadas pelo CloudTrail, é possível determinar a solicitação feita para o CodePipeline, o endereço IP no qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita e detalhes adicionais.

Para saber mais sobre o CloudTrail, consulte o Guia do usuário do AWS CloudTrail.

Informações do CodePipeline no CloudTrail

O CloudTrail é habilitado em sua Conta da AWS quando ela é criada. Quando ocorre uma atividade no CodePipeline, essa atividade é registrada em um evento do CloudTrail juntamente com outros eventos de AWS service (Serviço da AWS) em Histórico de eventos. Você pode visualizar, pesquisar e baixar eventos recentes em sua AWS conta. Para obter mais informações, consulte Visualização de eventos com o histórico de eventos do CloudTrail.

Para obter um registro contínuo de eventos na Conta da AWS, incluindo eventos do CodePipeline, crie uma trilha. Uma trilha permite que o CloudTrail entregue arquivos de log a um bucket Amazon S3. Por padrão, ao criar uma trilha no console, a mesma é aplicada a todas as AWSRegiões. A trilha loga eventos de todas as Regiões na partição da AWS e entrega os arquivos de log para o bucket do Amazon S3 especificado por você. Além disso, você pode configurar outros Serviços da AWS para analisar melhor e agir com base nos dados de eventos coletados nos logs do CloudTrail. Para obter mais informações, consulte as informações a seguir.

Todas as ações do CodePipeline são registradas em log pelo CloudTrail e documentadas na Referência da API do CodePipeline. Por exemplo, as chamadas às ações CreatePipeline, GetPipelineExecution e UpdatePipeline geram entradas nos arquivos de log do CloudTrail.

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de identidade ajudam a determinar:

  • Se a solicitação foi feita com credenciais de raiz ou do AWS Identity and Access Management (IAM).

  • Se a solicitação foi feita com credenciais de segurança temporárias de uma função ou de um usuário federado.

  • Se a solicitação foi feita por outro AWS service (Serviço da AWS).

Para obter mais informações, consulte o Elemento userIdentity do CloudTrail.

Noções básicas sobre entradas de arquivos de log do CodePipeline

Uma trilha é uma configuração que permite a entrega de eventos como arquivos de log a um bucket do Amazon S3 especificado. Os arquivos de log CloudTrail contêm uma ou mais entradas de log. Um evento representa uma única solicitação de qualquer fonte, e inclui informações sobre a ação solicitada, data e hora da ação, parâmetros de solicitação e assim por diante. Os arquivos de log do CloudTrail não são um rastreamento de pilha ordenada de chamadas de API pública, portanto não são exibidos em uma ordem específica.

O exemplo a seguir mostra uma entrada de log do CloudTrail para um evento de atualização de pipeline, em que um pipeline chamado MyFirstPipeline foi editado pelo usuário JaneDoe-CodePipeline com o ID de conta 80398EXAMPLE. O usuário alterou o nome do estágio de origem de um pipeline de Source para MySourceStage. Como os elementos requestParameters e responseElements no log do CloudTrail têm a estrutura completa do pipeline editado, esses elementos foram abreviados no exemplo a seguir. Foi adicionada ênfase à parte requestParameters do pipeline em que a mudança ocorreu, ao número de versão anterior do pipeline e à parte responseElements que mostra o número de versão incrementado por 1. As partes editadas estão marcadas com reticências (...) para ilustrar em que partes mais dados são exibidos em uma entrada de log real.

{ "eventVersion":"1.03", "userIdentity": { "type":"IAMUser", "principalId":"AKIAI44QH8DHBEXAMPLE", "arn":"arn:aws:iam::80398EXAMPLE:user/JaneDoe-CodePipeline", "accountId":"80398EXAMPLE", "accessKeyId":"AKIAIOSFODNN7EXAMPLE", "userName":"JaneDoe-CodePipeline", "sessionContext": { "attributes":{ "mfaAuthenticated":"false", "creationDate":"2015-06-17T14:44:03Z" } }, "invokedBy":"signin.amazonaws.com"}, "eventTime":"2015-06-17T19:12:20Z", "eventSource":"codepipeline.amazonaws.com", "eventName":"UpdatePipeline", "awsRegion":"us-east-2", "sourceIPAddress":"192.0.2.64", "userAgent":"signin.amazonaws.com", "requestParameters":{ "pipeline":{ "version":1, "roleArn":"arn:aws:iam::80398EXAMPLE:role/CodePipeline_Service_Role", "name":"MyFirstPipeline", "stages":[ { "actions":[ { "name":"MySourceStage", "actionType":{ "owner":"AWS", "version":"1", "category":"Source", "provider":"S3" }, "inputArtifacts":[], "outputArtifacts":[ {"name":"MyApp"} ], "runOrder":1, "configuration":{ "S3Bucket":"amzn-s3-demo-source-bucket", "S3ObjectKey":"sampleapp_linux.zip" } } ], "name":"Source" }, (...) }, "responseElements":{ "pipeline":{ "version":2, (...) }, "requestID":"2c4af5c9-7ce8-EXAMPLE", "eventID":""c53dbd42-This-Is-An-Example"", "eventType":"AwsApiCall", "recipientAccountId":"80398EXAMPLE" } ] }