

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CloudWatch Logs 및 Amazon S3를 사용하여 모델 간접 호출 모니터링
<a name="model-invocation-logging"></a>

모델 호출 로깅을 사용하여 리전의 Amazon Bedrock에서 AWS 계정 사용되는의 모든 호출에 대한 호출 로그, 모델 입력 데이터 및 모델 출력 데이터를 수집할 수 있습니다.

호출 로깅을 사용하면 리전의 계정에서 수행된 지원되는 호출과 관련된 전체 요청 데이터, 응답 데이터 및 메타데이터를 수집할 수 있습니다. 로그 데이터가 게시될 대상 리소스를 제공하도록 로깅을 구성할 수 있습니다. 지원되는 대상에는 Amazon CloudWatch Logs 및 Amazon Simple Storage Service (S3)가 포함됩니다. 동일한 계정 및 리전의 대상만 지원됩니다.

모델 간접 호출 로깅은 기본적으로 비활성화되어 있습니다. 모델 간접 호출 로깅이 활성화되면 로깅 구성이 삭제될 때까지 로그가 저장됩니다.

다음 작업은 모델 간접 호출을 로깅할 수 있습니다.
+ [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html)
+ [ConverseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html)
+ [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)
+ [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html)

**참고**  
모델 호출 로깅은 `bedrock-runtime` 엔드포인트를 통한 호출에 대해서만 지원됩니다. 엔드포인트의 응답 API와 같은 다른 `bedrock-mantle` 엔드포인트를 통해 이루어진 호출은 현재 호출 로깅에 의해 캡처되지 않습니다.

