Usar o AWS Lambda com o AWS X-Ray - AWS Lambda

Usar o AWS Lambda com o AWS X-Ray

Você pode usar o AWS X-Ray para visualizar os componentes do aplicativo, identificar gargalos de desempenho e solucionar problemas de solicitações que resultaram em um erro. Suas funções do Lambda enviam dados de rastreamento para o X-Ray, e o X-Ray processa os dados para gerar um mapa de serviço e resumos de rastreamento pesquisáveis.


      Mapa de serviço mostrando nós para funções do Lambda, X-Ray, Amazon S3 e CloudWatch Logs

Se você tiver habilitado o rastreamento do X-Ray em um serviço que invoca sua função, o Lambda enviará rastreamentos para o X-Ray automaticamente. O serviço upstream, como Amazon API Gateway, ou um aplicativo hospedado no Amazon EC2 que é instrumentado com o X-Ray SDK, analisa solicitações de entrada e adiciona um cabeçalho de rastreamento que informa ao Lambda para enviar rastreamentos ou não.

Para rastrear solicitações que não têm um cabeçalho de rastreamento, ative o rastreamento ativo na configuração da sua função.

Para ativar o rastreamento ativo

  1. Abra a página Functions (Funções) do console do Lambda.

  2. Escolha uma função.

  3. Em AWS X-Ray, escolha Active tracing (Rastreamento ativo).

  4. Escolha Save (Salvar).

Definição de preços

O X-Ray tem um nível gratuito vitalício. Além do limite do nível gratuito, o X-Ray cobra por armazenamento e recuperação de rastreamento. Para obter detalhes, consulte Definição de preço do AWS X-Ray.

Sua função precisa de permissão para carregar dados de rastreamento no X-Ray. Quando você habilita o rastreamento ativo no console do Lambda, o Lambda adiciona as permissões necessárias à função de execução da função. Caso contrário, adicione a política AWSXRayDaemonWriteAccess à função de execução.

O X-Ray aplica um algoritmo de amostragem para garantir que o rastreamento é eficiente, enquanto ainda fornece uma amostra representativa das solicitações que o seu aplicativo serviu. A regra de amostragem padrão é uma solicitação por segundo e 5% de solicitações adicionais. Esta taxa de amostragem não pode ser configurada para funções do Lambda.

No X-Ray, um rastreamento registra informações sobre uma solicitação que é processada por um ou mais serviços. Os serviços registram segmentos que contêm camadas de subsegmentos. O Lambda registra um segmento para o serviço do Lambda que lida com a solicitação de invocação e um para o trabalho realizado pela função. O segmento de função vem com subsegmentos para Initialization, Invocation e Overhead.

O exemplo a seguir mostra um rastreamento com 2 segmentos. Ambos são chamados my-function, mas um é do tipo AWS::Lambda e o outro é AWS::Lambda::Function. O segmento de função é expandido para mostrar seus subsegmentos.

Importante

No Lambda, é possível usar o SDK do X-Ray para estender o subsegmento Invocation com subsegmentos adicionais para anotações, metadados e chamadas downstream. Não é possível acessar o segmento de função diretamente nem registrar trabalhos feitos fora do escopo de chamada do manipulador.

Consulte os tópicos a seguir para obter uma introdução específica de uma linguagem ao rastreamento no Lambda:

Para obter uma lista completa de serviços que oferecem suporte à instrumentação ativa, consulte Serviços da AWS compatíveis no Guia do desenvolvedor do AWS X-Ray.

Permissões da função de execução

O Lambda precisa das seguintes permissões para enviar dados de rastreamento para o X-Ray. Adicione-as à função de execução da sua função.

Essas permissões estão incluídas na política gerenciada AWSXRayDaemonWriteAccess.

O daemon do AWS X-Ray

Em vez de enviar dados de rastreamento diretamente para a API do X-Ray, o SDK do X-Ray usa um processo do daemon. O daemon do AWS X-Ray é um aplicativo que é executado no ambiente do Lambda e escuta o tráfego UDP que contém segmentos e subsegmentos. Ele armazena em buffer os dados recebidos e os grava no X-Ray em lotes, reduzindo a sobrecarga de processamento e memória necessária para rastrear invocações.

O tempo de execução do Lambda permite ao daemon até 3% da memória configurada da sua função ou 16 MB, o que for maior. Se sua função ficar sem memória durante a invocação, o tempo de execução encerrará o processo do daemon primeiro para liberar memória.

O processo do daemon é totalmente gerenciado pelo Lambda e não pode ser configurado pelo usuário. Todos os segmentos gerados por invocações de função são registrados na mesma conta que a função do Lambda. O daemon não pode ser configurado para redirecioná-los para nenhuma outra conta.

Para obter mais informações, consulte O daemon do X-Ray no Guia do desenvolvedor do X-Ray.

Habilitar o rastreamento ativo com a API do Lambda

Para gerenciar a configuração de rastreamento com a AWS CLI ou com o AWS SDK, use as seguintes operações de API:

O exemplo de comando da AWS CLI a seguir habilita o rastreamento ativo em uma função chamada my-function.

$ aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

O modo de rastreamento faz parte da configuração específica da versão que é bloqueada quando você publica uma versão da função. Não é possível alterar o modo de rastreamento em uma versão publicada.

Habilitar o rastreamento ativo com o AWS CloudFormation

Para habilitar o rastreamento ativo em um recurso AWS::Lambda::Function em um modelo do AWS CloudFormation, use a propriedade TracingConfig.

exemplo function-inline.yml – configuração de rastreamento

Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

Para um recurso do Modelo de aplicativo sem servidor da AWS (AWS SAM) AWS::Serverless::Function, use a propriedade Tracing.

exemplo template.yml – configuração de rastreamento

Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...