

# 在 AWS WA Tool 中为工作负载自定义剖析
<a name="lenses-custom"></a>

您可以使用自己的支柱、问题、最佳实践和改进计划来创建自定义剖析。您可以像应用 AWS 提供的剖析一样将自定义剖析应用于工作负载。您还可以与其他 AWS 账户共享您创建的自定义剖析，也可以与您共享他人拥有的自定义剖析。

您可以量身定制自定义剖析中特定于某种技术的问题，能帮助您满足企业内监管需求的问题，或者能扩展由 Well-Architected Framework 和 AWS 提供的指导的问题。与现有剖析一样，您可以通过创建里程碑来跟踪一段时间内的进度，并通过生成报告来提供定期状态。

**Topics**
+ [在 AWS WA Tool 中查看自定义剖析](lenses-viewing.md)
+ [在 AWS WA Tool 中为工作负载创建自定义剖析](lenses-create.md)
+ [在 AWS WA Tool 中预览工作负载的自定义剖析](lenses-preview.md)
+ [在 AWS WA Tool 中首次发布自定义剖析](lenses-publish.md)
+ [在 AWS WA Tool 中发布自定义剖析的更新](lenses-publish-update.md)
+ [在 AWS WA Tool 中共享自定义剖析](lenses-sharing.md)
+ [在 AWS WA Tool 中向自定义剖析添加标签](lenses-tagging.md)
+ [在 AWS WA Tool 中删除自定义剖析](lenses-deleting.md)
+ [AWS WA Tool 中的剖析格式规范](lenses-format-specification.md)

# 在 AWS WA Tool 中查看自定义剖析
<a name="lenses-viewing"></a>

您可以查看您拥有的自定义剖析以及已与您共享的自定义剖析的详细信息。

**查看剖析**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。
**注意**  
 如果您尚未创建自定义剖析，或者没有与您共享的自定义剖析，则**自定义剖析**部分为空。

1. 选择要查看的自定义剖析：
   + **我拥有的** – 显示您创建的自定义剖析。
   + **与我共享的** - 显示已与您共享的自定义剖析。

1. 通过以下方法之一选择要查看的自定义剖析：
   + 选择剖析的名称。
   + 选择剖析，然后选择**查看详细信息**。

屏幕上随即显示 [在 AWS WA Tool 中查看工作负载的剖析详细信息](lenses-details.md) 页面。

**自定义剖析**页面具有以下字段：

**名称**  
剖析的名称。

**所有者**  
拥有自定义剖析的 AWS 账户 ID。

**状态**  
状态为**已发布**表示自定义剖析已发布，可以应用于工作负载或与其他 AWS 账户共享。  
状态为**草稿**表示自定义剖析已创建但尚未发布。必须先发布自定义剖析，然后才能将其应用于工作负载或与其他账户共享。

**版本**  
自定义剖析的版本名称。

**上次更新时间**  
上次更新自定义剖析的日期和时间。

# 在 AWS WA Tool 中为工作负载创建自定义剖析
<a name="lenses-create"></a>

**创建自定义剖析**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 选择**创建自定义剖析**。

1. 选择**下载文件**以下载 JSON 模板文件。

1. 使用您常用的文本编辑器打开 JSON 模板文件，然后为您的自定义剖析添加数据。这些数据包括您的支柱、问题、最佳实践和改进计划链接。

   有关详细信息，请参阅[AWS WA Tool 中的剖析格式规范](lenses-format-specification.md)。自定义剖析的大小不能超过 500 KB。

1. 选择**选择文件**以选择您的 JSON 文件。

1. （可选）在**标签**部分，添加要与自定义剖析关联的所有标签。

1. 选择**提交和预览**可预览自定义剖析，或选择**提交**直接提交自定义剖析而不进行预览。

   如果您选择**提交和预览**自定义剖析，则可以选择**下一步**来浏览剖析预览，或者选择**退出预览**返回到**自定义剖析**。

如果验证失败，请编辑您的 JSON 文件并尝试再次创建自定义剖析。

AWS WA Tool 验证您的 JSON 文件后，您的自定义剖析将显示在**自定义剖析**中。

创建自定义剖析后，其将处于**草稿**状态。必须先[发布剖析](lenses-publish.md)，然后才能将其应用于工作负载或与其他 AWS 账户共享。

