Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Como posso enviar o CloudWatch Logs entre contas para o Amazon Data Firehose?
Quero transmitir o Amazon CloudWatch Logs do Amazon Data Firehose para outra conta da AWS em uma região da AWS diferente.
Resolução
Para enviar o CloudWatch Logs para um stream do Firehose em uma região diferente, a região deve oferecer suporte ao Firehose.
Nos comandos de resolução, substitua os seguintes valores pelos seus próprios valores:
- 111111111111 pela sua ID da conta de destino
- us-east-1 por sua região Firehose
- us-west-2 pela sua região de bucket do Amazon Simple Storage Service (Amazon S3)
- us-east-2 pela região da sua conta de destino
- 222222222222 pela ID da sua conta de origem
- us-east2 pela sua região do grupo de logs do CloudWatch
- us-east-2 pela sua região de logs de fluxo da Amazon Virtual Private Cloud (Amazon VPC)
- \ -arn pelos ARNs dos recursos
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Configurar a conta de destino
Conclua as etapas a seguir:
-
Crie um bucket do Amazon S3:
aws s3api create-bucket --bucket my-bucket --create-bucket-configuration LocationConstraint=us-west-2 --region us-west-2
Observação: Anote o ARN do bucket da saída para usar em uma etapa posterior.
-
Crie uma política de confiança que tenha as permissões necessárias para que o Firehose envie dados para o Amazon S3:
{ "Statement": { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "111111111111" } } } }
-
Execute o comando create-role para criar o perfil do IAM e especifique a política de confiança:
aws iam create-role \ --role-name FirehosetoS3Role \ --assume-role-policy-document file://~/TrustPolicyForFirehose.json
Observação: Anote o ARN do perfil da saída para usar em uma etapa posterior.
-
Para definir as ações que o Firehose pode realizar na conta de destino, use o editor JSON para criar uma política de permissões:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ] } ] }
-
Execute o comando put-role-policy para associar a política de permissões com o perfil do IAM:
aws iam put-role-policy --role-name FirehosetoS3Role --policy-name Permissions-Policy-For-Firehose --policy-document file://~/PermissionsForFirehose.json
-
Crie um stream de entrega de destino para o Firehose:
aws firehose create-delivery-stream --delivery-stream-name my-delivery-stream --s3-destination-configuration RoleARN='arn:aws:iam::111111111111:role/FirehosetoS3Role',BucketARN='arn:aws:s3:::my-bucket' --region us-east-1
Observação: Substitua RoleARN e BucketARN pelos seus ARNs de perfil e bucket.
Quando você entrega um objeto do S3 ao Firehose, um prefixo personalizado é usado na expressão de namespace de carimbo de data/hora. Você pode especificar um prefixo extra no início do formato de hora (aaaa/MM/dd/HH/). Se o prefixo terminar com uma barra (/), ele aparecerá como uma pasta no bucket do S3. -
Para verificar a propriedade DeliveryStreamDescription.DeliveryStreamStatus, execute o comando describe-delivery-stream:
aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream" --region us-east-1
Para confirmar se o stream está ativo, verifique a saída do comando:
{ "DeliveryStreamDescription": { "DeliveryStreamType": "DirectPut", "HasMoreDestinations": false, "DeliveryStreamEncryptionConfiguration": { "Status": "DISABLED" }, "VersionId": "1", "CreateTimestamp": 1604484348.804, "DeliveryStreamARN": "arn:aws:firehose:us-east-1:111111111111:deliverystream/my-delivery-stream", "DeliveryStreamStatus": "ACTIVE", "DeliveryStreamName": "my-delivery-stream", "Destinations": [ { "DestinationId": "destinationId-000000000001", "ExtendedS3DestinationDescription": { "RoleARN": "arn:aws:iam::111111111111:role/FirehosetoS3Role2test", "BufferingHints": { "IntervalInSeconds": 300, "SizeInMBs": 5 }, "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CompressionFormat": "UNCOMPRESSED", "S3BackupMode": "Disabled", "CloudWatchLoggingOptions": { "Enabled": false }, "BucketARN": "arn:aws:s3:::my-bucket" }, "S3DestinationDescription": { "RoleARN": "arn:aws:iam::111111111111:role/FirehosetoS3Role2test", "BufferingHints": { "IntervalInSeconds": 300, "SizeInMBs": 5 }, "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CompressionFormat": "UNCOMPRESSED", "CloudWatchLoggingOptions": { "Enabled": false }, "BucketARN": "arn:aws:s3:::my-bucket" } } ] } }
Observação: Anote o ARN do stream para usar em uma etapa posterior.
-
Crie uma política de confiança adicional para conceder ao CloudWatch Logs a permissão para colocar dados no stream do Firehose. Adicione as regiões em que os logs são enviados:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.us-east-2.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-2:sourceAccountId:*", "arn:aws:logs:us-east-2:recipientAccountId:*" ] } } } }
-
Para criar um perfil do IAM adicional para colocar dados no stream do Firehose e especificar o arquivo de política de confiança, execute o comando create-role:
aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json
Observação: Anote o ARN do perfil para usar em uma etapa posterior.
-
Crie uma política de permissões para definir as ações que o CloudWatch Logs pode realizar na conta de destino. Inclua o ARN do stream e o ARN do perfil:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:ListDeliveryStreams", "Resource": "*" }, { "Effect": "Allow", "Action": [ "firehose:DescribeDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:us-east-1:111111111111:deliverystream/my-delivery-stream" } ] }
- Para associar a política de permissões com o perfil, execute o comando put-role-policy:
aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
- Para criar um destino na conta de destino para a conta de origem enviar logs, execute o comando put-destination:
aws logs put-destination --destination-name "myDestination" --target-arn "arn:aws:firehose:us-east-1:111111111111:deliverystream/my-delivery-stream" --role-arn "arn:aws:iam::111111111111:role/CWLtoKinesisFirehoseRole" --region us-east-2
Observação: Você pode criar um destino para o stream de entrega em qualquer região em que o Firehose seja compatível. A região em que você cria o destino deve ser a mesma região de origem do log. Crie uma política de acesso para o destino do CloudWatch:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "222222222222" }, "Action": "logs:PutSubscriptionFilter", "Resource": "arn:aws:logs:us-east-2:111111111111:destination:myDestination" } ] }
- Associe a política de acesso ao destino do CloudWatch:
aws logs put-destination-policy --destination-name "myDestination" --access-policy file://~/AccessPolicy.json --region us-east-2
- Para verificar o destino, execute o comando describe-destinations:
aws logs describe-destinations --region us-east-2
Configurando a conta de origem
Observação: Para configurar a conta de origem, você deve ser o usuário administrador do IAM ou usuário-raiz da conta.
Conclua as etapas a seguir:
-
Crie uma política de confiança para conceder aos logs de fluxo da Amazon VPC a permissão de enviar dados ao grupo de logs do CloudWatch:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Execute o comando create-role e especifique a política de confiança:
aws iam create-role \ --role-name PublishFlowLogs \ --assume-role-policy-document file://~/TrustPolicyForVPCFlowLogs.json
Observação: Anote o ARN do perfil da saída para usar em uma etapa posterior.
-
Para definir as ações que os logs de fluxo da VPC podem executar na conta de origem, crie uma política de permissões:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Effect": "Allow", "Resource": "*" } ] }
-
Para associar a política de permissões com o perfil do IAM, execute o comando put-role-policy:
aws iam put-role-policy --role-name PublishFlowLogs --policy-name Permissions-Policy-For-VPCFlowLogs --policy-document file://~/PermissionsForVPCFlowLogs.json
-
Para configurar o destino dos logs de fluxo, execute o comando create-log-group para criar um grupo de logs do CloudWatch:
aws logs create-log-group --log-group-name vpc-flow-logs --region us-east-2
-
Para ativar os logs de fluxo da VPC, execute o comando create-flow-logs:
aws ec2 create-flow-logs --resource-type VPC --resource-ids vpc-12345678 --traffic-type ALL --log-group-name vpc-flow-logs --deliver-logs-permission-arn arn:aws:iam::222222222222:role/PublishFlowLogs --region us-east-2
-
Para inscrever o grupo de logs do CloudWatch no Firehose na conta de destino, execute o comando put-subscription-filter:
aws logs put-subscription-filter --log-group-name "vpc-flow-logs" --filter-name "AllTraffic" --filter-pattern "" --destination-arn "arn:aws:logs:us-east-2:111111111111:destination:myDestination" --region us-east-2
Para confirmar se os logs foram publicados, revise o bucket do S3 para ver se há novos logs.
Informações relacionadas

Conteúdo relevante
- Resposta aceitafeita há 3 meseslg...
- feita há 2 meseslg...
- feita há 2 meseslg...
- feita há 3 meseslg...