

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

# 识别 VPC 中的基础设施编排资源和相关信息
<a name="using-composer-services-vpc-tag"></a>

要将 Infrastructure Composer 与 Amazon VPC 集成，您必须首先确定 VPC 中的资源以及完成集成所需的信息。这还包括与安全组、子网标识符、参数类型、SSM 类型、静态值类型相关的配置信息。

基础设施编排器使用 VPC 标签可视化 VP **C** 中的资源。此标签适用于画布上的卡片。以下是带有 VPC 标签的 Lambda 函数的示例：

![一个 VPC 标签，用于可视化基础设施编排器中配置了 VPC 的 Lambda 函数。](http://docs.aws.amazon.com/zh_cn/infrastructure-composer/latest/dg/images/aac_use_vpc_01.png)


当您执行以下操作时，VPC 标签将应用于画布上的卡片：
+ 在基础设施编排器中使用 VPC 配置 Lambda 函数。
+ 导入包含配置了 VPC 的资源的模板。

## 安全组和子网标识符
<a name="using-composer-services-vpc-configure-ids"></a>

一个 Lambda 函数可以配置多个安全组和子网。要为 Lambda 函数配置安全组或子网，请提供值和类型。
+ **值**-安全组或子网的标识符。可接受的值将因**类型**而异。
+ **类型**-允许使用以下类型的值：
  + 参数名称
  + AWS Systems Manager (SSM) 参数存储
  + 静态值

## 参数类型
<a name="using-composer-services-vpc-configure-parameter"></a>

 AWS CloudFormation 模板的`Parameters`部分可用于跨多个模板存储资源信息。有关参数的更多信息，请参阅《*AWS CloudFormation 用户指南*》中的[参数](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)。

对于**参数**类型，您可以提供参数名称。在以下示例中，我们提供了一个`PrivateSubnet1`参数名称值：

![为子网 ID 字段的参数类型提供了 PrivateSubnet 1 的值。](http://docs.aws.amazon.com/zh_cn/infrastructure-composer/latest/dg/images/aac_use_vpc_07.png)


当您提供参数名称时，基础设施编排器会在模板的`Parameters`部分中对其进行定义。然后，基础设施编排器会引用您的 Lambda 函数资源中的参数。以下是示例：

```
...
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SubnetIds:
          - !Ref PrivateSubnet1
Parameters:
  PrivateSubnet1:
    Type: AWS::EC2::Subnet::Id
    Description: Parameter is generated by Infrastructure Composer
```

## SSM 类型
<a name="using-composer-services-vpc-configure-ssm"></a>

SSM Parameter Store 为配置数据管理和密钥管理提供了安全的分层存储。有关更多信息，请参阅《AWS Systems Manager 用户指南》**中的 [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)。

对于 **SSM** 类型，您可以提供以下值：
+ 对 SSM 参数存储中的值的动态引用。
+ 模板中定义的`AWS::SSM::Parameter`资源的逻辑 ID。

### 动态参考
<a name="using-composer-services-vpc-configure-ssm-dynamic"></a>

您可以使用以下格式的动态引用来引用 SSM 参数存储中的值：`{{resolve:ssm:reference-key}}`。有关更多信息，请参阅《*AWS CloudFormation 用户指南》*中的 [SSM 参数](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-ssm)。

Infrastructure Composer 创建基础设施代码，使用来自 SSM 参数存储的值来配置您的 Lambda 函数。以下是示例：

```
...
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SecurityGroupIds:
          - '{{resolve:ssm:demo-app/sg-0b61d5c742dc2c773}}'
  ...
```

### 逻辑 ID
<a name="using-composer-services-vpc-configure-ssm-logical"></a>

您可以通过逻辑 ID 在同一模板中引用`AWS::SSM::Parameter`资源。

以下是存储子网 ID 的名为`PrivateSubnet1Parameter`的`AWS::SSM::Parameter`资源的示例`PrivateSubnet1`：

```
...
Resources:
  PrivateSubnet1Parameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: /MyApp/VPC/SubnetIds
      Description: Subnet ID for PrivateSubnet1
      Type: String
      Value: subnet-04df123445678a036
```

以下是由 Lambda 函数的逻辑 ID 提供的此资源值的示例：

![为子网 ID 字段的 SSM 类型提供了 PrivateSubnet 1Parameter 值。](http://docs.aws.amazon.com/zh_cn/infrastructure-composer/latest/dg/images/aac_use_vpc_08.png)


基础设施编排器创建基础设施代码，以便使用 SSM 参数配置您的 Lambda 函数：

```
...
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SubnetIds:
          - !Ref PrivateSubnet1Parameter
  ...
  PrivateSubnet1Parameter:
    Type: AWS::SSM::Parameter
    Properties:
      ...
```

## 静态值类型
<a name="using-composer-services-vpc-configure-static"></a>

将安全组或子网部署到时 CloudFormation，会创建一个 ID 值。您可以将此 ID 作为静态值提供。

对于**静态值**类型，以下是有效值：
+ 对于安全组，请提供`GroupId`。有关更多信息，请参阅*AWS CloudFormation 用户指南*中的[返回值](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html#aws-properties-ec2-security-group-return-values)。以下是示例：`sg-0b61d5c742dc2c773`
+ 对于子网，请提供。`SubnetId`有关更多信息，请参阅*AWS CloudFormation 用户指南*中的[返回值](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#aws-resource-ec2-subnet-return-values)。以下是示例：`subnet-01234567890abcdef`

基础设施编排器创建基础设施代码，用静态值配置您的 Lambda 函数。以下是示例：

```
...
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SecurityGroupIds:
          - subnet-01234567890abcdef
        SubnetIds:
          - sg-0b61d5c742dc2c773
  ...
```

## 使用多种类型
<a name="using-composer-services-vpc-configure-multiple"></a>

对于安全组和子网，您可以同时使用多种类型。以下示例通过提供不同类型的值为 Lambda 函数配置三个安全组：

![三种不同的值类型用于为 Lambda 函数的安全组 ID 字段提供标识符。](http://docs.aws.amazon.com/zh_cn/infrastructure-composer/latest/dg/images/aac_use_vpc_09.png)


基础架构编排器引用了该`SecurityGroupIds`属性下的所有三个值：

```
...
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SecurityGroupIds:
          - !Ref MySecurityGroup
          - sg-0b61d5c742dc2c773
          - '{{resolve::ssm::demo/sg-0b61d5c742dc23}}'
      ...
Parameters:
  MySecurityGroup:
    Type: AWS::EC2::SecurityGroup::Id
    Description: Parameter is generated by Infrastructure Composer
```