您在一个 AWS 账户中最多可以创建 15 个自定义剖析。

**免责声明**  
请勿在您的自定义剖析中或通过您的自定义剖析包含或收集最终用户或其他可识别个人的个人身份信息（PII）。如果您的自定义剖析或与您共享并在您的账户中使用的自定义剖析确实包含或收集了 PII，则您有责任：确保根据适用法律处理包含的 PII，提供足够的隐私声明，并获取处理此类数据的必要同意。

# 在 AWS WA Tool 中预览工作负载的自定义剖析
<a name="lenses-preview"></a>

**预览自定义剖析**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 只能预览处于**草稿**状态的剖析。选择所需的**草稿**自定义剖析，然后选择**预览体验**。

1. 选择**下一步**浏览剖析预览。

1. （可选）您可以在预览的每个问题中选择最佳实践，然后选择**根据答案更新**来测试您的风险逻辑，以此审核您的**改进计划**。如果需要更改，可以在发布前更新 JSON 模板中的[风险规则](lenses-format-specification.md#lenses-format-risk-rules)。

1. 选择**退出预览**可返回到自定义剖析。

**注意**  
您也可以通过在[创建自定义剖析](lenses-create.md)时选择**提交和预览**来预览自定义剖析。

# 在 AWS WA Tool 中首次发布自定义剖析
<a name="lenses-publish"></a>

**发布自定义剖析**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 选择所需的自定义剖析，然后选择**发布剖析**。

1. 在**版本名称**框中，输入版本更改的唯一标识符。此值最多可包含 32 个字符，并且只能包含字母数字字符和句点（“.”）。

1. 选择**发布自定义剖析**。

   自定义剖析发布后，它将处于**已发布**状态。

自定义剖析现在可以应用于工作负载或者与其他 AWS 账户或用户共享。

# 在 AWS WA Tool 中发布自定义剖析的更新
<a name="lenses-publish-update"></a>

**发布现有自定义剖析的更新**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 选择所需的自定义剖析，然后选择**编辑**。

1. 如果您尚未准备好更新的 JSON 文件，请选择**下载文件**以下载当前自定义剖析的副本。使用您常用的文本编辑器编辑下载的 JSON 文件，并进行所需的更改。

1. 选择**选择文件**可选择更新后的 JSON 文件，然后选择**提交和预览**可预览自定义剖析，或者选择**提交**可直接提交自定义剖析而不进行预览。

   自定义剖析的大小不能超过 500 KB。

   AWS WA Tool 验证您的 JSON 文件后，您的自定义剖析将显示在处于**草稿**状态的自定义剖析中。

1. 再次选择自定义剖析，然后选择**发布剖析**。

1. 选择**在发布之前审核更改**，以验证对自定义剖析所做的更改是否正确。这包括验证以下内容：
   + 自定义剖析的名称
   + 支柱名称
   + 新增、更新和删除的问题

   选择**下一步**。

1. 指定版本更改的类型。  
**主要版本**  
表示剖析已进行了重大更改。用于影响自定义剖析含义的更改。  
任何应用剖析的工作负载都将收到通知，告知其有新版本的自定义剖析可用。  
主要版本更改*不会*自动应用于使用剖析的工作负载。  
**次要版本**  
表示剖析已进行了细微更改。用于较小的更改，例如更改文本或更新网址链接。  
次要版本更改会自动应用于使用自定义剖析的工作负载。

   选择**下一步**。

1. 在**版本名称**框中，输入版本更改的唯一标识符。此值最多可包含 32 个字符，并且只能包含字母数字字符和句点（“.”）。

1. 选择**发布自定义剖析**。

   自定义剖析发布后，它将处于**已发布**状态。

更新后的自定义剖析现在可以应用于工作负载或者与其他 AWS 账户或用户共享。

如果更新是*主要版本更改*，则任何应用了先前版本剖析的工作负载都将收到通知，告知其有新版本可用，并可以选择升级。

次要版本更新将自动应用，而不会发出任何通知。

您最多可以创建 100 个版本的自定义剖析。

# 在 AWS WA Tool 中共享自定义剖析
<a name="lenses-sharing"></a>

您可以与其他 AWS 账户、用户、AWS Organizations 以及企业单位（OU）共享自定义剖析。

**与其他 AWS 账户和用户共享自定义剖析**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 选择要共享的自定义剖析，然后选择**查看详细信息**。

1. 在 [在 AWS WA Tool 中查看工作负载的剖析详细信息](lenses-details.md) 页面上，选择**共享**。然后选择**创建**和**为用户或账户创建共享**，以创建剖析共享邀请。

1. 输入要与之共享自定义剖析的用户的 12 位 AWS 账户 ID 或 ARN。

1. 选择**创建**以向指定的 AWS 账户或用户发送剖析共享邀请。

您可以与最多 300 个 AWS 账户或用户共享自定义剖析。

如果七天内未接受剖析共享邀请，则邀请将自动过期。

**重要**  
在与企业或企业单位（OU）共享自定义剖析之前，必须[启用 AWS Organizations 访问权限](sharing.md#getting-started-sharing-orgs)。

**与您的企业或 OU 共享自定义剖析**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 选择要共享的自定义剖析。

1. 在 [在 AWS WA Tool 中查看工作负载的剖析详细信息](lenses-details.md) 页面上，选择**共享**。然后选择**创建**和**为企业创建共享**。

1. 在**创建自定义剖析共享**页面上，选择是向整个企业授予权限，还是向一个或多个 OU 授予权限。

1. 选择**创建**可共享自定义剖析。

要查看谁共享了自定义剖析的访问权限，请从[在 AWS WA Tool 中查看工作负载的剖析详细信息](lenses-details.md)页面中选择**共享**。

**免责声明**  
与其他 AWS 账户共享您的自定义剖析，即表示您同意 AWS 将您的自定义剖析提供给其他账户。即使您从自己的 AWS 账户删除了自定义剖析或终止了您的 AWS 账户，这些其他账户也可能会继续访问和使用您共享的自定义剖析。

# 在 AWS WA Tool 中向自定义剖析添加标签
<a name="lenses-tagging"></a>

**向自定义剖析添加标签**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 选择要更新的自定义剖析。

1. 在**标签**部分，选择**管理标签**。

1. 选择**添加新标签**，然后为要添加的每个标签输入**键**和**值**。

1. 选择**保存**。

要删除标签，请选择要删除的标签旁的**删除**。

# 在 AWS WA Tool 中删除自定义剖析
<a name="lenses-deleting"></a>

**删除自定义剖析**

1. 登录 AWS 管理控制台，并通过以下网址打开 AWS Well-Architected Tool 控制台：[https://console.aws.amazon.com/wellarchitected/](https://console.aws.amazon.com/wellarchitected/)。

1. 在左侧导航窗格中，选择**自定义剖析**。

1. 选择要删除的自定义剖析，然后选择**删除**。

1. 选择**删除**。

   应用剖析的现有工作负载会收到通知，告知其自定义剖析已被删除，但可以继续使用。自定义剖析无法再应用于新的工作负载。

**免责声明**  
与其他 AWS 账户共享您的自定义剖析，即表示您同意 AWS 将您的自定义剖析提供给其他账户。即使您从自己的 AWS 账户删除了自定义剖析或终止了您的 AWS 账户，这些其他账户也可能会继续访问和使用您共享的自定义剖析。

# AWS WA Tool 中的剖析格式规范
<a name="lenses-format-specification"></a>

剖析是使用特定的 JSON 格式定义的。开始创建自定义剖析时，可以选择下载模板 JSON 文件。您可以使用此文件作为自定义剖析的基础，因为它定义了支柱、问题、最佳实践和改进计划的基本结构。

## 剖析部分
<a name="lenses-format-lens"></a>

本部分定义了自定义剖析本身的属性。这是它的名称和描述。
+ `schemaVersion`：要使用的自定义剖析模式的版本。由模板设置，请勿更改。
+ `name`: 剖析的名称。名称最多可以有 128 个字符。
+ `description`：剖析的文本描述。选择剖析以在创建工作负载期间添加或选择剖析以稍后应用于现有工作负载时，会显示此文本。描述长度最多为 2048 个字符。

```
    "schemaVersion": "2021-11-01",
    "name": "Company Policy ABC",
    "description": "This lens provides a set of specific questions to assess compliance with company policy ABC-2021 as revised on 2021/09/01.",
```

## 支柱部分
<a name="lenses-format-pillars"></a>

本部分定义了与自定义剖析相关的支柱。您可以将您的问题映射到 AWS Well-Architected Framework 的支柱和/或定义自己的支柱。

您最多可以在自定义剖析中定义 10 个支柱。
+ `id`: 支柱的 ID。ID 可以包含 3 到 128 个字符，并且仅包含字母数字和下划线（“\$1”）字符。支柱中使用的 ID 必须是唯一的。

  将您的问题映射到框架的支柱时，请使用以下 ID：
  + `operationalExcellence`
  + `security`
  + `reliability`
  + `performance`
  + `costOptimization`
  + `sustainability`
+ `name`：支柱的名称。名称最多可以有 128 个字符。

```
     "pillars": [
        {
            "id": "company_Privacy",
            "name": "Privacy Excellence",
            .
            .
            .
        },
        {
            "id": "company_Security",
            "name": "Security",
            .
            .
            .
        }
     ]
```

## 问题部分
<a name="lenses-format-questions"></a>

本部分定义了与支柱相关的问题。

您最多可以为自定义剖析中的一个支柱定义 20 个问题。
+ `id`：问题的 ID。ID 可以包含 3 到 128 个字符，并且仅包含字母数字和下划线（“\$1”）字符。问题中使用的 ID 必须是唯一的。
+ `title`：问题的标题。标题最多可以有 128 个字符。
+ `description`：更详细地描述了问题。描述长度最多为 2048 个字符。
+ `helpfulResource displayText`：可选。提供有关问题的有用信息的文本。文本最多可以有 2048 个字符。如果指定了 `helpfulResource url`，则必须指定。
+ `helpfulResource url`：可选。更详细地解释问题的 URL 资源。URL 必须以 `http://` 或 `https://` 开头。

**注意**  
 将自定义剖析工作负载同步到 Jira 时，“questions”部分会同时显示问题的“id”和“title”。  
 Jira 工单中使用的格式是 `[ QuestionID ] QuestionTitle`。

```
"questions": [
    {
        "id": "privacy01",
        "title": "How do you ensure HR conversations are private?",
        "description": "Career and benefits discussions should occur on secure channels only and be audited regularly for compliance.",
        "helpfulResource": {
            "displayText": "This is helpful text for the first question",
            "url": "https://example.com/poptquest01_help.html"
        },
        .
        .
        .
    },
    {
        "id": "privacy02",
        "title": "Is your team following the company privacy policy?",
        "description": "Our company requires customers to opt-in to data use and does not disclose customer data to third parties either individually or in aggregate.",
        "helpfulResource": {
            "displayText": "This is helpful text for the second question",
            "url": "https://example.com/poptquest02_help.html"
        },
        .
        .
        .
    }
]
```

## 选项部分
<a name="lenses-format-choices"></a>

本部分定义了与问题相关的选项。

您最多可以为自定义剖析中的一个问题定义 15 个选项。
+ `id`：选项的 ID。ID 可以包含 3 到 128 个字符，并且仅包含字母数字和下划线（“\$1”）字符。必须为问题中的每个选项指定唯一的 ID。添加后缀为 `_no` 的选项将作为问题的 `None of these` 选项。
+ `title`：选项的标题。标题最多可以有 128 个字符。
+ `helpfulResource displayText`：可选。提供有关选项的有用信息的文本。文本最多可以有 2048 个字符。如果指定了 `helpfulResource url`，则必须包含。
+ `helpfulResource url`：可选。更详细地解释选项的 URL 资源。URL 必须以 `http://` 或 `https://` 开头。
+ `improvementPlan displayText`：描述如何改进选项的文本。文本最多可以有 2048 个字符。除 `improvementPlan` 选项外，每个选项都必须有 `None of these`。
+ `improvementPlan url`：可选。可以帮助改进的 URL 资源。URL 必须以 `http://` 或 `https://` 开头。
+ `additionalResources type`：可选。额外资源的类型。值可以是 `HELPFUL_RESOURCE` 或 `IMPROVEMENT_PLAN`。
+ `additionalResources content`：可选。为其它资源指定 `displayText` 和 `url` 值。最多可以为一个选项指定五个额外的有用资源以及五个额外的改进计划项目。
  + `displayText`：可选。描述有用资源或改进计划的文本。文本最多可以有 2048 个字符。如果指定了 `url`，则必须包含。
  + `url`：可选。有用资源或改进计划的 URL 资源。URL 必须以 `http://` 或 `https://` 开头。

**注意**  
 将自定义剖析工作负载同步到 Jira 时，“choices”部分会显示问题和选择的“id”，以及选择的“title”。  
 使用的格式是 `[ QuestionID | ChoiceID ] ChoiceTitle`。

```
    "choices": [
         {
             "id": "choice_1",
             "title": "Option 1",
             "helpfulResource": {
                 "displayText": "This is helpful text for the first choice",
                 "url": "https://example.com/popt01_help.html"
             },
             "improvementPlan": {
                 "displayText": "This is text that will be shown for improvement of this choice.",
                 "url": "https://example.com/popt01_iplan.html"
             }
         },
         {
             "id": "choice_2",
             "title": "Option 2",
             "helpfulResource": {
                 "displayText": "This is helpful text for the second choice",
                 "url": "https://example.com/hr_manual_CORP_1.pdf"
             },
             "improvementPlan": {
                 "displayText": "This is text that will be shown for improvement of this choice.",
                 "url": "https://example.com/popt02_iplan_01.html"
             },
             "additionalResources":[
                {
                  "type": "HELPFUL_RESOURCE",
                  "content": [
                    {
                      "displayText": "This is the second set of helpful text for this choice.",
                      "url": "https://example.com/hr_manual_country.html"
                    },
                    {
                      "displayText": "This is the third set of helpful text for this choice.",
                      "url": "https://example.com/hr_manual_city.html"
                    }
                  ]
                },
                {
                  "type": "IMPROVEMENT_PLAN",
                  "content": [
                    {
                      "displayText": "This is additional text that will be shown for improvement of this choice.",
                      "url": "https://example.com/popt02_iplan_02.html"
                    },
                    {
                      "displayText": "This is the third piece of improvement plan text.",
                      "url": "https://example.com/popt02_iplan_03.html"
                    }
                    {
                      "displayText": "This is the fourth piece of improvement plan text.",
                      "url": "https://example.com/popt02_iplan_04.html"
                    }
                  ]
                }
              ]
         },
         {
              "id": "option_no",
              "title": "None of these",
              "helpfulResource": {
                "displayText": "Choose this if your workload does not follow these best practices.",
                "url": "https://example.com/popt02_iplan_none.html"
              }
              
            }
```

## 风险规则部分
<a name="lenses-format-risk-rules"></a>

本部分定义了所选选项如何确定风险等级。

您最多可以为每个问题定义三条风险规则，每个风险等级各一条。
+ `condition`：对应问题风险等级的选项的布尔表达式，或 `default`。

  每个问题都必须有一个 `default` 风险规则。
+ `risk`：表示与条件相关的风险。有效值包括 `HIGH_RISK`、`MEDIUM_RISK` 和 `NO_RISK`。

风险规则的顺序很重要。第一个评估为 `true` 的 `condition` 将设定问题的风险。实施风险规则的常见模式是从风险最小（通常也最精细）的规则开始，然后逐步上升到风险最大（最不具体）的规则。

例如：

```
 "riskRules": [
       {
         "condition": "choice_1 && choice_2 && choice_3",
         "risk": "NO_RISK"   
       },
       {
         "condition": "((choice_1 || choice_2) && choice_3) || (!choice_1 && choice_3)",
         "risk": "MEDIUM_RISK"
       },
       {
         "condition": "default",
         "risk": "HIGH_RISK"
       }
 ]
```

如果问题有三个选项（`choice_1`、`choice_2` 和`choice_3`），则这些风险规则会导致以下行为：
+ 如果选中所有三个选项，则没有风险。
+ 如果选中 `choice_1` 或 `choice_2`，**并且**还选中 `choice_3`，则为中等风险。
+ 如果**未**选中 `choice_1` 但选中了 `choice_3`，则也为中等风险。
+ 如果前面的这些条件都不为 true，则为高风险。