As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Etapa 2: Criar um destino
Importante
As etapas deste procedimento devem ser processadas na conta destinatária dos dados do log.
Quando o destino é criado, o CloudWatch Logs envia uma mensagem de teste para o destino em nome da conta do destinatário. Quando o filtro de assinatura estiver ativo posteriormente, o CloudWatch Logs envia eventos de log para o destino em nome da conta de origem.
Para criar um destino
-
Aguarde até o fluxo do Firehose que você criou em Etapa 1: criar um fluxo de entrega do Firehose ficar ativo. Você pode usar o comando a seguir para verificar a propriedade StreamDescription.StreamStatus.
aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream"
Além disso, anote o valor de DeliveryStreamDescription.DeliveryStreamARN, pois será necessário utilizá-lo em uma etapa posterior. Exemplo de saída desse 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 } }
Pode levar um ou dois minutos para seu fluxo de entrega ser exibido com estado ativo.
-
Quando o fluxo de entrega estiver ativo, crie o perfil do IAM que concederá ao CloudWatch Logs permissão para colocar os dados em seu fluxo do Firehose. Primeiro, você precisará criar uma política de confiança em um arquivo ~/TrustPolicyForCWL.json. Use um editor de texto para criar esta política. Para obter mais informações sobre os endpoints do CloudWatch Logs, consulte Endpoints e cotas do Amazon CloudWatch Logs.
Esta política inclui uma chave de contexto de condição global
aws:SourceArn
que especifica osourceAccountId
para evitar o problema de segurança confused deputy. Se você ainda não souber o ID da conta de origem na primeira chamada, recomendamos que você coloque o ARN de destino no campo ARN de origem. Nas chamadas subsequentes, você deve definir o ARN de origem como o ARN de origem real que você coletou da primeira chamada. Para ter mais informações, consulte Prevenção de ‘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
:*" ] } } } } -
Use o comando aws iam create-role para criar a função do IAM, especificando o arquivo de política de confiança que você acabou de criar.
aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json
Este é um exemplo de saída. Anote o valor
Role.Arn
retornado, pois será necessário utilizá-lo em uma etapa 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
:*" ] } } } } } } -
Crie uma política de permissões para definir quais ações o CloudWatch Logs poderá executar em sua conta. Primeiro, use um editor de texto para criar uma política de permissões em um arquivo ~/PermissionsForCWL.json:
{ "Statement":[ { "Effect":"Allow", "Action":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] }
-
Associe a política de permissões com a função inserindo o seguinte comando:
aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
-
Quando o fluxo de entrega do Firehose estiver no estado ativo e você tiver criado o perfil do IAM, será possível criar o destino do CloudWatch Logs.
-
Esta etapa não associará uma política de acesso ao seu destino e só é a primeira etapa das duas concluirá uma criação de destino. Anote o ARN do novo destino que for retornado na carga útil, pois você usará isso como
destination.arn
em uma etapa 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"} }
-
Depois que a etapa anterior for concluída, na conta destinatária dos dados de log (222222222222), associe uma política de acesso ao destino. Essa política permite que a conta remetente dos dados de log (111111111111 conta) acesse o destino apenas na conta destinatária dos dados de log (222222222222). Você pode usar um editor de texto para colocar essa política no arquivo
~/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" } ] }
-
Isso cria uma política que define quem tem acesso de gravação ao destino. Essa política deve especificar as ações
logs:PutSubscriptionFilter
elogs:PutAccountPolicy
para acessar o destino. Os usuários em contas diferentes usarão as açõesPutSubscriptionFilter
ePutAccountPolicy
para enviar eventos de log ao destino.aws logs put-destination-policy \ --destination-name "testFirehoseDestination" \ --access-policy file://~/AccessPolicy.json
-