

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

# 在 AWS TNB 中更新网络实例
<a name="update-network-instance"></a>

实例化网络实例后，您可能需要更新基础设施或应用程序。为此，您需要更新网络实例的网络包和参数值，然后部署更新操作以应用更改。

## 注意事项
<a name="update-considerations"></a>
+ 您可以更新处于`Instantiated`或`Updated`状态的网络实例。
+ 更新网络实例时，`UpdateSolNetworkService`API 使用新的网络包和参数值来更新网络实例的拓扑。
+ AWS TNB 验证网络实例中 NSD 和 VNFD 参数的数量是否不超过 200。强制执行此限制是为了防止不良行为者通过错误或庞大的有效载荷来影响服务。

## 您可以更新的参数
<a name="update-parameters"></a>

在更新实例化的网络实例时，您可以更新以下参数：


| 参数 | 说明 | 示例：之前 | 示例：之后 | 
| --- | --- | --- | --- | 
| 亚马逊 EKS 集群版本 | 您可以将 Amazon EKS 集群控制平面`version`参数的值更新到下一个次要版本。您无法降级版本。 |  <pre>EKSCluster:<br />    type: tosca.nodes.AWS.Compute.EKS<br />    properties:<br />      version: "{{1.28}}"</pre> |  <pre>EKSCluster:<br />    type: tosca.nodes.AWS.Compute.EKS<br />    properties:<br />      version: "{{1.29}}"</pre> | 
| Amazon EKS Worker 节点 | 您可以更新`EKSManagedNode kubernetes_version`参数的值以将您的节点组升级到较新的 Amazon EKS 版本，也可以更新`ami_id`参数以将您的节点组升级到最新 EKS 优化的 AMI。<br />您可以更新的 AMI ID `EKSSelfManagedNode`。AMI 的 Amazon EKS 版本必须与亚马逊 EKS 集群版本相同或最多低于 2 个版本。例如，如果亚马逊 EKS 集群版本为 1.31，则亚马逊 EKS AMI 版本必须为 1.31、1.30 或 1.29。 |  <pre>EKSManagedNodeGroup01:<br />    ...<br />    properties:<br />      kubernetes_version: "{{1.28}}"<br />    EKSSelfManagedNode01:<br />      compute:<br />        compute:<br />          properties:<br />            ami_id: "{{ami-123123OLD}}"</pre> |  <pre>EKSManagedNodeGroup01:<br />    ...<br />    properties:<br />      kubernetes_version: "{{1.29}}"<br />    EKSSelfManagedNode01:<br />      compute:<br />        compute:<br />          properties:<br />            ami_id: "{{ami-123123NEW}}"</pre> | 
| 亚马逊 EKS 节点组 | 您可以根据计算需求添加或移除节点组。<br />删除现有节点组并添加新节点组时，请确保新节点组与已删除的节点组不同 IDs ，否则该操作将被视为修改节点组，而不是删除和添加。请注意，对于现有节点组，只能更新有限的参数集。滚动浏览此表，查看可以更新哪些参数。 |  <pre>Free5GCEKSNode01:<br />  type: tosca.nodes.AWS.Compute.EKSManagedNode<br />  ...<br />    scaling:<br />      properties:<br />        desired_size: 1<br />        min_size: 1<br />        max_size: 1<br />  ...<br />{{Free5GCEKSNode02}}: # Deleted Nodegroup<br />  type: tosca.nodes.AWS.Compute.EKSManagedNode<br />  ...<br />    scaling:<br />      properties:<br />        desired_size: 1<br />        min_size: 1<br />        max_size: 1<br />  ...<br />{{Free5GCEKSNode03}}: # Deleted Nodegroup  <br />  type: tosca.nodes.AWS.Compute.EKSSelfManagedNode<br />  ...<br />    scaling:<br />      properties:<br />        desired_size: 1<br />        min_size: 1<br />        max_size: 1<br />  ...</pre> | <pre>Free5GCEKSNode01:<br />  type: tosca.nodes.AWS.Compute.EKSManagedNode<br />  ...<br />    scaling:<br />      properties:<br />        desired_size: 1<br />        min_size: 1<br />        max_size: 1<br />  ...<br />{{Free5GCEKSNode04}}: # New Nodegroup<br />  type: tosca.nodes.AWS.Compute.EKSSelfManagedNode<br />  ...<br />    scaling:<br />      properties:<br />        desired_size: 1<br />        min_size: 1<br />        max_size: 1<br />  ...<br />{{Free5GCEKSNode05}}: # New Nodegroup  <br />  type: tosca.nodes.AWS.Compute.EKSManagedNode<br />  ...<br />    scaling:<br />      properties:<br />        desired_size: 1<br />        min_size: 1<br />        max_size: 1<br />  ...</pre> | 
| 缩放属性 | 您可以更新`EKSManagedNode`和 `EKSSelfManagedNode` TOSCA 节点的缩放属性。 |  <pre>EKSNodeGroup01:<br />    ...<br />    scaling:<br />        properties:<br />            desired_size: {{1}}<br />            min_size: {{1}}<br />            max_size: {{1}}</pre>  |  <pre>EKSNodeGroup01:<br />    ...<br />    scaling:<br />        properties:<br />            desired_size: {{2}}<br />            min_size: {{0}}<br />            max_size: {{2}}</pre>  | 
| 亚马逊 EBS CSI 插件属性 | 您可以在亚马逊 EKS 集群上启用或禁用 Amazon EBS CSI 插件。您也可以更改插件版本。 |  <pre>EKSCluster:<br />  capabilities:<br />   ...<br />    ebs_csi:<br />      properties:<br />        enabled: {{false}}</pre>  |  <pre>EKSCluster:<br />  capabilities:<br />   ...<br />    ebs_csi:<br />      properties:<br />        enabled: {{true}}<br />        version: "{{v1.30.0-eksbuild.1}}"</pre>  | 
| 根卷大小 | 您可以添加、移除或更新 EKSManaged Node 和 EKSSelf ManagedNode TOSCA 节点的根卷大小属性。 |  <pre>Free5GCEKSNode01:<br />      ...<br />      capabilities:        <br />        compute:<br />          properties:<br />            root_volume_size: {{50}}</pre>  |  <pre>Free5GCEKSNode01:<br />      ...<br />      capabilities:<br />        compute:<br />          properties:            <br />            root_volume_size: {{100}}</pre>  | 
| VNF | 您可以在 NSD VNFs 中引用，然后使用 VNFDeployment TOSCA 节点将它们部署到在 NSD 中创建的集群中。作为更新的一部分，您将能够向网络添加、更新和删除 VNFs 。 |  <pre>vnfds:<br />  - descriptor_id: "{{43c012fa-2616-41a8-a833-0dfd4c5a049e}}"<br />    namespace: "{{vnf1}}"<br />  - descriptor_id: "{{64222f98-ecd6-4871-bf94-7354b53f3ee5}}"<br />    namespace: "{{vnf2}}" // Deleted VNF<br />...<br />SampleVNF1HelmDeploy:<br />      type: tosca.nodes.AWS.Deployment.VNFDeployment<br />      requirements:<br />        cluster: EKSCluster<br />        vnfs:<br />          - {{vnf1.SampleVNF1}}<br />          - {{vnf2.SampleVNF2}}</pre>  |  <pre>vnfds:<br />  - descriptor_id: "{{59f77222-79e9-4dc1-be53-5712ad06e31b}}"<br />    namespace: "{{vnf1}}" // Updated VNF<br />  - descriptor_id: "{{b7e072dc-839d-4fac-916c-561a166da1fc}}"<br />    namespace: "{{vnf3}}" // Added VNFn<br />....<br />SampleVNF1HelmDeploy:<br />      type: tosca.nodes.AWS.Deployment.VNFDeployment<br />      requirements:<br />        cluster: EKSCluster<br />        vnfs:<br />          - {{vnf1.SampleVNF1}}<br />          - {{vnf3.SampleVNF3}}</pre>  | 
| 挂钩 | 要在创建网络函数之前和之后运行生命周期操作，请将`pre_create`和`post_create`挂钩添加到`VNFDeployment`节点。<br />在此示例中，`PreCreateHook`挂钩将在实例化之前`vnf3.SampleVNF3`运行，`PostCreateHook`挂钩将在实例化之后`vnf3.SampleVNF3`运行。 |  <pre>vnfds:<br />  - descriptor_id: "{{43c012fa-2616-41a8-a833-0dfd4c5a049e}}"<br />    namespace: "{{vnf1}}"<br />  - descriptor_id: "{{64222f98-ecd6-4871-bf94-7354b53f3ee5}}"<br />    namespace: "{{vnf2}}"<br />...<br />SampleVNF1HelmDeploy:<br />  type: tosca.nodes.AWS.Deployment.VNFDeployment<br />  requirements:<br />    cluster: EKSCluster<br />    vnfs:<br />      - {{vnf1.SampleVNF1}}<br />      - {{vnf2.SampleVNF2}} // Removed during update</pre>  |  <pre>vnfds:<br />  - descriptor_id: "{{43c012fa-2616-41a8-a833-0dfd4c5a049e}}"<br />    namespace: "{{vnf1}}"<br />  - descriptor_id: "{{b7e072dc-839d-4fac-916c-561a166da1fc}}"<br />    namespace: "{{vnf3}}"<br />....<br /><br />SampleVNF1HelmDeploy:<br />  type: tosca.nodes.AWS.Deployment.VNFDeployment<br />  requirements:<br />    cluster: EKSCluster<br />    vnfs:<br />      - {{vnf1.SampleVNF1}} // No change to this function, as the namespace and uuid remain the same<br />      - {{vnf3.SampleVNF3}} // New VNF as the namespace, vnf3, was not previously present<br />  interfaces:<br />    Hook:<br />      post_create: {{PostCreateHook}}<br />      pre_create: {{PreCreateHook}}</pre>  | 
| 挂钩 | 要在更新网络函数之前和之后运行生命周期操作，可以将`pre_update`挂钩和`post_update`挂钩添加到`VNFDeployment`节点。<br />在此示例中，`PreUpdateHook`将在更新之前运行`vnf1.SampleVNF1`，并在`PostUpdateHook`更新到命名空间 vnf1 所指示`uuid`的`vnf`包之后`vnf1.SampleVNF1`运行。 |  <pre>vnfds:<br />  - descriptor_id: "{{43c012fa-2616-41a8-a833-0dfd4c5a049e}}"<br />    namespace: "{{vnf1}}"<br />  - descriptor_id: "{{64222f98-ecd6-4871-bf94-7354b53f3ee5}}"<br />    namespace: "{{vnf2}}"<br />...<br /><br />SampleVNF1HelmDeploy:<br />  type: tosca.nodes.AWS.Deployment.VNFDeployment<br />  requirements:<br />    cluster: EKSCluster<br />    vnfs:<br />      - {{vnf1.SampleVNF1}}<br />      - {{vnf2.SampleVNF2 }}<br /></pre>  |  <pre>vnfds:<br />  - descriptor_id: "{{0ebe4e95-bd87-44bd-b8a1-918466606a14}}"<br />    namespace: "{{vnf1}}"<br />  - descriptor_id: "{{64222f98-ecd6-4871-bf94-7354b53f3ee5}}"<br />    namespace: "{{vnf2}}"<br /><br />...<br /><br />SampleVNF1HelmDeploy:<br />  type: tosca.nodes.AWS.Deployment.VNFDeployment<br />  requirements:<br />    cluster: EKSCluster<br />    vnfs:<br />      - {{vnf1.SampleVNF1}} // A VNF update as the uuid changed for namespace "vnf1"<br />      - {{vnf2.SampleVNF2}} // No change to this function as namespace and uuid remain the same<br />  interfaces:<br />    Hook:<br />      pre_update: {{PreUpdateHook}}<br />      post_update: {{PostUpdateHook}}</pre>  | 
| 子网 | 您可以在网络中添加和删除子网。在删除子网之前，请确认该子网未被网络中的任何资源使用。 |  <pre>{{Free5GCSubnet01}}: #Deleted Subnet<br />  type: tosca.nodes.AWS.Networking.Subnet<br />  properties:<br />    type: "PUBLIC"<br />    availability_zone: { get_input: subnet_01_az }<br />    cidr_block: { get_input: subnet_01_cidr_block }<br />  requirements:<br />    route_table: Free5GCRouteTable<br />    vpc: Free5GCVPC</pre>  |  <pre>{{Free5GCSubnet02}}: #New Subnet<br />  type: tosca.nodes.AWS.Networking.Subnet<br />  properties:<br />    type: "PUBLIC"<br />    availability_zone: { get_input: subnet_02_az }<br />    cidr_block: { get_input: subnet_02_cidr_block }<br />  requirements:<br />    route_table: Free5GCRouteTable<br />    vpc: Free5GCVPC</pre>  | 
| 安全组 | 您可以在网络中添加和删除安全组。在删除安全组之前，请确认网络中的任何资源均未使用该安全组。 |  <pre>{{Free5GCSecurityGroup01}}: #Deleted Security Group<br />  type: tosca.nodes.AWS.Networking.SecurityGroup<br />  properties:<br />    description: "SecurityGroup for Free5GC cluster"<br />    name: "Free5GCSecurityGroup01"<br />    tags:<br />      - "Name=Free5GCEKSAdditionalSecurityGroup"<br />  requirements:<br />    vpc: Free5GCVPC<br /><br />{{Free5GCSecurityGroupEgressRule01}}: #Deleted Security Group Egress Node<br />  type: tosca.nodes.AWS.Networking.SecurityGroupEgressRule<br />  properties:<br />    ip_protocol: "tcp"<br />    from_port: 8000<br />    to_port: 9000<br />    description: "Egress Rule for free5GC cluster"<br />    cidr_ip : "172.10.10.1/24"<br />  requirements:<br />    security_group: Free5GCSecurityGroup01<br /><br />{{Free5GCSecurityGroupIngressRule01}}: #Deleted Security Group Ingress Node<br />  type: tosca.nodes.AWS.Networking.SecurityGroupIngressRule<br />  properties:<br />    ip_protocol: "tcp"<br />    from_port: 8000<br />    to_port: 9000<br />    description: "Ingress Rule for free5GC cluster"<br />    cidr_ip: "172.10.10.1/24"<br />  requirements:<br />    security_group: Free5GCSecurityGroup01</pre>  |  <pre>{{Free5GCSecurityGroup02}}: #New Security Group<br />  type: tosca.nodes.AWS.Networking.SecurityGroup<br />  properties:<br />    description: "SecurityGroup for Free5GC cluster"<br />    name: "Free5GCSecurityGroup02"<br />    tags:<br />      - "Name=Free5GCEKSAdditionalSecurityGroup"<br />  requirements:<br />    vpc: Free5GCVPC<br />   <br />{{Free5GCSecurityGroupEgressRule02}}: #New Security Group Egress Node<br />  type: tosca.nodes.AWS.Networking.SecurityGroupEgressRule<br />  properties:<br />    ip_protocol: "tcp"<br />    from_port: 8000<br />    to_port: 9000<br />    description: "Egress Rule for free5GC cluster"<br />    cidr_ip: "172.10.10.1/24"<br />  requirements:<br />    security_group: Free5GCSecurityGroup02<br />   <br />{{Free5GCSecurityGroupIngressRule02}}: #New Security Group Ingress Node<br />  type: tosca.nodes.AWS.Networking.SecurityGroupIngressRule<br />  properties:<br />    ip_protocol: "tcp"<br />    from_port: 8000<br />    to_port: 9000<br />    description: "Ingress Rule for free5GC cluster"<br />    cidr_ip: "172.10.10.1/24"<br />  requirements:<br />    security_group: Free5GCSecurityGroup02</pre>  | 
| 网络接口 | 您可以 ENIs 从网络中添加、修改和删除。 |  <pre>Free5GCENI01: #Modified ENI<br />  type: tosca.nodes.AWS.Networking.ENI<br />  properties:<br />    device_index: 2<br />  requirements:<br />    subnet: {{Free5GCENISubnet01}}<br />    security_groups:<br />      - Free5GCSecurityGroup01<br /><br />Free5GCENI02: #Modified ENI<br />  type: tosca.nodes.AWS.Networking.ENI<br />  properties:<br />    device_index: 3<br />    source_dest_check: true<br />  requirements:<br />    subnet: Free5GCENISubnet01<br /><br />{{Free5GCENI04}}: #Deleted ENI<br />  type: tosca.nodes.AWS.Networking.ENI<br />  properties:<br />    device_index: 4<br />    source_dest_check: true<br />  requirements:<br />    subnet: Free5GCENISubnet01<br /></pre>  |  <pre>Free5GCENI01: #Modified ENI<br />  type: tosca.nodes.AWS.Networking.ENI<br />  properties:<br />    device_index: 2<br />  requirements:<br />    subnet: {{Free5GCENISubnet02}}<br />    security_groups:<br />      - Free5GCSecurityGroup01<br /><br />Free5GCENI02: #Modified ENI<br />  type: tosca.nodes.AWS.Networking.ENI<br />  properties:<br />    device_index: 3<br />    source_dest_check: true<br />  requirements:<br />    subnet: Free5GCENISubnet01<br />    {{security_groups:}}<br />      {{- Free5GCSecurityGroup01}}<br /><br />{{Free5GCENI03}}: #New ENI<br />  type: tosca.nodes.AWS.Networking.ENI<br />  properties:<br />    device_index: 3<br />  requirements:<br />    subnet: Free5GCSubnet01<br />    security_groups:<br />      - Free5GCSecurityGroup01</pre>  | 

