

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 常见问题
<a name="cost-mgmt-faq"></a>

本节回答了有关选择和组合 Amazon Bedrock 成本归因机制的常见问题。

## 选择一种方法
<a name="cost-mgmt-faq-choosing"></a>

**问：我想要按用户、按提示归因。我有哪些选择？**

答：使用[模型调用日志](model-invocation-logging.md)，而不是基于计费的方法。原生方法（[IAM 主体归因](cost-mgmt-iam-principal-tracking.md)、[Projects](cost-mgmt-projects.md)[应用程序推理配置文件](cost-mgmt-application-inference-profiles.md)、和[Workspaces](cost-mgmt-workspaces.md)）只能在 Cost Explorer 和 CUR 中AWS生成汇总美元，而不是每个请求的行。每个提示的视图仅存在于您的日志中，用户可以来自两个地方之一。

第一个选项是在每次调用时设置请求元数据标签：

```
client.converse(
    modelId=...,
    messages=[...],
    requestMetadata={"user": "alice@example.com"},
)
```

第二种方法是依赖自动捕获的`identity.arn`，如果您的呼叫者以每`RoleSessionName`位用户扮演其 IAM 角色，则自动捕获会起作用。您可以根据记录的令牌数量计算成本。如果你还想让每位用户获得准确的发票金额，那就顺[IAM 主体归因](cost-mgmt-iam-principal-tracking.md)其自然。

**问：我有一个特定的场景。我应该使用哪种方法？**

答：使用下表将您的场景与方法进行匹配。


| 场景 | 使用 | 
| --- | --- | 
| 你需要在每月账单上支付每支球队的费用。 | [IAM 主体归因](cost-mgmt-iam-principal-tracking.md)（按队伍标记），或者标记[Projects](cost-mgmt-projects.md)或 [应用程序推理配置文件](cost-mgmt-application-inference-profiles.md) | 
| 您需要按功能划分每个提示的费用。 | [Per-request 元数据标记](cost-mgmt-request-metadata.md)带有[模型调用](model-invocation-logging.md)日志 | 
| 您运行许多模型，并且希望每个应用程序都有一个成本桶。 | [Projects](cost-mgmt-projects.md)on bedrock-mantle — 单个项目可以跨多个模型 | 
| 你正在使用 Converse，想要按应用程序付费。 InvokeModel  | [应用程序推理配置文件](cost-mgmt-application-inference-profiles.md) | 
| 你在 Amazon Bedrock 前面有一个为许多用户提供服务的网关。 | Per-user sts:AssumeRole用于支付账单费用，再加上按提示显示[Per-request 元数据标记](cost-mgmt-request-metadata.md)的详细信息 | 

**问：我应该使用项目还是应用程序推理配置文件？**

答：两者都以Cost Explorer和CUR形式提供汇总美元。AWS按端点和规模进行选择。
+ [应用程序推理配置文件](cost-mgmt-application-inference-profiles.md)适用于`bedrock-runtime`端点（InvokeModel 和 Converse），但它们是特定于模型的。您为每个模型创建一个配置文件，因此资源数量会随着您添加模型或团队而增加。
+ [Projects](cost-mgmt-projects.md)在`bedrock-mantle`端点（回复和聊天完成）上工作，单个项目可以跨多个模型。当你的每个工作负载有许多模型时，它们可以更好地扩展，但它们仅限于披风。

[IAM 主体归因](cost-mgmt-iam-principal-tracking.md)与任一用户一起使用可查看每个用户的详细信息。

## 成本和使用情况报告问题
<a name="cost-mgmt-faq-cur"></a>

**问：在成本归因方面，经典 CUR 和 CUR 2.0 有什么区别？**

答：[Projects](cost-mgmt-projects.md)、[应用程序推理配置文件](cost-mgmt-application-inference-profiles.md)[Workspaces](cost-mgmt-workspaces.md)、和 IAM 委托人标签的激活成本分配标签同时出现在经典 CUR 和 CUR 2.0 中。不同之处在于，自动来电者身份列无需[IAM 主体归因](cost-mgmt-iam-principal-tracking.md)标记即可工作。该列（“谁拨打了电话” 的数据）仅存在于选中来电者身份选项的 CUR 2.0（AWS数据导出）导出中。如果您希望在行项数据中使用原生的每用户归因，则需要 CUR 2.0。

