

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

# 网络服务描述符模板
<a name="nsd-template"></a>

定义网络服务描述文件（NSD）模板。

## 语法
<a name="nsd-template-syntax"></a>

```
tosca_definitions_version: tnb_simple_yaml_1_0

vnfds:
  - descriptor\$1id: String
    namespace: String

topology_template:

  inputs:
    SampleInputParameter:
      type: String
      description: "Sample parameter description"
      default: "DefaultSampleValue"

  node\$1templates:
    SampleNode1: tosca.nodes.AWS.NS
```

## 使用已定义的参数
<a name="using-defined-parameters"></a>

当您想要动态传递参数（例如 VPC 节点的 CIDR 块）时，可以使用 `{ get_input: input-parameter-name }` 语法在 NSD 模板中定义参数。然后即可在同一 NSD 模板中重复使用该参数。

以下示例演示了如何定义和使用参数：

```
tosca_definitions_version: tnb_simple_yaml_1_0

topology_template:

  inputs:
    cidr_block:
      type: String
      description: "CIDR Block for VPC"
      default: "10.0.0.0/24"

  node_templates:
    ExampleSingleClusterNS:
      type: tosca.nodes.AWS.NS
      properties:
        descriptor_id: "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
         .....

    ExampleVPC:
      type: tosca.nodes.AWS.Networking.VPC
      properties:
        cidr_block: { get_input: cidr_block }
```

## VNFD 导入
<a name="vnfd-import"></a>

 `descriptor_id`    
描述文件的 UUID。  
必需：是  
类型：字符串  
模式：`[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}`

 `namespace`    
唯一名称。  
必需：是  
类型：字符串

## 拓扑模板
<a name="nsd-topology-template"></a>

 `node_templates`    
可能的 TOSCA AWS 节点有：  
+ [AWS.NS](node-ns.md)
+ [AWS.Compute.EKS](node-eks.md)
+ [AWS.compute.eks。 AuthRole](node-eks-authrole.md)
+ [AWS.Compute。 EKSManaged节点](node-eks-managed-node.md)
+ [AWS.Compute。 EKSSelfManagedNode](node-eks-self-managed.md)
+ [AWS.Compute。 PlacementGroup](node-compute-placement-group.md)
+ [AWS.Compute。 UserData](node-compute-user-data.md)
+ [AWS. 联网。 SecurityGroup](node-networking-security-group.md)
+ [AWS. 联网。 SecurityGroupEgressRule](node-networking-security-group-egress-rule.md)
+ [AWS. 联网。 SecurityGroupIngressRule](node-networking-security-group-ingress-rule.md)
+ [AWS.Resource.Import](node-resource-import.md)
+ [AWS.Networking.ENI](node-eni.md)
+ [AWS.HookExecution](node-hook-execution.md)
+ [AWS. 联网。 InternetGateway](node-internet-gateway.md)
+ [AWS. 联网。 RouteTable](node-route-table.md)
+ [AWS.Networking.Subnet](node-subnet.md)
+ [AWS. 部署。 VNFDeployment](node-vnf-deployment.md)
+ [AWS.Networking.VPC](node-vpc.md)
+ [AWS. 联网。 NATGateway](node-nat-gateway.md)
+ [AWS.Networking.Route](node-route.md)

# AWS.NS
<a name="node-ns"></a>

定义 AWS 网络服务 (NS) 节点。

## 语法
<a name="node-ns-syntax"></a>

```
tosca.nodes.AWS.NS:
  properties:
    descriptor\$1id: String
    descriptor\$1version: String
    descriptor\$1name: String
```

## 属性
<a name="node-ns-properties"></a>

 `descriptor_id`    
描述文件的 UUID。  
必需：是  
类型：字符串  
模式：`[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}`

 `descriptor_version`    
NSD 的版本。  
必需：是  
类型：字符串  
模式：`^[0-9]{1,5}\\.[0-9]{1,5}\\.[0-9]{1,5}.*`

 `descriptor_name`    
描述文件的名称。  
必需：是  
类型：字符串

## 示例
<a name="node-ns-example"></a>

```
SampleNS:
  type: tosca.nodes.AWS.NS
  properties:
    descriptor_id: "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
    descriptor_version: "1.0.0"
    descriptor_name: "Test NS Template"
```

# AWS.Compute.EKS
<a name="node-eks"></a>

提供集群的名称、所需的 Kubernetes 版本以及允许 Kubernetes 控制平面管理您的所需资源的角色。 AWS NFsMultus 容器网络接口（CNI）插件已启用。您可以连接多个网络接口，并将高级网络配置应用于基于 Kubernetes 的网络功能。您还可以为集群指定集群端点访问权限和子网。

## 语法
<a name="node-eks-syntax"></a>

```
tosca.nodes.AWS.Compute.EKS:
  capabilities:
    multus:
      properties:
        enabled: Boolean
        multus\$1role: String
    ebs\$1csi:
      properties:
        enabled: Boolean
        version: String      
  properties:
    version: String
    access: String
    cluster\$1role: String
    tags: List
    ip\$1family: String        
  requirements:
    subnets: List
```

## 功能
<a name="node-eks-capabilities"></a><a name="node_eks_multus"></a>`multus`

可选。定义 Multus 容器网络接口（CNI）使用的属性。

如果您包含 `multus`，则指定 `enabled` 和 `multus_role` 属性。

 `enabled`    
指示是否启用默认 Multus 功能。  
必需：是  
类型：布尔值

 `multus_role`    
Multus 网络接口管理角色。  
必需：是  
类型：字符串<a name="node_eks_ebs_csi"></a>`ebs_csi`

定义安装在 Amazon EKS 集群中的 Amazon EBS 容器存储接口（CSI）驱动程序的属性。

启用此插件即可在 Local Zones 或 AWS 区域 L AWS ocal Zones 上 AWS Outposts使用 Amazon EKS 自我管理节点。有关更多信息，请参阅《Amazon EKS 用户指南》****中的 [Amazon Elastic Block Store CSI 驱动程序](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html)。

 `enabled`    
指示是否安装默认 Amazon EBS CSI 驱动程序。  
必需：否  
类型：布尔值

 `version`    
Amazon EBS CSI 驱动程序附加组件的版本。该版本必须与*DescribeAddonVersions*操作返回的版本之一相匹配。如需更多信息，请参阅 *Amazon EKS API 参考[DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html)*中的   
必需：否  
类型：字符串

## 属性
<a name="node-eks-properties"></a>

 `version`    
集群的 Kubernetes 版本。 AWS Telco Network Builder 支持 Kubernetes 版本 1.25 到 1.32。  
必需：是  
类型：字符串  
可能的值：1.25 \$1 1.26 \$1 1.27 \$1 1.28 \$1 1.29 \$1 1.30 \$1 1.31 \$1 1.32

 `access`    
集群端点访问。  
必需：是  
类型：字符串  
可能的值：`PRIVATE` \$1 `PUBLIC` \$1 `ALL`

 `cluster_role`    
集群管理角色。  
必需：是  
类型：字符串

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

 `ip_family`    
表示集群中服务和容器组（pod）地址的 IP 系列。  
允许的值：`IPv4`、`IPv6`  
默认值：`IPv4`  
必需：否  
类型：字符串

## 要求
<a name="node-eks-requirements"></a>

 `subnets`    
一个 [AWS.Networking.Subnet](node-subnet.md) 节点。  
必需：是  
类型：列表

## 示例
<a name="node-eks-example"></a>

