本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
API 密钥
Amazon Bedrock API 密钥允许您使用不记名令牌代替凭证对 API 请求进行身份验证。 AWS 这些变量分为两种类型:
所有 API 调用均已登录 AWS CloudTrail。API 密钥作为授权标头传递,不会被记录。
生成短期 API 密钥
选择与您的首选方法对应的选项卡,然后按照以下步骤操作:
- Console
-
密钥将在您的控制台会话过期(最长 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 密钥
选择与您的首选方法对应的选项卡,然后按照以下步骤操作:
- Console
-
- 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 密钥参考。