**问：我能否在 Cost Explorer 或 CUR 中查看单个提示的AWS费用？**

答：不是。 经典 CUR 和 CUR 2.0 均按使用类型汇总一小时或一天内的成本，并且两者的行项目都没有按请求标识符。 Per-prompt 细节仅存在于您的[模型调用日志](model-invocation-logging.md)中。按模型和使用类型颗粒将日志连接到 CUR 以进行对账，而不是按提示计费。

**问：我的费用在 CUR 中，但我的标签和代币在日志中。如何将它们组合起来？**

答：有两种模式。要获得与发票准确无误的总计，请将日志加入到 CUR 中。 model/usage type/day 对于每个提示的费用，请根据记录的令牌数量和发布的每个令牌费率进行计算。以下 CloudWatch Logs Insights 查询生成用于计算的每个用户、每个模型的代币总数：

```
fields requestMetadata.user as user, modelId,
       input.inputTokenCount as inTokens,
       output.outputTokenCount as outTokens
| stats sum(inTokens) as totalInput,
        sum(outTokens) as totalOutput,
        count() as calls
        by user, modelId
```

计算出的数字是一个估计值。除非您对其进行建模，否则它不会反映折扣、承诺、批量定价、免费套餐或预配置吞吐量。有关更多信息，请参阅 [从日志中获取成本](cost-mgmt-request-metadata.md#cost-mgmt-request-metadata-getting-cost)。

## 机制有何不同
<a name="cost-mgmt-faq-differences"></a>

**问：IAM 会话标签和请求元数据有什么区别？**

答：绑定和目的地。使用该会话凭据进行的每次呼叫都设置一次会话标签，`sts:AssumeRole`并且该标签是恒定的；它仅作为汇总账单数据显示在 AWS Cost Explorer 和 CUR（包括经典 CUR 和 CUR 2.0）中。请求元数据是为每个调用设置的，每个请求都会有所不同，并且会出现在您的调用日志中。

对于按用户、按提示归因，请使用请求元数据。对于账单上的每位用户费用，请使用会话标签或依赖来电者身份 ARN。

**问：我的账单上会显示请求元数据吗？**

答：不是。 请求元数据不是成本分配标签。它仅写[入模型调用日志](model-invocation-logging.md)，永远不会出现在 Cost Explorer AWS 或 CUR 中。将其用于操作和按提示进行分析，并使用本机方法（例如[IAM 主体归因](cost-mgmt-iam-principal-tracking.md)或[Projects](cost-mgmt-projects.md)）来计算计费金额。

## 实施
<a name="cost-mgmt-faq-implementation"></a>

**问：在法学硕士网关背后，归因是如何运作的？**

答：Amazon Bedrock 将网关的角色记录为呼叫者的身份。要保留用户级别的归因，请按用户承担角色，缓存会话生命周期内的`identity.arn`凭证，并将用户作为会话标签（计费美元）传递 and/or 为`RoleSessionName`（这样用户就会进入您的日志）：

```
sts.assume_role(
    RoleArn=GATEWAY_ROLE,
    RoleSessionName="alice",
    Tags=[{"Key": "user", "Value": "alice@example.com"}],
)
```

要获得每个提示的详细信息，而无需按请求AWS STS调用，请改为在每次呼叫的[请求元数据](cost-mgmt-request-metadata.md)中设置用户。

**问：我可以要求每个通话都被标记吗？**

答：不是来自 Amazon Bedrock 方面。请求元数据是每次通话都可选择加入的，Amazon Bedrock 不会拒绝省略该元数据的呼叫。它不是仅管理资源的AWS标签策略。在共享客户端或 LLM 网关中强制标记，以便在每次请求时都对其进行标记。对于始终存在且没有每次通话代码的归因，请使用[IAM 主体归因](cost-mgmt-iam-principal-tracking.md)，因为来电者身份是自动捕获的。

**问：我在每次通话中设置哪些字段，哪些是自动的？**

答：日志记录中的几乎所有内容都是由 Amazon Bedrock 自动捕获的：`accountId``region``modelId`、`requestId`、`identity.arn`、、、、输入和输出令牌计数以及架构元数据。您在每次通话中提供的唯一字段是`requestMetadata`。您没有设置`modelId`为标签；而是您调用的模型或推理配置文件。