

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Infrastructure Composer를 Amazon Virtual Private Cloud(Amazon VPC)와 통합
<a name="using-composer-services-vpc"></a>

AWS Infrastructure Composer 는 Amazon Virtual Private Cloud(Amazon VPC) 서비스와의 통합을 지원합니다. Infrastructure Composer를 사용하여 다음을 수행할 수 있습니다.
+ 시각적 VPC 태그를 통해 **VPC**에 있는 캔버스의 리소스를 식별합니다.
+ 외부 템플릿에서 VPCs를 사용하여 AWS Lambda 함수를 구성합니다.

다음 이미지는 VPC로 구성된 Lambda 함수가 있는 애플리케이션의 예입니다.

![\[VPC로 구성된 Infrastructure Composer에서 Lambda 함수를 시각화하는 VPC 태그가 있는 애플리케이션입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_06.png)


Amazon VPC에 대해 자세히 알아보려면 [Amazon VPC 사용 설명서의 Amazon VPC란 무엇입니까?](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)를 참조하세요. ** 

**Topics**
+ [VPC에서 Infrastructure Composer 리소스 및 관련 정보 식별](using-composer-services-vpc-tag.md)
+ [Infrastructure Composer에서 외부 VPCs 사용하여 Lambda 함수 구성](using-composer-services-vpc-configure.md)
+ [Infrastructure Composer를 사용하는 외부 VPC에 대해 가져온 템플릿의 파라미터](using-composer-services-vpc-import.md)
+ [Infrastructure Composer를 사용하여 가져온 템플릿에 새 파라미터 추가](using-composer-services-vpc-import-add.md)
+ [Infrastructure Composer를 사용하여 Lambda 함수와 다른 템플릿에 정의된 VPC 구성](using-composer-services-vpc-examples.md)

# VPC에서 Infrastructure Composer 리소스 및 관련 정보 식별
<a name="using-composer-services-vpc-tag"></a>

Infrastructure Composer를 Amazon VPC와 통합하려면 먼저 VPC의 리소스와 통합을 완료하는 데 필요한 정보를 식별해야 합니다. 여기에는 보안 그룹, 서브넷 식별자, 파라미터 유형, SSM 유형, 정적 값 유형과 관련된 구성 정보도 포함됩니다.

Infrastructure Composer는 VPC 태그를 사용하여 **VPC**의 리소스를 시각화합니다. 이 태그는 캔버스의 카드에 적용됩니다. 다음은 VPC 태그가 있는 Lambda 함수의 예입니다.

![\[VPC로 구성된 Infrastructure Composer에서 Lambda 함수를 시각화하는 VPC 태그입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_01.png)


VPC 태그는 다음을 수행할 때 캔버스의 카드에 적용됩니다.
+ Infrastructure Composer에서 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 필드의 파라미터 유형에 제공되는 PrivateSubnet1 값입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_07.png)


파라미터 이름을 제공하면 Infrastructure Composer가 템플릿의 `Parameters` 섹션에서 파라미터 이름을 정의합니다. 그런 다음 Infrastructure Composer는 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}}'
  ...
```

### Logical 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 유형에 대해 제공되는 PrivateSubnet1Parameter 값입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_08.png)


Infrastructure Composer는 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`입니다.

Infrastructure Composer는 정적 값으로 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/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_09.png)


Infrastructure Composer는 `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
```

# Infrastructure Composer에서 외부 VPCs 사용하여 Lambda 함수 구성
<a name="using-composer-services-vpc-configure"></a>

다른 템플릿에 정의된 VPC로 Lambda 함수 구성을 시작하려면 **Lambda 함수** 향상된 구성 요소 카드를 사용합니다. 이 카드는 AWS Serverless Application Model (AWS SAM) `AWS::Serverless::Function` 리소스 유형을 사용하는 Lambda 함수를 나타냅니다.

**외부 템플릿의 VPC를 사용하여 Lambda 함수를 구성하려면**

1. **Lambda 함수** 리소스 속성 패널에서 **VPC 설정(고급)** 드롭다운 섹션을 확장합니다.

1. **외부 VPC에 할당**을 선택합니다.

