

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

# 申请访问模型
<a name="model-access"></a>

在具备正确的 AWS Marketplace 权限的情况下，对所有 Amazon Bedrock 基础模型的访问权限默认处于启用状态。要开始使用，只需从 Amazon Bedrock 控制台的模型目录中选择一个模型，然后在操场中将其打开，或者使用[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)或 [ Converse ](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) API 操作调用该模型即可。有关 Amazon Bedrock 支持的不同模型的信息，请参阅 [Amazon Bedrock 基础模型信息](https://docs.aws.amazon.com/bedrock/latest/userguide/foundation-models-reference.html)。有关模型定价的信息，请参阅 [Amazon Bedrock 定价](https://aws.amazon.com/bedrock/pricing/)。

默认情况下，在所有商业 AWS 区域启用对所有 Amazon Bedrock 基础模型的访问权限，并具有正确的 AWS Marketplace 权限。要以编程方式访问第三方模型，请参阅[使用 SDK 和 CLI 管理模型访问权限](#model-access-modify)。

**了解自动模型访问权限**  
当您首次在账户中调用第三方模型时，Amazon Bedrock 会自动在后台启动订阅流程。在此设置期间（最多 15 分钟），您的 API 调用可能会在订阅完成时暂时成功。如果缺少任何先决条件，则订阅尝试将失败，后续的 API 调用将返回`AccessDeniedException`。授予必要权限后，最多可能需要 2 分钟才能完成订阅。在此期间，API 调用可能会继续返回`AccessDeniedException`。订阅完成后，所有后续调用都将成功。为了完全避免这种情况，请在生产环境中调用模型之前验证所有先决条件。  
**成功访问模型的先决条件：**  
**AWS 商城权限**：您的 IAM 角色必须拥有`aws-marketplace:Subscribe``aws-marketplace:Unsubscribe`、和`aws-marketplace:ViewSubscriptions`权限。有关详细信息，请参阅[授予 IAM 权限以请求对具有产品 ID 的 Amazon Bedrock 基础模型的访问权限](#model-access-permissions)。
**人体模型**：对于人类模型，在调用模型之前，您必须填写首次使用（FTU）表格。此要求不适用于通过`bedrock-mantle`终端访问的人体模型。
**有效的付款方式**：您的 AWS 账户必须为 AWS 商城购买配置有效的付款方式。

**注意**  
Anthropic 要求首次使用的客户在调用模型前提交使用案例详细信息，且每个账户或每个组织的管理账户仅需提交一次。此要求不适用于通过`bedrock-mantle`终端访问的人体模型。您可以通过从 Amazon Bedrock 控制台的模型目录中选择 Anthropic 模型或调用 `PutUseCaseForModelAccess` API 命令来提交使用案例详细信息。在成功提交使用案例详细信息后，将立即授予对模型的访问权限。在根账户提交的表单将由同一 AWS 组织中的其他账户继承。  
用例表需要描述您的预期用途和网站 URL。如果您是没有公司网站的个人开发者或学生，则可以提供描述您的用例的个人作品集、 GitHub 个人资料或项目网址。

**注意**  
对于 3P 型号，首次通过 invoking/using 该模型，即表示您同意适用的《最终用户许可协议》。有关更多信息，请参阅[AWS 服务条款](https://aws.amazon.com/service-terms/)和[无服务器 Third-Party 模式许可协议](https://aws.amazon.com/legal/bedrock/third-party-models/)。  
需在允许使用模型之前审核并同意 EULA 的组织应：  
首先通过服务控制策略（SCP）或 IAM 策略来阻止模型访问
审查 EULA 条款
仅当您同意 EULA 条款时，才允许通过 SCP/IAM 政策访问模型

**Topics**
+ [授予 IAM 权限以请求对具有产品 ID 的 Amazon Bedrock 基础模型的访问权限](#model-access-permissions)
+ [使用 SDK 和 CLI 管理模型访问权限](#model-access-modify)
+ [在 AWS GovCloud （美国）中访问亚马逊 Bedrock 基础模型](#model-access-govcloud)

## 授予 IAM 权限以请求对具有产品 ID 的 Amazon Bedrock 基础模型的访问权限
<a name="model-access-permissions"></a>

您可以通过创建自定义 IAM 策略来管理模型访问。要修改对亚马逊 Bedrock 基础模型的访问权限，您首先需要向允许访问亚马逊 Bedrock 的 IAM 角色附加基于身份的 IAM 政策，其中包含以下[AWS Marketplace 操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsmarketplace.html#awsmarketplace-actions-as-permissions)。

当您首次调用账户 AWS Marketplace 中提供的亚马逊 Bedrock 无服务器模型时，Bedrock 会尝试自动为您的账户启用该模型。要使这种自动启用功能起作用，需要 AWS Marketplace 权限。

如果您无法 AWS Marketplace 获得 AWS Marketplace 权限，则拥有权限的人必须一次性为账户启用模型（手动或通过自动启用）。启用模型后，无需 AWS Marketplace 权限即可调用该模型。启用模型后，用户无需 AWS Marketplace 订阅权限即可调用模型。只有在账户中首次使用模型时才需要这些权限。

通过以下 IAM 操作控制对具有产品 ID 的 Amazon Bedrock 无服务器基础模型的访问权限：



| IAM 操作 | 说明 | 适用于的模型 | 
| --- | --- | --- | 
| aws-marketplace:Subscribe | 允许 IAM 实体订阅 AWS Marketplace 产品，包括亚马逊 Bedrock 基础模型。 | 仅在 AWS Marketplace中具有产品 ID 的 Amazon Bedrock 无服务器模型。 | 
| aws-marketplace:Unsubscribe | 允许 IAM 身份取消订阅 AWS Marketplace 产品，包括亚马逊 Bedrock 基础模型。 | 仅在 AWS Marketplace中具有产品 ID 的 Amazon Bedrock 无服务器模型。 | 
| aws市场：ViewSubscriptions | 允许 IAM 身份返回 AWS Marketplace 产品列表，包括亚马逊 Bedrock 基础模型。 | 仅在 AWS Marketplace中具有产品 ID 的 Amazon Bedrock 无服务器模型。 | 

**注意**  
仅对于 `aws-marketplace:Subscribe` 操作，您可以使用 `aws-marketplace:ProductId` [ 条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsmarketplace.html#awsmarketplace-policy-keys)来限制对特定模型的订阅。

**允许 IAM 身份请求对具有产品 ID 的模型的访问权限**  
身份必须已附加允许 `aws-marketplace:Subscribe` 的策略。

**注意**  
如果某个身份已经在一个 AWS 区域订阅了模型，则该模型可供该身份在模型可用的所有 AWS 区域请求访问权限，即使其他地区被拒绝`aws-marketplace:Subscribe`也是如此。

有关创建策略的信息，请参阅[快速入门](getting-started.md)。

仅对于 `aws-marketplace:Subscribe` 操作，您可以使用 `aws-marketplace:ProductId` [ 条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsmarketplace.html#awsmarketplace-policy-keys)来限制对特定模型的订阅。

**注意**  
来自以下提供商的模型不是通过销售的 AWS Marketplace ，也没有产品密钥，因此您无法将`aws-marketplace`操作范围限定在这些提供商的范围内：  
Amazon
DeepSeek
Mistral AI
Meta
Qwen
不过，您可以通过拒绝 Amazon Bedrock 操作并在 `Resource` 字段中指定这些模型 ID，来禁止使用这些模型。有关示例，请参阅[阻止身份在获得访问权限后使用模型](#model-access-prevent-usage)。

选择一个部分以查看特定使用案例的 IAM 策略示例：

**Topics**
+ [防止身份请求对具有产品 ID 的模型的访问权限](#model-access-prevent-subscription)
+ [阻止身份在获得访问权限后使用模型](#model-access-prevent-usage)

### 防止身份请求对具有产品 ID 的模型的访问权限
<a name="model-access-prevent-subscription"></a>

要防止 IAM 实体请求对具有产品 ID 的特定模型的访问权限，请向用户附加一个 IAM 策略，以便拒绝 `aws-marketplace:Subscribe` 操作并将 `Condition` 字段的范围限定为该模型的产品 ID。

例如，您可以将以下策略附加到身份以防止其订阅 Anthropic Claude 3.5 Sonnet 模型：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aws-marketplace:Subscribe"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws-marketplace:ProductId": [
                        "prod-m5ilt4siql27k"
                    ]
                }
            }
        }
    ]
}
```

------

**注意**  
`aws-marketplace:Subscribe`仅拒绝并**不能**阻止第一次模型调用，因为 Amazon Bedrock 会在后**台自动启动**订阅。  
要从一开始就**封锁模型访问权限**，请在**组织 (SCP) 或账户 (IAM) `bedrock:InvokeModel` ** 级别**上应用**拒绝策略。

**注意**  
利用此策略，IAM 实体默认有权访问任何新添加的模型。  
如果身份已在至少一个区域订阅模型，则此策略不会阻止其在其他区域访问模型。相反，您可以参考[阻止身份在获得访问权限后使用模型](#model-access-prevent-usage)中的示例来限制模型的使用。

### 阻止身份在获得访问权限后使用模型
<a name="model-access-prevent-usage"></a>

如果一个 IAM 身份已获得对某个模型的访问权限，您可以通过拒绝所有 Amazon Bedrock 操作，并将 `Resource` 字段限定为基础模型的 ARN 来阻止此身份使用该模型。

例如，您可以将以下策略附加到某个身份，以防止其在所有 AWS 区域使用该AnthropicClaude 3.5 Sonnet模型：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "bedrock:*"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0"
            ]
        }
    ]
}
```

------

## 使用 SDK 和 CLI 管理模型访问权限
<a name="model-access-modify"></a>

除了调用模型外，还可以使用 SDK 管理模型访问权限。以下步骤可用于对访问进行 create/delete 建模以及检查访问权限是否已经存在。请注意，这仅适用于第三方型号。

**重要**  
通过调用或使用第三方模式，即表示您默示同意适用的最终用户许可协议 (EULA)。有关更多信息，请参阅[无服务器 Third-Party 模式许可协议](https://aws.amazon.com/legal/bedrock/third-party-models/)。

按照以下步骤以编程方式管理模型访问权限：
+ [先决条件](#model-access-sdk-prerequisites)
+ [第 1 步：列出基础协议范本的报价](#model-access-sdk-step1)
+ [第 2 步：[仅限 Anthropic 模型需要一次性使用] 为首次使用的用户提供用例](#model-access-sdk-step2)
+ [第 3 步：创建基础协议范本](#model-access-sdk-step3)
+ [第 4 步：获取基础模型的可用性](#model-access-sdk-step4)
+ [[可选] 步骤 5：删除基础示范协议](#model-access-sdk-step5)

### 先决条件
<a name="model-access-sdk-prerequisites"></a>
+ 将[AmazonBedrockFullAccess](aws-managed-policy/latest/reference/AmazonBedrockFullAccess.html)策略附加到 user/role 用于的 IAM SDK/CLI。
+ Bedrock SDK [ 设置：为亚马逊 Bedrock 设置 S AWS DK ](bedrock/latest/userguide/sdk-general-information-section.html)

  注意：以下说明使用 python3 作为示例
+ 如果您使用的是 AWS CLI，则这些命令需要 AWS CLI 版本 2.27.42 或更高版本。运行`aws --version`以检查您的版本并在需要时进行[更新](cli/latest/userguide/getting-started-install.html)。
+ 记下需要管理访问权限的模型的 modelID。

### 第 1 步：列出基础协议范本的报价
<a name="model-access-sdk-step1"></a>

使用此 API 获取特定型号的协议报价。这将提供用于在后续步骤中创建模型访问权限的OfferToken。

文档
+ API：[ListFoundationModelAgreementOffers](bedrock/latest/APIReference/API_ListFoundationModelAgreementOffers.html)
+ CLI 文档：基础模式协议报[价清单 ](cli/latest/reference/bedrock/list-foundation-model-agreement-offers.html)

------
#### [ AWS CLI ]

```
aws bedrock list-foundation-model-agreement-offers --model-id <ModelId>
```

------
#### [ Python ]

```
# Placeholder for modelId
model_id = "<enter model id here>" 
# Placeholder for offerId
offer_id = "<enter offer id here>"
try:
    # offerType= "ALL" means both public and private offers, if offerType isn't defined, the default would be "PUBLIC"
    model_agreement_offers_response = bedrock_client.list_foundation_model_agreement_offers(modelId=model_id,offerType="ALL")
    print(model_agreement_offers_response)
except ClientError as e:
    print(f"Failed to list foundation model offers for modelId: {model_id} due to the following error: {e}")
```

------

### 第 2 步：[仅限 Anthropic 模型需要一次性使用] 为首次使用的用户提供用例
<a name="model-access-sdk-step2"></a>

用于仅为 Anthropic 模型提供首次用户用例表格。这是获得账户中 Anthropic 模型访问权限的先决条件。在所有商业区域，每个账户或每个 AWS 组织只需要使用一次 API，但选择加入的区域除外，这些区域需要再次填写此表格。此要求不适用于通过`bedrock-mantle`终端访问的人体模型。

文档
+ API：[PutUseCaseForModelAccess](bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html)
+ CLI 文档：为模型访问设置[用例 ](cli/latest/reference/bedrock/put-use-case-for-model-access.html)

------
#### [ AWS CLI ]

```
aws bedrock put-use-case-for-model-access \
  --form-data <Base64EncodedFormData>
```

------
#### [ Python ]

```
# Placeholder for form data, replace the names
COMPANY_NAME = "<enter company name here>"
COMPANY_WEBSITE = "<enter company website here>"
INTENDED_USERS = "1" #for external users
INDUSTRY_OPTION = "<enter industry option here>"
OTHER_INDUSTRY_OPTION = "<enter other industry option here>"
USE_CASES = "<enter use cases here>"
form_data = {
    "companyName": COMPANY_NAME,
    "companyWebsite": COMPANY_WEBSITE,
    "intendedUsers": INTENDED_USERS,
    "industryOption": INDUSTRY_OPTION,
    "otherIndustryOption": OTHER_INDUSTRY_OPTION,
    "useCases": USE_CASES
}
form_data_json = json.dumps(form_data)
model_access_response = bedrock_client.put_use_case_for_model_access(formData=form_data_json)
```

------

对于 CLI，表单数据采用 base64 编码的 json 格式，格式如下。

```
{
    "companyName": COMPANY_NAME,
    "companyWebsite": COMPANY_WEBSITE,
    "intendedUsers": INTENDED_USERS,
    "industryOption": INDUSTRY_OPTION,
    "otherIndustryOption": OTHER_INDUSTRY_OPTION,
    "useCases": USE_CASES
}
```
+ COMPANY\_NAME：最大长度为 128 的字符串
+ COMPANY\_WEBSITE：最大长度为 128 的字符串
+ 目标用户：0、1 或 2。0：内部，1：外部，2： Internal\_and\_External
+ INDUSTRY\_OPTION：最大长度为 128 的字符串
+ OTHER\_INDUSTRY\_OPTION：最大长度为 128 的字符串
+ USE\_CASES：最大长度为 8192 的字符串

### 第 3 步：创建基础协议范本
<a name="model-access-sdk-step3"></a>

用于为基础模型创建协议（访问权限）。使用上面的优惠代币和 modelID。

文档
+ API：[CreateFoundationModelAgreement](bedrock/latest/APIReference/API_CreateFoundationModelAgreement.html)
+ CLI 文档：[创建基础模型协议 ](cli/latest/reference/bedrock/create-foundation-model-agreement.html)

------
#### [ AWS CLI ]

```
aws bedrock create-foundation-model-agreement \
  --model-id <ModelId> \
  --offer-token <OfferToken>
```

------
#### [ Python ]

```
offer_token= ''

for agreement_offer in model_agreement_offers_response['offers']:
    if  agreement_offer['offerId'] == offer_id:
            
            offer_token = agreement_offer['offerToken']
            print(f"offer token found. Offer token is {offer_token}")
            break


if(not offer_token):
    print(f"Offer token for  modelId: {model_id} is not found")
    
foundation_model_agreement_reponse = bedrock_client.create_foundation_model_agreement(offerToken= offer_token , modelId= model_id)
```

------

### 第 4 步：获取基础模型的可用性
<a name="model-access-sdk-step4"></a>

用于检查基础模型当前是否具有访问权限。使用上面的 modelID。

文档
+ API：[GetFoundationModelAvailability](bedrock/latest/APIReference/API_GetFoundationModelAvailability.html)
+ CLI 文档：[获取基础模型可用性 ](cli/latest/reference/bedrock/get-foundation-model-availability.html)

------
#### [ AWS CLI ]

```
aws bedrock get-foundation-model-availability \
  --model-id <ModelId>
```

------
#### [ Python ]

```
model_availability_response = bedrock_client.get_foundation_model_availability(modelId=model_id)
```

------

**预期的回应**  
`agreementAvailability`-`AVAILABLE` 如果存在访问权限，`NOT_AVAILABLE`则访问权限不存在。

```
{
  "modelId": "anthropic.claude-sonnet-4-20250514-v1:0",
  "agreementAvailability": {
    "status": "AVAILABLE"
  },
  "authorizationStatus": "AUTHORIZED",
  "entitlementAvailability": "AVAILABLE",
  "regionAvailability": "AVAILABLE"
}
```

### [可选] 步骤 5：删除基础示范协议
<a name="model-access-sdk-step5"></a>

用于删除基础协议范本（访问权限）。使用上面的 modelID。

**注意**  
删除模型访问权限不足以阻止将来的访问，因为调用模型将再次创建访问权限。为确保不会再次创建访问权限，请对该模型应用限制性拒绝 IAM 策略。

文档
+ API：[DeleteFoundationModelAgreement](bedrock/latest/APIReference/API_DeleteFoundationModelAgreement.html)
+ CLI 文档：[删除基础模型协议 ](cli/latest/reference/bedrock/delete-foundation-model-agreement.html)

------
#### [ AWS CLI ]

```
aws bedrock delete-foundation-model-agreement \
  --model-id <ModelId>
```

------
#### [ Python ]

```
delete_foundation_model_agreement_reponse = bedrock_client.delete_foundation_model_agreement(modelId= model_id)
```

------

## 在 AWS GovCloud （美国）中访问亚马逊 Bedrock 基础模型
<a name="model-access-govcloud"></a>

AWS GovCloud （美国）账户与标准 AWS 商业账户进行一对一关联。此关联商业账户用于账单、服务访问、支持目的和访问亚马逊 Bedrock 模型商城。有关与商业账户之间 GovCloud 关系的更多信息，请参阅 AWS GovCloud （美国）中的[标准账户关联](govcloud-us/latest/UserGuide/getting-started-standard-account-linking.html)。

对于第三方模型，除了 AWS 账户外，还需要在关联的 AWS 商业账户中启用模型访问权限。 GovCloud 对于亚马逊 Bedrock 提供的模型，只需要在 GovCloud 账户中启用模型访问权限。这是一个手动过程。

### GovCloud 在关联的 AWS 商业账户中启用 AWS 的模型访问权限（仅适用于第三方模型）
<a name="model-access-govcloud-commercial"></a>

可以使用两种方式在 AWS 商业账户中启用模型访问权限：

1. 调用`us-east-1`或`us-west-2`地区 AWS 商业账户所需的模型。

1. 使用`us-east-1`或`us-west-2`地区的 AWS 商业账户以编程方式启用 SDK/CLI 对模型的访问。这可以通过遵循前面各节中描述的步骤来完成。

**注意**  
在关联 AWS 商业账户中启用访问权限后，模型权限可能需要几分钟才能传播到关联的 AWS GovCloud （美国）账户。

### 启用 AWS GovCloud 账户的模型访问权限
<a name="model-access-govcloud-account"></a>

在 AWS GovCloud （美国），您可以使用该`us-gov-west-1`地区亚马逊 Bedrock 控制台中的**模型访问**页面启用基础模型，如下所述：

1. 确保您有权请求模型访问[权限以请求访问](bedrock/latest/userguide/model-access.html#model-access-permissions)或修改对 Amazon Bedrock 基础模型的访问权限。建议将[AmazonBedrockFullAccess](aws-managed-policy/latest/reference/AmazonBedrockFullAccess.html)策略附加到 user/role 正在使用的。

1. 登录该`us-gov-west-1`地区的亚马逊 Bedrock 控制台，网址为。[ https://console.aws.amazon.com/bedrock/ ](https://console.aws.amazon.com/bedrock/)

1. 在左侧导航窗格中的 **Bedrock 配置**下，选择**模型访问权限**。

1. 在**模型访问权限**页面上，选择**修改模型访问权限**。

1. 选择您希望账户有权访问的模型，并取消选择您不想让账户访问的模型。您有以下选项：

   1. 在请求访问权限之前，请务必查看**终端用户许可协议 (EULA)** 以了解使用模型的相关条款和条件。

   1. 选中单个模型旁边的复选框以选中或取消选中该模型。

   1. 选中顶部的复选框以选中或取消选中所有模型。

   1. 选择模型的分组方式，然后通过选中该组旁边的复选框来选中或取消选中该组中的所有模型。例如，您可以选择按提供商**分组，**然后选中 ** Cohere 旁边的复选框以选中或取消选中所有 Cohere ** 模型。

1. 选择**下一步**。

1. 如果您添加了对 Anthropic 模型的访问权限，则必须描述您的用例详细信息。选择**提交应用场景详细信息**，填写表单，然后选择**提交表单**。完成提供商的表单后，将根据您的答案通知授予还是拒绝访问权限。

1. 查看您正在进行的访问权限更改，然后阅读**条款**。

1. 如果您同意这些条款，请选择**提交**。更改可能需要几分钟才会反映在控制台中。

1. 如果您的请求成功，则**访问状态**将更改为**已授予访问权限**或**可请求**。