As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Enviando registros para CloudWatch Logs usando o endpoint HLC
O Amazon CloudWatch Logs oferece suporte a um endpoint HTTP Log Collector (HLC) que permite enviar registros diretamente para o Logs usando um CloudWatch protocolo simples baseado em HTTP. Esse recurso simplifica a ingestão de registros para aplicativos e serviços sem exigir a integração do AWS SDK.
O recurso de endpoint do HLC permite que você:
Enviar registros para o CloudWatch Logs usando o protocolo baseado em HTTP
Autenticar usando credenciais específicas do serviço IAM (tokens do portador)
Ingira registros sem exigir a integração do AWS SDK
Use solicitações HTTP POST simples de qualquer aplicativo ou serviço
nota
A chave de API (token portador) para acesso ao endpoint HLC está atualmente em versão prévia e disponível nas seguintes AWS regiões:us-east-1,us-west-1, e. us-west-2 us-east-2 Consulte esta documentação para obter atualizações futuras.
Pré-requisitos
Antes de enviar registros usando o endpoint do HLC, você precisa:
Crie um usuário do IAM com permissões CloudWatch de registros
Gere credenciais específicas do serviço (token do portador)
Crie um grupo de registros e um fluxo de registros
Ativar a autenticação do token do portador no grupo de registros
Opção 1: configuração simplificada usando o AWS console (recomendado)
O AWS Management Console fornece um fluxo de trabalho simplificado para gerar chaves de API para acesso ao endpoint HLC.
Para configurar o acesso ao endpoint HLC usando o console
Faça login no AWS Management Console.
Navegue até CloudWatch> Configurações > Registros.
-
Na seção Chaves de API, escolha Gerar chave de API.
-
Em Validade da chave de API, faça uma das seguintes opções:
Selecione uma duração de expiração da chave de API de 1, 5, 30, 90 ou 365 dias.
Escolha Duração personalizada para especificar uma data de validade personalizada para a chave de API.
Selecione Nunca expira (não recomendado).
-
Escolha Gerar chave de API.
O console automaticamente:
Cria um novo usuário do IAM com as permissões apropriadas
Anexa a política gerenciada do CloudWatchLogsAPIKeyAccess (inclusões
logs:PutLogEventselogs:CallWithBearerTokenpermissões)Gera credenciais específicas do serviço (chave de API)
-
Copie e salve com segurança as credenciais exibidas:
ID da chave de API (ID de credencial específica do serviço)
Segredo da chave da API (token do portador)
Importante
Salve o segredo da chave de API imediatamente. Ela não poderá ser recuperada posteriormente. Se você a perder, precisará gerar uma nova chave de API.
-
Crie o grupo de registros e o fluxo de registros em que seus registros serão armazenados:
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1 -
Ative a autenticação do token do portador no grupo de registros:
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1Verifique a configuração:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Permissões incluídas: o usuário do IAM criado automaticamente terá as seguintes permissões:
logs:PutLogEvents— Enviar eventos de registro para CloudWatch Logslogs:CallWithBearerToken— Autenticar usando o token do portadorkms:Describe*,kms:GenerateDataKey*,kms:Decrypt— Acesse grupos de registros criptografados pelo KMS (com condição restrita ao serviço de registros)
Opção 2: configuração manual
Se você preferir ter mais controle sobre a configuração do IAM ou precisar personalizar as permissões, você pode configurar o endpoint do HLC manualmente.
Etapa 1: criar um usuário do IAM
Crie um usuário do IAM que será usado para ingestão de registros:
Faça login no AWS Management Console e navegue até o IAM.
No painel de navegação à esquerda, escolha Usuários.
Selecione Criar usuário.
Insira um nome de usuário (por exemplo,
cloudwatch-logs-hlc-user).Escolha Próximo.
-
Anexe uma das seguintes políticas do IAM:
Opção A: usar a política gerenciada (recomendada)
Anexe a política gerenciada do CloudWatchLogsAPIKeyAccess.
Opção B: criar uma política personalizada
Crie e anexe a seguinte política do IAM:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LogsAPIs", "Effect": "Allow", "Action": [ "logs:CallWithBearerToken", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "KMSAPIs", "Effect": "Allow", "Action": [ "kms:Describe*", "kms:GenerateDataKey*", "kms:Decrypt" ], "Condition": { "StringEquals": { "kms:ViaService": [ "logs.*.amazonaws.com" ] } }, "Resource": "arn:aws:kms:*:*:key/*" } ] } Escolha Avançar e, em seguida, Criar usuário.
nota
As permissões do KMS são necessárias se você planeja enviar registros para grupos de registros criptografados pelo KMS. A condição restringe o acesso ao KMS somente às chaves usadas por meio do serviço de CloudWatch registros.
Etapa 2: gerar credenciais específicas do serviço (chave de API)
Gere a chave da API CloudWatch Logs usando a CreateServiceSpecificCredentialAPI. Você também pode usar o comando create-service-specific-credential
Para gerar uma chave de API com uma expiração de 30 dias:
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 30
A resposta é um ServiceSpecificCredentialobjeto. O ServiceCredentialSecret valor é sua chave da API CloudWatch Logs (token do portador).
Importante
Armazene o valor ServiceCredentialSecret em segurança, pois não será possível recuperá-lo mais tarde. Se você a perder, precisará gerar uma nova chave de API.
Etapa 3: criar um grupo de registros e um fluxo de registros
Crie o grupo de registros e o fluxo de registros em que seus registros serão armazenados:
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1
Etapa 4: ativar a autenticação do token do portador
Ative a autenticação do token do portador no grupo de registros:
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1
Verifique a configuração:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Enviando registros para o endpoint do HLC
Formato do endpoint
O URL do endpoint do HLC segue este formato:
https://logs.<region>.amazonaws.com/services/collector/event?logGroup=<name>&logStream=<name>[&entityName=<name>&entityEnvironment=<environment>]
Parâmetros necessários:
<region>— AWS Região (por exemplo,us-east-1,eu-west-1)logGroup— Nome do grupo de registros codificado por URLlogStream— Nome do fluxo de log codificado por URL
Parâmetros opcionais:
Opcionalmente, você pode associar seus eventos de log a uma Service entidade incluindo os seguintes parâmetros de consulta. Como os registros enviados pelo endpoint do HLC são telemetria personalizada, eles não são associados automaticamente a uma entidade. Ao fornecer esses parâmetros, o CloudWatch Logs cria uma entidade com KeyAttributes.Type set to Service e a associa aos seus eventos de registro. Isso permite que o recurso relacionado ao Explore correlacione esses registros com outras telemetrias (métricas, rastreamentos e registros) do mesmo serviço, facilitando a solução de problemas e o monitoramento de seus aplicativos em diferentes tipos de sinal. CloudWatch Para obter mais informações sobre entidades e telemetria relacionada, consulte Adicionar informações relacionadas à telemetria personalizada.
entityName— O nome da entidade de serviço a ser associada aos eventos de log. Esse valor é armazenado como a entidadeKeyAttributes.Name(por exemplo,my-applicationouapi.myservice.com).entityEnvironment— O ambiente em que o serviço está hospedado ou ao qual ele pertence. Esse valor é armazenado como a entidadeKeyAttributes.Environment(por exemploproduction,ec2:default, oueks:my-cluster/default).
Formato de solicitação
Envie registros usando HTTP POST com os seguintes cabeçalhos e corpo:
Cabeçalhos:
Authorization: Bearer <your-bearer-token>Content-Type: application/json
Formato do corpo:
O corpo da solicitação deve estar no formato JSON com uma matriz de eventos:
{ "event": [ { "time": 1730141374.001, "event": "Application started successfully", "host": "web-server-1", "source": "application.log", "severity": "info" }, { "time": 1730141374.457, "event": "User login successful", "host": "web-server-1", "source": "auth.log", "user": "john.doe" } ] }
Descrições de campo:
time— Timestamp da época do Unix com milissegundos (obrigatório)event— A mensagem de registro ou os dados do evento (obrigatório)host— Nome do host ou identificador de origem (opcional)source— Identificador da fonte de log (opcional)
Campos personalizados adicionais podem ser incluídos conforme necessário.
Exemplo de solicitação
curl -X POST \ 'https://logs.<region>.amazonaws.com/services/collector/event?logGroup=/aws/hlc-logs/my-application&logStream=application-stream-001' \ -H "Authorization: Bearer <your-bearer-token>" \ -H "Content-Type: application/json" \ -d '{ "event": [ { "time": 1730141374.001, "event": "Application started", "host": "web-server-1", "severity": "info" } ] }'
Controle as permissões para gerar e usar CloudWatch as chaves da API Logs
A geração e o uso das chaves da API CloudWatch Logs são controlados por ações e chaves de condição nos serviços do CloudWatch Logs e do IAM.
Controle da geração de chaves da API CloudWatch Logs
A CreateServiceSpecificCredential ação iam: controla a geração de uma chave específica do serviço (como uma chave da API CloudWatch Logs). Você pode definir o escopo dessa ação para usuários do IAM como um recurso para limitar os usuários para os quais uma chave pode ser gerada.
É possível usar as seguintes chaves de condição para impor condições à permissão para a ação iam:CreateServiceSpecificCredential:
iam: ServiceSpecificCredentialAgeDays — Permite especificar, na condição, o tempo de expiração da chave em dias. Por exemplo, é possível usar essa chave de condição para permitir somente a criação de chaves de API que expirem em noventa dias.
iam: ServiceSpecificCredentialServiceName — Permite especificar, na condição, o nome de um serviço. Por exemplo, você pode usar essa chave de condição para permitir somente a criação de chaves de API para CloudWatch Logs e não para outros serviços.
Controle do uso das chaves da API CloudWatch Logs
A logs:CallWithBearerToken ação controla o uso de uma chave da API CloudWatch Logs. Para evitar que uma identidade use as chaves da API CloudWatch Logs, anexe uma política que negue a logs:CallWithBearerToken ação ao usuário do IAM associado à chave.
Exemplo de política
Impedir que uma identidade gere e use CloudWatch as chaves da API Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWLAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "logs:CallWithBearerToken" ], "Resource": "*" } ] }
Atenção
Essa política impedirá a criação de credenciais para todos os AWS serviços que oferecem suporte à criação de credenciais específicas do serviço. Para ter mais informações, consulte Credenciais específicas do serviço para usuários do IAM.
Impedir que uma identidade use CloudWatch as chaves da API Logs
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } ] }
Permita a criação de chaves de CloudWatch registros somente se elas expirarem em 90 dias
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceSpecificCredential", "Resource": "arn:aws:iam::123456789012:user/username", "Condition": { "StringEquals": { "iam:ServiceSpecificCredentialServiceName": "logs.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }
Lidar com chaves comprometidas da API CloudWatch Logs
Se sua chave de API for comprometida, você deverá revogar as permissões para usá-la. Você pode usar as seguintes operações de API do IAM para gerenciar chaves comprometidas:
UpdateServiceSpecificCredential— Defina o status da chave como inativa. Você poderá reativar a chave posteriormente.
ResetServiceSpecificCredential— Reinicie a chave. Isso gera uma nova senha para a chave.
DeleteServiceSpecificCredential— Exclua a chave permanentemente.
nota
Para realizar essas ações por meio da API, você deve se autenticar com AWS credenciais e não com uma chave da API CloudWatch Logs.
Alterar o status de uma chave da API CloudWatch Logs
Para desativar uma chave, use o update-service-specific-credential
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
Para reativar a chave, altere o status paraActive.
Redefinir uma chave da API CloudWatch Logs
Se o valor da sua chave foi comprometido ou você não a tem mais, redefina-a usando o reset-service-specific-credential
aws iam reset-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Excluir uma chave da API CloudWatch Logs
Se você não precisar mais de uma chave ou se ela tiver expirado, exclua-a usando o delete-service-specific-credential
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Anexe políticas do IAM para remover as permissões de uso de uma chave da API CloudWatch Logs
Para evitar que uma identidade faça chamadas com uma chave da API CloudWatch Logs, anexe a política a seguir ao usuário do IAM associado à chave:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } }
Registrando o uso da chave de API com CloudTrail
Você pode usar AWS CloudTrail para registrar eventos de dados para o uso da chave da API CloudWatch Logs. CloudWatch O Logs emite eventos de AWS::Logs::LogGroupAuthorization dados para CallWithBearerToken chamadas, permitindo que você audite quando e como as chaves de API são usadas para enviar registros.
Para ativar o CloudTrail registro para o uso da chave da API CloudWatch Logs:
nota
O bucket do S3 que você especifica para a trilha deve ter uma política de bucket que permita CloudTrail gravar arquivos de log nele. Para obter mais informações, consulte a política de bucket do Amazon S3 para. CloudTrail
-
Crie uma trilha:
aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1 -
Configure seletores de eventos avançados para capturar eventos de autorização de grupos de CloudWatch registros de registros:
aws cloudtrail put-event-selectors \ --region us-east-1 \ --trail-name cloudwatch-logs-api-key-audit \ --advanced-event-selectors '[{ "Name": "CloudWatch Logs API key authorization events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Logs::LogGroupAuthorization"] } ] }]' -
Inicie o registro de trilhas:
aws cloudtrail start-logging \ --name cloudwatch-logs-api-key-audit \ --region us-east-1
Práticas recomendadas
eventos em lotes
Para melhor desempenho e eficiência:
Agrupe vários eventos em uma única solicitação, quando possível
Tamanho de lote recomendado: 10 a 100 eventos por solicitação
Tamanho máximo da solicitação: 1 MB
Tratamento de erros
Implemente o tratamento adequado de erros em seu aplicativo. Códigos de status HTTP comuns:
200 OK— Registros ingeridos com sucesso400 Bad Request— Formato ou parâmetros de solicitação inválidos401 Unauthorized— Token de portador inválido ou expirado403 Forbidden— Permissões insuficientes404 Not Found— O grupo de log ou stream não existe429 Too Many Requests— Limite de taxa excedido500 Internal Server Error— Erro de serviço (tente novamente com recuo exponencial)
Limitações
Tamanho máximo do evento: 256 KB por evento
Tamanho máximo da solicitação: 1 MB
Máximo de eventos por solicitação: 10.000
Os nomes dos grupos de registros devem seguir as convenções de nomenclatura de CloudWatch registros
A autenticação do token do portador deve estar habilitada no grupo de registros