Envío de registros de funciones de Lambda a Amazon S3
Puede configurar su función de Lambda para enviar registros directamente a Amazon S3 mediante la consola de Lambda. Esta característica proporciona una solución rentable para el almacenamiento de registros a largo plazo y permite potentes opciones de análisis mediante servicios como Athena.
nota
Puede configurar los registros de funciones de Lambda para que se envíen a Amazon S3 mediante la consola de Lambda, la AWS CLI, AWS CloudFormation y todos los AWS SDK.
Precios
Para obtener información detallada sobre los precios, consulte Precios de Amazon CloudWatch
Permisos necesarios para el destino de registros de Amazon S3
Cuando utilice la consola de Lambda para configurar Amazon S3 como destino del registro de su función, necesitará lo siguiente:
-
Los permisos de IAM necesarios para usar Registros de CloudWatch con Lambda.
-
A Configuración de un filtro de suscripciones de Registros de CloudWatch para enviar los registros de funciones de Lambda a Amazon S3. Este filtro define qué eventos de registro se entregan a su bucket de Amazon S3.
Configuración de un filtro de suscripciones de Registros de CloudWatch para enviar los registros de funciones de Lambda a Amazon S3
Para enviar registros desde Registros de CloudWatch a Amazon S3, debe crear un filtro de suscripción. Este filtro define qué eventos de registro se entregan a su bucket de Amazon S3. El bucket de Amazon S3 se debe usar en la misma región que el grupo de registro.
Creación de un filtro de suscripción para Amazon S3
-
Cree un bucket de Amazon Simple Storage Service (Amazon S3). Recomendamos que utilice un bucket creado específicamente para Registros de CloudWatch. Sin embargo, si desea utilizar un bucket existente, vaya al paso 2.
Ejecute el siguiente comando y sustituya la región del marcador por la región que desee utilizar:
aws s3api create-bucket --bucket amzn-s3-demo-bucket2 --create-bucket-configuration LocationConstraint=region
nota
amzn-s3-demo-bucket2
es un ejemplo de nombre de bucket de Amazon S3. Está reservado. Para que este procedimiento funcione, debe reemplazarlo con el nombre único de su bucket de Amazon S3.A continuación, se muestra un ejemplo de la salida:
{ "Location": "/amzn-s3-demo-bucket2" }
-
Cree el rol de IAM que concede el permiso a Registros de CloudWatch para incluir datos en su bucket de Amazon S3. Esta política incluye una clave de contexto de condición global aws:SourceArn para ayudar a prevenir el confuso problema de seguridad adjunto. Para obtener más información, consulte Confused deputy prevention.
-
Use un editor de texto para crear una política de confianza en un archivo
~/TrustPolicyForCWL.json
, como se indica a continuación:{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } }, "Action": "sts:AssumeRole" } }
-
Ejecute el comando create-role para crear el rol de IAM y especifique el archivo de política de confianza. Anote el valor de Role.Arn devuelto, ya que lo necesitará en un paso posterior:
aws iam create-role \ --role-name CWLtoS3Role \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoS3Role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoS3Role" } }
-
-
Cree una política de permisos para definir las acciones que Registros de CloudWatch puede realizar en su cuenta. En primer lugar, utilice un editor de texto para crear una política de permisos en un archivo
~/PermissionsForCWL.json
:{ "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2/*"] } ] }
Asocie la política de permisos con el rol mediante el siguiente comando
put-role-policy
:aws iam put-role-policy --role-name CWLtoS3Role --policy-name Permissions-Policy-For-S3 --policy-document file://~/PermissionsForCWL.json
-
Elija un grupo de registro
Delivery
ya existente o cree un grupo de registroDelivery
nuevo.aws logs create-log-group --log-group-name my-logs --log-group-class DELIVERY --region REGION_NAME
-
PutSubscriptionFilter
para configurar el destinoaws logs put-subscription-filter --log-group-name my-logs --filter-name my-lambda-delivery --filter-pattern "" --destination-arn arn:aws:s3:::amzn-s3-demo-bucket2 --role-arn arn:aws:iam::123456789012:role/CWLtoS3Role --region REGION_NAME
Envío de registros de funciones de Lambda a Amazon S3
En la consola de Lambda, puede enviar los registros de funciones directamente a Amazon S3 después de crear una nueva función. Para hacerlo, siga estos pasos:
-
Inicie sesión en la consola de administración de AWS y abra la consola de Lambda.
-
Elija el nombre de su función.
-
Elija la pestaña Configuración.
-
Seleccione la pestaña Herramientas de supervisión y operaciones.
-
En la sección “Configuración de registro”, elija Editar.
-
En la sección “Contenido del registro”, seleccione un formato de registro.
-
En la sección “Destino de registro”, siga los pasos que se describen a continuación:
-
Seleccione un servicio de destino.
-
Elija Crear un nuevo grupo de registro o use un Grupo de registro existente.
nota
Si elige un grupo de registro existente para un destino de Amazon S3, asegúrese de que el grupo de registro que elija sea de tipo
Delivery
. -
Elija un bucket de Amazon S3 como destino para los registros de sus funciones.
-
Aparecerá el grupo de registro
Delivery
de CloudWatch.
-
-
Seleccione Save.
nota
Registro entre cuentas
Puede configurar Lambda para enviar registros a un bucket de Amazon S3 en una cuenta de AWS diferente. Esto requiere configurar un destino y establecer los permisos adecuados en ambas cuentas.
Para obtener instrucciones detalladas sobre cómo configurar el registro entre cuentas, incluidos los roles y las políticas de IAM que necesita, consulte Setting up a new cross-account subscription en la documentación de Registros de CloudWatch.