本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
API 金鑰
Amazon Bedrock API 金鑰可讓您使用承載字符而非 AWS 登入資料來驗證 API 請求。受管字首清單有兩種類型:
所有 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"}]}]
)
自動重新整理短期金鑰
對於長時間執行的應用程式,請在每個請求之前呼叫字符產生器。如果仍然有效或自動產生新的權杖,它會傳回快取的權杖:
- 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 | Javascript | Java。
修改許可
長期 API 金鑰與 IAM 使用者相關聯。若要變更其許可,請修改連接至該使用者的政策。請參閱新增和移除 IAM 身分許可。
從主控台:前往 API 金鑰 > 長期 API 金鑰 > 選取您的金鑰 > 在 IAM 主控台中管理。
已遭入侵的金鑰
如果金鑰遭到入侵,請採取下列其中一個動作:
| Action |
Key type |
方法 |
| 停用 |
長期 |
主控台:API 金鑰 > 選取金鑰 > 動作 > 停用。API:UpdateServiceSpecificCredential使用 Status=Inactive。 |
| 重設 |
長期 |
主控台:動作 > 重設金鑰。API:ResetServiceSpecificCredential。 |
| 刪除 |
長期 |
主控台:動作 > 刪除。API:DeleteServiceSpecificCredential。 |
| 使工作階段失效 |
短期 |
將 IAM 政策連接至拒絕 的身分bedrock:CallWithBearerToken,或使用於產生金鑰的工作階段失效。 |
控制誰可以產生和使用 API 金鑰
兩個 IAM 動作控制 API 金鑰的產生和用量:
-
iam:CreateServiceSpecificCredential – 控制長期金鑰的產生。使用 iam:ServiceSpecificCredentialAgeDays 條件金鑰來限制過期 (例如,最長 90 天)。
-
bedrock:CallWithBearerToken – 控制任何 API 金鑰的用量。使用 bedrock:bearerTokenType條件索引鍵搭配 值SHORT_TERM或 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 金鑰參考。