

# AWS 服务的 API 密钥
<a name="id_credentials_api_keys_for_aws_services"></a>

您可以使用 AWS CLI 或 AWS API 以 AWS 管理控制台 或编程方式访问 AWS 服务。向 Amazon Bedrock 和 Amazon CloudWatch Logs 等服务发出编程请求时，您可以使用 IAM 凭证（例如临时安全凭证或长期访问密钥）或 API 密钥进行身份验证。共有两种类型的 API 密钥：
+ **长期 API 密钥** – 长期 API 密钥与 IAM 用户关联并使用 IAM [服务特定凭证](id_credentials_service-specific-creds.md)生成。这些凭证仅设计用于单一 AWS 服务，通过限制凭证范围来增强安全性。您可以设置长期 API 密钥的过期时间。您可以使用 IAM 或特定服务的控制台（例如 Amazon Bedrock 或 CloudWatch Logs 控制台）、AWS CLI 或 AWS API 来生成长期 API 密钥。
+ **短期 API 密钥**（仅 Amazon Bedrock 支持）：短期 API 密钥是使用 AWS 签名版本 4 的预签名 URL。短期 API 密钥与生成 API 密钥的身份的凭证具有相同的权限和过期时间，有效期最长为 12 小时或控制台会话的剩余时间（以较短者为准）。您可以使用 Amazon Bedrock 控制台、Python 包 `aws-bedrock-token-generator` 和其他编程语言的包来生成短期 API 密钥。有关更多信息，请参阅《*Amazon Bedrock 用户指南*》中的 [Generate Amazon Bedrock API keys for easy access to the Amazon Bedrock API](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html)。

**注意**  
与短期 API 密钥相比，长期 API 密钥的安全风险更高。建议尽可能使用短期 API 密钥或临时安全凭证。如果使用长期 API 密钥，建议实施定期密钥轮换实践。

## 受支持的服务
<a name="id_credentials_api_keys_supported_services"></a>

下表列出了支持 API 密钥的 AWS 服务以及每项服务支持的 API 密钥类型。


| \$1 | 服务 | 长期 API 密钥 | 短期 API 密钥 | 托管策略自动附加 | 
| --- | --- | --- | --- | --- | 
| 1 | Amazon Bedrock | 支持 | 是 | [AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockLimitedAccess.html) | 
| 2 | Amazon CloudWatch Logs | 是 | 不适用 | [CloudWatchLogsAPIKeyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html) | 

当您为某项服务生成长期 API 密钥时，相应的 AWS 托管策略会自动附加到 IAM 用户，从而授予访问该服务的核心操作权限。如果需要额外的访问权限，则可以修改 IAM 用户的权限。有关修改权限的信息，请参阅[添加和删除 IAM 身份权限](access_policies_manage-attach-detach.md)。有关如何使用 Amazon Bedrock 密钥的更多信息，请参阅《Amazon Bedrock 用户指南》**中的[使用 Amazon Bedrock API 密钥](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html)。有关如何在 Amazon CloudWatch Logs 中使用持有者令牌的更多信息，请参阅《CloudWatch Logs 用户指南》**中的[持有者令牌身份验证](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HTTP_Endpoints_BearerTokenAuth.html)。

## 长期 API 密钥的先决条件
<a name="id_credentials_api_keys_prerequisites"></a>

