

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS TNB 概念
<a name="tnb-concepts"></a>

本主題說明協助您開始使用 AWS TNB 的基本概念。

**Topics**
+ [網路函數的生命週期](#nf-lifecycle)
+ [使用標準化界面](#use-standardized-interfaces)
+ [函數套件](#nf-packages)
+ [網路套件](#network-package)
+ [AWS TNB 的管理和操作](#network-service-operations)

## 網路函數的生命週期
<a name="nf-lifecycle"></a>

AWS TNB 會在網路函數的整個生命週期中協助您。網路函數生命週期包含下列階段和活動：

**規劃**  

1. 透過識別要部署的網路函數來規劃您的網路。

1. 將網路函數軟體映像放入容器映像儲存庫。

1. 建立要部署或升級的 CSAR 套件。

1. 使用 AWS TNB 上傳定義網路函數 （例如 CU AMF 和 UPF) 的 CSAR 套件，並與持續整合和持續交付 (CI/CD) 管道整合，以協助您建立新的 CSAR 套件版本，做為新的網路函數軟體映像或客戶指令碼可用。

**組態**  

1. 識別部署所需的資訊，例如運算類型、網路函數版本、IP 資訊和資源名稱。

1. 使用資訊建立您的網路服務描述項 (NSD)。

1. 擷取 NSDs定義網路函數和網路函數執行個體化所需的資源。

**執行個體化**  

1. 建立網路函數所需的基礎設施。

1. 執行個體化 （或佈建） NSD 中定義的網路函數，並開始攜帶流量。

1. 驗證資產。

**生產**  
在網路函數的生命週期期間，您將完成生產操作，例如：  
+ 更新網路函數組態，例如，更新已部署網路函數中的值。
+ 使用新的網路套件和參數值更新網路執行個體。例如，更新網路套件中的 Amazon EKS `version` 參數。

## 使用標準化界面
<a name="use-standardized-interfaces"></a>

AWS TNB 與歐洲電信標準協會 (ETSI) 相容服務協調器整合，可讓您簡化網路服務的部署。服務協調器可以使用 AWS TNB SDKs、CLI 或 APIs 來啟動操作，例如執行個體化或將網路函數升級至新版本。

AWS TNB 支援下列規格。


| 規格 | 發行版本 | 說明 | 
| --- | --- | --- | 
| ETSI SOL001 |  [v3.6.1](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/001/03.06.01_60/gs_NFV-SOL001v030601p.pdf)  | 定義允許 TOSCA 型網路函數描述項的標準。 | 
| ETSI SOL002 |  [v3.6.1](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.06.01_60/gs_NFV-SOL002v030601p.pdf)  | 定義網路函數管理的相關模型。 | 
| ETSI SOL003 |  [v3.6.1](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.06.01_60/gs_NFV-SOL003v030601p.pdf)  | 定義網路函數生命週期管理的標準。 | 
| ETSI SOL004 |  [v3.6.1](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/004/03.06.01_60/gs_NFV-SOL004v030601p.pdf)  | 定義網路函數套件的 CSAR 標準。 | 
| ETSI SOL005 |  [v3.6.1](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.06.01_60/gs_NFV-SOL005v030601p.pdf)  | 定義網路服務套件和網路服務生命週期管理的標準。 | 
| ETSI SOL007 |  [v3.5.1](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/007/03.05.01_60/gs_NFV-SOL007v030501p.pdf)  | 定義允許 TOSCA 型網路服務描述項的標準。 | 

## 函數套件
<a name="nf-packages"></a>

使用 AWS TNB，您可以將符合 ETSI SOL001/SOL004 的函數套件存放在函數目錄中。然後，您可以上傳包含描述虛擬網路函數成品的 Cloud Service Archive (CSAR) 套件。
+ 虛擬網路函數描述項 – 定義套件加入和虛擬網路函數管理的中繼資料。您必須將此檔案命名為 `vnfd.yaml`。
+ 軟體映像 – 參考虛擬網路函數容器映像。Amazon Elastic Container Registry (Amazon ECR) 可以充當虛擬網路函數映像儲存庫。
+ 其他檔案 – 用來管理虛擬網路函數，例如指令碼和 Helm Chart。

CSAR 是由 OASIS TOSCA 標準定義的套件，包含符合 OASIS TOSCA YAML 規格的網路/服務描述項。如需所需 YAML 規格的資訊，請參閱 [TNB 的 TOSCA AWS 參考](tosca-reference.md)。

以下是虛擬網路函數描述項的範例。

```
tosca_definitions_version: tnb_simple_yaml_1_0

topology_template:

  node_templates:

    SampleNF:
      type: tosca.nodes.AWS.VNF
      properties:
        descriptor_id: "SampleNF-descriptor-id"
        descriptor_version: "2.0.0"
        descriptor_name: "NF 1.0.0"
        provider: "SampleNF"
      requirements:
        helm: HelmChart

    HelmChart:
      type: tosca.nodes.AWS.Artifacts.Helm
      properties:
        implementation: "./SampleNF"
```

## 網路套件
<a name="network-package"></a>

網路套件是 CSAR （雲端服務封存） 格式`.zip`的檔案。它定義了您要部署的函數套件，以及您要部署它們的 AWS 基礎設施。

網路套件包含下列檔案：
+ TOSCA 格式的網路描述項檔案 (`nsd.yaml`)，如 ETSI SOL007 所述。

  `nsd.yaml` 檔案包含已上傳[函數套件](https://docs.aws.amazon.com/tnb/latest/ug/tnb-concepts.html#nf-packages)的參考及其描述項 IDs。
+ 使用者資料指令碼，如果有的話。
+ 生命週期掛鉤指令碼，如果有的話。
+ 外掛程式的`values.yaml`組態檔案，如果有的話。

AWS TNB 支援以 TOSCA 語言建立資源模型的 ETSI 標準，例如網路、服務和函數。 AWS TNB 可讓您以 ETSI 相容服務協調器可以理解的方式建立資源模型， AWS 服務 藉此更有效率地使用它們。

### AWS TNB 的網路服務描述項
<a name="tnb-descriptors"></a>

網路服務描述項 (NSD) 是網路套件中的`.yaml`檔案，使用 TOSCA 標準來描述您要部署的網路函數，以及 AWS 您要部署網路函數的基礎設施。若要定義 NSD 並設定基礎資源和網路生命週期操作，您必須了解 AWS TNB 支援的 NSD TOSCA 結構描述。

您的 NSD 檔案分為下列部分：

1. **TOSCA 定義版本** – 這是 NSD YAML 檔案的第一行，包含版本資訊，如下列範例所示。

   ```
   tosca_definitions_version: tnb_simple_yaml_1_0
   ```

1. **VNFD** – NSD 包含要在其中執行生命週期操作的網路函數定義。每個網路函數都必須以下列值識別：
   + 的唯一 ID`descriptor_id`。ID 必須符合網路函數 CSAR 套件中的 ID。
   + 的唯一名稱`namespace`。名稱必須與唯一 ID 相關聯，以便更輕鬆地參考整個 NSD YAML 檔案，如下列範例所示。

   ```
   vnfds:
     - descriptor_id: "61465757-cb8f-44d8-92c2-b69ca0de025b"
       namespace: "amf"
   ```

1. **拓撲範本** – 定義要部署的資源、網路函數部署，以及生命週期掛鉤等任何自訂指令碼。如以下範例所示。

   ```
   topology_template:
   
     node_templates:
   
       SampleNS:
         type: tosca.nodes.AWS.NS
         properties:
           descriptor_id: "<Sample Identifier>"
           descriptor_version: "<Sample nversion>"
           descriptor_name: "<Sample name>"
   ```

1. **其他節點** – 每個建模資源都有屬性和需求的區段。屬性說明資源的選用或必要屬性，例如 版本。這些要求說明必須做為引數提供的相依性。例如，若要建立 Amazon EKS 節點群組資源，必須在 Amazon EKS 叢集內建立。如以下範例所示。

   ```
   SampleEKSNode:
     type: tosca.nodes.AWS.Compute.EKSManagedNode
     properties:
       node_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/{{SampleRole}}"
     capabilities:
       compute:
         properties:
           ami_type: "AL2_x86_64"
           instance_types:
             - "t3.xlarge"
           key_pair: "SampleKeyPair"
       scaling:
         properties:
           desired_size: 1
           min_size: 1
           max_size: 1
     requirements:
       cluster: SampleEKS
       subnets:
         - SampleSubnet
       network_interfaces:
         - SampleENI01
         - SampleENI02
   ```

#### 範例 NSD
<a name="w2aab9c13c11b9"></a>

以下是 NSD 的程式碼片段，示範如何建立模型 AWS 服務。網路函數將部署在具有 Kubernetes 1.27 版的 Amazon EKS 叢集上。應用程式子網路為 Subnet01 和 Subnet02。然後，您可以使用 Amazon Machine Image (AMI)、執行個體類型和自動擴展組態為您的應用程式定義 NodeGroups。

```
tosca_definitions_version: tnb_simple_yaml_1_0

SampleNFEKS:
  type: tosca.nodes.AWS.Compute.EKS
  properties:
    version: "1.27"
    access: "ALL"
    cluster_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/{{SampleClusterRole}}"
  capabilities:
    multus:
      properties:
        enabled: true
  requirements:
    subnets:
      - Subnet01
      - Subnet02

SampleNFEKSNode01:
  type: tosca.nodes.AWS.Compute.EKSManagedNode
  properties:
    node_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/{{SampleNodeRole}}"
  capabilities:
    compute:
      properties:
        ami_type: "AL2_x86_64"
        instance_types:
          - "t3.xlarge"
        key_pair: "SampleKeyPair"
    scaling:
      properties:
        desired_size: 3
        min_size: 2
        max_size: 6
  requirements:
    cluster: SampleNFEKS
    subnets:
      - Subnet01
    network_interfaces:
      - ENI01
      - ENI02
```

## AWS TNB 的管理和操作
<a name="network-service-operations"></a>

使用 AWS TNB，您可以根據 ETSI SOL003 和 SOL005，使用標準化管理操作來管理網路。您可以使用 AWS TNB APIs 來執行生命週期操作，例如：
+ 執行個體化您的網路函數。
+ 終止您的網路函數。
+ 更新您的網路函數以覆寫 Helm 部署。
+ 使用新的網路套件和參數值更新執行個體或更新的網路執行個體。
+ 管理網路函數套件的版本。
+ 管理 NSDs的版本。
+ 擷取已部署網路函數的相關資訊。