

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

# API 密钥
<a name="api-keys"></a>

Amazon Bedrock API 密钥允许您使用不记名令牌代替凭证对 API 请求进行身份验证。 AWS 这些变量分为两种类型：
+ **Short-term**— 持续长达 12 小时（或您的疗程持续时间，以较短者为准）。继承用于生成它的 IAM 委托人的权限。建议用于生产用途。
+ **Long-term**— 持续到配置的到期日期。创建具有附加策略的 IAM 用户。仅推荐用于探索。

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

## 生成短期 API 密钥
<a name="api-keys-gen-short"></a>

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

------
#### [ Console ]

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

1. 在左侧导航窗格中，选择 **API 密钥**。

1. 在 **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 密钥
<a name="api-keys-gen-long"></a>

**警告**  
Long-term 密钥仅用于探索。对于生产，请使用短期密钥。有关更多信息，请参阅[长期访问密钥的替代方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)。

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

------
#### [ Console ]

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

1. 在左侧导航窗格中，选择 **API 密钥**。

1. 在 **Long-term API 密钥**选项卡中，选择**生成长期 API 密钥**。

1. 选择到期时间，并可选择在 “**高级权限” 中添加权限**。

1. 选择**生成**。

------
#### [ 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 密钥
<a name="api-keys-use"></a>

将密钥设置为环境变量：

```
# 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 短期密钥
<a name="api-keys-auto-refresh"></a>

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

------
#### [ 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](https://github.com/aws/aws-bedrock-token-generator-python/blob/main/README.md) \| Jav [ascript](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md) \| [Java](https://github.com/aws/aws-bedrock-token-generator-java/blob/main/README.md)。

## 修改权限
<a name="api-keys-modify"></a>

长期 API 密钥与 IAM 用户关联。要更改其权限，请修改附加到该用户的策略。请参阅[添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

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

## 密钥被盗用
<a name="api-keys-compromised"></a>

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


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

## 控制谁可以生成和使用 API 密钥
<a name="api-keys-control"></a>

有两个 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 密钥参考](api-keys-reference.md)。