Exemple de livraison entre comptes - Amazon CloudWatch Logs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemple de livraison entre comptes

Dans cet exemple, deux comptes sont concernés. Le compte contenant la ressource génératrice de journaux est le compte A, ID :123456789012, et le compte contenant la ressource consommant le journal est le compte B, ID :. 111122223333

Le compte A souhaite fournir des logs provenant de la base de Amazon Bedrock connaissances de son compte avec l'ARN arn:aws:bedrock : :knowledge base/. us-east-1 123456789012 kb-12345678

Pour cet exemple, le compte A a besoin des autorisations suivantes :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowVendedLogDeliveryForKnowledgeBase", "Effect": "Allow", "Action": [ "bedrock:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/XXXXXXXXXX" }, { "Sid": "CreateLogDeliveryPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliverySource", "logs:CreateDelivery" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:delivery-source:*", "arn:aws:logs:us-east-1:123456789012:delivery:*", "arn:aws:logs:us-east-1:444455556666:delivery-destination:*" ] } ] }

Création d'une source de livraison

Pour commencer, le compte A crée une source de diffusion à partir de sa base de connaissances de base :

aws logs put-delivery-source --name my-delivery-source --log-type APPLICATION_LOGS --resource-arn arn:aws:bedrock:region:AAAAAAAAAAAA:knowledge-base/XXXXXXXXXX

Ensuite, le compte B doit créer la destination de livraison en utilisant l'un des flux ci-dessous :

Configuration de la livraison vers un compartiment Amazon S3

Le compte B souhaite recevoir les logs dans son compartiment S3 avec l'ARN arn:aws:s3 : ::amzn-s3-demo-bucket. Dans cet exemple, le compte B aura besoin des autorisations suivantes :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutLogDestinationPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:us-east-1:111122223333:delivery-destination:*" } ] }

Le bucket aura besoin des autorisations suivantes dans sa politique de bucket :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogsDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/123456789012/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:delivery-source:my-delivery-source" ] } } } ] }

Si le compartiment est chiffré avec SSE-KMS, assurez-vous que la politique de AWS KMS clés dispose des autorisations appropriées. Par exemple, si la clé KMS estarn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab, utilisez ce qui suit :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogsGenerateDataKey", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:BBBBBBBBBBBB:key/X", "Condition": { "StringEquals": { "aws:SourceAccount": [ "AAAAAAAAAAAA" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:AAAAAAAAAAAA:delivery-source:my-delivery-source" ] } } } ] }

Le compte B peut ensuite créer une destination de livraison avec le compartiment S3 comme ressource de destination :

aws logs put-delivery-destination --name my-s3-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket"

Ensuite, le compte B crée une politique de destination de livraison pour sa nouvelle destination de livraison, qui autorisera le compte A à créer un journal de livraison. La politique qui sera ajoutée à la destination de livraison nouvellement créée est la suivante :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "123456789012" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:us-east-1:111122223333:delivery-destination:amzn-s3-demo-bucket" } ] }

Cette politique sera enregistrée sur l'ordinateur du compte B car destination-policy-s3.json pour associer cette ressource, le compte B exécutera la commande suivante :

aws logs put-delivery-destination-policy --delivery-destination-name my-s3-delivery-destination --delivery-destination-policy file://destination-policy-s3.json

Enfin, le compte A crée la livraison, qui lie la source de livraison dans le compte A à la destination de livraison dans le compte B.

aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-s3-delivery-destination

Configurer la diffusion vers un flux Firehose

Dans cet exemple, le compte B souhaite recevoir des logs dans son stream Firehose. Le flux Firehose possède l'ARN suivant et est configuré pour utiliser le type de flux de DirectPut diffusion :

arn:aws:firehose:us-east-1:111122223333:deliverystream/log-delivery-stream

Pour cet exemple, le compte B a besoin des autorisations suivantes :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFirehoseCreateSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::111122223333:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery" }, { "Sid": "AllowFirehoseTagging", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": "arn:aws:firehose:us-east-1:111122223333:deliverystream/X" }, { "Sid": "AllowFirehoseDeliveryDestination", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:us-east-1:111122223333:delivery-destination:*" } ] }

Le stream Firehose doit avoir la balise LogDeliveryEnabled définie sur. true

Le compte B créera ensuite une destination de livraison avec le stream Firehose comme ressource de destination :

aws logs put-delivery-destination --name my-fh-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:firehose:region:BBBBBBBBBBBB:deliverystream/X"

Ensuite, le compte B crée une politique de destination de livraison pour sa nouvelle destination de livraison, qui autorisera le compte A à créer un journal de livraison. La politique à ajouter à la destination de livraison nouvellement créée est la suivante :

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "123456789012" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:us-east-1:111122223333:delivery-destination:amzn-s3-demo-bucket" } ] }

Cette politique sera enregistrée sur l'ordinateur du compte B car destination-policy-fh.json pour associer cette ressource, le compte B exécute la commande suivante :

aws logs put-delivery-destination-policy --delivery-destination-name my-fh-delivery-destination --delivery-destination-policy file://destination-policy-fh.json

Enfin, le compte A crée la livraison, qui lie la source de livraison dans le compte A à la destination de livraison dans le compte B.

aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-fh-delivery-destination