View a markdown version of this page

IAM 主要归因 - Amazon Bedrock

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

IAM 主要归因

Amazon Bedrock 会自动捕获每个推理请求的 IA M 主体身份(IAM 用户和 IAM 角色)。您可以选择为委托人附加标签,以获得其他成本维度,例如团队、部门或成本中心。这使您无需更改代码或额外资源即可查看每用户和每个角色的成本。

IAM 主要归因在终端节点(API/Converse API /聊天完成 API /响应 InvokeModel API /消息 API)和bedrock-runtime终端节点(响应 API/聊天完成 API/消息 API)和bedrock-mantle终端节点(响应 API/聊天完成 API /消息 API)上均可使用 Amazon Bedrock API 。Anthropic Claude   Messages API

工作原理

当 IAM 用户或角色提出推理请求时,Amazon Bedrock 会记录呼叫者的身份。这些信息流入 AWS 成本管理器和 AWS 成本和使用情况报告 (CUR 2.0),您可以在其中按身份对成本进行筛选和分组。无需更改您的亚马逊 Bedrock API 调用。归因基于谁拨打了电话,而不是 API 参数。

或者,您可以向 IAM 委托人附加标签,以向账单数据添加组织维度(团队、部门、成本中心)。身份级别归因不需要标签。来电者的身份始终会被捕获。

注意

IAM 主体归因将 AWS 汇总成本提供给 Cost Explorer 和 CUR 2.0。根据身份或标签归因于每天的每种使用类型,它不会产生每次请求的成本。有关每个提示的详细信息,请参阅Per-request 元数据标记和。使用 CloudWatch 日志和 Amazon S3 监控模型调用

主要类型

亚马逊 Bedrock 可以捕获任何 IAM 主体类型的身份。最常见的两个是 IAM 用户和 IAM 角色。

IAM 用户使用长期访问密钥直接致电亚马逊 Bedrock。IAM 用户名和附加到该用户的所有标签都记录在 AWS 账单中。

IAM 角色由用户、应用程序或联合身份通过以下方式代替 AWS STS。当委托人致电时sts:AssumeRole,生成的临时证书带有角色的身份。标签可以来自两个来源:

  • 主标签 -直接附加到 IAM 角色的标签。这些是静态的,适用于每个会话。

  • 会话标签 -角色承担时传递的标签 AWS STS。它们是动态的,可能因会话而异,因此它们可用于通过共享角色传递用户特定的属性,例如电子邮件、团队或成本中心。

重要

如果会话标签和主标签共享相同的密钥,则会话标签值将覆盖该会话的主标签值。有关更多信息,请参阅将会话标签传入中 AWS STS。

大多数组织使用角色而不是 IAM 用户来访问亚马逊 Bedrock。如果多个用户共享同一个角色,则会话标签是您在计费中区分他们的方式。

设置 IAM 主体归因

Identity-level 对于每个亚马逊 Bedrock 请求,系统会自动捕获归因(调用者的 IAM 用户或角色 ARN)。要在账单数据中添加团队或成本中心等组织维度,请按照以下步骤标记您的委托人并在 AWS 账单中激活标签。

第 1 步:将标签应用到您的 IAM 委托人(可选)

标签通过两种方式流向您的账单数据:

主体标签直接附加到 IAM 用户或角色。将它们设置一次,它们将应用于该委托人的每项请求。这非常适合标记个人开发人员(IAM 用户)或应用程序(IAM 角色)。您可以使用 IAM 控制台、 AWS CLI (aws iam tag-role,aws iam tag-user) 或 IAM API (TagRole,TagUser) 应用主体标签。

要了解有关 IAM 标签和最佳实践的更多信息,请参阅 IAM 资源的标签。