[Converse API를 사용](conversation-inference-call.md)할 때, 전달한 이미지 또는 문서 데이터는 Amazon S3에 기록됩니다(Amazon S3에서 전송 및 이미지 로깅을 [활성화](#model-invocation-logging-console)한 경우).

간접 호출 로깅을 활성화하려면 우선 Amazon S3 또는 CloudWatch Logs 대상을 설정해야 합니다. 콘솔 또는 API를 통해 간접 호출 로깅을 활성화할 수 있습니다.

**Topics**
+ [Amazon S3 대상 설정](#setup-s3-destination)
+ [CloudWatch Logs 대상 설정](#setup-cloudwatch-logs-destination)
+ [콘솔을 사용한 모델 간접 호출 로깅](#model-invocation-logging-console)
+ [API를 사용한 모델 간접 호출 로깅](#using-apis-logging)
+ [로그 항목 형식](#model-invocation-log-format)

## Amazon S3 대상 설정
<a name="setup-s3-destination"></a>

**참고**  
Amazon S3를 로깅 대상으로 사용하는 경우 버킷은 모델 호출 로깅 구성을 AWS 리전 생성하는 버킷 AWS 계정 과 동일한 및에 있어야 합니다.

다음 단계에 따라 Amazon Bedrock에서 로깅하려는 S3 대상을 설정할 수 있습니다.

1. 로그가 전송될 S3 버킷을 생성합니다.

1. 아래와 같이 버킷 정책을 추가합니다({{accountId}}, {{region}}, {{bucketName}}, {{prefix}}(선택 사항)의 값을 바꿉니다).
**참고**  
`S3:GetBucketPolicy` 및 `S3:PutBucketPolicy` 권한으로 로깅을 구성하면 사용자를 대신하여 버킷 정책이 버킷에 자동으로 연결됩니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AmazonBedrockLogsWrite",
               "Effect": "Allow",
               "Principal": {
                   "Service": "bedrock.amazonaws.com"
               },
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::{{bucketName}}/{{prefix}}/AWSLogs/{{123456789012}}/BedrockModelInvocationLogs/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "{{123456789012}}"
                   },
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:*"
                   }
               }
           }
       ]
   }
   ```

------

1. (선택 사항) 버킷에서 SSE-KMS를 구성하는 경우 KMS 키에 다음 정책을 추가합니다.

   ```
   {
       "Effect": "Allow",
       "Principal": {
           "Service": "bedrock.amazonaws.com"
       },
       "Action": "kms:GenerateDataKey",
       "Resource": "*",
       "Condition": {
           "StringEquals": {
             "aws:SourceAccount": "{{accountId}}" 
           },
           "ArnLike": {
              "aws:SourceArn": "arn:aws:bedrock:{{region}}:{{accountId}}:*"
           }
       }
   }
   ```

S3 SSE-KMS 구성에 대한 자세한 내용은 [KMS 암호화 지정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)을 참조하세요.

**참고**  
버킷 정책을 적용하려면 버킷 ACL을 비활성화해야 합니다. 자세한 내용은 [모든 새 버킷에 대해 ACL 사용 중지 및 객체 소유권 시행](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ensure-object-ownership.html)을 참조하세요.

## CloudWatch Logs 대상 설정
<a name="setup-cloudwatch-logs-destination"></a>

다음 단계에 따라 Amazon Bedrock에서 로깅하려는 Amazon CloudWatch Logs 대상을 설정할 수 있습니다.

1. 로그가 게시될 CloudWatch 로그 그룹을 생성합니다.

1. CloudWatch Logs에 대해 다음과 같은 권한을 가진 IAM 역할을 생성합니다.

   **신뢰할 수 있는 엔터티**:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "bedrock.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "{{123456789012}}"
                   },
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:*"
                   }
               }
           }
       ]
   }
   ```

------

   **역할 정책**:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:{{logGroupName}}:log-stream:aws/bedrock/modelinvocations"
           }
       ]
   }
   ```

------

CloudWatch Logs에서 CloudWatch Logs용 SSE를 설정하는 방법에 대한 자세한 내용은 [CloudWatch Logs의 로그 데이터를 AWS Key Management Service으로 암호화하기](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)를 참조하세요.

## 콘솔을 사용한 모델 간접 호출 로깅
<a name="model-invocation-logging-console"></a>

**모델 호출 로깅을 활성화하려면**

Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **설정을** 선택합니다.

1. **모델 호출 로깅** 페이지에서 **모델 호출 로깅을** 선택합니다. 로깅에 대한 추가 구성 설정이 표시됩니다.

1. 로그에 게시하려는 데이터 요청 및 응답의 형식을 선택합니다. 다음 출력 옵션의 조합을 선택할 수 있습니다.
   + 텍스트
   + 이미지
   + 임베딩
   + 비디오
**참고**  
선택한 양식(입력 또는 출력)을 지원하는 *모든* 모델에 대해 데이터가 기록됩니다. 예를 들어 **이미지를** 선택하면 이미지 입력, 이미지 출력 또는 둘 다를 지원하는 모든 모델에 대해 모델 호출이 로깅됩니다.

1. 로그를 게시할 위치를 선택합니다.
   + Amazon S3에만 게시
   + CloudWatch Logs에만 게시
   + CloudWatch Logs 및 Amazon S3 양쪽 모두에 게시 

**로깅 대상**  
Amazon S3 및 CloudWatch Logs 대상은 간접 호출 로그와 소규모 입력 및 출력 데이터에 대해 지원됩니다. 대규모 입력 및 출력 데이터 또는 바이너리 이미지 출력의 경우, Amazon S3만 지원됩니다. 아래의 세부 정보에는 데이터가 대상 위치에 어떻게 표시되는지 요약되어 있습니다.
+ **S3 대상** - 각각 간접 호출 로그 레코드 배치를 포함하는 Gzip으로 압축된 JSON 파일이 지정된 S3 버킷으로 전송됩니다. CloudWatch Logs 이벤트와 마찬가지로, 각 레코드에는 간접 호출 메타데이터와 최대 100KB 크기의 입력 및 출력 JSON 본문이 포함됩니다. 100KB보다 큰 바이너리 데이터 또는 JSON 본문은 데이터 접두사 아래에 지정된 Amazon S3 버킷에 개별 객체로 업로드됩니다. Amazon S3 Select 및 Amazon Athena를 사용하여 데이터를 쿼리할 수 있으며, AWS Glue를 사용하여 ETL에 대해 카탈로그화할 수 있습니다. 데이터는 OpenSearch Service에 로드하거나, 모든 Amazon EventBridge 대상에서 처리할 수 있습니다.
+ **CloudWatch 로그 대상** - JSON 간접 호출 로그 이벤트는 CloudWatch Logs의 지정된 로그 그룹으로 전송됩니다. 로그 이벤트에는 간접 호출 메타데이터와 최대 100KB 크기의 입력 및 출력 JSON 본문이 포함됩니다. 대용량 데이터 전송을 위한 Amazon S3 위치가 제공된 경우, 100KB보다 큰 바이너리 데이터 또는 JSON 본문이 데이터 접두사 아래의 Amazon S3 버킷에 업로드됩니다. CloudWatch Logs Insights를 사용하여 데이터를 쿼리할 수 있으며, CloudWatch Logs를 사용하여 실시간으로 다양한 서비스로 데이터를 스트리밍할 수 있습니다.

## API를 사용한 모델 간접 호출 로깅
<a name="using-apis-logging"></a>

다음과 같은 API를 사용하여 모델 간접 호출 로깅을 구성할 수 있습니다.
+ [PutModelInvocationLoggingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutModelInvocationLoggingConfiguration.html)
+ [GetModelInvocationLoggingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetModelInvocationLoggingConfiguration.html)
+ [DeleteModelInvocationLoggingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_DeleteModelInvocationLoggingConfiguration.html)

## 로그 항목 형식
<a name="model-invocation-log-format"></a>

각 호출 로그 항목은 다음 구조의 JSON 객체입니다. 형식은 CloudWatch Logs와 Amazon S3 대상 모두에서 동일합니다.

```
{
    "schemaType": "ModelInvocationLog",
    "schemaVersion": "1.0",
    "timestamp": "2024-01-15T12:00:00Z",
    "accountId": "123456789012",
    "region": "us-east-1",
    "requestId": "abcd1234-5678-efgh-ijkl-mnopqrstuvwx",
    "operation": "Converse",
    "modelId": "anthropic.claude-sonnet-4-20250514-v1:0",
    "requestMetadata": {
        "team": "orchestrator",
        "environment": "production"
    },
    "input": {
        "inputContentType": "application/json",
        "inputBodyJson": { },
        "inputTokenCount": 25
    },
    "output": {
        "outputContentType": "application/json",
        "outputBodyJson": { },
        "outputTokenCount": 150
    }
}
```

다음 표에서는 로그 항목의 필드를 설명합니다.


****  

| 필드 | 설명 | 
| --- | --- | 
| schemaType | 로그 레코드의 유형입니다. 항상 ModelInvocationLog입니다. | 
| schemaVersion | 로그 스키마의 버전입니다. | 
| timestamp | ISO 8601 형식의 호출이 이루어진 시간입니다. | 
| accountId | 호출을 수행한 AWS 계정 ID입니다. | 
| region | 호출 AWS 리전 이 이루어진 입니다. | 
| requestId | 요청의 고유 식별자입니다. | 
| operation | 라는 API 작업입니다(예: , ConverseInvokeModel). | 
| modelId | 호출에 사용되는 모델 ID 또는 추론 프로파일 ID입니다. | 
| requestMetadata | 호출자가 제공하는 키-값 태그의 선택적 JSON 객체입니다. 호출자가 요청 메타데이터를 제공하는 경우에만 표시됩니다. 자세한 내용은 [요청별 메타데이터 태그 지정](cost-mgmt-request-metadata.md)을 참조하세요. | 
| input.inputBodyJson | 모델로 전송된 요청 본문(최대 100KB). 큰 본문은 Amazon S3에 별도의 객체로 저장됩니다. | 
| input.inputTokenCount | 요청의 입력 토큰 수입니다. | 
| output.outputBodyJson | 모델의 응답 본문(최대 100KB). 큰 본문은 Amazon S3에 별도의 객체로 저장됩니다. | 
| output.outputTokenCount | 응답의 출력 토큰 수입니다. | 

**참고**  
이진 데이터(예: 이미지)와 100KB보다 큰 JSON 본문은 로그 항목에 인라인으로 포함되지 않습니다. 대신 데이터 접두사 아래의 Amazon S3 버킷에 별도의 객체로 저장되며 로그 항목에는 Amazon S3 위치에 대한 참조가 포함됩니다.