Fase 2: creazione di una destinazione - CloudWatch Registri Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fase 2: creazione di una destinazione

Importante

Tutte le fasi di questa procedura devono essere eseguite nell'account del destinatario dei dati di log.

Quando viene creata la destinazione, CloudWatch Logs invia un messaggio di prova alla destinazione per conto dell'account del destinatario. Quando il filtro di sottoscrizione è attivo in un secondo momento, CloudWatch Logs invia gli eventi di registro alla destinazione per conto dell'account di origine.

Creazione di una destinazione
  1. Attendi che lo stream Firehose in cui hai creato Fase 1: Creare un flusso di distribuzione Firehose diventi attivo. È possibile utilizzare il seguente comando per controllare ilStreamDescription. StreamStatusproprietà.

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

    Inoltre, prendi nota del DeliveryStreamDescription. DeliveryStreamARNvalore, perché sarà necessario utilizzarlo in un passaggio successivo. Esempio di output di questo 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 } }

    Potrebbero essere necessari uno o due minuti che il flusso di consegna venga visualizzato nello stato attivo.

  2. Quando il flusso di distribuzione è attivo, crea il IAM ruolo che concederà a CloudWatch Logs l'autorizzazione a inserire dati nel tuo stream Firehose. Per prima cosa, devi creare una politica di fiducia in un file TrustPolicyForCWL~/ .json. Utilizza un editor di testo per creare questa policy. Per ulteriori informazioni sugli endpoint di Amazon CloudWatch Logs, consulta Endpoints e quote di Amazon CloudWatch Logs.

    Questa policy include una chiave di contesto della condizione globale aws:SourceArn che specifica il sourceAccountId per prevenire il problema di sicurezza noto come "confused deputy". Se non conosci ancora l'ID dell'account di origine nella prima chiamata, ti consigliamo di inserire la destinazione ARN nel campo di origine. ARN Nelle chiamate successive, è necessario impostare la sorgente ARN in modo ARN che sia la fonte effettiva raccolta dalla prima chiamata. Per ulteriori informazioni, consulta Prevenzione del "confused deputy".

    { "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. Usa il comando aws iam create-role per creare il IAM ruolo, specificando il file di policy di fiducia che hai appena creato.

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

    Di seguito è riportato un output di esempio. Prendi nota del valore Role.Arn restituito, perché dovrai usarlo in una fase successiva.

    { "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. Crea una politica di autorizzazioni per definire quali azioni CloudWatch i log possono eseguire sul tuo account. Innanzitutto, usa un editor di testo per creare una politica di autorizzazioni in un file ~/ .json: PermissionsFor CWL

    { "Statement":[ { "Effect":"Allow", "Action":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] }
  5. Associa la policy di autorizzazioni al ruolo inserendo il comando seguente:

    aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
  6. Dopo che il flusso di distribuzione di Firehose è nello stato attivo e hai creato il IAM ruolo, puoi creare la destinazione CloudWatch Logs.

    1. In questa fase alla tua destinazione non verrà associata una policy d'accesso predefinita e costituisce solo la prima delle due fasi necessarie per completare la creazione della destinazione. Prendi nota ARN della nuova destinazione che viene restituita nel payload, perché la utilizzerai come destination.arn nella fase successiva.

      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. Dopo aver completato la fase precedente, nell'account del destinatario dei dati di log (222222222222) associa alla destinazione una policy d'accesso. Questa policy consente all'account mittente dei dati di log (111111111111) di accedere alla destinazione all'interno dell'account destinatario dei dati di log (222222222222). Puoi usare un editor di testo per inserire questa politica nel ~/AccessPolicy.json file:

      { "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. In questo modo viene creata una policy che definisce chi ha accesso in scrittura alla destinazione. Questa politica deve specificare le logs:PutAccountPolicy azioni logs:PutSubscriptionFilter e per accedere alla destinazione. Gli utenti con più account utilizzeranno PutAccountPolicy le azioni PutSubscriptionFilter e per inviare gli eventi di registro alla destinazione.

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