View a markdown version of this page

API 密钥 - Amazon Bedrock

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

API 密钥

Amazon Bedrock API 密钥允许您使用不记名令牌代替凭证对 API 请求进行身份验证。 AWS 这些变量分为两种类型:

  • Short-term— 持续长达 12 小时(或您的疗程持续时间,以较短者为准)。继承用于生成它的 IAM 委托人的权限。建议用于生产用途。

  • Long-term— 持续到配置的到期日期。创建具有附加策略的 IAM 用户。仅推荐用于探索。

注意

所有 API 调用均已登录 AWS CloudTrail。API 密钥作为授权标头传递,不会被记录。

生成短期 API 密钥

选择与您的首选方法对应的选项卡,然后按照以下步骤操作:

Console
  1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。 AWS 管理控制台 然后,打开 Amazon Bedrock 控制台,网址为https://console.aws.amazon.com/bedrock

  2. 在左侧导航窗格中,选择 API 密钥

  3. Short-term API 密钥选项卡中,选择生成短期 API 密钥

密钥将在您的控制台会话过期(最长 12 小时)时过期。要为其他区域生成密钥,请先在控制台中切换区域。

Python

安装代币生成器:

pip install aws-bedrock-token-generator

生成代币:

from aws_bedrock_token_generator import provide_token token = provide_token() print(f"Token: {token}")
Javascript

安装代币生成器:

npm install @aws/bedrock-token-generator

生成代币:

import { getTokenProvider } from "@aws/bedrock-token-generator"; const provideToken = getTokenProvider(); const token = await provideToken(); console.log(`Bearer Token: ${token}`);
Java

添加依赖关系 (Maven):

<dependency> <groupId>software.amazon.bedrock</groupId> <artifactId>aws-bedrock-token-generator</artifactId> <version>1.1.0</version> </dependency>

生成代币:

import software.amazon.bedrock.token.BedrockTokenGenerator; BedrockTokenGenerator tokenGenerator = BedrockTokenGenerator.builder().build(); String token = tokenGenerator.getToken();

生成长期 API 密钥

警告

Long-term 密钥仅用于探索。对于生产,请使用短期密钥。有关更多信息,请参阅长期访问密钥的替代方法

选择与您的首选方法对应的选项卡,然后按照以下步骤操作:

Console
  1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。 AWS 管理控制台 然后,打开 Amazon Bedrock 控制台,网址为https://console.aws.amazon.com/bedrock

  2. 在左侧导航窗格中,选择 API 密钥

  3. Long-term API 密钥选项卡中,选择生成长期 API 密钥

  4. 选择到期时间,并可选择在 “高级权限” 中添加权限

  5. 选择生成

CLI
# Create an IAM user aws iam create-user --user-name bedrock-api-user # Attach permissions aws iam attach-user-policy --user-name bedrock-api-user \ --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess # Generate the API key (replace NUMBER-OF-DAYS) aws iam create-service-specific-credential \ --user-name bedrock-api-user \ --service-name bedrock.amazonaws.com \ --credential-age-days ${NUMBER-OF-DAYS}

响应ServiceApiKeyValue中的是您的 API 密钥。

要稍后停用或删除密钥,请使用响应ServiceSpecificCredentialId中的:

# Deactivate the key aws iam update-service-specific-credential \ --user-name bedrock-api-user \ --service-specific-credential-id ${ServiceSpecificCredentialId} \ --status Inactive # Delete the key permanently aws iam delete-service-specific-credential \ --user-name bedrock-api-user \ --service-specific-credential-id ${ServiceSpecificCredentialId}
Python
import boto3 iam_client = boto3.client("iam") # Create IAM user iam_client.create_user(UserName="bedrock-api-user") # Attach permissions iam_client.attach_user_policy( UserName="bedrock-api-user", PolicyArn="arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess" ) # Generate API key response = iam_client.create_service_specific_credential( UserName="bedrock-api-user", ServiceName="bedrock.amazonaws.com", CredentialAgeDays=30 ) api_key = response["ServiceSpecificCredential"]["ServiceApiKeyValue"] print(api_key)