1. Lambda 함수에 대해 구성할 보안 그룹 및 서브넷의 값을 제공합니다. 세부 정보는 [보안 그룹 및 서브넷 식별자](using-composer-services-vpc-tag.md#using-composer-services-vpc-configure-ids) 섹션을 참조하세요.

1. 변경 사항을 **저장합니다**.

# Infrastructure Composer를 사용하는 외부 VPC에 대해 가져온 템플릿의 파라미터
<a name="using-composer-services-vpc-import"></a>

외부 VPC의 보안 그룹 및 서브넷에 대해 정의된 파라미터가 있는 기존 템플릿을 가져올 때 Infrastructure Composer는 파라미터를 선택할 수 있는 드롭다운 목록을 제공합니다.

다음은 가져온 템플릿의 `Parameters` 섹션에 대한 예입니다.

```
...
Parameters:
  VPCSecurityGroups:
    Description: Security group IDs generated by Infrastructure Composer
    Type: List<AWS::EC2::SecurityGroup::Id>
  VPCSubnets:
    Description: Subnet IDs generated by Infrastructure Composer
    Type: List<AWS::EC2::Subnet::Id>
  VPCSubnet:
    Description: Subnet Id generated by Infrastructure Composer
    Type: AWS::EC2::Subnet::Id
...
```

캔버스에서 새 Lambda 함수에 대해 외부 VPC를 구성할 때 드롭다운 목록에서 이러한 파라미터를 사용할 수 있습니다. 다음은 예제입니다.

![\[Lambda 함수 카드에 대한 서브넷 ID 필드의 파라미터 유형에 제공되는 값의 드롭다운 목록입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_10.png)


## 목록 파라미터 유형 가져오기 시 제한 사항
<a name="using-composer-services-vpc-import-list"></a>

일반적으로 각 Lambda 함수에 대해 여러 보안 그룹 및 서브넷 식별자를 지정할 수 있습니다. 기존 템플릿에 `List<AWS::EC2::SecurityGroup::Id>` 또는와 같은 목록 파라미터 유형이 포함된 경우 식별자를 하나만 지정할 `List<AWS::EC2::Subnet::Id>`수 있습니다.

파라미터 목록 유형에 대한 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [지원되는 AWS특정 파라미터 유형을](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#aws-specific-parameter-types) 참조하세요.

다음은를 목록 파라미터 유형`VPCSecurityGroups`으로 정의하는 템플릿의 예입니다.

```
...
Parameters:
  VPCSecurityGroups:
    Description: Security group IDs generated by Infrastructure Composer
    Type: List<AWS::EC2::SecurityGroup::Id>
...
```

Infrastructure Composer에서 `VPCSecurityGroups` 값을 Lambda 함수의 보안 그룹 식별자로 선택하면 다음 메시지가 표시됩니다.

![\[Lambda 함수 카드의 보안 그룹 ID 필드의 파라미터 유형에 VPCSecurityGroups 제공되는 라는 이름의 파라미터 유형 목록입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_11.png)


이 제한은 `AWS::Lambda::Function VpcConfig` 객체의 `SecurityGroupIds` 및 `SubnetIds` 속성 모두 문자열 값 목록만 허용하기 때문에 발생합니다. 단일 목록 파라미터 유형에는 문자열 목록이 포함되어 있으므로 지정 시 제공되는 유일한 객체일 수 있습니다.

목록 파라미터 유형의 경우 다음은 Lambda 함수로 구성된 경우 템플릿에 정의된 방법의 예입니다.

```
...
Parameters:
  VPCSecurityGroups:
    Description: Security group IDs generated by Infrastructure Composer
    Type: List<AWS::EC2::SecurityGroup::Id>
  VPCSubnets:
    Description: Subnet IDs generated by Infrastructure Composer
    Type: List<AWS::EC2::Subnet::Id>
Resources:
  ...
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SecurityGroupIds: !Ref VPCSecurityGroups
        SubnetIds: !Ref VPCSubnets
```

# Infrastructure Composer를 사용하여 가져온 템플릿에 새 파라미터 추가
<a name="using-composer-services-vpc-import-add"></a>

파라미터가 정의된 기존 템플릿을 가져올 때 새 파라미터를 생성할 수도 있습니다. 드롭다운 목록에서 기존 파라미터를 선택하는 대신 새 유형과 값을 제공합니다. 다음은 라는 새 파라미터를 생성하는 예제입니다`MySecurityGroup`.

![\[Lambda 함수 카드의 보안 그룹 ID 필드의 파라미터 유형에 제공되는 MySecurityGroup 값입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_12.png)


Lambda 함수의 **리소스 속성** 패널에서 제공하는 모든 새 값에 대해 Infrastructure Composer는 Lambda 함수의 `SecurityGroupIds` 또는 `SubnetIds` 속성 아래의 목록에서 해당 값을 정의합니다. 다음은 예제입니다.

```
...
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SecurityGroupIds:
          - sg-94b3a1f6
        SubnetIds:
          - !Ref SubnetParameter
          - !Ref VPCSubnet
```

외부 템플릿에서 목록 파라미터 유형의 논리적 ID를 참조하려면 **템플릿** 보기를 사용하고 템플릿을 직접 수정하는 것이 좋습니다. 목록 파라미터 유형의 논리적 ID는 항상 단일 값으로 제공되고 유일한 값으로 제공되어야 합니다.

```
...
Parameters:
  VPCSecurityGroups:
    Description: Security group IDs generated by Infrastructure Composer
    Type: List<AWS::EC2::SecurityGroup::Id>
  VPCSubnets:
    Description: Subnet IDs generated by Infrastructure Composer
    Type: List<AWS::EC2::Subnet::Id>
Resources:
  ...
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      ...
      VpcConfig:
        SecurityGroupIds: !Ref VPCSecurityGroups # Valid syntax
        SubnetIds: 
          - !Ref VPCSubnets # Not valid syntax
```

# Infrastructure Composer를 사용하여 Lambda 함수와 다른 템플릿에 정의된 VPC 구성
<a name="using-composer-services-vpc-examples"></a>

이 예제에서는 다른 템플릿에 정의된 VPC를 사용하여 Infrastructure Composer에서 Lambda 함수를 구성합니다.

먼저 **Lambda 함수** 향상된 구성 요소 카드를 캔버스로 드래그합니다.

![\[Lambda 함수 향상된 구성 요소 카드.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_03.png)


다음으로 카드의 **리소스 속성** 패널을 열고 **VPC 설정(고급)** 드롭다운 섹션을 확장합니다.

![\[VPC 설정(고급) 드롭다운 섹션이 확장된 Lambda 함수 카드의 리소스 속성 패널 이미지\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_04.png)


다음으로 **외부 VPC에 할당**을 선택하여 외부 템플릿에서 VPC 구성을 시작합니다.

이 예제에서는 보안 그룹 ID와 서브넷 ID를 참조합니다. 이러한 값은 VPC를 정의하는 템플릿이 배포될 때 생성됩니다. **정적 값** 유형을 선택하고 IDs 값을 입력합니다. 완료되면 **저장**을 선택합니다.

![\[보안 그룹 ID 필드에 정적 값이 제공된 Lambda 함수 카드의 리소스 속성 패널입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_05.png)


이제 Lambda 함수가 VPC로 구성되었으므로 VPC 태그가 카드에 표시됩니다.

![\[VPC로 구성된 Infrastructure Composer에서 Lambda 함수를 시각화하는 VPC 태그입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_vpc_01.png)


Infrastructure Composer는 외부 VPC의 보안 그룹 및 서브넷으로 Lambda 함수를 구성하는 인프라 코드를 생성했습니다.

```
Transform: AWS::Serverless-2016-10-31
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      Description: !Sub
        - Stack ${AWS::StackName} Function ${ResourceName}
        - ResourceName: Function
      CodeUri: src/Function
      Handler: index.handler
      Runtime: nodejs18.x
      MemorySize: 3008
      Timeout: 30
      Tracing: Active
      VpcConfig:
        SecurityGroupIds:
          - sg-10f35d07e1be09e15
        SubnetIds:
          - subnet-0d80727ca90325716
  FunctionLogGroup:
    Type: AWS::Logs::LogGroup
    DeletionPolicy: Retain
    Properties:
      LogGroupName: !Sub /aws/lambda/${Function}
```