

# 将标签与 S3 向量索引结合使用
<a name="vector-index-tagging"></a>

Amazon 标签是用于保存有关资源（在本例中为 Amazon S3 向量索引）的元数据的键值对。您可以在创建 S3 向量索引时为其添加标签，也可以管理现有向量索引上的标签。有关标签的一般信息，请参阅[添加标签以进行成本分配或基于属性的访问权限控制（ABAC）](tagging.md)。

**注意**  
在向量索引上使用标签时，除了标准 S3 API 请求费率之外，没有任何其他费用。有关更多信息，请参阅 [Amazon S3 定价](https://www.amazonaws.cn/s3/pricing/)。

## 将标签与向量索引结合使用的常用方法
<a name="common-ways-tags-vector-indexes"></a>

使用 S3 向量索引上的标签执行以下操作：
+ **成本分配**：在 Amazon 账单与成本管理中按向量索引标签跟踪存储成本。有关更多信息，请参阅 [将标签用于成本分配](tagging.md#using-tags-for-cost-allocation)。
+ **基于属性的访问权限控制（ABAC）**：根据 S3 向量索引的标签扩展访问权限并授予对这些索引的访问权限。有关更多信息，请参阅 [使用标签进行基于属性的访问权限控制（ABAC）](tagging.md#using-tags-for-abac)。

**注意**  
您可以将相同的标签同时用于成本分配和访问权限控制。

### 适用于 S3 向量索引的 ABAC
<a name="abac-vector-indexes"></a>

Amazon S3 向量索引支持使用标签进行基于属性的访问权限控制（ABAC）。请在您的 Amazon Organizations、IAM 和 S3 向量索引策略中使用基于标签的条件键。对于企业，Amazon S3 中的 ABAC 支持跨多个 Amazon 账户进行授权。

在 IAM 策略中，您可以使用以下全局条件键，根据向量索引的标签来控制对 S3 向量索引的访问：

`aws:ResourceTag/key-name`  
使用此键可将您在策略中指定的标签键/值对与附加到资源的键/值对进行比较。例如，您可能会要求只有在资源具有附加的标签键 `Dept` 和值 `Marketing` 时才允许访问该资源。有关更多信息，请参阅[控制对 Amazon 资源的访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。

`aws:RequestTag/key-name`  
使用此键可将请求中传递的标签键/值对与您在策略中指定的标签对进行比较。例如，您可以检查请求是否包含标签键 `Dept` 并具有 `Accounting` 值。有关更多信息，请参阅[在 Amazon 请求期间控制访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)。您可以使用此条件键来限制可以在 `TagResource` 和 `CreateIndex` API 操作期间传递哪些标签键值对。

`aws:TagKeys`  
使用此键可将请求中的标签键与您在策略中指定的键进行比较。我们建议当使用策略来通过标签控制访问时，请使用 `aws:TagKeys` 条件键来定义允许的标签键。有关示例策略和更多信息，请参阅[根据标签键控制访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)。您可以使用标签创建 S3 向量索引。要在 `CreateVectorBucket` API 操作期间支持添加标签，您必须创建同时包含 `s3vectors:TagResource` 和 `s3vectors:CreateVectorBucket` 操作的策略。然后，您可以使用 `aws:TagKeys` 条件键来强制在 `CreateVectorBucket` 请求中使用特定的标签。

### 适用于向量索引的示例 ABAC 策略
<a name="example-abac-policies-vector-indexes"></a>

请参阅以下适用于 Amazon S3 向量索引的示例 ABAC 策略。

#### 1.1：用于创建或修改具有特定标签的向量索引的 IAM 策略
<a name="iam-policy-create-modify-indexes-tags"></a>

在此 IAM 策略中，具有此策略的用户或角色仅在以下情况下才能创建 S3 向量索引：在向量索引创建请求中使用标签键 `project` 和标签值 `Trinity` 为向量索引添加标签。他们还可以在现有 S3 向量索引上添加或修改标签，前提是 `TagResource` 请求包含标签键值对 `project:Trinity`。此策略不会授予对向量索引或其对象的读取、写入或删除权限。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateVectorIndexWithTags",
      "Effect": "Allow",
      "Action": [
        "s3vectors:CreateIndex",
        "s3vectors:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/{{project}}": [
            "{{Trinity}}"
          ]
        }
      }
    }
  ]
}
```

#### 1.2：用于修改现有资源上的标签以维护标签治理的 IAM 策略
<a name="iam-policy-modify-tags-governance"></a>

在此 IAM 策略中，IAM 主体（用户或角色）只有在向量索引的 `project` 标签的值与主体的 `project` 标签的值匹配时，才会修改向量索引上的标签。对于这些向量索引，只允许使用在 `aws:TagKeys` 条件键中指定的四个标签 `project`、`environment`、`owner` 和 `cost-center`。这有助于强制执行标签治理，防止未经授权修改标签，并使标签架构跨向量索引保持一致。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3vectors:TagResource"
      ],
      "Resource": "arn:aws::s3vectors:{{us-west-2}}:{{111122223333}}:bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/{{project}}": "${aws:PrincipalTag/{{project}}}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "{{project}}",
            "{{environment}}",
            "{{owner}}",
            "{{cost-center}}"
          ]
        }
      }
    }
  ]
}
```