Criar uma entrega para logs de execução da API REST
É possível rotear os logs de execução para seus próprios grupos de logs do CloudWatch Logs, buckets do Amazon S3 ou fluxos do Firehose. Para fazer isso, crie uma entrega do Amazon CloudWatch Logs. Isso envolve três etapas: criar uma origem de entrega, criar um destino de entrega e vinculá-los a uma entrega.
Pré-requisitos
Antes de criar uma entrega de logs, verifique se você tem o seguinte:
-
Registro em log de execução habilitado no estágio da sua API REST. Defina
loggingLevelcomoERRORouINFO. Se o registro em log não estiver habilitado, a criação da origem de entrega falhará. -
Um recurso de destino: um grupo de logs do CloudWatch Logs, um bucket do Amazon S3 ou um fluxo do Firehose que você possui.
-
Permissões para chamar as APIs de entrega do Amazon CloudWatch Logs. Consulte mais informações em Habilitar o registro em log de serviços da AWS no Guia do usuário do Amazon CloudWatch Logs.
Valores específicos do API Gateway para a entrega do Amazon CloudWatch Logs
Ao criar uma entrega para os logs de execução do API Gateway, use os seguintes valores:
- Atributo ARN
-
arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name} - Tipo de log
-
EXECUTION_LOGS
Criar uma entrega de logs (AWS CLI)
O exemplo a seguir cria uma entrega que envia os logs de execução de uma API REST para um grupo de logs do CloudWatch Logs que você possui.
-
Criar a origem de entrega
Registre sua API REST como a origem de entrega.
aws logs put-delivery-source \ --namemy-apigw-source\ --log-type EXECUTION_LOGS \ --resource-arn arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name} -
Criar um destino de entrega
Registre seu grupo de logs como o destino de entrega.
aws logs put-delivery-destination \ --namemy-log-destination\ --delivery-destination-configuration "destinationResourceArn=arn:aws:logs:{region}:{account-id}:log-group:{log-group-name}" -
Criar a entrega
Vincule a origem ao destino.
aws logs create-delivery \ --delivery-source-namemy-apigw-source\ --delivery-destination-arn arn:aws:logs:{region}:{account-id}:delivery-destination:my-log-destination
Para enviar logs ao Amazon S3 ou Firehose, especifique o ARN do recurso apropriado no comando put-delivery-destination. Consulte mais informações sobre o fluxo de trabalho completo da entrega do Amazon CloudWatch Logs em Habilitar o registro em log de serviços da AWS no Guia do usuário do Amazon CloudWatch Logs.
Para enviar logs a vários destinos, crie entregas adicionais usando a mesma origem de entrega com destinos diferentes.
Campos de registro
Com a entrega do Amazon CloudWatch Logs, os logs de execução incluem campos estruturados que podem ser personalizados por destino. Os seguintes campos opcionais estão disponíveis:
resource_arn: o ARN do estágio da APIevent_timestamp: o horário do evento de logsapi_id: o identificador da API RESTstage: o nome do estágioresource_path: o caminho do recurso da solicitaçãohttp_method: o método HTTPpayload: o conteúdo do log de execução (igual ao dos logs de execução padrão)
É possível selecionar quais campos incluir e o formato de saída para cada destino usando o parâmetro --record-fields em create-delivery e o parâmetro --output-format em put-delivery-destination.
Os formatos de saída disponíveis dependem do destino:
CloudWatch Logs: json, plain
Amazon S3: json, plain, w3c, parquet
Firehose: json, plain
Correspondência com a saída dos logs de execução padrão
Se você quiser uma saída de entrega que corresponda ao registro em log de execução padrão (somente carga útil, sem campos adicionais), adicione --output-format "plain" a put-delivery-destination e --record-fields "payload" --field-delimiter "" a create-delivery.
Criar uma entrega de logs (CloudFormation)
Ao montar o ARN do estágio para os modelos do CloudFormation, use o seguinte padrão:
DeliverySource: Type: AWS::Logs::DeliverySource Properties: Name: my-apigw-source LogType: EXECUTION_LOGS ResourceArn: !Sub "arn:${AWS::Partition}:apigateway:${AWS::Region}:${AWS::AccountId}:/restapis/${MyApi}/stages/${MyStageName}"
Criar uma entrega de logs (console do API Gateway)
É possível criar uma entrega de logs na seção Logs e rastreamento da página de detalhes do estágio.
Faça login no console do API Gateway em https://console.aws.amazon.com/apigateway
. -
Selecione sua API REST e, depois, escolha Estágios.
-
Escolha um estágio.
-
Na seção Logs e rastreamento, em Destinos de entrega de logs, selecione Adicionar destino.
-
Escolha um tipo de destino (CloudWatch Logs, Amazon S3 ou Firehose) e especifique o recurso de destino.
-
Escolha Salvar.
Importante
É necessário habilitar o registro em log de execução no estágio antes de adicionar destinos de entrega. Se o registro em log estiver definido como Desativado, a configuração de entrega não gerará logs.
nota
Para configurar destinos de entrega entre contas, use a AWS CLI. É necessário criar uma política de destino de entrega na conta de destino antes de criar a entrega na conta de origem. Consulte mais informações em Exemplo de entrega entre contas no Guia do usuário do Amazon CloudWatch Logs.