当代入 IAM 角色时,会话标签是动态传递的 AWS STS。它们非常适合联合用户(通过 Okta、Auth0 或 Entra 等身份提供商进行身份验证)和代表多个用户或租户代理请求的 LLM 网关。会话标签可以通过三种方式传递:

  • AssumeRole— 呼叫--tags时通过sts:AssumeRole(例如,LLM 网关假定每个用户或租户都有 Amazon Bedrock 角色)。

  • AssumeRoleWithWebIdentity (OIDC) — 在身份提供商颁发的 ID 令牌中的https://aws.amazon.com/tags声明中嵌入标签。

  • AssumeRoleWithSAML— 在 IdP 的 SAML 断言中映射PrincipalTag:*属性。

IAM 角色的信任策略必须允许sts:TagSession会话标签通过。要了解更多信息,请参阅传递会话标签 AWS STS。

主标签和会话标签都以iamPrincipal/前缀出现在 CUR 2.0 中。

第 2 步:激活成本分配标签

要使您的 IAM 主体标签显示在 Cos AWS t Explorer 和 CUR 2.0 中,您必须将它们作为成本分配标签激活:

  1. 打开 AWS 账单和成本管理控制台。

  2. 在导航窗格中,选择 Cost allocation tags(成本分配标签)。

  3. 按类型筛选 IAM 委托人以查找您应用于委托人的标签。

  4. 选择标签,然后选择 “激活” 。

注意

标签仅在 IAM 委托人进行至少一次亚马逊 Bedrock API 调用后才会出现在 AWS 账单中。成本分配标签不可追溯——只有激活后产生的费用才会被标记。标签在激活后可能需要长达 24 小时才能显示。

第 3 步:使用数据创建 CUR 2.0 数据导出 IAM-level

要查看身份级别的费用明细,请创建包含来电者身份的 CUR 2.0 数据导出:

  1. 打开 AWS 账单和成本管理控制台。

  2. 在导航窗格中,选择 Data Exports。

  3. 选择 “创建” 以创建新的 CUR 2.0 导出。

  4. 配置导出并确保选择包含来电者身份 ARN 的选项。

重要

如果您在启用 IAM 委托人归因之前创建了 CUR 2.0 数据导出,则必须创建新的导出并选择来电者身份选项。现有导出不追溯地包含身份数据。您还必须确保激活成本分配标签(步骤 2),标签才能显示在导出中。

有关更多信息,请参阅《 AWS 成本和使用情况报告用户指南》中的创建报告。

标记维度

您可以使用任何代表您的组织结构的标签密钥。常见尺寸包括:

标签键 用途 示例值
User 个人身份 jane@example.com,bob@example.com
Team Ownership PlatformEngineering, DataScience
Department 组织单位 工程、研究、营销
CostCenter 财务映射 CC-1001, CC-2002
Environment 生命周期阶段 制作、开发

每个 IAM 用户或角色最多可以应用 50 个委托人或会话标签。

联合访问和会话标签

对于使用联合身份提供商(AWS IAM 身份中心、Okta、Entra、Ping)的组织,会话标签允许您将用户属性从 IdP 传递到。 AWS当联合用户通过担任角色时 AWS STS,IdP 可以将用户电子邮件、团队和成本中心等属性作为会话标签传递。这些标签是与亚马逊 Bedrock 请求一起捕获的,流向 AWS CUR 2.0 和 Cost Explorer AWS 。

要进行此设置,请执行以下操作:

  1. 配置您的 IdP,将用户属性(电子邮件、团队、成本中心)作为 SAML 属性或 OIDC 索赔包括在内。

  2. 使用将这些属性映射到您的 IAM 角色的信任策略中的 AWS 会话标签sts:TagSession。

  3. 激活后,会话标签将作为成本分配标签在 AWS 账单中使用。

有关更多信息,请参阅在 AWS STS中传递会话标签。

以下 Python 示例显示了一个网关为特定用户承担其 Amazon Bedrock 角色,将该用户作为 aRoleSessionName(出现在您的调用日志identity.arn中)和会话标签(在 Cost Explorer 和 CUR 2.0 中显示为 AWS 成本分配数据)进行传递。该角色的信任策略必须允许sts:TagSession。在会话生命周期内缓存返回的证书,而不是AssumeRole对每个请求进行调用。

