

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# API 金鑰
<a name="api-keys"></a>

Amazon Bedrock API 金鑰可讓您使用承載字符而非 AWS 憑證來驗證 API 請求。受管字首清單有兩種類型：
+ **短期** – 最長持續 12 小時 （或工作階段持續時間，以較短者為準）。從用來產生它的 IAM 主體繼承許可。建議用於生產用途。
+ **長期** – 持續到設定的過期日期。建立已連接政策的 IAM 使用者。建議僅用於探勘。

**注意**  
所有 API 呼叫都會登入 AWS CloudTrail。API 金鑰會以授權標頭的形式傳遞，而且不會記錄。

## 產生短期 API 金鑰
<a name="api-keys-gen-short"></a>

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中，選取**API 金鑰**。

1. 在**短期 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>

**警告**  
長期金鑰僅適用於探勘。對於生產，請使用短期金鑰。如需詳細資訊，請參閱[長期存取金鑰的替代方案](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中，選取**API 金鑰**。

1. 在**長期 API 金鑰**索引標籤中，選擇**產生長期 API 金鑰**。

1. 選擇過期時間，並選擇性地在**進階許可中新增許可**。

1. 選擇 **Generate (產生)**。

------
#### [ 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"}]}]
)
```

------

## 自動重新整理短期金鑰
<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) \| [Javascript](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 金鑰** > **長期 API 金鑰** > 選取您的金鑰 > 在 **IAM 主控台中管理**。

## 已遭入侵的金鑰
<a name="api-keys-compromised"></a>

如果金鑰遭到入侵，請採取下列其中一個動作：


| Action | Key type | 方法 | 
| --- | --- | --- | 
| 停用 | 長期 | 主控台：API 金鑰 > 選取金鑰 > 動作 > 停用。API：UpdateServiceSpecificCredential使用 Status=Inactive。 | 
| 重設 | 長期 | 主控台：動作 > 重設金鑰。API：ResetServiceSpecificCredential。 | 
| 刪除 | 長期 | 主控台：動作 > 刪除。API：DeleteServiceSpecificCredential。 | 
| 使工作階段失效 | 短期 | 使用於產生金鑰的工作階段失效，或連接拒絕 CallWithBearerToken() 的 IAM 政策[拒絕身分使用 Amazon Bedrock API 金鑰進行呼叫](api-keys-revoke.md#api-keys-iam-policies-deny-call-with-bearer-token)。 | 

## 控制誰可以產生和使用 API 金鑰
<a name="api-keys-control"></a>

IAM 動作控制 API 金鑰的產生和用量：
+ `iam:CreateServiceSpecificCredential` – 控制長期金鑰的產生。使用 `iam:ServiceSpecificCredentialAgeDays` 條件金鑰來限制過期 （例如，最長 90 天）。
+ `bedrock:CallWithBearerToken` – 透過 Amazon Bedrock 端點控制 API 金鑰的使用情況。使用 `bedrock:bearerTokenType`條件索引鍵搭配 值`SHORT_TERM`或 `LONG_TERM`，以特定索引鍵類型為目標。
+ `bedrock-mantle:CallWithBearerToken` – 透過 Amazon Bedrock Mantle 端點控制 API 金鑰的使用情況。使用具有值 `SHORT_TERM`或 `bedrock-mantle:bearerTokenType`的條件索引鍵`LONG_TERM`，以特定索引鍵類型為目標。

**範例：防止身分使用任何 API 金鑰**  
將此政策連接至身分：

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "bedrock:CallWithBearerToken",
                "bedrock-mantle: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)。