使用 API 密钥

将密钥设置为环境变量:

# macOS/Linux export AWS_BEARER_TOKEN_BEDROCK=${api-key} # Windows setx AWS_BEARER_TOKEN_BEDROCK "${api-key}"

或者直接在Authorization标题中传递:

Authorization: Bearer ${api-key}
示例:发出 Converse 请求

选择首选方法的选项卡,然后按照以下步骤操作:

cURL
curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-6/converse" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \ -d '{ "messages": [{"role": "user", "content": [{"text": "Hello"}]}] }'
Python (boto3)
import os import boto3 os.environ['AWS_BEARER_TOKEN_BEDROCK'] = "${api-key}" client = boto3.client("bedrock-runtime", region_name="us-east-1") response = client.converse( modelId="us.anthropic.claude-sonnet-4-6", messages=[{"role": "user", "content": [{"text": "Hello"}]}] )

Auto-refresh 短期密钥

对于长时间运行的应用程序,请在每次请求之前调用令牌生成器。如果仍然有效,它会返回一个缓存的令牌,或者自动生成一个新的令牌:

Python
from aws_bedrock_token_generator import provide_token import requests url = "https://bedrock-runtime.us-west-2.amazonaws.com/model/us.anthropic.claude-sonnet-4-6/converse" payload = {"messages": [{"role": "user", "content": [{"text": "Hello"}]}]} # Call provide_token() before each request — it handles caching/refresh token = provide_token() headers = {"Content-Type": "application/json", "Authorization": f"Bearer {token}"} response = requests.post(url, headers=headers, json=payload) print(response.json())
Javascript
import { getTokenProvider } from "@aws/bedrock-token-generator"; const provideToken = getTokenProvider(); const url = "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-6/converse"; const payload = {messages: [{role: "user", content: [{text: "Hello"}]}]}; // provideToken() handles caching/refresh automatically const headers = { "Content-Type": "application/json", "Authorization": `Bearer ${await provideToken()}` }; await fetch(url, {method: 'POST', headers, body: JSON.stringify(payload)});

有关更多示例,请参阅令牌生成器文档:Python | Jav ascript | Java

修改权限

长期 API 密钥与 IAM 用户关联。要更改其权限,请修改附加到该用户的策略。请参阅添加和删除 IAM 身份权限

在控制台中:前往 API 密钥 > Long-term API 密钥 > 选择您的密钥 > 在 IAM 控制台中管理

密钥被盗用

如果密钥被盗用,请采取以下措施之一:

处理建议 密钥类型 操作方法
Deactivate Long-term 控制台:API 密钥 > 选择密钥 > 操作 > 停用。API:UpdateServiceSpecificCredential使用Status=Inactive
重启 Long-term 控制台:操作 > 重置密钥。API: ResetServiceSpecificCredential
删除 Long-term 控制台:操作 > 删除。API: DeleteServiceSpecificCredential
使会话失效 Short-term 将 IAM 策略附加到拒绝bedrock:CallWithBearerToken或使用于生成密钥的会话失效的身份。

控制谁可以生成和使用 API 密钥

有两个 IAM 操作控制 API 密钥的生成和使用:

  • iam:CreateServiceSpecificCredential— 控制长期密钥的生成。使用iam:ServiceSpecificCredentialAgeDays条件密钥限制过期时间(例如,最长 90 天)。

  • bedrock:CallWithBearerToken— 控制任何 API 密钥的使用。使用带值SHORT_TERM或的bedrock:bearerTokenType条件键LONG_TERM来定位特定的键类型。

示例:阻止身份使用任何 API 密钥

将此策略附加到身份:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "bedrock:CallWithBearerToken", "Resource": "*" } ] }
示例:仅允许短期密钥(最长 90 天)

将此策略附加到身份:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceSpecificCredential", "Resource": "*", "Condition": { "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" }, "StringEquals": { "iam:ServiceSpecificCredentialServiceName": "bedrock.amazonaws.com" } } } ] }

有关更详细的策略示例,请参阅API 密钥参考