import boto3 sts = boto3.client("sts") creds = sts.assume_role( RoleArn="arn:aws:iam::123456789012:role/BedrockGatewayRole", RoleSessionName="alice", # appears in identity.arn Tags=[ {"Key": "user", "Value": "alice@example.com"}, {"Key": "team", "Value": "growth"}, ], # session tags, surface as cost allocation data )["Credentials"] bedrock = boto3.client( "bedrock-runtime", aws_access_key_id=creds["AccessKeyId"], aws_secret_access_key=creds["SecretAccessKey"], aws_session_token=creds["SessionToken"], ) # Every call made with this client is attributed to alice in billing # and carries her identity ARN in invocation logs.
重要

身份和会话标签是按 AWS STS AssumeRole 时绑定的,是针对会话记录的,而不是针对个人请求进行记录的。在使用该会话凭证进行的每次通话中,它们的值都是恒定的,并且它们仅以汇总的账单数据形式出现。会话标签不会写入您的模型调用日志;identity.arn相反,日志会捕获调用者的会话标签。要在请求级别区分共享会话中的用户,请使用每位用户,RoleSessionName使每个用户的身份 ARN 不同,或者在每次调用的请求元数据中设置用户。

调用模式

无论您的应用程序如何调用 Amazon Bedrock,IAM 主体归因都有效:

模式 身份如何流动
直接 API 调用 自动捕获的 IAM 用户或角色身份
API Gateway 调用 Amazon Bedrock 的角色的身份已被捕获
LLM 网关(LitelLM,自定义) 捕获网关执行角色的身份。传递来自网关的会话标签,以保留用户级别的归因。
联邦身份(Okta、Entra) 角色代入期间会捕获来自 IdP 的会话标签

如果您使用 LLM 网关或 API 网关且未在 AWS 账单中看到用户级身份,请确认网关在每个请求中传递会话标签。

注意

如果您的网关为每个用户重新代入角色以更改身份或会话标签,请为每个用户代入一次该角色并在会话生命周期内缓存证书。调用sts:AssumeRole每个请求可能会超过 AWS STS 请求速率配额。

查看费用

激活成本分配标签后,您可以在以下工具中按主体分析亚马逊 Bedrock 成本:

  • AWS 成本浏览器 -按主要标签筛选,按用户、团队或部门查看成本趋势。按标签分组以比较各个维度的成本。

  • AWS 成本和使用情况报告 (CUR 2.0) — 按主要标签查询 CUR 数据,了解订单项目成本明细。

提出请求后,成本数据最多可能需要 24 小时才能显示在 C AWS ost Explorer 和 CUR 2.0 中。

将 IAM 主体归因与其他方法结合使用

IAM 主体归因可以与项目和应用程序推理配置文件一起使用。这为您提供了多维度的成本可见性。

我们建议在同一账户内使用项目进行应用程序级归因,使用 IAM 主体归因进行用户级归因。

方法 属性依据 支持的 API bedrock-runtime bedrock-mantle
IAM 主要归因 身份(用户、角色、团队) InvokeModel API/Converse API/聊天完成 API/响应 API/消息 API 开启bedrock-runtime;响应 API/聊天完成 API /消息 API 开启 Anthropic Claude   Messages API bedrock-mantle Green circular icon with a white checkmark symbol inside. Green circular icon with a white checkmark symbol inside.
项目(推荐) 应用程序或工作负载 回复 API/聊天完成 API Red circle with white X icon indicating error, cancel, or close action. Green circle with white checkmark icon.
应用程序推理配置文件 应用程序或工作负载 InvokeModel API/Converse API/聊天完成 API Green circle with white checkmark icon. Red circle with white X icon indicating error, cancel, or close action.