アカウント間の配信の例 - Amazon CloudWatch Logs

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アカウント間の配信の例

この例では、2 つのアカウントが関係しています。ログ生成リソースを持つアカウントはアカウント A、ID: 123456789012、ログ消費リソースを持つアカウントはアカウント B、ID: 111122223333 です。

アカウント A は、ARN arn:aws:bedrock:us-east-1123456789012:knowledge-base/kb-12345678 を使用して、アカウントの Amazon Bedrock ナレッジベースからログを配信したいと考えています。

この例では、アカウント A には次のアクセス許可が必要です。

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:*" ] } ] }

配信ソースを作成する

まず、アカウント A は、Bedrock ナレッジベースを使用して配信ソースを作成します。

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

次に、アカウント B は、次のいずれかのフローを使用して配信先を作成する必要があります。

Amazon S3 バケットへの配信を設定する

アカウント B は ARN arn:aws:s3:::amzn-s3-demo-bucket を使用して S3 バケットでログを受信したいと考えています。この例の場合、アカウント B には次のアクセス許可が必要です。

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:*" } ] }

バケットポリシーには、次のアクセス許可が必要です。

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" ] } } } ] }

バケットが SSE-KMS で暗号化されている場合は、 AWS KMS キーポリシーに適切なアクセス許可があることを確認してください。例えば、KMS キーが arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab の場合、以下を使用します。

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" ] } } } ] }

アカウント B は、S3 バケットを宛先リソースとして配信先を作成できます。

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

次に、アカウント B は新しく作成された配信先に配信先ポリシーを作成し、アカウント A がログ配信を作成するアクセス許可を付与します。新しく作成された配信先に追加されるポリシーは次のとおりです。

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" } ] }

このポリシーは、アカウント B のコンピュータに destination-policy-s3.json として保存されます。このリソースをアタッチするために、アカウント B は次のコマンドを実行します。

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

最後に、アカウント A は配信を作成し、アカウント A の配信ソースをアカウント 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

Firehose ストリームへの配信を設定する

この例では、アカウント B は Firehose ストリームでログを受信したいと考えています。Firehose ストリームには次の ARN があり、DirectPut 配信ストリームタイプを使用するように設定されています。

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

この例では、アカウント B には次のアクセス許可が必要です。

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:*" } ] }

Firehose ストリームのタグ LogDeliveryEnabledtrue に設定する必要があります。

その後、アカウント B は、Firehose ストリームを宛先リソースとして配信先を作成します。

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

次に、アカウント B は新しく作成された配信先に配信先ポリシーを作成し、アカウント A がログ配信を作成するアクセス許可を付与します。新しく作成された配信先に追加されるポリシーは次のとおりです。

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" } ] }

このポリシーは、アカウント B のコンピュータに destination-policy-fh.json として保存されます。このリソースをアタッチするために、アカウント B は次のコマンドを実行します。

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

最後に、アカウント A は配信を作成し、アカウント A の配信ソースをアカウント 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