View a markdown version of this page

Cross-account exemple de livraison - CloudWatch Journaux Amazon

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.

Cross-account exemple de livraison

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

Le compte A souhaite transmettre les journaux de la base de Amazon Bedrock connaissances sur son compte avec l'ARN arn:aws:bedrock : ::knowledge-base/. us-east-1 123456789012 kb-12345678

Dans 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éer une source de diffusion

Pour commencer, le compte A crée une source de diffusion avec 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 à l'aide de l'un des flux ci-dessous :

Configurer la livraison vers un compartiment Amazon S3

Le compte B souhaite recevoir les journaux 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é 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:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "aws:SourceAccount": [ "123456789012" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012: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 la destination de livraison nouvellement créée, 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 joindre 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 relie la source de livraison du compte A à la destination de livraison du 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 journaux dans son flux Firehose. Le flux Firehose possède l'ARN suivant et est configuré pour utiliser le type de flux DirectPut de 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:*" } ] }

La balise du flux Firehose doit être LogDeliveryEnabled définie sur. true

Le compte B créera ensuite une destination de livraison avec le flux 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 la destination de livraison nouvellement créée, 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 joindre 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 relie la source de livraison du compte A à la destination de livraison du 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