必须先满足以下先决条件，然后才能在 IAM 控制台生成长期 API 密钥：
+ 与长期 API 密钥关联的 IAM 用户。有关创建 IAM 用户的说明，请参阅[在 AWS 账户 中创建 IAM 用户](id_users_create.md)。
+ 您必须具备以下 IAM 策略权限来管理 IAM 用户的服务特定凭证。示例策略授予创建、列出、更新、删除和重置服务特定凭证的权限。请将 Resource 元素中的 `username` 值替换为要为其生成长期 API 密钥的 IAM 用户的名称：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ManageBedrockServiceSpecificCredentials",
              "Effect": "Allow",
              "Action": [
                  "iam:CreateServiceSpecificCredential",
                  "iam:ListServiceSpecificCredentials",
                  "iam:UpdateServiceSpecificCredential",
                  "iam:DeleteServiceSpecificCredential",
                  "iam:ResetServiceSpecificCredential"
              ],
              "Resource": "arn:aws:iam::*:user/username"
          }
      ]
  }
  ```

------

## 生成长期 API 密钥（控制台）
<a name="id_credentials_api_keys_console_create"></a>

**在 IAM 控制台中为特定服务生成长期 API 密钥**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**用户**。

1. 选择要为其生成长期 API 密钥的 IAM 用户。

1. 选择**安全凭证**选项卡。

1. 在 **API 密钥**部分中，选择**生成 API 密钥**。

1. 从**AWS服务**下拉列表中，选择您希望 API 密钥用于身份验证的服务。

1. 对于 **API 密钥过期时间**，请执行以下操作之一：
   + 选择 API 密钥的过期时间 **1**、**5**、**30**、**90** 或 **365** 天。
   + 选择**自定义持续时间**以指定自定义 API 密钥到期日期。
   + 选择**永不过期**（不建议）。

1. 选择**生成 API 密钥**。

1. 复制或下载 API 密钥。这是唯一可以查看 API 密钥值的时间。
**重要**  
安全存储 API 密钥。关闭对话框后，将无法再次检索 API 密钥。如果丢失或忘记 API 密钥，则无法进行检索。相反，请生成新的 API 密钥并停用旧密钥。

## 生成长期 API 密钥（AWS CLI）
<a name="id_credentials_api_keys_cli_create"></a>

要使用 AWS CLI 生成长期 API 密钥，请按照以下步骤进行操作：

1. 使用 [create-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-user.html) 命令创建将与 Amazon Bedrock 或 Amazon CloudWatch Logs 一起使用的 IAM 用户：

   ```
   aws iam create-user \
       --user-name APIKeyUser_1
   ```

1. 使用 [attach-user-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-user-policy.html) 命令将 AWS 托管式策略附加到 IAM 用户。

   对于 Amazon Bedrock：

   ```
   aws iam attach-user-policy --user-name APIKeyUser_1 \
       --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

   对于 Amazon CloudWatch Logs：

   ```
   aws iam attach-user-policy --user-name APIKeyUser_1 \
       --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsAPIKeyAccess
   ```

1. 使用 [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html) 命令生成长期 API 密钥。

   对于 Amazon Bedrock：

   ```
   aws iam create-service-specific-credential \
       --user-name APIKeyUser_1 \
       --service-name bedrock.amazonaws.com \
       --credential-age-days 30
   ```

   对于 Amazon CloudWatch Logs：

   ```
   aws iam create-service-specific-credential \
       --user-name APIKeyUser_1 \
       --service-name logs.amazonaws.com \
       --credential-age-days 30
   ```
**注意**  
`--credential-age-days` 参数是可选的。您可以指定 1 至 36600 天之间的值。如果省略此参数，API 密钥将不会过期。

响应中返回的 `ServiceApiKeyValue` 即为该服务的长期 API 密钥。安全地存储 `ServiceApiKeyValue` 值，因为您以后无法检索它。

### 列出长期 API 密钥 (AWS CLI)
<a name="id_credentials_api_keys_cli_list"></a>

要列出特定用户的长期 API 密钥元数据，请使用带有 `--user-name` 参数的 [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) 命令：

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --user-name APIKeyUser_1
```

**注意**  
将 `bedrock.amazonaws.com` 替换为相应的服务名称（例如，Amazon CloudWatch Logs 替换为 `logs.amazonaws.com`）。

要列出账户中的所有长期 API 密钥元数据，请使用带有 `--all-users` 参数的 [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) 命令：

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --all-users
```

### 更新长期 API 密钥状态 (AWS CLI)
<a name="id_credentials_api_keys_cli_update"></a>

要更新长期 API 密钥的状态，请使用 [update-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-service-specific-credential.html) 命令：

```
aws iam update-service-specific-credential \
    --user-name "APIKeyUser_1" \
    --service-specific-credential-id "ACCA1234EXAMPLE1234" \
    --status Inactive|Active
```

## 生成长期 API 密钥（AWS API）
<a name="id_credentials_api_keys_api"></a>

您可以使用以下 IAM API 操作来管理任何受支持服务的长期 API 密钥：
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html) 

## 短期 API 密钥（Amazon Bedrock）
<a name="id_credentials_api_keys_short_term"></a>

目前，仅 Amazon Bedrock 支持短期 API 密钥。有关生成和使用短期 API 密钥的信息，请参阅《Amazon Bedrock 用户指南》**中的[生成 API 密钥](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-generate.html)。

## 特定服务的信息
<a name="id_credentials_api_keys_service_info"></a>
+ 有关通过 Amazon Bedrock 使用 API 密钥的更多信息，请参阅《Amazon Bedrock 用户指南》**中的[使用 Amazon Bedrock API 密钥](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html)。
+ 有关通过 Amazon CloudWatch Logs 使用 API 密钥的更多信息，请参阅《Amazon CloudWatch Logs 用户指南》**中的[通过 HTTP 端点进行日志摄取](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HTTP_Endpoints.html)。