Paso 1: crear 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 1: crear un destino

importante

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

En este ejemplo, la cuenta receptora de los datos de registro tiene un identificador de AWS cuenta de 10000 9999, mientras que el identificador de la AWS cuenta del remitente de los datos de registro es 1111.

En este ejemplo, se crea un destino mediante una transmisión de Kinesis Data Streams RecipientStream llamada y una función que CloudWatch permite a Logs escribir datos en ella.

Cuando se crea el destino, CloudWatch Logs envía un mensaje de prueba al destino en nombre de la cuenta del destinatario. Cuando el filtro de suscripciones se active más adelante, CloudWatch Logs envía los eventos de registro al destino en nombre de la cuenta de origen.

Para crear un destino
  1. En la cuenta de destinatario, cree un flujo de destino en Kinesis Data Streams. En el símbolo del sistema, escriba:

    aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
  2. Espere hasta que el flujo de se active. Puede utilizar el comando aws kinesis describe-stream para comprobar el. StreamDescription StreamStatuspropiedad. Además, tome nota del valor StreamDescription.streamArn porque lo pasará a CloudWatch Logs más adelante:

    aws kinesis describe-stream --stream-name "RecipientStream" { "StreamDescription": { "StreamStatus": "ACTIVE", "StreamName": "RecipientStream", "StreamARN": "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream", "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "EndingHashKey": "34028236692093846346337460743176EXAMPLE", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "4955113521868881845667950383198145878459135270218EXAMPLE" } } ] } }

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

  3. Crea el rol de IAM que otorga a CloudWatch Logs el permiso para colocar datos en tu transmisión. En primer lugar, tendrás que crear una política de confianza en un archivo ~/ TrustPolicyFor CWL.json. Utilice un editor de texto para crear este archivo de política; no utilice la consola de IAM.

    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" }, "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } }, "Action": "sts:AssumeRole" } }
  4. Ejecute el comando aws iam create-role para crear el rol de IAM y especifique el archivo de política de confianza. Toma nota del valor Role.Arn devuelto porque también se pasará a Logs más adelante: CloudWatch

    aws iam create-role \ --role-name CWLtoKinesisRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } }, "Principal": { "Service": "logs.amazonaws.com" } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisRole", "Path": "/", "Arn": "arn:aws:iam::999999999999:role/CWLtoKinesisRole" } }
  5. Crea una política de permisos para definir qué acciones puede realizar CloudWatch Logs en tu cuenta. Primero, usa un editor de texto para crear una política de permisos en un archivo ~/ PermissionsFor CWL.json:

    { "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream" } ] }
  6. Asocie la política de permisos al rol mediante el comando aws iam: put-role-policy

    aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
  7. Una vez que la transmisión esté en estado activo y haya creado el rol de IAM, puede crear el destino de los CloudWatch registros.

    1. Este paso no asocia 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 valor de DestinationArn que se devuelve en la carga:

      aws logs put-destination \ --destination-name "testDestination" \ --target-arn "arn:aws:kinesis:region:999999999999:stream/RecipientStream" \ --role-arn "arn:aws:iam::999999999999:role/CWLtoKinesisRole" { "DestinationName" : "testDestination", "RoleArn" : "arn:aws:iam::999999999999:role/CWLtoKinesisRole", "DestinationArn" : "arn:aws:logs:us-east-1:999999999999:destination:testDestination", "TargetArn" : "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream" }
    2. Una vez que se haya completado el paso 7a, en la cuenta del destinatario de los datos de registro, asocie una política de acceso con el destino. Esta política debe especificar los registros: la PutSubscriptionFilter acción y otorga permiso a la cuenta del remitente para acceder al destino.

      La política concede permiso a la AWS cuenta que envía los registros. Puede especificar solo esta cuenta en la política o, si la cuenta de remitente es miembro de una organización, la política puede especificar el ID de organización de la organización. De esta forma, puede crear una sola política para permitir que varias cuentas de una organización envíen registros a esta cuenta de destino.

      Utilice un editor de texto para crear un archivo denominado ~/AccessPolicy.json con una de las siguientes declaraciones de política.

      Este primer ejemplo de política permite a todas las cuentas de la organización que tienen un ID de o-1234567890 enviar registros a la cuenta de destinatario.

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : "*", "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:region:999999999999:destination:testDestination", "Condition": { "StringEquals" : { "aws:PrincipalOrgID" : ["o-1234567890"] } } } ] }

      En el siguiente ejemplo, solo se permite que la cuenta del remitente de los datos de registro (111111111111) envíe los registros a la cuenta del destinatario de los datos de registro.

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:region:999999999999:destination:testDestination" } ] }
    3. Adjunte la política que creó en el paso anterior al destino.

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

      Esta política de acceso permite a los usuarios de la AWS cuenta con el ID 1111 llamar al destino con el ARN PutSubscriptionFilterarn:aws:logs: region:55559999:destination:testDestination. Se PutSubscriptionFilter rechazará cualquier intento de otro usuario de llamar a este destino.

      Para validar los privilegios de un usuario con una política de acceso, consulte Uso del validador de políticas en la Guía del usuario de IAM.

Cuando hayas terminado, si los estás utilizando AWS Organizations para tus permisos multicuenta, sigue los pasos que se indican. Paso 2: (solo si se utiliza una organización) crear un rol de IAM Si está concediendo permisos directamente a la otra cuenta en lugar de utilizar Organizations, puede omitir ese paso y continuar con Paso 4: crear un filtro de suscripción.