本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAM 主體屬性
Amazon Bedrock 會自動擷取每個推論請求的 IAM 主體身分 (IAM 使用者和 IAM 角色)。您可以選擇將標籤連接至委託人,以取得其他成本維度,例如團隊、部門或成本中心。這可讓您查看每個使用者和每個角色的成本,無需變更程式碼或其他資源。
IAM 主體屬性目前適用於 Amazon Bedrock bedrock-runtime APIs(InvokeModel API/Converse API/聊天完成 API)。bedrock-mantle APIs的支援即將推出。
運作方式
當 IAM 使用者或角色提出推論請求時,Amazon Bedrock 會記錄發起人的身分。此資訊會流入 AWS Cost Explorer管和 AWS 成本和用量報告 (CUR 2.0),您可以在其中依身分篩選和分組成本。您不需要變更 Amazon Bedrock API 呼叫。屬性是根據撥打電話的人員,而不是 API 參數。
或者,您可以將標籤連接至 IAM 主體,以將組織維度 (團隊、部門、成本中心) 新增至帳單資料。身分層級屬性不需要標籤。一律會擷取呼叫者身分。
注意
IAM 主體屬性會將彙總成本交付給 AWS Cost Explorer 和 CUR 2.0。最佳粒度是每天每種用量類型,由身分或標籤歸因,不會產生每個請求的成本。如需每個提示的詳細資訊,請參閱 每個請求中繼資料標記和 使用 CloudWatch Logs 和 Amazon S3 監控模型調用。
委託人類型
Amazon Bedrock 會從任何 IAM 主體類型擷取身分。最常見的兩個是 IAM 使用者和 IAM 角色。
IAM 使用者直接使用長期存取金鑰呼叫 Amazon Bedrock。IAM 使用者名稱和連接到使用者的任何標籤都會記錄在 AWS Billing 中。
IAM 角色由使用者、應用程式或聯合身分透過 擔任 AWS STS。當委託人呼叫 時sts:AssumeRole,產生的臨時登入資料會攜帶角色的身分。標籤可以來自兩個來源:
-
主體標籤 – 直接連接到 IAM 角色的標籤。這些是靜態的,並適用於每個工作階段。
-
工作階段標籤 – 角色擔任時傳遞的標籤 AWS STS。這些是動態的,每個工作階段可能有所不同,因此它們適用於透過共用角色傳遞使用者特定的屬性,例如電子郵件、團隊或成本中心。
重要
如果工作階段標籤和主體標籤共用相同的金鑰,工作階段標籤值會覆寫該工作階段的主體標籤值。如需詳細資訊,請參閱傳入工作階段標籤 AWS STS。
大多數組織使用角色而非 IAM 使用者來存取 Amazon Bedrock。如果多個使用者共用相同的角色,工作階段標籤就是您在計費中區分它們的方式。
設定 IAM 主體屬性
系統會為每個 Amazon Bedrock 請求自動擷取身分層級屬性 (發起人的 IAM 使用者或角色 ARN)。若要將團隊或成本中心等組織維度新增至帳單資料,請依照下列步驟標記您的委託人,並在 AWS 帳單中啟用標籤。
步驟 1:將標籤套用至 IAM 主體 (選用)
標籤會以兩種方式流向帳單資料:
主體標籤會直接連接至 IAM 使用者或角色。設定一次,它們適用於來自該委託人的每個請求。這非常適合標記個別開發人員 (IAM 使用者) 或應用程式 (IAM 角色)。您可以使用 IAM 主控台、CLI AWS (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(例如,每個使用者或租用戶擔任 Amazon Bedrock 角色的 LLM 閘道)。 -
AssumeRoleWithWebIdentity (OIDC) – 在身分提供者發出的 ID 權杖中嵌入
https://aws.amazon.com/tags宣告中的標籤。 -
AssumeRoleWithSAML – 在 IdP 的 SAML 聲明中映射
PrincipalTag:*屬性。
IAM 角色的信任政策必須允許sts:TagSession工作階段標籤通過。若要進一步了解,請參閱傳入工作階段標籤 AWS STS。
主體標籤和工作階段標籤都會以 iamPrincipal/字首顯示在 CUR 2.0 中。
步驟 2:啟用成本分配標籤
若要讓您的 IAM 主體標籤顯示在 AWS Cost Explorer 和 CUR 2.0 中,您必須將其啟用為成本分配標籤:
-
開啟 AWS Billing and Cost Management 主控台。
-
在導覽窗格中,選擇 Cost allocation tags (成本分配標籤)。
-
依類型 IAM 主體篩選,以尋找您套用至主體的標籤。
-
選取標籤,然後選擇啟用。
注意
只有在 IAM 主體發出至少一個 Amazon Bedrock API 呼叫之後,標籤才會出現在 AWS 帳單中。成本分配標籤不追溯 - 只有啟用後產生的成本才會加上標籤。標籤在啟用後最多可能需要 24 小時才會出現。
步驟 3:使用 IAM 層級資料建立 CUR 2.0 資料匯出
若要查看身分層級成本明細,請建立包含發起人身分的 CUR 2.0 資料匯出:
-
開啟 AWS Billing and Cost Management 主控台。
-
在導覽窗格中,選擇資料匯出。
-
選擇建立以建立新的 CUR 2.0 匯出。
-
設定匯出,並確保您選取包含發起人身分 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 Identity Center、Okta、Entra、Ping) 的組織,工作階段標籤可讓您將使用者屬性從 IdP 傳遞至 AWS。當聯合身分使用者透過 擔任角色時 AWS STS,IdP 可以將使用者電子郵件、團隊和成本中心等屬性作為工作階段標籤傳遞。這些標籤會與 Amazon Bedrock 請求一起擷取,並流向 AWS CUR 2.0 和 AWS Cost Explorer。
若要設定此項目:
-
設定您的 IdP 以包含使用者屬性 (電子郵件、團隊、成本中心) 做為 SAML 屬性或 OIDC 宣告。
-
使用 將這些屬性映射至 IAM 角色信任政策中的 AWS 工作階段標籤
sts:TagSession。 -
然後,工作階段標籤可在啟用後 AWS 帳單中作為成本分配標籤使用。
如需詳細資訊,請參閱在 AWS STS中傳入工作階段標籤。
下列 Python 範例顯示閘道擔任特定使用者的 Amazon Bedrock 角色,將使用者同時做為 RoleSessionName(出現在您的調用日誌identity.arn中) 和工作階段標籤傳遞 (在 AWS Cost Explorer 和 CUR 2.0 中顯示為成本分配資料)。角色的信任政策必須允許 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.
重要
調用模式
無論您的應用程式如何呼叫 Amazon Bedrock,IAM 主體屬性都可以運作:
| 模式 | 身分如何流動 |
|---|---|
| 直接 API 呼叫 | 自動擷取的 IAM 使用者或角色身分 |
| API Gateway | 擷取叫用 Amazon Bedrock 的角色身分 |
| LLM Gateway (LiteLLM、自訂) | 擷取閘道執行角色的身分。從閘道傳遞工作階段標籤,以保留使用者層級屬性。 |
| 聯合身分 (Okta、Entra) | 來自 IdP 的工作階段標籤會在角色擔任期間擷取 |
如果您使用 LLM 閘道或 API 閘道,但未在 AWS 帳單中看到使用者層級身分,請確認閘道在每個請求中傳遞工作階段標籤。
注意
如果您的閘道重新假設每個使用者的角色以變更身分或工作階段標籤,則每個使用者擔任該角色一次,並在工作階段生命週期內快取登入資料。每個請求sts:AssumeRole的呼叫可能會超過 AWS STS 請求率配額。
檢視成本
啟用成本分配標籤後,您可以在下列工具中依委託人分析 Amazon Bedrock 成本:
-
AWS Cost Explorer – 依委託人標籤篩選,依使用者、團隊或部門檢視成本趨勢。依標籤分組以比較各個維度的成本。
-
AWS 成本和用量報告 (CUR 2.0) – 依委託人標籤查詢明細項目成本的 CUR 資料。
提出請求後,成本資料最多可能需要 24 小時才會出現在 AWS Cost Explorer 和 CUR 2.0 中。
搭配其他方法使用 IAM 主體屬性
IAM 主體屬性可與專案和應用程式推論設定檔搭配使用。這可讓您多維成本可見性。
我們建議將專案用於應用程式層級屬性,並將 IAM 主體屬性用於相同帳戶中的使用者層級屬性。
| Method | 屬性依據 | 支援的 API | bedrock-runtime |
bedrock-mantle |
|---|---|---|---|---|
| IAM 主體屬性 | 身分 (使用者、角色、團隊) | InvokeModel API/Converse API/聊天完成 API | ||
| 專案 (建議) | 應用程式或工作負載 | 回應 API/聊天完成 API | ||
| 應用程式推論設定檔 | 應用程式或工作負載 | InvokeModel API/Converse API/聊天完成 API |