

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

# 为 Amazon Personalize 资源添加标签
<a name="tagging-resources"></a>

*标签*是您可以选择定义的标签，并将其与 AWS 资源（包括某些类型的 Amazon Personalize 资源）相关联。一个资源最多可以有 50 个标签。

标签可帮助您以不同方式（例如按用途、环境或其他标准）对资源进行分类和管理。例如，您可以使用标签将收入分配给不同的职能，或者为不同的资源确定开发环境。

 要按标签检索 Amazon 个性化资源，您可以使用 Resource Groups Tagging API 中的 GetResources 筛选条件。有关更多信息，请参阅 Res *ource [GetResources](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html)Groups Tagging API* API 参考指南。

您可以向以下类型的 Amazon Personalize 资源添加标签：
+  批量推理作业 
+  批量细分作业 
+ 市场活动
+ 数据集
+ 数据集组
+ 数据集导入和导出作业
+ 事件跟踪器
+ 筛选条件
+ 推荐器
+ 解决方案
+ 解决方案版本

**Topics**
+ [

# 指南和要求
](personalize-managing-tags.md)
+ [

# 向 Amazon Personalize 资源添加标签
](tags-add.md)
+ [

# 从 Amazon Personalize 资源中删除标签
](tags-remove.md)
+ [

# 在 IAM 策略中使用标签
](tags-iam.md)

# 指南和要求
<a name="personalize-managing-tags"></a>

每个标签都包含您定义的一个标签键和一个可选的标签值。标签键 是一种常见的标签，充当更具体的标签值的类别。标签值 充当标签键的描述符。

例如，如果您有两个版本的 Amazon Personalize 数据集组（一个用于内部测试，另一个用于生产），则您可为这两个项目分配一个 `Environment` 标签键。`Environment` 标签的标签值，对于其中一个版本的数据集组可以为 `Test`，对于另一个版本可以为 `Production`。

以下限制适用于标签：
+ 每个资源的标签数上限：50
+ 最大键长度：128 个 Unicode 字符（采用 UTF-8 格式）
+ 最大值长度：256 个 Unicode 字符 (采用 UTF-8 格式)
+ 标签键和值可以包含以下字符：A-Z、a-z、0-9、空格和 \$1 . : / = \$1 @ –（连字符）。这是支持标签的 AWS 服务中可用的标准字符集。一些服务支持其他符号。
+ 标签键和标签值区分大小写。
+ 对于每个关联的资源，每个标签键都必须是唯一的，并且只能有一个标签值。
+ 您的标签键和标签值不能以开头`aws:`。 AWS 服务应用以开头的标签`aws:`，并且这些标签无法修改。它们不计入标签限制。
+ 您无法仅根据其标签更新或删除资源。您还必须指定 Amazon 资源名称 (ARN) 或资源 ID，具体取决于您使用的操作。

## 附加信息
<a name="tagging-additional-resources-information"></a>

有关标签的更多信息，请参阅以下资源。
+ AWS *AWS 一般*参考文@@ [献中的标签原则](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)
+ [AWS 标记策略](https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf)（可下载的 PDF）
+ AWS *AWS IAM 用户指南*中的@@ [访问控制](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)
+ AWS 《*AWS Organizations 用户*指南》中的@@ [标签策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)

# 向 Amazon Personalize 资源添加标签
<a name="tags-add"></a>

您可以使用 Amazon Personalize 控制台 AWS Command Line Interface （AWS CLI）或，在 Amazon Personalize 资源中添加、显示、更新和删除标签密钥和值 AWS SDKs。以下示例演示如何向 Amazon Personalize 数据集组添加标签。您可以用同样的方式向其他 Amazon Personalize 资源添加标签。

