

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 CloudWatch Logs 和 Amazon S3 監控模型調用
<a name="model-invocation-logging"></a>

您可以使用模型調用記錄來收集調用日誌、模型輸入資料，以及 區域中在 Amazon Bedrock AWS 帳戶 中使用的所有調用模型輸出資料。

透過調用記錄，您可以收集與在 區域中您的帳戶中執行之支援呼叫相關聯的完整請求資料、回應資料和中繼資料。您可以設定記錄功能，以提供將發佈日誌資料的目的地資源。支援的目的地包括 Amazon CloudWatch Logs 和 Amazon Simple Storage Service (Amazon 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`端點進行的呼叫。呼叫記錄目前不會擷取透過其他端點發出的呼叫，例如`bedrock-mantle`端點上的回應 API。

[使用 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 帳戶 和 。

您可以透過下列步驟設定 S3 目的地，以便在 Amazon Bedrock 中登入：

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 CloudWatch Logs 目的地，以便在 Amazon Bedrock 中進行記錄：

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 的 SSE 的詳細資訊，請參閱[使用 AWS Key Management Service加密 CloudWatch Logs 中的日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)。

## 使用主控台的模型調用記錄
<a name="model-invocation-logging-console"></a>

**啟用模型調用記錄**

 AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 從左側導覽窗格中，選取**設定**。

1. 在**模型調用記錄**頁面中，選取**模型調用記錄**。記錄的其他組態設定將會出現。

1. 選取您要發佈至日誌的資料請求和回應模式。您可以選取下列輸出選項的任意組合：
   + 文字
   + 影像
   + 內嵌項目
   + 影片
**注意**  
系統會針對支援您選擇的模態 （無論做為輸入或輸出） *的所有*模型記錄資料。例如，如果您選取**影像**，則會記錄支援影像輸入、影像輸出或兩者的所有模型的模型調用。

1. 選取要發佈日誌的位置：
   + 僅限 Amazon S3
   + 僅限 CloudWatch Logs
   + Amazon S3 和 CloudWatch Logs 

**記錄目的地**  
Amazon S3 和 CloudWatch Logs 目的地支援調用日誌，以及小型輸入和輸出資料。對於大型輸入和輸出資料或二進位映像輸出，僅支援 Amazon S3。下列詳細資訊摘要如何在目標位置中呈現資料。
+ **S3 目的地** — 壓縮的 JSON 檔案 (每個檔案都包含一批調用日誌記錄) 會傳送到指定的 S3 儲存貯體。與 CloudWatch Logs 事件類似，每筆記錄都包含調用中繼資料，以及大小不超過 100 KB 的輸入和輸出 JSON 主體。大於 100 KB 的二進位資料或 JSON 主體，會以個別物件形式上傳到指定的 Amazon S3 儲存貯體的資料字首下。可以使用 Amazon S3 Select 和 Amazon Athena 查詢資料，並且可以使用 AWS Glue為 ETL 編目。這些資料可以載入到 OpenSearch 服務，也可以由任何 Amazon EventBridge 目標處理。
+ **CloudWatch Logs 目的地** — JSON 調用日誌事件會傳送至 CloudWatch Logs 中的指定日誌群組。日誌事件包含調用中繼資料，以及大小不超過 100 KB 的輸入和輸出 JSON 主體。如果提供用於大型資料交付的 Amazon S3 位置，則大於 100 KB 的二進位資料或 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 操作 （例如，Converse、InvokeModel)。 | 
| modelId | 用於調用的模型 ID 或推論設定檔 ID。 | 
| requestMetadata | 發起人提供的鍵值標籤的選用 JSON 物件。只有在發起人提供請求中繼資料時才會顯示。如需詳細資訊，請參閱[每個請求中繼資料標記](cost-mgmt-request-metadata.md)。 | 
| input.inputBodyJson | 傳送至模型的請求內文 （最多 100 KB)。較大的內文會以個別物件的形式存放在 Amazon S3 中。 | 
| input.inputTokenCount | 請求中的輸入字符數量。 | 
| output.outputBodyJson | 模型的回應內文 （最多 100 KB)。較大的內文會以個別物件的形式存放在 Amazon S3 中。 | 
| output.outputTokenCount | 回應中的輸出字符數量。 | 

**注意**  
日誌項目中不會內嵌二進位資料 （例如影像） 和大於 100 KB 的 JSON 內文。相反地，它們會以個別物件的形式存放在 Amazon S3 儲存貯體的資料字首下，而日誌項目包含 Amazon S3 位置的參考。