기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
교차 계정 전송 예제
이 예제와 관련되는 계정은 두 개입니다. 로그 생성 리소스가 있는 계정은 계정 A, ID: 123456789012
이고 로그 소비 리소스가 있는 계정은 계정 B, ID: 111122223333
입니다.
계정 A는 ARN arn:aws:bedrock:us-east-1
:123456789012
: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 스트림의 true
태그가 LogDeliveryEnabled
로 설정되어 있어야 합니다.
그런 다음 계정 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