**Topics**
+ [

## 添加标签（控制台）
](#add-tag-console)
+ [

## 添加标签 (AWS CLI)
](#add-tag-cli)
+ [

## 添加标签 (AWS SDKs)
](#add-tag-sdk)

## 添加标签（控制台）
<a name="add-tag-console"></a>



在 Amazon Personalize 中创建资源时，您可以使用 Amazon Personalize 控制台添加可选标签。以下示例向数据集组添加标签。

**向新数据集组添加标签**

1. 在[https://console.aws.amazon.com/personalize/家](https://console.aws.amazon.com/personalize/home)中打开 Amazon Personalize 控制台并登录您的账户。

1. 选择**创建数据集组**。

1. 对于**名称**，输入名称。

1. 对于**域**，选择一个域。

1. 展开**标签**部分，选择**添加新标签**。

1. 对于**键**和**值**，输入对应的值。

   例如，分别为 **Environment** 和 **Test**。

1. 要添加更多标签，请选择**添加新标签**。

   您最多可以为每个资源添加 50 个标签。

1. 选择**下一步**来继续创建您的资源。

向现有资源添加标签的方法类似：选择您的资源并使用**标签**字段添加标签。

## 添加标签 (AWS CLI)
<a name="add-tag-cli"></a>

在创建资源或向现有资源添加标签时，可以使用 AWS Command Line Interface (AWS CLI) 来添加标签。

**Topics**
+ [

### 在创建资源时添加标签
](#create-resource-with-tags-cli)
+ [

### 向现有资源添加标签
](#add-tag-existing-resource-cli)

### 在创建资源时添加标签
<a name="create-resource-with-tags-cli"></a>

要创建新资源并使用为其添加标签 AWS CLI，请对该资源使用相应的`create`命令并包括`tags`参数和值。例如，以下命令针对 ECOMMERCE 域创建一个名为 `myDatasetGroup` 的新域数据集组，并添加以下标签：带有 `Test` 标签值的 `Environment` 标签键以及 `Owner` 标签键和 `xyzCorp` 值。

```
aws personalize create-dataset-group \
--name myDatasetGroup \
--domain ECOMMERCE \
--tags tagKey=Environment,tagValue=Test tagKey=Owner,tagValue=xyzCorp
```

有关可用于创建 Amazon Personalize 资源的命令的信息，请参阅《[亚马逊个性化 AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/personalize/)》。

### 向现有资源添加标签
<a name="add-tag-existing-resource-cli"></a>

要向现有资源添加标签，请使用 `tag-resource` 命令。指定资源的 ARN，并在 `tags` 参数中提供标签键和值。

```
aws personalize tag-resource \
--resource-arn resource ARN \
--tags tagKey=key,tagValue=value
```

## 添加标签 (AWS SDKs)
<a name="add-tag-sdk"></a>

您可以在创建资源时使用添加标签，或者为现有资源添加标签。 AWS SDKs 

**Topics**
+ [

### 在创建资源时添加标签
](#create-resource-with-tags-sdk)
+ [

### 向现有资源添加标签
](#add-tag-existing-resource-sdk)

### 在创建资源时添加标签
<a name="create-resource-with-tags-sdk"></a>

要创建新资源并使用为其添加标签 AWS SDKs，请使用适当的`create`方法。使用 `tags` 参数为每个标签指定键值对。例如，以下代码针对 ECOMMERCE 域创建一个名为 `myDatasetGroup` 的新域数据集组，并添加以下标签：带有 `Test` 标签值的 `Environment` 标签键以及 `Owner` 标签键和 `xyzCorp` 值。

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

response = personalize.create_dataset_group(
  name = 'myDatasetGroup',
  domain = 'ECOMMERCE',
  tags = [
    {
      'tagKey': 'Environment',
      'tagValue': 'Test'
    },
    {
      'tagKey': 'Owner',
      'tagValue': 'xyzCorp'    
    }
  ]    
)
dsg_arn = response['datasetGroupArn']

description = personalize.describe_dataset_group(datasetGroupArn = dsg_arn)['datasetGroup']

print('Name: ' + description['name'])
print('ARN: ' + description['datasetGroupArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for Java 2.x ]

```
public static String createDomainDatasetGroup(PersonalizeClient personalizeClient, 
                                              String datasetGroupName,
                                              String domain) {
    
    try {
         
        ArrayList <Tag> tags = new ArrayList<>();

        Tag tag1 = Tag.builder()
                .tagKey("Environment")
                .tagValue("Test")
                .build();
        tags.add(tag1);
        Tag tag2 = Tag.builder()
                .tagKey("Owner")
                .tagValue("xyzCorp")
                .build();
        tags.add(tag2);
    
        CreateDatasetGroupRequest createDatasetGroupRequest = CreateDatasetGroupRequest.builder()
                .name(datasetGroupName)
                .domain(domain)
                .tags(tags)
                .build();
        return personalizeClient.createDatasetGroup(createDatasetGroupRequest).datasetGroupArn();
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
    return "";
}
```

------

### 向现有资源添加标签
<a name="add-tag-existing-resource-sdk"></a>

以下代码展示了如何向现有 Amazon Personalize 资源添加标签。指定要为其添加标签的资源的 Amazon 资源名称 (ARN)，并为每个标签指定键值对。

------
#### [ SDK for Python (Boto3) ]

```
import boto3
personalize = boto3.client('personalize')

add_tags_response = personalize.tag_resource(
  resourceArn = "resourceArn",
  tags = [
    {
      'tagKey': 'Environment',
      'tagValue': 'Test'
    },
    {
      'tagKey': 'Owner',
      'tagValue': 'xyzCorp'    
    }
  ]    
)
```

------
#### [ SDK for Java 2.x ]

```
public static void tagResource(PersonalizeClient personalizeClient, 
                                              String resourceArn,
                                              String domain) {
    
    try {
         
         ArrayList <Tag> tagList = new ArrayList<>();

          Tag tag1 = Tag.builder()
                  .tagKey("Environment")
                  .tagValue("Test")
                  .build();
          tags.add(tag1);
          Tag tag2 = Tag.builder()
                  .tagKey("Owner")
                  .tagValue("xyzCorp")
                  .build();
          tags.add(tag2);
    
        TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
                .resourceArn(resourceArn)
                .tags(tagList)
                .build();
                
        personalizeClient.tagResource(tagResourceRequest);
        System.out.println("Tags have been added to "+ resourceArn);
        
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
    return "";
}
```

------

# 从 Amazon Personalize 资源中删除标签
<a name="tags-remove"></a>

您可以使用 Amazon Personalize 控制台或使用 AWS Command Line Interface (AWS CLI) 或 [UntagResource](API_UntagResource.md) API 操作从 Amazon Personalize 资源中移除标签 AWS SDKs。以下示例演示如何从 Amazon Personalize 数据集组删除标签。您可以用同样的方式从其他 Amazon Personalize 资源中删除标签。

**Topics**
+ [

## 删除标签（控制台）
](#remove-tag-console)
+ [

## 删除标签（AWS CLI）
](#remove-tag-cli)
+ [

## 删除标签（AWS SDKs）
](#remove-tag-sdks)

## 删除标签（控制台）
<a name="remove-tag-console"></a>

在 Amazon Personalize 中为资源添加标签后，您可以使用 Amazon Personalize 控制台删除标签。以下示例从数据集组中删除标签 

**从数据集组中删除标签**

1. 在[https://console.aws.amazon.com/personalize/家](https://console.aws.amazon.com/personalize/home)中打开 Amazon Personalize 控制台并登录您的账户。

1. 选择您的数据集组。

1. 在页面底部的**标签**选项卡中，选择**管理标签**。

1. 对于要删除的每个标签，选择**删除**。

1. 选择**保存**以删除标签。

## 删除标签（AWS CLI）
<a name="remove-tag-cli"></a>

要使用从现有资源中移除标签 AWS CLI，请使用以下`untag-resource`命令。对于 `resource-arn`，指定源的 Amazon 资源名称（ARN）。对于 `tag-keys`，指定要删除的标签的键。

```
aws personalize untag-resource \
--resource-arn resource ARN \
--tag-keys key1 key2
```

## 删除标签（AWS SDKs）
<a name="remove-tag-sdks"></a>

要使用从现有 Amazon Personalize 资源中移除标签 AWS SDKs，请使用 [UntagResource](API_UntagResource.md) API 操作。以下代码演示如何使用 SDK for Python（Boto3）从数据集组中删除多个标签。对于 `resourceArn`，指定源的 Amazon 资源名称（ARN）。对于 `tagKeys`，指定要删除的标签的键。

```
import boto3
        
personalize = boto3.client('personalize')

response = personalize.untag_resource(
    resourceArn="Resource ARN",
    tagKeys=["tag1Key", "tag2Key"]
)
```

# 在 IAM 策略中使用标签
<a name="tags-iam"></a>

开始实施标签后，您可以向 AWS Identity and Access Management (IAM) 策略和 API 操作应用基于标记的资源级权限。这包括支持在创建资源时为资源添加标签的操作。通过以这种方式使用标签，您可以精细控制 AWS 账户中的哪些群组和用户有权创建和标记资源，以及哪些群组和用户有权更广泛地创建、更新和删除标签。

例如，您可以创建一个策略，允许用户只要其名称是 Amazon Personalize 资源的 `Owner` 标签中的值，就可以完全访问这些资源。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "ModifyResourceIfOwner",
         "Effect": "Allow",
         "Action": "personalize:*",
         "Resource": "*",
         "Condition": {
            "StringEqualsIgnoreCase": {
               "aws:ResourceTag/Owner": "${aws:username}"
            }
         }
      }
   ]
}
```

------

以下示例演示如何创建允许创建和删除数据集的策略。只有在用户名为 `johndoe` 时，才允许执行这些操作。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "personalize:CreateDataset",
                "personalize:DeleteDataset"
            ],
            "Resource": "arn:aws:personalize:*:*:dataset/*",
            "Condition": {
                "StringEquals": {"aws:username" : "johndoe"}
            }
        },
        {
            "Effect": "Allow",
            "Action": "personalize:DescribeDataset",
            "Resource": "*"
        }
    ]
}
```

------

如果您定义基于标签的资源级权限，该权限立即生效。这意味着，您的资源在创建后会更安全，而且您可以快速地开始将标签用于新资源。您还可以使用资源级权限来控制哪些标签键和值可以与新的和现有资源关联。有关更多信息，请参阅*AWS 《IAM 用户指南》*中的[使用标签控制访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。