Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Envío de registros a CloudWatch registros mediante el punto final HLC
Amazon CloudWatch Logs admite un punto final HTTP Log Collector (HLC) que le permite enviar registros directamente a CloudWatch Logs mediante un protocolo simple basado en HTTP. Esta función simplifica la ingesta de registros para aplicaciones y servicios sin necesidad de integrar el SDK. AWS
La función de punto final HLC le permite:
Enviar registros a CloudWatch registros mediante un protocolo basado en HTTP
Autentique con credenciales específicas del servicio de IAM (tokens portadores)
Ingiera registros sin necesidad de integrar el SDK AWS
Utilice solicitudes HTTP POST sencillas desde cualquier aplicación o servicio
nota
La clave de API (token portador) para el acceso a los puntos finales de HLC se encuentra actualmente en versión preliminar y está disponible en las siguientes AWS regiones:us-east-1, us-west-1us-west-2, y. us-east-2 Consulte esta documentación para obtener actualizaciones en el futuro.
Requisitos previos
Antes de poder enviar los registros mediante el punto final HLC, debe:
Cree un usuario de IAM con permisos de registro CloudWatch
Genere credenciales específicas del servicio (token de portador)
Cree un grupo de registros y un flujo de registros
Habilite la autenticación por token portador en el grupo de registros
Opción 1: configuración simplificada mediante la AWS consola (recomendada)
La consola AWS de administración proporciona un flujo de trabajo simplificado para generar claves de API para el acceso a los puntos finales del HLC.
Para configurar el acceso al punto final de HLC mediante la consola
Inicie sesión en la consola AWS de administración.
Vaya a CloudWatch> Configuración > Registros.
-
En la sección Claves de API, selecciona Generar clave de API.
-
Para Expiración de la clave de API, realice una de las siguientes acciones:
Selecciona una duración de caducidad de la clave de API de 1, 5, 30, 90 o 365 días.
Elija Duración personalizada para especificar una fecha de expiración personalizada de la clave de API.
Selecciona Nunca caduca (no se recomienda).
-
Seleccione Generar clave de API.
La consola automáticamente:
Crea un nuevo usuario de IAM con los permisos adecuados
Adjunta la política de CloudWatchLogsAPIKeyacceso gestionado (incluye
logs:PutLogEventsylogs:CallWithBearerTokenpermisos)Genera credenciales específicas del servicio (clave de API)
-
Copie y guarde de forma segura las credenciales mostradas:
ID de clave de API (ID de credencial específica del servicio)
Secreto de clave de API (token de portador)
importante
Guarde el secreto de la clave de la API inmediatamente. no la puede recuperar en otro momento. Si la pierdes, tendrás que generar una nueva clave de API.
-
Crea el grupo de registros y el flujo de registros donde se almacenarán tus registros:
# 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 -
Habilite la autenticación por token de portador en el 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 la configuración:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Permisos incluidos: el usuario de IAM creado automáticamente tendrá los siguientes permisos:
logs:PutLogEvents— Enviar los eventos del registro a CloudWatch los registroslogs:CallWithBearerToken— Autenticarse con un token de portadorkms:Describe*,kms:GenerateDataKey*,kms:Decrypt— Acceda a grupos de registros cifrados con KMS (con la condición de que se limite al servicio de registros)
Opción 2: configuración manual
Si prefiere tener más control sobre la configuración de IAM o necesita personalizar los permisos, puede configurar el terminal HLC manualmente.
Paso 1: Crear un usuario de IAM
Cree un usuario de IAM que se utilizará para la ingesta de registros:
Inicie sesión en la consola de AWS administración y vaya a IAM.
En el panel de navegación izquierdo, elija Usuarios.
Seleccione la opción Crear un usuario.
Introduzca un nombre de usuario (por ejemplo,
cloudwatch-logs-hlc-user).Elija Siguiente.
-
Adjunte una de las siguientes políticas de IAM:
Opción A: utilizar la política gestionada (recomendada)
Adjunte la política de CloudWatchLogsAPIKeyacceso gestionado.
Opción B: crear una política personalizada
Cree y adjunte la siguiente política de 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/*" } ] } Seleccione Siguiente y, a continuación, Crear usuario.
nota
Los permisos de KMS son necesarios si planea enviar registros a grupos de registros cifrados con KMS. La condición restringe el acceso al KMS únicamente a las claves utilizadas a través CloudWatch del servicio de registros.
Paso 2: generar credenciales específicas del servicio (clave de API)
Genere la clave CloudWatch de API de Logs mediante la CreateServiceSpecificCredentialAPI. También puede utilizar el comando create-service-specific-credential
Para generar una clave de API con una caducidad de 30 días:
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 30
La respuesta es un ServiceSpecificCredentialobjeto. El ServiceCredentialSecret valor es tu clave de API de CloudWatch Logs (token portador).
importante
Guarde el valor ServiceCredentialSecret de forma segura, ya que no podrá recuperarlo más tarde. Si lo pierdes, tendrás que generar una nueva clave de API.
Paso 3: Crear un grupo de registros y un flujo de registros
Cree el grupo de registros y el flujo de registros donde se almacenarán sus registros:
# 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
Paso 4: Habilite la autenticación por token portador
Habilite la autenticación por token portador en el 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 la configuración:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Envío de registros al punto final del HLC
Formato de punto de conexión
La URL del punto final del HLC sigue este formato:
https://logs.<region>.amazonaws.com/services/collector/event?logGroup=<name>&logStream=<name>[&entityName=<name>&entityEnvironment=<environment>]
Parámetros necesarios:
<region>— AWS Región (por ejemplo,us-east-1,eu-west-1)logGroup— Nombre del grupo de registros codificado en una URLlogStream— Nombre del flujo de registro codificado en una URL
Parámetros opcionales:
Si lo desea, puede asociar sus eventos de registro a una Service entidad mediante la inclusión de los siguientes parámetros de consulta. Como los registros enviados a través del punto final del HLC son telemetría personalizada, no se asocian automáticamente a una entidad. Al proporcionar estos parámetros, CloudWatch Logs crea una entidad con KeyAttributes.Type set en Service y la asocia a sus eventos de registro. Esto permite que la función relacionada con Explore CloudWatch correlacione estos registros con otros datos de telemetría (métricas, trazas y registros) del mismo servicio, lo que facilita la resolución de problemas y la supervisión de las aplicaciones en diferentes tipos de señales. Para obtener más información sobre las entidades y la telemetría relacionada, consulte Añadir información relacionada a la telemetría personalizada.
entityName— El nombre de la entidad de servicio que se va a asociar al registro de eventos. Este valor se almacena como entidadKeyAttributes.Name(por ejemplo,my-applicationoapi.myservice.com).entityEnvironment— El entorno en el que se aloja el servicio o al que pertenece. Este valor se almacena como entidadKeyAttributes.Environment(por ejemplo,production,ec2:default, oeks:my-cluster/default).
Formato de las solicitudes
Envíe los registros mediante HTTP POST con los siguientes encabezados y cuerpo:
Encabezados:
Authorization: Bearer <your-bearer-token>Content-Type: application/json
Formato de cuerpo:
El cuerpo de la solicitud debe estar en formato JSON con una serie 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" } ] }
Descripciones de los campos:
time— Marca de tiempo de época de Unix con milisegundos (obligatorio)event— El mensaje de registro o los datos del evento (obligatorio)host— Nombre de host o identificador de origen (opcional)source— Identificador de la fuente del registro (opcional)
Se pueden incluir campos personalizados adicionales según sea necesario.
Ejemplo de solicitud
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 los permisos para generar y usar las claves CloudWatch de API de Logs
La generación y el uso de las claves de la API de CloudWatch Logs se controlan mediante claves de acción y condición tanto en los servicios de CloudWatch Logs como de IAM.
Controlar la generación de claves de API de CloudWatch Logs
La CreateServiceSpecificCredential acción iam: controla la generación de una clave específica del servicio (como una clave de API de CloudWatch Logs). Puede limitar esta acción a los usuarios de IAM como una forma de restringir el número de usuarios para los que se puede generar una clave.
Puede utilizar las siguientes claves de condición para imponer condiciones al permiso de la acción iam:CreateServiceSpecificCredential:
iam: ServiceSpecificCredentialAgeDays — Permite especificar, en esta condición, el tiempo de caducidad de la clave en días. Por ejemplo, puede utilizar esta clave de condición para permitir únicamente la creación de claves de API que caduquen en 90 días.
iam: ServiceSpecificCredentialServiceName — Permite especificar, en la condición, el nombre de un servicio. Por ejemplo, puedes usar esta clave de condición para permitir solo la creación de claves de API para CloudWatch los registros y no para otros servicios.
Controlar el uso de las claves de API de CloudWatch Logs
La logs:CallWithBearerToken acción controla el uso de una clave de API de CloudWatch Logs. Para evitar que una identidad utilice las claves de la API de CloudWatch Logs, adjunte una política que deniegue la logs:CallWithBearerToken acción al usuario de IAM asociado a la clave.
Ejemplos de políticas
Impida que una identidad genere y utilice las claves de la API CloudWatch de Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWLAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "logs:CallWithBearerToken" ], "Resource": "*" } ] }
aviso
Esta política impedirá la creación de credenciales para todos los AWS servicios que admiten la creación de credenciales específicas de un servicio. Para obtener más información, consulte Credenciales específicas del servicio para los usuarios de IAM.
Impida que una identidad utilice las claves de la API de CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } ] }
Permita la creación de claves de CloudWatch registro solo si caducan en un plazo de 90 días
{ "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" } } } ] }
Gestione las claves de API CloudWatch de Logs comprometidas
Si su clave de API se ve comprometida, debe revocar los permisos para usarla. Puede utilizar las siguientes operaciones de la API de IAM para gestionar las claves comprometidas:
UpdateServiceSpecificCredential— Defina el estado de la clave como inactivo. Puede reactivarla más adelante.
ResetServiceSpecificCredential— Restablecer la clave. Esto genera una nueva contraseña para la clave.
DeleteServiceSpecificCredential— Eliminar la clave de forma permanente.
nota
Para llevar a cabo estas acciones a través de la API, debes autenticarte con AWS credenciales y no con una clave de la API de CloudWatch Logs.
Cambia el estado de una clave de API de CloudWatch Logs
Para desactivar una clave, usa el update-service-specific-credential
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
Para reactivar la clave, cambie el estado a. Active
Restablezca una clave de API CloudWatch de Logs
Si el valor de tu clave se ha visto comprometido o ya no la tienes, restablécela con el reset-service-specific-credential
aws iam reset-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Elimina una clave de API de CloudWatch Logs
Si ya no necesitas una clave o esta ha caducado, elimínala con el siguiente delete-service-specific-credential
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Adjunta políticas de IAM para eliminar los permisos de uso de una clave de API CloudWatch de Logs
Para evitar que una identidad realice llamadas con una clave de API de CloudWatch Logs, adjunta la siguiente política al usuario de IAM asociado a la clave:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } }
Registrar el uso de la clave de API con CloudTrail
Se puede utilizar AWS CloudTrail para registrar eventos de datos para el uso de la clave de la API de CloudWatch Logs. CloudWatch Los registros emiten eventos de AWS::Logs::LogGroupAuthorization datos para CallWithBearerToken las llamadas, lo que te permite auditar cuándo y cómo se utilizan las claves de API para enviar los registros.
Para habilitar el CloudTrail registro para el uso de las claves CloudWatch de la API de Logs:
nota
El bucket de S3 que especifique para la ruta debe tener una política de bucket que permita CloudTrail escribir archivos de registro en él. Para obtener más información, consulte la política de bucket de Amazon S3 para CloudTrail.
-
Cree una ruta:
aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1 -
Configure selectores de eventos avanzados para capturar CloudWatch los eventos de autorización de grupos 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 el registro de rutas:
aws cloudtrail start-logging \ --name cloudwatch-logs-api-key-audit \ --region us-east-1
Prácticas recomendadas
Agrupación de eventos por lotes
Para un mejor rendimiento y eficiencia:
Batch varios eventos en una sola solicitud cuando sea posible
Tamaño de lote recomendado: de 10 a 100 eventos por solicitud
Tamaño máximo de solicitud: 1 MB
Gestión de errores
Implemente una gestión de errores adecuada en su aplicación. Códigos de estado HTTP comunes:
200 OK— Los registros se ingirieron correctamente400 Bad Request— Formato o parámetros de solicitud no válidos401 Unauthorized— Token de portador no válido o caducado403 Forbidden— Permisos insuficientes404 Not Found— El grupo de registros o la transmisión no existen429 Too Many Requests— Se ha superado el límite de velocidad500 Internal Server Error— Error de servicio (reintento con un retraso exponencial)
Limitaciones
Tamaño máximo del evento: 256 KB por evento
Tamaño máximo de solicitud: 1 MB
Número máximo de eventos por solicitud: 10 000
Los nombres de los grupos de registros deben seguir las convenciones CloudWatch de nomenclatura de los registros
La autenticación por token de portador debe estar habilitada en el grupo de registros