```
SampleEKS:
  type: tosca.nodes.AWS.Compute.EKS
  properties:
    version: "1.26"
    access: "ALL"
    cluster_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/SampleRole"
    ip_family: "IPv6"
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing" 
  capabilities:
    multus:
      properties:
        enabled: true
        multus_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/MultusRole"
    ebs_csi:
      properties:
        enabled: true
        version: "v1.16.0-eksbuild.1"        
  requirements:
    subnets:
    - SampleSubnet01
    - SampleSubnet02
```

# AWS.compute.eks。 AuthRole
<a name="node-eks-authrole"></a>

 AuthRole 允许您向 Amazon EKS 集群添加 IAM 角色，`aws-auth``ConfigMap`以便用户可以使用 IAM 角色访问 Amazon EKS 集群。

## 语法
<a name="node-eks-authrole-syntax"></a>

```
tosca.nodes.AWS.Compute.EKS.AuthRole:
  properties:
    role\$1mappings: List
      arn: String
      groups: List  
  requirements:
    clusters: List
```

## 属性
<a name="node-eks-authrole-properties"></a>

 `role_mappings`    
定义需要添加到 Amazon EKS 集群 `aws-auth` `ConfigMap` 的 IAM 角色的映射列表。    
 `arn`    
IAM 角色的 ARN。  
必需：是  
类型：字符串  
 `groups`    
要分配给 `arn` 中定义的角色的 Kubernetes 组。  
必需：否  
类型：列表

## 要求
<a name="node-eks-authrole-requirements"></a>

 `clusters`    
一个 [AWS.Compute.EKS](node-eks.md) 节点。  
必需：是  
类型：列表

## 示例
<a name="node-eks-authrole-example"></a>

```
EKSAuthMapRoles:
    type: tosca.nodes.AWS.Compute.EKS.AuthRole
    properties:
        role_mappings:
        - arn: arn:aws:iam::${AWS::TNB::AccountId}:role/TNBHookRole1
          groups:
          - system:nodes
          - system:bootstrappers
        - arn: arn:aws:iam::${AWS::TNB::AccountId}:role/TNBHookRole2
          groups:
          - system:nodes
          - system:bootstrappers
    requirements:
         clusters: 
         - Free5GCEKS1
         - Free5GCEKS2
```

# AWS.Compute。 EKSManaged节点
<a name="node-eks-managed-node"></a>

AWS TNB 支持 EKS 托管节点组，以自动为 Amazon EKs Kubernetes 集群配置节点（亚马逊 EC2 实例）和进行生命周期管理。要创建 EKS 节点组，请执行以下操作：
+ 通过提供 AMI 的 ID 或 AMI 类型，为您的集群工作节点选择亚马逊系统映像 (AMI)。
+ 提供用于 SSH 访问的 Amazon EC2 密钥对以及节点组的扩展属性。
+ 确保您的节点组与 Amazon EKS 集群相关联。
+ 为工作节点提供子网。
+ 或者，将安全组、节点标签和置放群组附加到您的节点组。

## 语法
<a name="node-eks-managed-node-syntax"></a>

```
tosca.nodes.AWS.Compute.EKSManagedNode:
  capabilities:
    compute:
      properties:
        ami\$1type: String
        ami\$1id: String
        instance\$1types: List
        key\$1pair: String
        root\$1volume\$1encryption: Boolean
        root\$1volume\$1encryption\$1key\$1arn: String
        root\$1volume\$1size: Integer 
    scaling:
      properties:
        desired\$1size: Integer
        min\$1size: Integer
        max\$1size: Integer       
  properties:
    node\$1role: String
    tags: List
    kubernetes\$1version: String        
  requirements:
    cluster: String
    subnets: List
    network\$1interfaces: List
    security\$1groups: List
    placement\$1group: String
    user\$1data: String
    labels: List
```

## 功能
<a name="node-eks-managed-node-capabilities"></a><a name="node_eks_managed_node_compute"></a>`compute`

定义 Amazon EKS 托管节点组计算参数的属性，例如亚马逊 EC2 实例类型和亚马逊 EC2 实例 AMIs。

 `ami_type`    
亚马逊 EKS 支持的 AMI 类型。  
必需：是  
类型：字符串  
可能的值：`AL2_x86_64`\$1 `AL2_x86_64_GPU` \$1 `AL2_ARM_64` \$1 `AL2023_x86_64` \$1 `AL2023_ARM_64` \$1 `AL2023_x86_64_NVIDIA` \$1 `AL2023_x86_64_NEURON` \$1 \$1 `CUSTOM` \$1 `BOTTLEROCKET_ARM_64` \$1 `BOTTLEROCKET_x86_64` \$1 `BOTTLEROCKET_ARM_64_NVIDIA` \$1 `BOTTLEROCKET_x86_64_NVIDIA`

 `ami_id`    
AMI 的 ID。  
必需：否  
类型：字符串  
如果模板中同时指定了`ami_type`和`ami_id`，则 AWS TNB 将仅使用该`ami_id`值来创建`EKSManagedNode`。

 `instance_types`    
实例大小。  
必需：是  
类型：列表

 `key_pair`    
启用 SSH 访问的密 EC2 钥对。  
必需：是  
类型：字符串

 `root_volume_encryption`    
为亚马逊 EBS 根卷启用亚马逊 EBS 加密。如果未提供此属性，则 AWS TNB 会默认加密 Amazon EBS 根卷。  
必需：否  
默认：True  
类型：布尔值

 `root_volume_encryption_key_arn`    
密钥的 ARN。 AWS KMS AWS TNB 支持常规密钥 ARN、多区域密钥 ARN 和别名 ARN。  
必需：否  
类型：字符串  
+ 如果`root_volume_encryption`为 false，则不包含`root_volume_encryption_key_arn`。
+ AWS TNB 支持对亚马逊 EBS 支持的 AMI 进行根卷加密。
+ 如果 AMI 的根卷已加密，则必须包括`root_volume_encryption_key_arn`以便 AWS TNB 重新加密根卷。
+  如果 AMI 的根卷未加密， AWS TNB `root_volume_encryption_key_arn` 将使用加密根卷。

  如果不包括`root_volume_encryption_key_arn`， AWS TNB 将使用提供的默认密钥 AWS Key Management Service 对根卷进行加密。
+ AWS TNB 不会解密加密的 AMI。

 `root_volume_size`    
Amazon Elastic Block Store 根卷的大小 GiBs。  
必需：否  
默认值：20  
类型：整数  
可能的值：1 到 16,384<a name="node_eks_managed_node_scaling"></a>`scaling`

定义 Amazon EKS 托管节点组扩展参数的属性，例如所需的亚马逊 EC2 实例数量以及节点组中亚马逊 EC2 实例的最小和最大数量。

 `desired_size`    
此中的实例数量 NodeGroup。  
必需：是  
类型：整数

 `min_size`    
此中的最小实例数 NodeGroup。  
必需：是  
类型：整数

 `max_size`    
此中的最大实例数 NodeGroup。  
必需：是  
类型：整数

## 属性
<a name="node_eks_managed_node-properties"></a>

 `node_role`    
附加到亚马逊 EC2 实例的 IAM 角色的 ARN。  
必需：是  
类型：字符串

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

 `kubernetes_version`    
