Paso 2: creación de un destino - Amazon CloudWatch Logs

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.

Paso 2: creación de un destino

importante

Todos los pasos de este procedimiento deben realizarse en la cuenta del destinatario de los datos de registro.

Cuando se crea el destino, Registros de CloudWatch envía un mensaje de prueba al destino en nombre de la cuenta de destinatario. Cuando el filtro de suscripción está activo más tarde, Registros de CloudWatch envía eventos de registro al destino en nombre de la cuenta de origen.

Para crear un destino
  1. Espere a que el flujo de Firehose que creó en Paso 1: creación de un flujo de entrega de Firehose se active. Puede utilizar el siguiente comando para comprobar la propiedad StreamDescription.StreamStatus.

    aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream"

    Además, anote el valor de DeliveryStreamDescription.DeliveryStreamARN, ya que necesitará utilizarlo en un paso posterior. Resultado de ejemplo de este comando:

    { "DeliveryStreamDescription": { "DeliveryStreamName": "my-delivery-stream", "DeliveryStreamARN": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream", "DeliveryStreamStatus": "ACTIVE", "DeliveryStreamEncryptionConfiguration": { "Status": "DISABLED" }, "DeliveryStreamType": "DirectPut", "VersionId": "1", "CreateTimestamp": "2021-02-01T23:59:15.567000-08:00", "Destinations": [ { "DestinationId": "destinationId-000000000001", "S3DestinationDescription": { "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket", "BufferingHints": { "SizeInMBs": 5, "IntervalInSeconds": 300 }, "CompressionFormat": "UNCOMPRESSED", "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CloudWatchLoggingOptions": { "Enabled": false } }, "ExtendedS3DestinationDescription": { "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket", "BufferingHints": { "SizeInMBs": 5, "IntervalInSeconds": 300 }, "CompressionFormat": "UNCOMPRESSED", "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CloudWatchLoggingOptions": { "Enabled": false }, "S3BackupMode": "Disabled" } } ], "HasMoreDestinations": false } }

    El flujo de entrega puede tardar un minuto o dos en mostrarse en el estado activo.

  2. Cuando el flujo de entrega esté activo, cree el rol de IAM que concederá permiso a Registros de CloudWatch para incluir datos en su flujo de Firehose. En primer lugar, deberá crear una política de confianza en un archivo ~/TrustPolicyForCWL.json. Utilice un editor de texto para crear esta política. Para obtener más información acerca de los puntos de enlace de Registros de CloudWatch, consulte Cuotas y puntos de enlace de Registros de Amazon CloudWatch.

    Esta política incluye una clave de contexto de condición global aws:SourceArn que especifica la sourceAccountId para ayudar a prevenir el problema de seguridad de suplente confuso. Si aún no conoce el ID de cuenta de origen en la primera llamada, le recomendamos que coloque el ARN de destino en el campo ARN de origen. En las llamadas posteriores, debe configurar el ARN de origen para que sea el ARN de origen real que recopiló desde la primera llamada. Para obtener más información, consulte Prevención del suplente confuso.

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } }
  3. Utilice aws iam create-role para crear el rol de IAM y especifique el archivo de política de confianza que acaba de crear.

    aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json

    A continuación, se muestra un ejemplo de la salida. Anote el valor de Role.Arn devuelto, ya que lo necesitará en un paso posterior.

    { "Role": { "Path": "/", "RoleName": "CWLtoKinesisFirehoseRole", "RoleId": "AROAR3BXASEKYJYWF243H", "Arn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "CreateDate": "2023-02-02T08:10:43+00:00", "AssumeRolePolicyDocument": { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } } } }
  4. Cree una política de permisos para definir qué acciones puede llevar a cabo Registros de CloudWatch 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":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] }
  5. Asocie la política de permisos con el rol mediante el siguiente comando:

    aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
  6. Después de que el flujo de entrega de Firehose esté en estado activo y haya creado el rol de IAM, puede crear el filtro de suscripción de Registros de CloudWatch.

    1. Este paso no asociará una política de acceso a su destino y solo es el primer paso de los dos que completan la creación de un destino. Anote el ARN del nuevo destino que se devuelve en la carga, porque lo utilizará como destination.arn en un paso posterior.

      aws logs put-destination \ --destination-name "testFirehoseDestination" \ --target-arn "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream" \ --role-arn "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole" { "destination": { "destinationName": "testFirehoseDestination", "targetArn": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream", "roleArn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "arn": "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination"} }
    2. Después de completar el paso previo, en la cuenta del destinatario de los datos de registro (222222222222), asocie una política de acceso con el destino. Esta política permite que la cuenta del remitente de los datos de registro (111111111111) tenga acceso al destino justo en la cuenta del destinatario de los datos de registro (222222222222). Puede utilizar un editor de texto para incluir esta política en el archivo ~/AccessPolicy.json:

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : ["logs:PutSubscriptionFilter","logs:PutAccountPolicy"], "Resource" : "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination" } ] }
    3. Esto crea una política que define quién tiene acceso de escritura al destino. Esta política debe especificar las acciones logs:PutSubscriptionFilter y logs:PutAccountPolicy para acceder al destino. Los usuarios entre cuentas utilizarán las acciones PutSubscriptionFilter y PutAccountPolicy para enviar eventos de registro al destino.

      aws logs put-destination-policy \ --destination-name "testFirehoseDestination" \ --access-policy file://~/AccessPolicy.json