## 更新网络实例
<a name="update-network-instance-steps"></a>

------
#### [ Console ]

**使用控制台更新网络实例**

1. 打开 AWS TNB 控制台，网址为[https://console.aws.amazon.com/tnb/](https://console.aws.amazon.com/tnb/)。

1. 在导航窗格中，选择**网络**。

1. 选择网络实例。只有当网络实例的状态为`Instantiated`或时，您才能对其进行更新`Updated`。

1. 选择 “**操作**” 和 “**更新”**。

   将出现 “**更新实例**” 页面，其中包含当前基础设施中的网络详细信息和参数列表。

1. 选择新的网络套餐。

   新网络包中的参数显示在 “**更新的参数**” 部分中。

1. （可选）在 “**已更新的参数” 部分中更新参数**值。有关您可以更新的参数值列表，请参阅[您可以更新的参数](#update-parameters)。

1. 选择 “**更新网络**”。

   AWS TNB 验证请求并开始部署。此时将出现 “**部署状态**” 页面。

1. 使用**刷新**图标跟踪您的网络实例的部署状态。您也可以在 “**部署任务**” 部分启用**自动刷新**，以跟踪每个任务的进度。

   当部署状态更改为时`Completed`，网络实例即会更新。

1. 
   + 如果验证失败，则网络实例将保持与您请求更新之前相同的状态——可以是`Instantiated`或`Updated`。
   + 如果更新失败，则会显示网络实例状态`Update failed`。为每项失败的任务选择链接以确定原因。
   + 如果更新成功，则会显示`Updated`网络实例状态。

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

**使用 CLI 更新网络实例**  
使用带有`UPDATE_NS`更新类型的[update-sol-network-instance](https://docs.aws.amazon.com/cli/latest/reference/tnb/update-sol-network-instance.html)命令来更新网络实例。

```
aws tnb update-sol-network-instance --ns-instance-id {{^ni-[a-f0-9]{17}$}} --update-type UPDATE_NS --update-ns "{\"nsdInfoId\":\"{{^np-[a-f0-9]{17}$}}\", \"additionalParamsForNs\": {\"{{param1}}\": \"{{value1}}\"}}"
```

------