托管节点组的 Kubernetes 版本。 AWS TNB 支持 Kubernetes 版本 1.25 到 1.32。请考虑以下事项：  
+ 指定`kubernetes_version`或`ami_id`。请勿指定此两者。
+ `kubernetes_version`必须小于或等于 AWS.Compute。 EKSManaged节点版本。
+  AWS.Compute 之间可能有 3 个版本的差异。 EKSManaged节点版本和`kubernetes_version`。
+ 如果未指定`kubernetes_version`或`ami_id`， AWS TNB 将使用该`AWS.Compute.EKSManagedNode`版本的最新 AMI 来创建 `EKSManagedNode`
必需：否  
类型：字符串  
可能的值：1.25 \$1 1.26 \$1 1.27 \$1 1.28 \$1 1.29 \$1 1.30 \$1 1.31 \$1 1.32

## 要求
<a name="node-eks-managed-node-requirements"></a>

 `cluster`    
一个 [AWS.Compute.EKS](node-eks.md) 节点。  
必需：是  
类型：字符串

 `subnets`    
一个 [AWS.Networking.Subnet](node-subnet.md) 节点。  
必需：是  
类型：列表

 `network_interfaces`    
一个 [AWS.Networking.ENI](node-eni.md) 节点。确保将网络接口和子网设置为相同的可用区，否则实例化将失败。  
设置后`network_interfaces`，如果您在 a [w](https://docs.aws.amazon.com/tnb/latest/ug/node-eks.html) s.Compute.eks 节点中包含了该`multus_role`属性，则 AWS TNB 将 ENIs 从该`multus`属性获得与相关的权限。否则， AWS TNB 将 ENIs 从 n [od](#node_eks_managed_node_node_role) e\$1role 属性中获取与相关的权限。  
必需：否  
类型：列表

 `security_groups`    
一个 [AWS.Networking SecurityGroup](node-networking-security-group.md)节点。  
必需：否  
类型：列表

 `placement_group`    
一个 [tosca.nodes。AWS.Compute。 PlacementGroup](node-compute-placement-group.md)节点。  
必需：否  
类型：字符串

 `user_data`    
一个 [tosca.nodes。AWS.Compute。 UserData](node-compute-user-data.md)节点引用。用户数据脚本将传递给托管节点组启动的 Amazon EC2 实例。将运行自定义用户数据所需的权限添加到传递给节点组的 node\$1role。  
必需：否  
类型：字符串

 `labels`    
节点标签列表。节点标签必须有名称和值。使用以下标准创建标签：  
+ 名称和值必须用分隔`=`。
+ 名称和值的长度最多可为 63 个字符。
+ 标签可以包含字母（A-Z、a-z、）、数字（0-9）和以下字符：`[-, _, ., *, ?]`
+ 名称和值必须以字母数字`?`、或`*`字符开头和结尾。
例如，`myLabelName1=*NodeLabelValue1`  
必需：否  
类型：列表

## 示例
<a name="node-eks-managed-node-example"></a>

```
SampleEKSManagedNode:
  type: tosca.nodes.AWS.Compute.EKSManagedNode
  capabilities:
    compute:
      properties:
        ami_type: "AL2_x86_64"
        instance_types:
          - "t3.xlarge"
        key_pair: "SampleKeyPair"
        root_volume_encryption: true
        root_volume_encryption_key_arn: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        root_volume_size: 1500    
    scaling:
      properties:
        desired_size: 1
        min_size: 1
        max_size: 1
  properties:
    node_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/SampleRole"
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing" 
    kubernetes_version:
      - "1.30" 
  requirements:
    cluster: SampleEKS
    subnets:
      - SampleSubnet
    network_interfaces:
      - SampleENI01
      - SampleENI02
    security_groups:
      - SampleSecurityGroup01
      - SampleSecurityGroup02
    placement_group: SamplePlacementGroup
    user_data: CustomUserData
    labels:
      - "sampleLabelName001=sampleLabelValue001"
      - "sampleLabelName002=sampleLabelValue002"
```

# AWS.Compute。 EKSSelfManagedNode
<a name="node-eks-self-managed"></a>

AWS TNB 支持 Amazon EKS 自我管理节点，以自动为亚马逊 EKS Kubernetes 集群配置节点（亚马逊 EC2 实例）和进行生命周期管理。要创建 Amazon EKS 节点组，请执行以下操作：
+ 通过提供 AMI 的 ID，为您的集群工作节点选择亚马逊系统映像 (AMI)。
+ 提供用于 SSH 访问的 Amazon EC2 密钥对。
+ 确保您的节点组与 Amazon EKS 集群相关联。
+ 提供实例类型以及所需大小、最小和最大大小。
+ 为工作节点提供子网。
+ 或者，将安全组、节点标签和置放群组附加到您的节点组。

## 语法
<a name="node-eks-self-managed-node-syntax"></a>

```
tosca.nodes.AWS.Compute.EKSSelfManagedNode:
  capabilities:
    compute:
      properties:
        ami\$1id: String
        instance\$1type: String
        key\$1pair: String
        root\$1volume\$1encryption: Boolean
        root\$1volume\$1encryption\$1key\$1arn: String    
        root\$1volume\$1size: Integer
    scaling:
      properties:
        desired\$1size: Integer
        min\$1size: Integer
        max\$1size: Integer  
  properties:
    node\$1role: String    
    tags: List          
  requirements:
    cluster: String
    subnets: List
    network\$1interfaces: List
    security\$1groups: List
    placement\$1group: String
    user\$1data: String
    labels: List
```

## 功能
<a name="node-eks-self-managed-node-capabilities"></a><a name="node_eks_self_managed_node_compute"></a>`compute`

定义 Amazon EKS 自管理节点计算参数的属性，例如亚马逊 EC2 实例类型和亚马逊 EC2 实例 AMIs。

 `ami_id`    
用于启动实例的 AMI ID。 AWS TNB 支持可利用 IMDSv2的实例。有关更多信息，请参阅 [IMDS 版本](imds-version.md)。  
您可以更新的 AMI ID `EKSSelfManagedNode`。AMI 的 Amazon EKS 版本必须与亚马逊 EKS 集群版本相同或最多低两个版本。例如，如果亚马逊 EKS 集群版本为 1.31，则亚马逊 EKS AMI 版本必须为 1.31、1.30 或 1.29。
必需：是  
类型：字符串

 `instance_type`    
实例大小。  
必需：是  
类型：字符串

 `key_pair`    
用于启用 SSH 访问的 Amazon 密 EC2 钥对。  
必需：是  
类型：字符串

 `root_volume_encryption`    
为亚马逊 EBS 根卷启用亚马逊 EBS 加密。如果未提供此属性，则 AWS TNB 会默认加密 Amazon EBS 根卷。  
必需：否  
默认：True  
类型：布尔值

 `root_volume_encryption_key_arn`    
密钥的 ARN。 AWS KMS AWS TNB 支持常规密钥 ARN、多区域密钥 ARN 和别名 ARN。  
必需：否  
类型：字符串  
+ 如果`root_volume_encryption`为 false，则不包含`root_volume_encryption_key_arn`。
+ AWS TNB 支持对亚马逊 EBS 支持的 AMI 进行根卷加密。
+ 如果 AMI 的根卷已加密，则必须包括`root_volume_encryption_key_arn`以便 AWS TNB 重新加密根卷。
+  如果 AMI 的根卷未加密， AWS TNB `root_volume_encryption_key_arn` 将使用加密根卷。

  如果不包括`root_volume_encryption_key_arn`， AWS TNB AWS Managed Services 将使用加密根卷。
+ AWS TNB 不会解密加密的 AMI。

 `root_volume_size`    
Amazon Elastic Block Store 根卷的大小 GiBs。  
必需：否  
默认值：20  
类型：整数  
可能的值：1 到 16,384<a name="node_eks_self_managed_node_scaling"></a>`scaling`

定义 Amazon EKS 自管理节点的扩展参数的属性，例如所需的亚马逊 EC2 实例数量以及节点组中最小和最大亚马逊 EC2 实例数量。

 `desired_size`    
此中的实例数量 NodeGroup。  
必需：是  
类型：整数

 `min_size`    
此中的最小实例数 NodeGroup。  
必需：是  
类型：整数

 `max_size`    
此中的最大实例数 NodeGroup。  
必需：是  
类型：整数

## 属性
<a name="node-eks-self-managed-node-properties"></a>

 `node_role`    
附加到亚马逊 EC2 实例的 IAM 角色的 ARN。  
必需：是  
类型：字符串

 `tags`    
要附加到资源的标签。标签将传播到资源创建的实例。  
必需：否  
类型：列表

## 要求
<a name="node-eks-self-managed-node-requirements"></a>

 `cluster`    
一个 [AWS.Compute.EKS](node-eks.md) 节点。  
必需：是  
类型：字符串

 `subnets`    
一个 [AWS.Networking.Subnet](node-subnet.md) 节点。  
必需：是  
类型：列表

 `network_interfaces`    
一个 [AWS.Networking.ENI](node-eni.md) 节点。确保将网络接口和子网设置为相同的可用区，否则实例化将失败。  
设置后`network_interfaces`，如果您在 a [w](https://docs.aws.amazon.com/tnb/latest/ug/node-eks.html) s.Compute.eks 节点中包含了该`multus_role`属性，则 AWS TNB 将 ENIs 从该`multus`属性获得与相关的权限。否则， AWS TNB 将 ENIs 从 n [od](#node_eks_self_managed_node_role) e\$1role 属性中获取与相关的权限。  
必需：否  
类型：列表

 `security_groups`    
一个 [AWS.Networking SecurityGroup](node-networking-security-group.md)节点。  
必需：否  
类型：列表

 `placement_group`    
一个 [tosca.nodes。AWS.Compute。 PlacementGroup](node-compute-placement-group.md)节点。  
必需：否  
类型：字符串

 `user_data`    
一个 [tosca.nodes。AWS.Compute。 UserData](node-compute-user-data.md)节点引用。用户数据脚本将传递给由自管理节点组启动的 Amazon EC2 实例。将执行自定义用户数据所需的权限添加到传递给节点组的 node\$1role。  
必需：否  
类型：字符串

 `labels`    
节点标签列表。节点标签必须有名称和值。使用以下标准创建标签：  
+ 名称和值必须用分隔`=`。
+ 名称和值的长度最多可为 63 个字符。
+ 标签可以包含字母（A-Z、a-z、）、数字（0-9）和以下字符：`[-, _, ., *, ?]`
+ 名称和值必须以字母数字`?`、或`*`字符开头和结尾。
例如，`myLabelName1=*NodeLabelValue1`  
必需：否  
类型：列表

## 示例
<a name="node-eks-self-managed-node-example"></a>

```
SampleEKSSelfManagedNode:
  type: tosca.nodes.AWS.Compute.EKSSelfManagedNode
  capabilities:
    compute:
      properties:
        ami_id: "ami-123123EXAMPLE"
        instance_type: "c5.large"
        key_pair: "SampleKeyPair"
        root_volume_encryption: true
        root_volume_encryption_key_arn: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        root_volume_size: 1500
    scaling:
      properties:
        desired_size: 1
        min_size: 1
        max_size: 1
  properties:
    node_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/SampleNodeRole" 
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing"          
  requirements:
    cluster: SampleEKSCluster
    subnets:
      - SampleSubnet
    network_interfaces:
      - SampleNetworkInterface01
      - SampleNetworkInterface02
    security_groups:
      - SampleSecurityGroup01
      - SampleSecurityGroup02
    placement_group: SamplePlacementGroup
    user_data: CustomUserData
    labels:
      - "sampleLabelName001=sampleLabelValue001"
      - "sampleLabelName002=sampleLabelValue002"
```

# AWS.Compute。 PlacementGroup
<a name="node-compute-placement-group"></a>

 PlacementGroup 节点支持不同的策略来放置 Amazon EC2 实例。

当您启动新的 Amazon 时 EC2instance，Amazon EC2 服务会尝试以这样的方式放置实例，即您的所有实例都分布在底层硬件上，以最大限度地减少相关故障。您可以使用置放群组影响如何放置一组相互依赖的实例，从而满足您的工作负载需求。

## 语法
<a name="node-compute-placement-group-syntax"></a>

```
tosca.nodes.AWS.Compute.PlacementGroup
  properties:
    strategy: String
    partition\$1count: Integer
    tags: List
```

## 属性
<a name="node-compute-placement-group-properties"></a>

 `strategy`    
用于放置 Amazon EC2 实例的策略。  
必需：是  
类型：字符串  
可能的值：CLUSTER \$1 PARTITION \$1 SPREAD\$1HOST \$1 SPREAD\$1RACK  
+ **CLUSTER** – 将一个可用区内靠近的实例打包在一起。这种策略使工作负载能够实现紧密耦合 node-to-node通信所需的低延迟网络性能，这是高性能计算 (HPC) 应用程序的典型特征。
+ **PARTITION** – 将实例分布在不同的逻辑分区上，以便一个分区中的实例组不会与不同分区中的实例组共享相同的基础硬件。该策略通常为大型分布式和重复的工作负载所使用，例如，Hadoop、Cassandra 和 Kafka。
+ **SPREAD\$1RACK** – 将一小组实例严格放置在不同的基础硬件上，以减少相关的故障。
+ **SPREAD\$1HOST** – 只能与 Outpost 置放群组结合使用。将一小组实例严格放置在不同的基础硬件上以减少相关的故障。

 `partition_count`    
分区的数量。  
必需：仅当 `strategy` 设置为 `PARTITION` 时才必需。  
类型：整数  
可能的值：1 \$1 2 \$13 \$1 4 \$1 5 \$1 6 \$1 7

 `tags`    
可以附加到置放群组资源的标签。  
必需：否  
类型：列表

## 示例
<a name="node-compute-placement-group-example"></a>

```
ExamplePlacementGroup:
  type: tosca.nodes.AWS.Compute.PlacementGroup
  properties:
    strategy: "PARTITION"
    partition_count: 5
    tags: 
      - tag_key=tag_value
```

# AWS.Compute。 UserData
<a name="node-compute-user-data"></a>

AWS TNB 支持通过网络服务描述符 (NSD) 中的 UserData节点启动带有自定义用户数据的 Amazon EC2 实例。有关自定义用户数据的更多信息，请参阅 *Amazon EC2 用户指南*[中的用户数据和 shell 脚本](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts)。

在网络实例化期间， AWS TNB 通过用户数据脚本向集群提供 Amazon EC2 实例注册。当还提供自定义用户数据时， AWS TNB 会合并两个脚本，并将它们作为[多重脚本传递给 Amaz](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-mime-multi) on。 EC2自定义用户数据脚本在 Amazon EKS 注册脚本之前运行。

要在用户数据脚本中使用自定义变量，请在左大括号 `{` 后面添加感叹号 `!`。例如，要在脚本中使用 `MyVariable`，请输入：`{!MyVariable}`

**注意**  
AWS TNB 支持大小不超过 7 KB 的用户数据脚本。
由 AWS 于 TNB CloudFormation 用于处理和呈现`multimime`用户数据脚本，因此请确保脚本遵守所有 CloudFormation 规则。

## 语法
<a name="node-compute-user-data-syntax"></a>

```
tosca.nodes.AWS.Compute.UserData:
  properties:
    implementation: String
    content\$1type: String
```

## 属性
<a name="node-compute-user-data-properties"></a>

 `implementation`    
用户数据脚本定义的相对路径。格式必须是：`./scripts/script_name.sh`  
必需：是  
类型：字符串

 `content_type`    
用户数据脚本的内容类型。  
必需：是  
类型：字符串  
可能的值：`x-shellscript`

## 示例
<a name="node-compute-user-data-example"></a>

```
ExampleUserData:
  type: tosca.nodes.AWS.Compute.UserData
  properties:
    content_type: "text/x-shellscript"
    implementation: "./scripts/customUserData.sh"
```

# AWS. 联网。 SecurityGroup
<a name="node-networking-security-group"></a>

AWS TNB 支持安全组来自动配置[亚马逊 EC2安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)，您可以将其附加到 Amazon EKS Kubernetes 集群节点组。

## 语法
<a name="node-networking-security-group-syntax"></a>

```
tosca.nodes.AWS.Networking.SecurityGroup
  properties:
    description: String
    name: String
    tags: List
  requirements:
    vpc: String
```

## 属性
<a name="node-networking-security-group-properties"></a>

 `description`    
安全组的描述。最多可以使用 255 个字符来描述该组。只能包含字母（A-Z 和 a-z）、数字（0-9）、空格和以下特殊字符：.\$1-:/()\$1,@[]\$1=&;\$1\$1\$1\$1\$1  
必需：是  
类型：字符串

 `name`    
安全组的名称。该名称最多可使用 255 个字符。只能包含字母（A-Z 和 a-z）、数字（0-9）、空格和以下特殊字符：.\$1-:/()\$1,@[]\$1=&;\$1\$1\$1\$1\$1  
必需：是  
类型：字符串

 `tags`    
可以附加到安全组资源的标签。  
必需：否  
类型：列表

## 要求
<a name="node-networking-security-group-requirements"></a>

 `vpc`    
一个 [AWS.Networking.VPC](node-vpc.md) 节点。  
必需：是  
类型：字符串

## 示例
<a name="node-networking-security-group-example"></a>

```
SampleSecurityGroup001:
  type: tosca.nodes.AWS.Networking.SecurityGroup
  properties:
        description: "Sample Security Group for Testing"
        name: "SampleSecurityGroup"
        tags:
          - "Name=SecurityGroup"
          - "Environment=Testing"
      requirements:
        vpc: SampleVPC
```

# AWS. 联网。 SecurityGroupEgressRule
<a name="node-networking-security-group-egress-rule"></a>

AWS TNB 支持安全组出站规则，以自动配置可附加到.Networking 的 Amazon EC2 安全组出站规则。 AWS SecurityGroup。请注意，您必须提供 cidr\$1 ip/destination\$1security\$1group/destination \$1prefix\$1list 作为出口流量的目的地。

## 语法
<a name="node-networking-security-group-egress-rule-syntax"></a>

```
AWS.Networking.SecurityGroupEgressRule
  properties:
    ip\$1protocol: String
    from\$1port: Integer
    to\$1port: Integer
    description: String
    destination\$1prefix\$1list: String
    cidr\$1ip: String
    cidr\$1ipv6: String
  requirements:
    security\$1group: String
    destination\$1security\$1group: String
```

## 属性
<a name="node-networking-security-group-egress-rule-properties"></a>

 `cidr_ip`    
采用 CIDR 格式 IPv4 的地址范围。您必须指定允许出口流量的 CIDR 范围。  
必需：否  
类型：字符串

 `cidr_ipv6`    
出口流量的地 IPv6 址范围，采用 CIDR 格式。您必须指定目标安全组 (`destination_security_group` 或 `destination_prefix_list`) 或 CIDR 范围 (`cidr_ip` 或 `cidr_ipv6`)。  
必需：否  
类型：字符串

 `description`    
出口（出站）安全组规则的描述。最多可以使用 255 个字符来描述该规则。  
必需：否  
类型：字符串

 `destination_prefix_list`    
现有 Amazon VPC 托管式前缀列表的前缀列表 ID。这是与安全组关联的节点组实例的目标。有关托管式前缀列表的更多信息，请参阅《Amazon VPC 用户指南**》中的[托管式前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/managed-prefix-lists.html)。  
必需：否  
类型：字符串

 `from_port`    
如果协议是 TCP 或 UDP，则这是端口范围的起始端口。如果协议是 ICMP 或 ICMPv6，则这是类型号。值为 -1 表示所有 ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all ICMP/ICMPv 6 个代码。  
必需：否  
类型：整数

 `ip_protocol`    
IP 协议名称（tcp、udp、icmp、icmpv6）或协议编号。使用 -1 可指定所有协议。当授权安全组规则时，指定 -1 或除 tcp、udp、icmp 或 icmpv6 以外的协议编号将允许所有端口上的流量，无论您指定的端口范围如何。对于 tcp、udp 和 icmp，您必须指定端口范围。对于 icmpv6，端口范围是可选的；如果您省略端口范围，则将允许所有类型和代码的流量。  
必需：是  
类型：字符串

 `to_port`    
如果协议是 TCP 或 UDP，则这是端口范围的终止端口。如果协议是 ICMP 或 ICMPv6，则这是代码。值为 -1 表示所有 ICMP/ICMPv6 codes. If you specify all ICMP/ICMPv6 types, you must specify all ICMP/ICMPv 6 个代码。  
必需：否  
类型：整数

## 要求
<a name="node-networking-security-group-egress-rule-requirements"></a>

 `security_group`    
要添加此规则的安全组的 ID。  
必需：是  
类型：字符串

 `destination_security_group`    
允许出口流量进入的目标安全组的 ID 或 TOSCA 参考。  
必需：否  
类型：字符串

## 示例
<a name="node-networking-security-group-egress-rule-example"></a>

```
SampleSecurityGroupEgressRule:
      type: tosca.nodes.AWS.Networking.SecurityGroupEgressRule
      properties:
        ip_protocol: "tcp"
        from_port: 8000
        to_port: 9000
        description: "Egress Rule for sample security group"
        cidr_ipv6: "2600:1f14:3758:ca00::/64"    
      requirements:
        security_group: SampleSecurityGroup001
        destination_security_group: SampleSecurityGroup002
```

# AWS. 联网。 SecurityGroupIngressRule
<a name="node-networking-security-group-ingress-rule"></a>

AWS TNB 支持安全组入口规则，以自动配置可附加到.Networking 的 Amazon EC2 安全组入口规则。 AWS SecurityGroup。请注意，您必须提供 cidr\$1 ip/source\$1security\$1group/source \$1prefix\$1list 作为入口流量的来源。

## 语法
<a name="node-networking-security-group-ingress-rule-syntax"></a>

```
AWS.Networking.SecurityGroupIngressRule
  properties:
    ip\$1protocol: String
    from\$1port: Integer
    to\$1port: Integer
    description: String
    source\$1prefix\$1list: String
    cidr\$1ip: String
    cidr\$1ipv6: String
  requirements:
    security\$1group: String
    source\$1security\$1group: String
```

## 属性
<a name="node-networking-security-group-ingress-rule-properties"></a>

 `cidr_ip`    
采用 CIDR 格式 IPv4 的地址范围。您必须指定允许入口流量的 CIDR 范围。  
必需：否  
类型：字符串

 `cidr_ipv6`    
入口 IPv6 流量的地址范围，采用 CIDR 格式。您必须指定源安全组 (`source_security_group` 或 `source_prefix_list`) 或 CIDR 范围 (`cidr_ip` 或 `cidr_ipv6`)。  
必需：否  
类型：字符串

 `description`    
入口（入站）安全组规则的描述。最多可以使用 255 个字符来描述该规则。  
必需：否  
类型：字符串

 `source_prefix_list`    
现有 Amazon VPC 托管式前缀列表的前缀列表 ID。将允许与安全组关联的节点组实例从此来源接收流量。有关托管式前缀列表的更多信息，请参阅《Amazon VPC 用户指南**》中的[托管式前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/managed-prefix-lists.html)。  
必需：否  
类型：字符串

 `from_port`    
如果协议是 TCP 或 UDP，则这是端口范围的起始端口。如果协议是 ICMP 或 ICMPv6，则这是类型号。值为 -1 表示所有 ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all ICMP/ICMPv 6 个代码。  
必需：否  
类型：整数

 `ip_protocol`    
IP 协议名称（tcp、udp、icmp、icmpv6）或协议编号。使用 -1 可指定所有协议。当授权安全组规则时，指定 -1 或除 tcp、udp、icmp 或 icmpv6 以外的协议编号将允许所有端口上的流量，无论您指定的端口范围如何。对于 tcp、udp 和 icmp，您必须指定端口范围。对于 icmpv6，端口范围是可选的；如果您省略端口范围，则将允许所有类型和代码的流量。  
必需：是  
类型：字符串

 `to_port`    
如果协议是 TCP 或 UDP，则这是端口范围的终止端口。如果协议是 ICMP 或 ICMPv6，则这是代码。值为 -1 表示所有 ICMP/ICMPv6 codes. If you specify all ICMP/ICMPv6 types, you must specify all ICMP/ICMPv 6 个代码。  
必需：否  
类型：整数

## 要求
<a name="node-networking-security-group-ingress-rule-requirements"></a>

 `security_group`    
要添加此规则的安全组的 ID。  
必需：是  
类型：字符串

 `source_security_group`    
源安全组的 ID 或 TOSCA 参考，将允许来自该安全组的入口流量。  
必需：否  
类型：字符串

## 示例
<a name="node-networking-security-group-ingress-rule-example"></a>

```
SampleSecurityGroupIngressRule:
      type: tosca.nodes.AWS.Networking.SecurityGroupIngressRule
      properties:
        ip_protocol: "tcp"
        from_port: 8000
        to_port: 9000
        description: "Ingress Rule for free5GC cluster on IPv6"
        cidr_ipv6: "2600:1f14:3758:ca00::/64"    
      requirements:
        security_group: SampleSecurityGroup1
        source_security_group: SampleSecurityGroup2
```

# AWS.Resource.Import
<a name="node-resource-import"></a>

您可以将以下 AWS 资源导入 AWS TNB：
+ VPC
+ 子网
+ 路由表
+ 互联网网关
+ 安全组

## 语法
<a name="node-resource-import-syntax"></a>

```
tosca.nodes.AWS.Resource.Import
  properties:
    resource\$1type: String
    resource\$1id: String
```

## 属性
<a name="node-resource-import-properties"></a>

 `resource_type`    
导入到 AWS TNB 的资源类型。  
必需：否  
类型：列表

 `resource_id`    
导入到 AWS TNB 的资源 ID。  
必需：否  
类型：列表

## 示例
<a name="node-resource-import-example"></a>

```
SampleImportedVPC:
  type: tosca.nodes.AWS.Resource.Import
  properties:
    resource_type: "tosca.nodes.AWS.Networking.VPC"
    resource_id: "vpc-123456"
```

# AWS.Networking.ENI
<a name="node-eni"></a>

网络接口是 VPC 中代表虚拟网卡的逻辑联网组件。可以根据子网，自动或手动为网络接口分配 IP 地址。在子网中部署 Amazon EC2 实例后，您可以为其连接网络接口，或者将网络接口与该 Amazon EC2 实例分离，然后重新连接到该子网中的另一个 Amazon EC2 实例。设备索引标识连接顺序中的位置。

## 语法
<a name="node-eni-syntax"></a>

```
tosca.nodes.AWS.Networking.ENI:
  properties:
    device\$1index: Integer
    source\$1dest\$1check: Boolean
    tags: List
  requirements:
    subnet: String
    security\$1groups: List
```

## 属性
<a name="node-eni-properties"></a>

 `device_index`    
设备索引必须大于零。  
必需：是  
类型：整数

 `source_dest_check`    
表示网络接口是否执行源/目的地检查。值为 `true` 表示已启用检查，`false` 表示已禁用检查。  
允许值：真、假  
默认：True  
必需：否  
类型：布尔值

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

## 要求
<a name="node-eni-requirements"></a>

 `subnet`    
一个 [AWS.Networking.Subnet](node-subnet.md) 节点。  
必需：是  
类型：字符串

 `security_groups`    
一个 [AWS.Networking SecurityGroup](node-networking-security-group.md)节点。  
必需：否  
类型：字符串

## 示例
<a name="node-eni-example"></a>

```
SampleENI:
  type: tosca.nodes.AWS.Networking.ENI
  properties:
    device_index: 5
    source_dest_check: true
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing" 
  requirements:
    subnet: SampleSubnet
    security_groups:
      - SampleSecurityGroup01
      - SampleSecurityGroup02
```

# AWS.HookExecution
<a name="node-hook-execution"></a>

生命周期挂钩使您能够将自己的脚本作为基础设施和网络实例化的一部分来运行。

## 语法
<a name="node-hook-execution-syntax"></a>

```
tosca.nodes.AWS.HookExecution:
  capabilities:
    execution:
      properties:
        type: String
  requirements:
    definition: String
    vpc: String
```

## 功能
<a name="node-hook-execution-capabilities"></a><a name="node_hook_execution"></a>`execution`

运行挂钩脚本的挂钩执行引擎的属性。

 `type`    
挂钩执行引擎类型。  
必需：否  
类型：字符串  
可能的值：`CODE_BUILD`

## 要求
<a name="node-hook-execution-requirements"></a>

 `definition`    
一个[AWS。 HookDefinition.Bash 节点。](node-hook-bash.md)  
必需：是  
类型：字符串

 `vpc`    
一个 [AWS.Networking.VPC](node-vpc.md) 节点。  
必需：是  
类型：字符串

## 示例
<a name="node-hook-execution-example"></a>

```
SampleHookExecution:
  type: tosca.nodes.AWS.HookExecution
  requirements:
    definition: SampleHookScript
    vpc: SampleVPC
```

# AWS. 联网。 InternetGateway
<a name="node-internet-gateway"></a>

定义 AWS Internet Gateway 节点。

## 语法
<a name="node-internet-gateway-syntax"></a>

```
tosca.nodes.AWS.Networking.InternetGateway:
  capabilities:
    routing:
      properties:
        dest\$1cidr: String
        ipv6\$1dest\$1cidr: String    
  properties:
    tags: List
    egress\$1only: Boolean
  requirements:
    vpc: String
    route\$1table: String
```

## 功能
<a name="node-internet-gateway-capabilities"></a><a name="node_internet_gateway_routing"></a>`routing`

定义 VPC 内路由连接的属性。必须包括 `dest_cidr` 或 `ipv6_dest_cidr` 属性。

 `dest_cidr`    
用于目标匹配的 IPv4 CIDR 块。此属性用于在 `RouteTable` 中创建路由，其值用作 `DestinationCidrBlock`。  
必需：如果包含 `ipv6_dest_cidr` 属性，则为“否”。  
类型：字符串

 `ipv6_dest_cidr`    
用于目标匹配的 IPv6 CIDR 块。  
必需：如果包含 `dest_cidr` 属性，则为“否”。  
类型：字符串

## 属性
<a name="node-internet-gateway-properties"></a>

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

 `egress_only`    
一个 IPv6特定的属性。表示互联网网关是否仅用于出口通信。如果 `egress_only` 为 true，则必须定义 `ipv6_dest_cidr` 属性。  
必需：否  
类型：布尔值

## 要求
<a name="node-internet-gateway-requirements"></a>

 `vpc`    
一个 [AWS.Networking.VPC](node-vpc.md) 节点。  
必需：是  
类型：字符串

 `route_table`    
一个 [AWS.Networking RouteTable](node-route-table.md)节点。  
必需：是  
类型：字符串

## 示例
<a name="node-internet-gateway-example"></a>

```
Free5GCIGW:
  type: tosca.nodes.AWS.Networking.InternetGateway
  properties:
    egress_only: false
  capabilities:
    routing:
      properties:
        dest_cidr: "0.0.0.0/0"
        ipv6_dest_cidr: "::/0"
  requirements:
    route_table: Free5GCRouteTable
    vpc: Free5GCVPC
Free5GCEGW:
  type: tosca.nodes.AWS.Networking.InternetGateway
  properties:
    egress_only: true
  capabilities:
    routing:
      properties:
        ipv6_dest_cidr: "::/0"
  requirements:
    route_table: Free5GCPrivateRouteTable
    vpc: Free5GCVPC
```

# AWS. 联网。 RouteTable
<a name="node-route-table"></a>

路由表包含一组被称为路由的规则，决定了来自 VPC 中的子网或网关的网络流量将指向何处。您必须将路由表与 VPC 关联。

## 语法
<a name="node-route-table-syntax"></a>

```
tosca.nodes.AWS.Networking.RouteTable:
  properties:
    tags: List
  requirements:
    vpc: String
```

## 属性
<a name="node-route-table-properties"></a>

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

## 要求
<a name="node-route-table-requirements"></a>

 `vpc`    
一个 [AWS.Networking.VPC](node-vpc.md) 节点。  
必需：是  
类型：字符串

## 示例
<a name="node-route-table-example"></a>

```
SampleRouteTable:
  type: tosca.nodes.AWS.Networking.RouteTable
  properties: 
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing"
  requirements:
    vpc: SampleVPC
```

# AWS.Networking.Subnet
<a name="node-subnet"></a>

子网是 VPC 内的 IP 地址范围，必须完全位于一个可用区内。您必须为子网指定 VPC、CIDR 块、可用区和路由表。您还必须定义子网是私有还是公有。

## 语法
<a name="node-subnet-syntax"></a>

```
tosca.nodes.AWS.Networking.Subnet:
  properties:
    type: String
    availability\$1zone: String
    cidr\$1block: String
    ipv6\$1cidr\$1block: String
    ipv6\$1cidr\$1block\$1suffix: String        
    outpost\$1arn: String
    tags: List
  requirements:
    vpc: String
    route\$1table: String
```

## 属性
<a name="node-subnet-properties"></a>

 `type`    
表示在此子网中启动的实例是否收到公有 IPv4地址。  
必需：是  
类型：字符串  
可能的值：`PUBLIC` \$1 `PRIVATE`

 `availability_zone`    
子网的可用区。此字段支持 AWS 区域内的 AWS 可用区，例如`us-west-2`（美国西部（俄勒冈））。例如，它还支持可用区内的 L AWS ocal Zones `us-west-2-lax-1a`。  
必需：是  
类型：字符串

 `cidr_block`    
子网的 CIDR 块。  
必需：否  
类型：字符串

 `ipv6_cidr_block`    
用于创建 IPv6 子网的 CIDR 块。如果包含此属性，请不要包含 `ipv6_cidr_block_suffix`。  
必需：否  
类型：字符串

 `ipv6_cidr_block_suffix`    
通过 Amazon VPC 创建的子网的 IPv6 CIDR 块的 2 位十六进制后缀。采用以下格式：`2-digit hexadecimal::/subnetMask`  
如果包含此属性，请不要包含 `ipv6_cidr_block`。  
必需：否  
类型：字符串

 `outpost_arn`    
将在其中创建子网 AWS Outposts 的 ARN。如果您希望在 AWS Outposts上启动 Amazon EKS 自管理节点，请将此属性添加到 NSD 模板中。有关更多信息，请参阅《Amazon EKS 用户指南》中**的 [AWS Outposts上的 Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts.html)。  
如果将此属性添加到 NSD 模板中，则必须将 `availability_zone` 属性的值设置为 AWS Outposts的可用区。  
必需：否  
类型：字符串

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

## 要求
<a name="node-subnet-requirements"></a>

 `vpc`    
一个 [AWS.Networking.VPC](node-vpc.md) 节点。  
必需：是  
类型：字符串

 `route_table`    
一个 [AWS.Networking RouteTable](node-route-table.md)节点。  
必需：是  
类型：字符串

## 示例
<a name="node-subnet-example"></a>

```
SampleSubnet01:
  type: tosca.nodes.AWS.Networking.Subnet
  properties:
    type: "PUBLIC"
    availability_zone: "us-east-1a"
    cidr_block: "10.100.50.0/24"
    ipv6_cidr_block_suffix: "aa::/64"
    outpost_arn: "arn:aws:outposts:region:accountId:outpost/op-11223344EXAMPLE"
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing"
  requirements:
    vpc: SampleVPC
    route_table: SampleRouteTable
         
SampleSubnet02:
  type: tosca.nodes.AWS.Networking.Subnet
  properties:
    type: "PUBLIC"
    availability_zone: "us-west-2b"
    cidr_block: "10.100.50.0/24"
    ipv6_cidr_block: "2600:1f14:3758:ca00::/64"
  requirements:
    route_table: SampleRouteTable
    vpc: SampleVPC
```

# AWS. 部署。 VNFDeployment
<a name="node-vnf-deployment"></a>

NF 部署是通过提供基础设施和与之关联的应用程序来建模的。集[群](#node_vnf_deployment_cluster)属性指定要托管您的 EKS 集群 NFs。[vnfs](#node_vnf_deployment_vnfs) 属性为您的部署指定网络功能。您还可以提供 [pre\$1create](#node_vnf_deployment_pre_create) 和 [post\$1create](#node_vnf_deployment_post_create) 类型的可选生命周期挂钩操作，来运行特定于您的部署的指令，例如调用库存管理系统 API。

## 语法
<a name="node-vnf-deployment-syntax"></a>

```
tosca.nodes.AWS.Deployment.VNFDeployment:
  requirements:
    deployment: String
    cluster: String
    vnfs: List
  interfaces:
    Hook:
      pre\$1create: String
      post\$1create: String
```

## 要求
<a name="node-vnf-deployment-requirements"></a>

 `deployment`    
A [AWS. 部署。 VNFDeployment](node-vnf.md)节点。  
必需：否  
类型：字符串

 `cluster`    
一个 [AWS.Compute.EKS](node-eks.md) 节点。  
必需：是  
类型：字符串

 `vnfs`    
一个 [AWS.VNF](node-vnf.md) 节点。  
必需：是  
类型：字符串

## 接口
<a name="node-vnf-deployment-interfaces"></a>

### 挂钩
<a name="node-vnf-deployment-hooks"></a>

定义运行生命周期挂钩的阶段。

 `pre_create`    
一个[AWS。 HookExecution](node-hook-execution.md)节点。此挂钩在 `VNFDeployment` 节点部署之前运行。  
必需：否  
类型：字符串

 `post_create`    
一个[AWS。 HookExecution](node-hook-execution.md)节点。此挂钩在 `VNFDeployment` 节点部署之后运行。  
必需：否  
类型：字符串

## 示例
<a name="node-vnf-deployment-example"></a>

```
SampleHelmDeploy:
  type: tosca.nodes.AWS.Deployment.VNFDeployment
  requirements:
    deployment: SampleHelmDeploy2
    cluster: SampleEKS
    vnfs:
      - vnf.SampleVNF
  interfaces:
    Hook:
      pre_create: SampleHook
```

# AWS.Networking.VPC
<a name="node-vpc"></a>

您必须为虚拟私有云（VPC）指定 CIDR 块。

## 语法
<a name="node-vpc-syntax"></a>

```
tosca.nodes.AWS.Networking.VPC:
  properties:
    cidr\$1block: String
    ipv6\$1cidr\$1block: String        
    dns\$1support: String
    tags: List
```

## 属性
<a name="node-vpc-properties"></a>

 `cidr_block`    
VPC 的 IPv4 网络范围，采用 CIDR 表示法。  
必需：是  
类型：字符串

 `ipv6_cidr_block`    
用于创建 VPC 的 IPv6 CIDR 块。  
允许的值：`AMAZON_PROVIDED`  
必需：否  
类型：字符串

 `dns_support`    
指明在 VPC 内启动的实例是否可获得 DNS 主机名称。  
必需：否  
类型：布尔值  
默认值：`false`

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

## 示例
<a name="node-vpc-example"></a>

```
SampleVPC:
  type: tosca.nodes.AWS.Networking.VPC
  properties:
    cidr_block: "10.100.0.0/16"
    ipv6_cidr_block: "AMAZON_PROVIDED"
    dns_support: true
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing"
```

# AWS. 联网。 NATGateway
<a name="node-nat-gateway"></a>

您可以通过子网定义公有或私有 NAT 网关节点。对于公共网关，如果您不提供弹性 IP 分配 ID， AWS TNB 将为您的账户分配一个弹性 IP 并将其关联到网关。

## 语法
<a name="node-nat-gateway-syntax"></a>

```
tosca.nodes.AWS.Networking.NATGateway:
  requirements:
    subnet: String
    internet\$1gateway: String
  properties:
    type: String
    eip\$1allocation\$1id: String
    tags: List
```

## 属性
<a name="node-nat-gateway-requirements"></a>

 `subnet`    
[AWS.Networking.Subnet](https://docs.aws.amazon.com/tnb/latest/ug/node-subnet.html) 节点参考。  
必需：是  
类型：字符串

 `internet_gateway`    
[AWS.Networking。 InternetGateway](https://docs.aws.amazon.com/tnb/latest/ug/node-internet-gateway.html)节点引用。  
必需：是  
类型：字符串

## 属性
<a name="node-nat-gateway-properties"></a>

 `type`    
指示网关是公有还是私有的。  
允许的值：`PUBLIC`、`PRIVATE`  
必需：是  
类型：字符串

 `eip_allocation_id`    
表示弹性 IP 地址分配的 ID。  
必需：否  
类型：字符串

 `tags`    
要附加到资源的标签。  
必需：否  
类型：列表

## 示例
<a name="node-nat-gateway-example"></a>

```
Free5GCNatGateway01:
  type: tosca.nodes.AWS.Networking.NATGateway
    requirements:
       subnet: Free5GCSubnet01
       internet_gateway: Free5GCIGW
    properties:
       type: PUBLIC
       eip_allocation_id: eipalloc-12345
```

# AWS.Networking.Route
<a name="node-route"></a>

您可以定义一个路由节点，该节点将目标路由与 NAT 网关关联为目标资源，并将该路由添加到关联的路由表中。

## 语法
<a name="node-route-syntax"></a>

```
tosca.nodes.AWS.Networking.Route:
  properties:
    dest\$1cidr\$1blocks: List          
  requirements:
    nat\$1gateway: String
    route\$1table: String
```

## 属性
<a name="node-route-properties"></a>

 `dest_cidr_blocks`    
 IPv4 通往目标资源的目的地路由列表。  
必需：是  
类型：列表  
成员类型：字符串

## 要求
<a name="node-route-requirements"></a>

 `nat_gateway`    
[AWS.Networking。 NATGateway](https://docs.aws.amazon.com/tnb/latest/ug/node-nat-gateway.html)节点引用。  
必需：是  
类型：字符串

 `route_table`    
[AWS.Networking。 RouteTable](https://docs.aws.amazon.com/tnb/latest/ug/node-route-table.html)节点引用。  
必需：是  
类型：字符串

## 示例
<a name="node-route-example"></a>

```
Free5GCRoute:
  type: tosca.nodes.AWS.Networking.Route
  properties: 
    dest_cidr_blocks: 
      - 0.0.0.0/0
      - 10.0.0.0/28    
  requirements:
    nat_gateway: Free5GCNatGateway01
    route_table: Free5GCRouteTable
```

# AWS.Store。 SSMParameters
<a name="node-ssm"></a>

您可以通过 AWS TNB 创建 SSM 参数。您创建的 SSM 参数是在 SSM 中创建的，并以 AWS TNB 网络实例 ID 为前缀。当使用同一 NSD 模板实例化和升级多个实例时，这可以防止参数值被覆盖。

## 语法
<a name="node-ssm-syntax"></a>

```
tosca.nodes.AWS.Store.SSMParameters
  properties:
    parameters:
      name: String
      value: String         
    tags: List
```

## 属性
<a name="node-ssm-properties"></a>参数

 `name`    
ssm 属性的名称。采用以下格式：`^[a-zA-Z0-9]+[a-zA-Z0-9\-\_]*[a-zA-Z0-9]+$`  
每个参数的名称必须少于 256 个字符。  
必需：是  
类型：字符串

 `value`    
ssm 属性的值。使用以下格式之一：  
+ 对于没有引用的值：`^[a-zA-Z0-9]+[a-zA-Z0-9\-\_]*[a-zA-Z0-9]+$`
+ 对于静态引用：`^\$\{[a-zA-Z0-9]+\.(properties|capabilities|requirements)(\.([a-zA-Z0-9\-_]+))+\}$`
+ 对于动态引用：`^\$\{[a-zA-Z0-9]+\.(name|id|arn)\}$`
每个参数的值必须小于 4 KB。  
必需：是  
类型：字符串

 `tags`    
可以附加到 SSM 属性的标签。  
必需：否  
类型：列表

## 示例
<a name="node-ssm-example"></a>

```
SampleSSM
    type: tosca.nodes.AWS.Store.SSMParameters
    properties:
        parameters:
            - name: "Name1"
              value: "Value1"
            - name: "EKS_VERSION"
              value: "${SampleEKS.properties.version}"
            - name: "VPC_ID"
              value: "${SampleVPC.id}
            - name: "REGION"
              value: "${AWS::Region}
        tags:
            - "tagKey=tagValue"
```