

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

# 에서를 작성하는 방법 AWS Infrastructure Composer
<a name="using-composer-basics"></a>

이 섹션에서는 [Infrastructure Composer 콘솔](using-composer-console.md), [CloudFormation 콘솔 모드](using-composer-console-cfn-mode.md)및에서 Infrastructure Composer를 사용하는 기본 사항을 다룹니다[AWS Toolkit for Visual Studio Code](using-composer-ide.md). 보다 구체적으로,이 섹션의 주제에서는 Infrastructure Composer로 애플리케이션을 구성하는 방법에 대한 주요 세부 정보를 제공하고 추가 기능 및 바로 가기에 대한 세부 정보를 포함합니다. 콘솔과 VS Code 경험 간의 기능에는 몇 가지 변형이 있으며,이 섹션의 주제에서는 이러한 변형이 발생하는 위치를 식별하고 설명합니다.

애플리케이션을 구성한 후에는 애플리케이션 배포에 [Infrastructure Composer 서버리스 애플리케이션을 AWS 클라우드에 배포](other-services-cfn.md) 대한 정보를 검토할 준비가 됩니다.

**Topics**
+ [Infrastructure Composer의 시각적 캔버스에 카드 배치](reference-navigation.md)
+ [Infrastructure Composer의 시각적 캔버스에서 카드를 그룹화합니다.](reference-navigation-gestures-group.md)
+ [Infrastructure Composer의 시각적 캔버스에서 카드 연결](reference-navigation-gestures-connect.md)
+ [Infrastructure Composer에서 카드 연결 해제](reference-navigation-gestures-disconnect.md)
+ [Infrastructure Composer의 시각적 캔버스에 카드 정렬](reference-navigation-gestures-arrange.md)
+ [Infrastructure Composer에서 카드 구성 및 수정](using-composer-cards.md)
+ [Infrastructure Composer에서 카드 삭제](using-composer-cards-delete.md)
+ [Infrastructure Composer에서 Change Inspector로 코드 업데이트 보기](using-change-inspector.md)
+ [Infrastructure Composer에서 외부 파일 참조](using-composer-external-files.md)
+ [Infrastructure Composer를 Amazon Virtual Private Cloud(Amazon VPC)와 통합](using-composer-services-vpc.md)

# Infrastructure Composer의 시각적 캔버스에 카드 배치
<a name="reference-navigation"></a>

이 섹션에서는 시각적 캔버스에서 Infrastructure Composer [카드를](using-composer-connecting.md) 선택하고 드래그하는 방법을 설명합니다. 시작하기 전에 애플리케이션에 필요한 리소스와 이러한 리소스가 상호 작용하는 방법을 식별합니다. 이에 대한 팁은 단원을 참조하십시오[Infrastructure Composer를 사용하여 첫 번째 애플리케이션 구축](getting-started-build.md).

애플리케이션에 카드를 추가하려면 리소스 팔레트에서 카드를 끌어 시각적 캔버스에 놓습니다.

![\[리소스 팔레트에서 리소스를 선택하고 Infrastructure Composer 캔버스로 드래그합니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_ref_05.gif)


[향상된 구성 요소 카드](using-composer-cards-component-intro-enhanced.md)와 [표준 IaC 리소스](using-composer-cards-resource-intro.md) 카드라는 두 가지 유형의 카드 중에서 선택할 수 있습니다.

시각적 캔버스에 카드를 배치하면 카드를 그룹화, 연결, 정렬 및 구성할 준비가 됩니다. 이 작업에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [Infrastructure Composer의 시각적 캔버스에서 카드를 그룹화합니다.](reference-navigation-gestures-group.md)
+ [Infrastructure Composer의 시각적 캔버스에서 카드 연결](reference-navigation-gestures-connect.md)
+ [Infrastructure Composer의 시각적 캔버스에 카드 정렬](reference-navigation-gestures-arrange.md)
+ [Infrastructure Composer에서 카드 구성 및 수정](using-composer-cards.md)

# Infrastructure Composer의 시각적 캔버스에서 카드를 그룹화합니다.
<a name="reference-navigation-gestures-group"></a>

이 주제에는 향상된 구성 요소 카드 및 표준 구성 요소 카드 그룹화에 대한 세부 정보가 포함되어 있습니다. 카드를 그룹화하면 작성해야 하는 코드나 마크업을 생각하지 않고도 리소스를 분류하고 구성할 수 있습니다.

## 향상된 구성 요소 카드 그룹화
<a name="w2aac17c21b7"></a>

향상된 구성 요소 카드를 그룹화하는 방법에는 두 가지가 있습니다.
+ **Shift** 키를 누른 상태에서 그룹화할 카드를 선택합니다. 그런 다음 리소스 작업 메뉴에서 **그룹을** 선택합니다.
+ 그룹에서 원하는 카드를 선택합니다. 표시되는 메뉴에서 **그룹을** 선택합니다. 그러면 다른 카드를 끌어다 놓을 수 있는 그룹이 생성됩니다.

![\[여러 Lambda 함수를 선택하고 함께 그룹화합니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_ref_07.gif)


## 표준 구성 요소 카드를 다른 으로 그룹화
<a name="using-composer-cards-group-standard-component"></a>

다음 예제는 **리소스 속성** 패널에서 표준 구성 요소 카드를 다른 카드로 그룹화할 수 있는 한 가지 방법을 보여줍니다.

![\[표준 구성 요소 카드의 리소스 속성 패널입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_cards_17.png)


**리소스 속성 패널의 리소스 구성** 필드에서 `Role`는 Lambda 함수에서 참조되었습니다. **** 그러면 **역할** 카드가 캔버스의 **함수** 카드로 그룹화됩니다.

# Infrastructure Composer의 시각적 캔버스에서 카드 연결
<a name="reference-navigation-gestures-connect"></a>

이 주제를 사용하여 Infrastructure Composer에서 카드를 연결하는 방법을 이해합니다. 이 섹션에는 향상된 구성 요소 카드와 표준 구성 요소 카드 연결에 대한 세부 정보가 포함되어 있습니다. 또한 카드를 연결할 수 있는 다양한 방법을 보여주는 몇 가지 예제도 제공합니다.

## 향상된 구성 요소 카드 연결
<a name="reference-navigation-gestures-connect-enhanced"></a>

향상된 구성 요소 카드에서 포트는 연결할 수 있는 위치를 시각적으로 식별합니다.
+ 카드 오른쪽에 있는 포트는 카드가 다른 카드를 호출할 수 있는 기회를 나타냅니다.
+ 카드 왼쪽의 포트는 다른 카드에서 카드를 호출할 수 있는 기회를 나타냅니다.

한 카드의 오른쪽 포트를 클릭하고 다른 카드의 왼쪽 포트로 끌어 카드를 연결합니다.

![\[Lambda 함수에 연결되어 있는 API Gateway 카드입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_con_02.png)


연결을 생성하면 연결 성공 여부를 알리는 메시지가 표시됩니다. 메시지를 선택하여 연결을 프로비저닝하기 위해 Infrastructure Composer가 변경한 내용을 확인합니다. 연결에 실패한 경우 **템플릿 보기를** 선택하여 인프라 코드를 수동으로 업데이트하여 연결을 프로비저닝할 수 있습니다.
+ 성공하면 메시지를 클릭하여 **변경 검사기를** 봅니다. 여기에서 연결을 프로비저닝하기 위해 Infrastructure Composer가 수정한 내용을 확인할 수 있습니다.
+ 실패하면 메시지가 표시됩니다. **템플릿 보기를** 선택하고 인프라 코드를 수동으로 업데이트하여 연결을 프로비저닝할 수 있습니다.

![\[화면 하단에서 Change Inspector 가져오기.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ci_02.gif)


향상된 구성 요소 카드를 함께 연결하면 Infrastructure Composer는 템플릿에 인프라 코드를 자동으로 생성하여 리소스 간의 이벤트 기반 관계를 프로비저닝합니다.

## 표준 구성 요소 카드 연결(표준 IaC 리소스 카드)
<a name="reference-navigation-gestures-connect-standard"></a>

표준 IaC 리소스 카드에는 다른 리소스와의 연결을 생성하는 포트가 포함되어 있지 않습니다. [카드 구성](using-composer-standard-cards.md) 중에 애플리케이션의 템플릿에서 이벤트 기반 관계를 지정하면 Infrastructure Composer는 이러한 연결을 자동으로 감지하고 카드 사이에 점선으로 시각화합니다. 다음은 표준 구성 요소 카드와 향상된 구성 요소 카드 간의 연결 예제입니다.

![\[향상된 구성 요소 카드에 연결된 표준 구성 요소 카드입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_con_04.png)


다음 예제에서는 Lambda 함수를 Amazon API Gateway Rest API와 연결하는 방법을 보여줍니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyApi:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: MyApi

  ApiGatewayMethod:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      HttpMethod: POST  # Specify the HTTP method you want to use (e.g., GET, POST, PUT, DELETE)
      ResourceId: !GetAtt MyApi.RootResourceId
      RestApiId: !Ref MyApi
      AuthorizationType: NONE
      Integration:
        Type: AWS_PROXY
        IntegrationHttpMethod: POST
        Uri: !Sub
          - arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaFunctionArn}/invocations
          - { LambdaFunctionArn: !GetAtt MyLambdaFunction.Arn }
      MethodResponses:
        - StatusCode: 200

  MyLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      Handler: index.handler
      Role: !GetAtt LambdaExecutionRole.Arn
      Runtime: nodejs14.x
      Code:
        S3Bucket: your-bucket-name
        S3Key: your-lambda-zip-file.zip

  LambdaExecutionRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: 'sts:AssumeRole'
      Policies:
        - PolicyName: LambdaExecutionPolicy
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 'logs:CreateLogGroup'
                  - 'logs:CreateLogStream'
                  - 'logs:PutLogEvents'
                Resource: 'arn:aws:logs:*:*:*'
              - Effect: Allow
                Action:
                  - 'lambda:InvokeFunction'
                Resource: !GetAtt MyLambdaFunction.Arn
```

위 예제에서 `ApiGatewayMethod:` 아래에 나열된 코드 조각은 두 카드를 연결하는 이벤트 기반 관계를 `Integration:` 지정합니다.

# Infrastructure Composer에서 카드를 연결하는 예제
<a name="using-composer-connecting-examples"></a>

이 섹션의 예제를 사용하여 Infrastructure Composer에서 카드를 연결하는 방법을 이해합니다.

## Amazon Simple Storage Service(Amazon S3) 버킷에 항목이 배치될 때 AWS Lambda 함수 호출
<a name="using-composer-connecting-examples-example1"></a>

이 예제에서는 **Amazon S3 버킷** 카드가 **Lambda 함수** 카드에 연결됩니다. Amazon S3 버킷에 항목이 배치되면 함수가 호출됩니다. 그런 다음 함수를 사용하여 항목을 처리하거나 애플리케이션에서 다른 이벤트를 트리거할 수 있습니다.

![\[Amazon S3 버킷 리소스의 오른쪽 포트에서 Lambda 함수 리소스의 왼쪽 포트로의 연결입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_05.png)


이 상호 작용을 수행하려면 함수에 대한 이벤트를 정의해야 합니다. Infrastructure Composer는 다음과 같이 프로비저닝합니다.

```
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    ...
  MyBucketBucketPolicy:
    Type: AWS::S3::BucketPolicy
    ...
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      ...
      Events:
        MyBucket:
          Type: S3
          Properties:
            Bucket: !Ref MyBucket
            Events:
              - s3:ObjectCreated:* # Event that triggers invocation of function
              - s3:ObjectRemoved:* # Event that triggers invocation of function
```

## Lambda 함수에서 Amazon S3 버킷 호출
<a name="using-composer-connecting-examples-example2"></a>

이 예제에서는 **Lambda 함수** 카드가 **Amazon S3 버킷** 카드를 호출합니다. Lambda 함수를 사용하여 Amazon S3 버킷의 항목에 대해 CRUD 작업을 수행할 수 있습니다.

![\[Lambda 함수 리소스의 오른쪽 포트에서 Amazon S3 버킷 리소스의 왼쪽 포트로의 연결입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_06.png)


이 상호 작용에는 Infrastructure Composer에서 프로비저닝한 다음이 필요합니다.
+ Lambda 함수가 Amazon S3 버킷과 상호 작용하도록 허용하는 IAM 정책입니다.
+ Lambda 함수의 동작에 영향을 미치는 환경 변수입니다.

```
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    ...
  MyBucketBucketPolicy:
    Type: AWS::S3::BucketPolicy
    ...
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      ...
      Environment:
        Variables:
          BUCKET_NAME: !Ref MyBucket
          BUCKET_ARN: !GetAtt MyBucket.Arn
      Policies:
        - S3CrudPolicy:
          BucketName: !Ref MyBucket
```

# Infrastructure Composer에서 카드 연결 해제
<a name="reference-navigation-gestures-disconnect"></a>

Infrastructure Composer에서는 *향상된 구성 요소 카드*와 *표준 구성 요소 카드를* 사용하여 AWS 리소스를 연결하고 연결을 해제합니다. 이 섹션에서는 두 유형의 카드를 모두 연결 해제하는 방법을 설명합니다.

## 향상된 구성 요소 카드
<a name="using-composer-connecting-enhanced-disconnect"></a>

향상된 구성 요소 카드를 연결 해제하려면 라인을 선택하고 **연결 해제**를 선택합니다.

![\[Lambda 함수에서 연결 해제된 API Gateway 카드입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_con_03.png)


Infrastructure Composer는 애플리케이션에서 이벤트 기반 관계를 제거하도록 템플릿을 자동으로 수정합니다.

## 표준 구성 요소 카드
<a name="w2aac17c31b7"></a>

표준 구성 요소 카드에는 다른 리소스와의 연결을 생성하는 포트가 포함되지 않습니다. [카드 구성](using-composer-standard-cards.md) 중에 애플리케이션의 템플릿에서 이벤트 기반 관계를 지정하면 Infrastructure Composer는 이러한 연결을 자동으로 감지하고 카드 사이에 점선으로 시각화합니다. 표준 구성 요소 카드의 연결을 해제하려면 애플리케이션의 템플릿에서 이벤트 기반 관계를 제거합니다.

다음 예제는 Amazon API Gateway Rest API와 연결된 Lambda 함수를 보여줍니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyApi:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: MyApi

  ApiGatewayMethod:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      HttpMethod: POST  # Specify the HTTP method you want to use (e.g., GET, POST, PUT, DELETE)
      ResourceId: !GetAtt MyApi.RootResourceId
      RestApiId: !Ref MyApi
      AuthorizationType: NONE
      Integration:
        Type: AWS_PROXY
        IntegrationHttpMethod: POST
        Uri: !Sub
          - arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaFunctionArn}/invocations
          - { LambdaFunctionArn: !GetAtt MyLambdaFunction.Arn }
      MethodResponses:
        - StatusCode: 200

  MyLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      Handler: index.handler
      Role: !GetAtt LambdaExecutionRole.Arn
      Runtime: nodejs14.x
      Code:
        S3Bucket: your-bucket-name
        S3Key: your-lambda-zip-file.zip

  LambdaExecutionRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: 'sts:AssumeRole'
      Policies:
        - PolicyName: LambdaExecutionPolicy
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 'logs:CreateLogGroup'
                  - 'logs:CreateLogStream'
                  - 'logs:PutLogEvents'
                Resource: 'arn:aws:logs:*:*:*'
              - Effect: Allow
                Action:
                  - 'lambda:InvokeFunction'
                Resource: !GetAtt MyLambdaFunction.Arn
```

두 카드 간의 연결을 제거하려면 `ApiGatewayMethod:` 아래의에 `MyLambdaFunction` 나열된에 대한 참조를 제거합니다`Integration`.

# Infrastructure Composer의 시각적 캔버스에 카드 정렬
<a name="reference-navigation-gestures-arrange"></a>

**정렬**을 선택하여 캔버스에서 카드를 시각적으로 정렬하고 구성합니다. **정렬** 버튼을 사용하면 캔버스에 카드와 연결이 많을 때 특히 유용합니다.

![\[카드 4개를 연결한 다음 정렬 버튼을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_ref_10.gif)


# Infrastructure Composer에서 카드 구성 및 수정
<a name="using-composer-cards"></a>

Infrastructure Composer에서 카드는 애플리케이션 아키텍처를 설계하는 데 사용하는 리소스를 나타냅니다. Infrastructure Composer에서 카드를 구성할 때 애플리케이션의 리소스 세부 정보를 정의합니다. 여기에는 카드의 **논리적 ID** 및 **파티션 키**와 같은 세부 정보가 포함됩니다. 이 정보가 정의되는 방식은 **향상된 구성 요소 카드**와 **표준 카드**에 따라 다릅니다.

**향상된 구성 요소 카드는** 사용 편의성과 기능을 향상하고 다양한 사용 사례에 맞게 설계된 단일 큐레이션된 카드에 결합된 CloudFormation 리소스 모음입니다. **표준 IaC 리소스 카드는** 단일 AWS CloudFormation 리소스를 나타냅니다. 캔버스로 끌면 각 표준 IaC 리소스 카드에 **표준 구성 요소** 레이블이 지정됩니다.

이 주제에서는 **향상된 구성 요소 카드** 및 **표준 구성 요소 카드** 구성에 대한 세부 정보를 제공합니다.

**참고**  
이 주제는 CloudFormation 콘솔 모드에서 Infrastructure Composer 콘솔, AWS Toolkit for Visual Studio Code 확장 및의 카드를 사용하는 데 적용됩니다. Lambda 관련 카드(**Lambda 함수** 및 **Lambda 계층**)에는 CloudFormation 콘솔 모드의 Infrastructure Composer에서 사용할 수 없는 코드 빌드 및 패키징 솔루션이 필요합니다. 자세한 내용은 [CloudFormation 콘솔 모드에서 Infrastructure Composer 사용](using-composer-console-cfn-mode.md) 단원을 참조하십시오.

**Topics**
+ [Infrastructure Composer의 향상된 구성 요소 카드](using-composer-cards-use-enhanced-component.md)
+ [Infrastructure Composer의 표준 카드](using-composer-standard-cards.md)

# Infrastructure Composer의 향상된 구성 요소 카드
<a name="using-composer-cards-use-enhanced-component"></a>

향상된 구성 요소 카드를 구성하기 위해 Infrastructure Composer는 **리소스 속성** 패널에 양식을 제공합니다. 이 양식은 각 향상된 구성 요소 카드를 구성하는 과정을 안내하기 위해 고유하게 큐레이션됩니다. 양식을 작성하면 Infrastructure Composer가 인프라 코드를 수정합니다.

일부 향상된 구성 요소 카드에는 추가 기능이 있습니다. 이 섹션에서는 향상된 구성 요소 카드 사용의 기본 사항을 검토하고 추가 기능이 있는 카드에 대한 세부 정보를 제공합니다.

향상된 구성 요소 카드에 대한 자세한 내용은 [Infrastructure Composer의 향상된 구성 요소 카드](using-composer-cards-component-intro-enhanced.md) 및 섹션을 참조하세요. [Infrastructure Composer의 향상된 구성 요소 카드](using-composer-cards-component-intro-enhanced.md) 

# 절차


**리소스 속성** 패널은 구성을 간소화하고 카드 구성을 간소화하는 가이드레일을 추가합니다. 이 패널을 사용하려면 다음 단계를 수행합니다.

1. 카드를 두 번 클릭하여 **리소스 속성** 패널을 불러옵니다.

1. 카드를 클릭하고 **세부 정보를** 선택하여 리소스 속성 패널을 불러옵니다.

1. 의 Infrastructure Composer에서 **템플릿을** AWS Management Console선택하여 애플리케이션 코드를 표시합니다. 여기에서 직접를 구성합니다.

   다음 이미지는이 작업을 수행하는 방법을 보여줍니다.  
![\[템플릿 보기 선택 및 여기에서 인프라 코드 수정.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_ref_11.gif)

# Amazon Relational Database Service(RDS)에서 Infrastructure Composer 사용
<a name="using-composer-services-rds"></a>

AWS Infrastructure Composer 는 Amazon Relational Database Service(RDS)와의 통합을 지원합니다. Infrastructure Composer에서 **RDS 데이터베이스(외부)** 향상된 구성 요소 카드를 사용하여 애플리케이션을 다른 CloudFormation 또는 AWS Serverless Application Model (AWS SAM) 템플릿에 정의된 Amazon RDS DB 클러스터, 인스턴스 및 프록시에 연결할 수 있습니다.

**RDS 데이터베이스(외부)** 향상된 구성 요소 카드는 다른 템플릿에 정의된 Amazon RDS 리소스를 나타냅니다. 여기에는 다음이 포함됩니다.
+ 다른 템플릿에 정의된 Amazon RDS DB 클러스터 또는 인스턴스
+ Amazon RDS DB 프록시

**RDS 데이터베이스(외부)** 향상된 구성 요소 카드는 **리소스** 팔레트에서 사용할 수 있습니다.

![\[Amazon RDS 데이터베이스(외부) 향상된 구성 요소 카드.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_rds_01.png)


이 카드를 사용하려면 Infrastructure Composer 캔버스로 끌어서 구성하고 다른 리소스에 연결합니다.

Lambda 함수를 통해 애플리케이션을 외부 Amazon RDS DB 클러스터 또는 인스턴스에 연결할 수 있습니다.

## 요구 사항
<a name="using-composer-services-rds-requirements"></a>

이 기능을 사용하려면 다음 요구 사항을 충족해야 합니다.

1. 외부 Amazon RDS DB 클러스터, 인스턴스 또는 프록시는를 사용하여 사용자 암호를 AWS Secrets Manager 관리해야 합니다. 자세한 내용은 [Amazon RDS 사용 설명서의 Amazon RDS를 사용한 암호 관리 및 AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) 섹션을 참조하세요. ** 

1. Infrastructure Composer의 애플리케이션은 새 프로젝트이거나 Infrastructure Composer에서 원래 생성되었어야 합니다.

## 절차
<a name="using-composer-services-rds-connect"></a>

### 1단계: 외부 RDS 데이터베이스 카드 구성
<a name="using-composer-services-rds-connect-step1"></a>

**리소스** 팔레트에서 **RDS 데이터베이스(외부)** 향상된 구성 요소 카드를 캔버스로 드래그합니다.

카드를 선택하고 **세부 정보를** 선택하거나 카드를 두 번 클릭하여 **리소스 속성** 패널을 불러옵니다. 카드의 리소스 속성 패널이 나타납니다.

![\[RDS 데이터베이스(외부) 향상된 구성 요소 카드의 리소스 속성 패널입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_rds_03.png)


여기에서 다음을 구성할 수 있습니다.
+ **논리적 ID** - 외부 Amazon RDS DB 클러스터, 인스턴스 또는 프록시의 고유한 이름입니다. 이 ID는 외부 Amazon RDS DB 리소스의 논리적 ID 값과 일치할 필요가 없습니다.
+ **데이터베이스 보안** 암호 - Amazon RDS DB 클러스터, 인스턴스 또는 프록시와 연결된 AWS Secrets Manager 보안 암호의 식별자입니다. 이 필드는 다음 값을 허용합니다.
  + **정적 값** - 보안 암호 ARN과 같은 데이터베이스 보안 암호의 고유 식별자입니다. 예를 들면, `arn:aws:secretsmanager:us-west-2:123456789012:secret:my-path/my-secret-name-1a2b3c`입니다. 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [AWS Secrets Manager 개념](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html)을 참조하세요.
  + **출력 값** - Secrets Manager 보안 암호가 배포되면 AWS CloudFormation출력 값이 생성됩니다. `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)` 내장 함수를 사용하여 여기에서 출력 값을 지정할 수 있습니다. 예를 들어 `!ImportValue MySecret`입니다.
  + **SSM 파라미터 스토어의 값 **- SSM 파라미터 스토어에 보안 암호를 저장하고 동적 참조를 사용하여 해당 값을 지정할 수 있습니다. 예를 들어 `{{resolve:ssm:MySecret}}`입니다. 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [SSM 파라미터를](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-ssm) 참조하세요.
+ **데이터베이스 호스트 이름** - Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 연결하는 데 사용할 수 있는 호스트 이름입니다. 이 값은 Amazon RDS 리소스를 정의하는 외부 템플릿에 지정됩니다. 허용되는 값은 다음과 같습니다.
  + **정적 값** - 엔드포인트 주소와 같은 데이터베이스 호스트 이름의 고유 식별자입니다. 예를 들면, `mystack-mydb-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`입니다.
  + **출력 값** - 배포된 Amazon RDS DB 클러스터, 인스턴스 또는 프록시의 출력 값입니다. `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)` 내장 함수를 사용하여 출력 값을 지정할 수 있습니다. 예를 들어 `!ImportValue myStack-myDatabase-abcd1234`입니다.
  + **SSM 파라미터 스토어의 값 **- SSM 파라미터 스토어에 데이터베이스 호스트 이름을 저장하고 동적 참조를 사용하여 값을 지정할 수 있습니다. 예를 들어 `{{resolve:ssm:MyDatabase}}`입니다.
+ **데이터베이스 포트** - Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 연결하는 데 사용할 수 있는 포트 번호입니다. 이 값은 Amazon RDS 리소스를 정의하는 외부 템플릿에 지정됩니다. 허용되는 값은 다음과 같습니다.
  + **정적 값** - 데이터베이스 포트입니다. 예를 들어 `3306`입니다.
  + **출력 값** - 배포된 Amazon RDS DB 클러스터, 인스턴스 또는 프록시의 출력 값입니다. 예를 들어 `!ImportValue myStack-MyRDSInstancePort`입니다.
  + **SSM 파라미터 스토어의 값 **- SSM 파라미터 스토어에 데이터베이스 호스트 이름을 저장하고 동적 참조를 사용하여 값을 지정할 수 있습니다. 예를 들어 `{{resolve:ssm:MyRDSInstancePort}}`입니다.

**참고**  
논리적 ID 값만 여기에서 구성해야 합니다. 원하는 경우 배포 시 다른 속성을 구성할 수 있습니다.

### 2단계: Lambda 함수 카드 연결
<a name="using-composer-services-rds-connect-step2"></a>

**리소스** 팔레트에서 **Lambda 함수** 향상된 구성 요소 카드를 캔버스로 드래그합니다.

**Lambda 함수** 카드의 왼쪽 포트를 **RDS 데이터베이스(외부)** 카드의 오른쪽 포트에 연결합니다.

![\[RDS 데이터베이스(외부) 향상된 구성 요소 카드에 연결된 Lambda 함수 카드입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_rds_02.png)


Infrastructure Composer는이 연결을 용이하게 하기 위해 템플릿을 프로비저닝합니다.

## 연결을 생성하기 위해 Infrastructure Composer가 수행하는 작업
<a name="using-composer-services-rds-ref-how"></a>

위에 나열된 절차를 완료하면 Infrastructure Composer는 Lambda 함수를 데이터베이스에 연결하는 특정 작업을 수행합니다.

### 외부 Amazon RDS DB 클러스터, 인스턴스 또는 프록시를 지정하는 경우
<a name="using-composer-services-rds-ref-how-specify"></a>

**RDS 데이터베이스(외부)** 카드를 캔버스로 드래그하면 Infrastructure Composer는 필요에 따라 템플릿의 `Metadata` 및 `Parameters` 섹션을 업데이트합니다. 다음은 예제입니다.

```
Metadata:
  AWS::Composer::ExternalResources:
    ExternalRDS:
      Type: externalRDS
      Settings:
        Port: !Ref ExternalRDSPort
        Hostname: !Ref ExternalRDSHostname
        SecretArn: !Ref ExternalRDSSecretArn
Parameters:
  ExternalRDSPort:
    Type: Number
  ExternalRDSHostname:
    Type: String
  ExternalRDSSecretArn:
    Type: String
```

[메타데이터](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html)는 CloudFormation 템플릿에 대한 세부 정보를 저장하는 데 사용되는 템플릿 섹션입니다. Infrastructure Composer와 관련된 메타데이터는 `AWS::Composer::ExternalResources` 메타데이터 키 아래에 저장됩니다. 여기서 Infrastructure Composer는 Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 대해 지정한 값을 저장합니다.

 CloudFormation 템플릿의 [ 파라미터](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) 섹션은 배포 시 템플릿 전체에 삽입할 수 있는 사용자 지정 값을 저장하는 데 사용됩니다. 제공하는 값의 유형에 따라 Infrastructure Composer는 Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 대한 값을 여기에 저장하고 템플릿 전체에서 지정할 수 있습니다.

`Metadata` 및 `Parameters` 섹션의 문자열 값은 **RDS 데이터베이스(외부)** 카드에 지정한 논리적 ID 값을 사용합니다. 논리적 ID를 업데이트하면 문자열 값이 변경됩니다.

### Lambda 함수를 데이터베이스에 연결하는 경우
<a name="using-composer-services-rds-ref-how-connecting"></a>

**Lambda 함수** 카드를 **RDS 데이터베이스(외부)** 카드에 연결하면 Infrastructure Composer는 환경 변수 및 AWS Identity and Access Management (IAM) 정책을 프로비저닝합니다. 다음은 예제입니다.

```
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      ...
      Environment:
        Variables:
          EXTERNALRDS_PORT: !Ref ExternalRDSPort
          EXTERNALRDS_HOSTNAME: !Ref ExternalRDSHostname
          EXTERNALRDS_SECRETARN: !Ref ExternalRDSSecretArn
      Policies:
        - AWSSecretsManagerGetSecretValuePolicy:
            SecretArn: !Ref ExternalRDSSecretArn
```

[환경](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-environment) 변수는 런타임 시 함수에서 사용할 수 있는 변수입니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [Lambda 환경 변수 사용을](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) 참조하세요.

[정책은](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-policies) 함수에 대한 권한을 프로비저닝합니다. 여기서 Infrastructure Composer는 함수에서 Secrets Manager로의 읽기 액세스를 허용하는 정책을 생성하여 Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 액세스하기 위한 암호를 가져옵니다.

# AWS Infrastructure Composer 와 함께 사용 AWS Step Functions
<a name="using-composer-services-sf"></a>

AWS Infrastructure Composer 는 와의 통합을 지원합니다[AWS Step Functions Workflow Studio](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio.html). Infrastructure Composer를 사용하여 다음을 수행합니다.
+ Infrastructure Composer 내에서 Workflow Studio 직접 Step Functions를 시작합니다.
+ 새 워크플로를 생성 및 관리하거나 기존 워크플로를 Infrastructure Composer로 가져옵니다.
+ Infrastructure Composer 캔버스를 사용하여 워크플로를 다른 AWS 리소스와 통합합니다.

다음 이미지는 Step Functions 상태 시스템 카드입니다.

![\[Step Functions 상태 시스템 카드.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_sf_01.png)


Infrastructure ComposerWorkflow Studio의 Step Functions를 사용하면 두 개의 강력한 시각적 디자이너의 이점을 한 곳에서 사용할 수 있습니다. 워크플로와 애플리케이션을 설계할 때 Infrastructure Composer는 코드형 인프라(IaC)를 생성하여 배포를 안내합니다.

**Topics**
+ [IAM 정책](#using-composer-services-sf-use-iam)
+ [Infrastructure ComposerWorkflow Studio에서 Step Functions 시작하기](#using-composer-services-sf-gs)
+ [Infrastructure ComposerWorkflow Studio에서 Step Functions 사용](#using-composer-services-sf-use)
+ [자세히 알아보기](#using-composer-services-sf-learn)

## IAM 정책
<a name="using-composer-services-sf-use-iam"></a>

워크플로의 작업을 리소스에 연결하면 Infrastructure Composer는 리소스 간의 상호 작용을 승인하는 데 필요한 AWS Identity and Access Management (IAM) 정책을 자동으로 생성합니다. 다음은 예제입니다.

```
Transform: AWS::Serverless-2016-10-31
Resources:
  StockTradingStateMachine:
    Type: AWS::Serverless::StateMachine
    Properties:
      ...
      Policies:
        - LambdaInvokePolicy:
            FunctionName: !Ref CheckStockValue
      ...
  CheckStockValue:
    Type: AWS::Serverless::Function
    ...
```

필요한 경우 템플릿에 IAM 정책을 더 추가할 수 있습니다.

## Infrastructure ComposerWorkflow Studio에서 Step Functions 시작하기
<a name="using-composer-services-sf-gs"></a>

시작하려면 새 워크플로를 생성하거나 기존 워크플로를 가져올 수 있습니다.

### 새 워크플로를 생성하려면
<a name="using-composer-services-sf-gs-create"></a>

1. **리소스** 팔레트에서 **Step Functions 상태 시스템** 향상된 구성 요소 카드를 캔버스로 드래그합니다.  
![\[Step Functions 상태 시스템 카드.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_sf_02.png)

   **Step Functions 상태 시스템** 카드를 캔버스로 드래그하면 Infrastructure Composer가 다음을 생성합니다.
   + 상태 시스템을 정의하는 `[ AWS::Serverless::StateMachine](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html)` 리소스입니다. 기본적으로 Infrastructure Composer는 표준 워크플로를 생성합니다. Express 워크플로를 생성하려면 템플릿의 `Type` 값을에서 `STANDARD`로 변경합니다`EXPRESS`.
   + 상태 시스템에 대한 Amazon CloudWatch 로그 그룹을 정의하는 `[AWS::Logs::LogGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)` 리소스입니다.

1. 카드의 **리소스 속성** 패널을 열고 **Workflow Studio에서 편집**을 선택하여 Infrastructure Composer Workflow Studio 내에서 엽니다.

   Step Functions가 **디자인** 모드에서 Workflow Studio 열립니다. 자세한 내용은 *AWS Step Functions 개발자 안내서*의 [디자인 모드를](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio-components.html#wfs-interface-design-mode) 참조하세요.
**참고**  
Infrastructure Composer를 수정하여 상태 시스템 정의를 외부 파일에 저장할 수 있습니다. 자세한 내용은 [외부 파일 작업](#using-composer-services-sf-use-external)를 참조하세요.

1. 워크플로를 생성하고 **저장**을 선택합니다. 를 종료하려면 **인프라 컴포저로 돌아가기**를 Workflow Studio선택합니다.

   Infrastructure Composer는 `AWS::Serverless::StateMachine` 리소스의 `Defintion` 속성을 사용하여 워크플로를 정의합니다.

1. 다음 중 하나를 수행하여 워크플로를 수정할 수 있습니다.
   + 를 Workflow Studio 다시 열고 워크플로를 수정합니다.
   + 콘솔에서 Infrastructure Composer의 경우 애플리케이션의 **템플릿** 보기를 열고 템플릿을 수정할 수 있습니다. **로컬 동기화**를 사용하는 경우 로컬 IDE에서 워크플로를 수정할 수 있습니다. Infrastructure Composer는 Infrastructure Composer에서 변경 사항을 감지하고 워크플로를 업데이트합니다.
   + Toolkit for VS Code의 Infrastructure Composer의 경우 템플릿을 직접 수정할 수 있습니다. Infrastructure Composer는 Infrastructure Composer에서 변경 사항을 감지하고 워크플로를 업데이트합니다.

### 기존 워크플로를 가져오려면
<a name="using-composer-services-sf-gs-import"></a>

 AWS Serverless Application Model (AWS SAM) 템플릿을 사용하여 정의된 애플리케이션에서 워크플로를 가져올 수 있습니다. `AWS::Serverless::StateMachine` 리소스 유형으로 정의된 상태 시스템을 사용하면를 시작하는 데 사용할 수 있는 **Step Functions 상태 시스템** 향상된 구성 요소 카드로 시각화됩니다Workflow Studio.

`AWS::Serverless::StateMachine` 리소스는 다음 속성 중 하나를 사용하여 워크플로를 정의할 수 있습니다.
+ `[ Definition](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definition)` - 워크플로는 AWS SAM 템플릿 내에서 객체로 정의됩니다.
+ `[ DefinitionUri](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definitionuri)` - 워크플로는 [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html)를 사용하여 외부 파일에 정의됩니다. 그러면 파일의 로컬 경로가이 속성으로 지정됩니다.

#### 정의 속성
<a name="using-composer-services-sf-gs-import-definition"></a>

**콘솔의 Infrastructure Composer**  
`Definition` 속성을 사용하여 정의된 워크플로의 경우 단일 템플릿 또는 전체 프로젝트를 가져올 수 있습니다.  
+ **템플릿** - 템플릿 가져오기에 대한 지침은 섹션을 참조하세요[Infrastructure Composer 콘솔에서 기존 프로젝트 템플릿 가져오기](using-composer-project-import-template.md). Infrastructure Composer 내에서 변경한 내용을 저장하려면 템플릿을 내보내야 합니다.
+ **프로젝트** - 프로젝트를 가져올 때 **로컬 동기화**를 활성화해야 합니다. 변경 사항은 로컬 시스템에 자동으로 저장됩니다. 프로젝트 가져오기에 대한 지침은 섹션을 참조하세요[Infrastructure Composer 콘솔에서 기존 프로젝트 폴더 가져오기](using-composer-project-import-folder.md).

**Toolkit for VS Code의 Infrastructure Composer**  
`Definition` 속성을 사용하여 정의된 워크플로의 경우 템플릿에서 Infrastructure Composer를 열 수 있습니다. 지침은 [에서 Infrastructure Composer에 액세스 AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md) 섹션을 참조하세요.

#### DefinitionUri 속성
<a name="using-composer-services-sf-gs-import-definitionuri"></a>

**콘솔의 Infrastructure Composer**  
`DefinitionUri` 속성을 사용하여 정의된 워크플로의 경우 프로젝트를 가져오고 **로컬 동기화**를 활성화해야 합니다. 프로젝트 가져오기에 대한 지침은 섹션을 참조하세요[Infrastructure Composer 콘솔에서 기존 프로젝트 폴더 가져오기](using-composer-project-import-folder.md).

**Toolkit for VS Code의 Infrastructure Composer**  
`DefinitionUri` 속성을 사용하여 정의된 워크플로의 경우 템플릿에서 Infrastructure Composer를 열 수 있습니다. 지침은 [에서 Infrastructure Composer에 액세스 AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md) 섹션을 참조하세요.

## Infrastructure ComposerWorkflow Studio에서 Step Functions 사용
<a name="using-composer-services-sf-use"></a>

### 빌드 워크플로
<a name="using-composer-services-sf-use-build"></a>

Infrastructure Composer는 정의 대체를 사용하여 워크플로 작업을 애플리케이션의 리소스에 매핑합니다. 정의 대체에 대한 자세한 내용은 *AWS Serverless Application Model 개발자 안내서*`[ DefinitionSubstitutions](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definitionsubstitutions)`의 섹션을 참조하세요.

에서 작업을 생성할 때 각 작업에 대한 정의 대체를 Workflow Studio지정합니다. 그런 다음 Infrastructure Composer 캔버스의 리소스에 작업을 연결할 수 있습니다.

**에서 정의 대체를 지정하려면 Workflow Studio**

1. 작업의 **구성** 탭을 열고 **API 파라미터** 필드를 찾습니다.  
![\[에 있는 작업의 구성 탭입니다Workflow Studio.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_sf_05.png)

1. **API 파라미터** 필드에 드롭다운 옵션이 있는 경우 ** CloudFormation 대체 항목 입력을** 선택합니다. 그런 다음 고유한 이름을 입력합니다.

   동일한 리소스에 연결하는 작업의 경우 각 작업에 대해 동일한 정의 대체를 지정합니다. 기존 정의 대체를 사용하려면 ** CloudFormation 대체 선택을** 선택하고 사용할 대체를 선택합니다.

1. **API 파라미터** 필드에 JSON 객체가 포함된 경우 정의 대체를 사용할 리소스 이름을 지정하는 항목을 수정합니다. 다음 예제에서는를 `"MyDynamoDBTable"`로 변경합니다`"${RecordTransaction}"`.  
![\[에 있는 작업의 구성 탭입니다Workflow Studio.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_sf_06.png)

1. **저장**을 선택하고 **인프라 컴포저로 돌아가기**를 선택합니다.

워크플로의 작업은 **Step Functions 상태 시스템** 카드에 시각화됩니다.

![\[작업이 시각화된 Step Functions 상태 머신 카드입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_sf_03.png)


### 워크플로 작업에 리소스 연결
<a name="using-composer-services-sf-use-connect"></a>

Infrastructure Composer에서 지원되는 워크플로 작업과 지원되는 Infrastructure Composer 카드 간의 연결을 생성할 수 있습니다.
+ **지원되는 워크플로 작업** - Step Functions에 최적화된에 대한 작업 AWS 서비스 입니다. 자세한 내용은 *AWS Step Functions 개발자 안내서*의 [ Step Functions에 최적화된 통합을 참조하세요](https://docs.aws.amazon.com/step-functions/latest/dg/connect-supported-services.html).
+ **지원되는 Infrastructure Composer 카드** - 향상된 구성 요소 카드가 지원됩니다. Infrastructure Composer의 카드에 대한 자세한 내용은 섹션을 참조하세요[Infrastructure Composer에서 카드 구성 및 수정](using-composer-cards.md).

연결을 생성할 때 작업과 카드 AWS 서비스 의가 일치해야 합니다. 예를 들어 Lambda 함수를 호출하는 워크플로 태스크를 **Lambda 함수** 향상된 구성 요소 카드에 연결할 수 있습니다.

연결을 생성하려면 작업 포트를 클릭하고 향상된 구성 요소 카드의 왼쪽 포트로 끕니다.

![\[Lambda 함수 리소스 카드에 연결된 작업이 있는 Step Functions 상태 시스템 카드입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_sf_04.png)


Infrastructure Composer는 연결을 정의하기 위해 `DefinitionSubstitution` 값을 자동으로 업데이트합니다. 다음은 예제입니다.

```
Transform: AWS::Serverless-2016-10-31
Resources:
  StateMachine:
    Type: AWS::Serverless::StateMachine
    Properties:
      Definition:
        StartAt: Check Stock Value
        States:
          Check Stock Value:
            Type: Task
            Resource: arn:aws:states:::lambda:invoke
            Parameters:
              Payload.$: $
              FunctionName: ${CheckStockValue}
            Next: Choice
          ...
      DefinitionSubstitutions:
        CheckStockValue: !GetAtt CheckStockValue.Arn
        ...
  CheckStockValue:
    Type: AWS::Serverless::Function
    Properties:
      ...
```

### 외부 파일 작업
<a name="using-composer-services-sf-use-external"></a>

**Step Functions 상태 시스템** 카드에서 워크플로를 생성하면 Infrastructure Composer는 `Definition` 속성을 사용하여 템플릿 내에 상태 시스템 정의를 저장합니다. 상태 시스템 정의를 외부 파일에 저장하도록 Infrastructure Composer를 구성할 수 있습니다.

**참고**  
의 Infrastructure Composer에서이 기능을 사용하려면 **로컬 동기화**가 활성화되어 있어야 AWS Management Console합니다. 자세한 내용은 [Infrastructure Composer 콘솔에서 프로젝트를 로컬로 동기화하고 저장](using-composer-project-local-sync.md) 단원을 참조하십시오.

**상태 시스템 정의를 외부 파일에 저장하려면**

1. **Step Functions 상태 시스템** 카드의 **리소스 속성** 패널을 엽니다.

1. **상태 시스템 정의에 외부 파일 사용** 옵션을 선택합니다.

1. 상태 시스템 정의 파일의 상대 경로와 이름을 제공합니다.

1. **저장**을 선택합니다.

Infrastructure Composer는 다음을 수행합니다.

1. 상태 시스템 정의를 `Definition` 필드에서 외부 파일로 이동합니다.

1. Amazon States Language를 사용하여 상태 시스템 정의를 외부 파일에 저장합니다.

1. `DefinitionUri` 필드를 사용하여 외부 파일을 참조하도록 템플릿을 수정합니다.

## 자세히 알아보기
<a name="using-composer-services-sf-learn"></a>

Infrastructure Composer의 Step Functions에 대한 자세한 내용은 다음을 참조하세요.
+ *AWS Step Functions 개발자 안내서*[Workflow Studio의 Infrastructure Composer](https://docs.aws.amazon.com/step-functions/latest/dg/use-wfs-in-app-composer.html)에서 사용.
+ *AWS Step Functions 개발자 안내서*[의 AWS SAM 템플릿의 DefinitionSubstitutions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-sam-sfn.html#sam-definition-substitution-eg).

# Infrastructure Composer의 표준 카드
<a name="using-composer-standard-cards"></a>

모든 CloudFormation 리소스는 리소스 팔레트에서 **표준 IaC 리소스 카드로** 사용할 수 **있습니다**. 시각적 캔버스로 끌면 **표준 IaC 리소스 카드**가 **표준 구성 요소 카드**가 됩니다. 이는 카드가 하나 이상의 표준 IaC 리소스임을 의미합니다. 추가 예제 및 세부 정보는이 섹션의 주제를 참조하세요.

**템플릿** 보기와 **리소스 속성** 창을 통해 인프라 코드를 수정할 수 있습니다. 예를 들어 다음은 `Alexa::ASK::Skill` 표준 IaC 리소스의 시작 템플릿 예제입니다.

```
Resources:
  Skill:
    Type: Alexa::ASK::Skill
    Properties:
      AuthenticationConfiguration:
        RefreshToken: <String>
        ClientSecret: <String>
        ClientId: <String>
      VendorId: <String>
      SkillPackage:
        S3Bucket: <String>
        S3Key: <String>
```

표준 IaC 리소스 카드 시작 템플릿은 다음으로 구성됩니다.
+  CloudFormation 리소스 유형입니다.
+ 필수 또는 일반적으로 사용되는 속성입니다.
+ 각 속성에 제공할 값의 필수 유형입니다.

**참고**  
Amazon Q를 사용하여 표준 리소스 카드에 대한 인프라 코드 제안을 생성할 수 있습니다. 자세한 내용은 [AWS Infrastructure Composer 와 함께 사용 Amazon Q Developer](using-composer-ide-cw.md)를 참조하세요.

## 절차
<a name="using-composer-cards-use-standard-component"></a>

리소스 **속성** 패널을 통해 표준 구성 요소 카드의 각 리소스에 대한 인프라 코드를 수정할 수 있습니다.

**표준 구성 요소 카드를 수정하려면**

1. 표준 IaC 구성 요소 카드의 **리소스 속성** 패널을 엽니다.

1. **편집** 필드의 드롭다운 목록에서 편집할 표준 IaC 리소스를 선택합니다.

1. 인프라 코드를 수정하고 **저장합니다**.

# Infrastructure Composer에서 카드 삭제
<a name="using-composer-cards-delete"></a>

이 섹션에서는에서 카드를 삭제하는 지침을 제공합니다 AWS Infrastructure Composer.

## 향상된 구성 요소 카드
<a name="using-composer-cards-delete-enhanced-card"></a>

향상된 구성 요소 카드를 삭제하려면 시각적 캔버스에 배치한 카드를 선택합니다. **카드 작업** 메뉴에서 **삭제**를 선택합니다.

![\[카드 작업 메뉴와 삭제 옵션이 표시된 향상된 구성 요소 카드.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac-enhanced-delete.png)


## 표준 구성 요소 카드
<a name="using-composer-cards-use-standard-resource-delete"></a>

표준 구성 요소 카드를 삭제하려면 템플릿에서 각 CloudFormation 리소스의 인프라 코드를 수동으로 제거해야 합니다. 다음은 이를 수행하는 간단한 방법입니다.

1. 삭제할 리소스의 논리적 ID를 기록해 둡니다.

1. 템플릿의 `Resources` 또는 `Outputs` 섹션에서 논리적 ID로 리소스를 찾습니다.

1. 템플릿에서 리소스를 삭제합니다. 여기에는 리소스 논리적 ID와 `Type` 및와 같은 중첩된 값이 포함됩니다`Properties`.

1. **Canvas** 뷰를 확인하여 리소스가 캔버스에서 제거되었는지 확인합니다.

# Infrastructure Composer에서 Change Inspector로 코드 업데이트 보기
<a name="using-change-inspector"></a>

Infrastructure Composer 콘솔에서 설계하면 인프라 코드가 자동으로 생성됩니다. **Change Inspector**를 사용하여 템플릿 코드 업데이트를 보고 Infrastructure Composer가 생성하는 내용을 알아봅니다.

이 주제에서는 AWS Management Console 또는 AWS Toolkit for Visual Studio Code 확장에서 Infrastructure Composer를 사용하는 방법을 다룹니다.

**Change Inspector**는 최근 코드 업데이트를 보여주는 Infrastructure Composer 내의 시각적 도구입니다.
+ 애플리케이션을 설계할 때 시각적 캔버스 하단에 메시지가 표시됩니다. 이러한 메시지는 수행 중인 작업에 대한 설명을 제공합니다.
+ 지원되는 경우 메시지를 확장하여 **Change Inspector**를 볼 수 있습니다.
+ **Change Inspector**에는 가장 최근 상호 작용의 코드 변경 사항이 표시됩니다.

다음 예제에서는 변경 검사기의 작동 방식을 보여줍니다.

![\[두 개의 카드를 시각적 캔버스로 끌어서 연결한 다음 결과 메시지를 확장하여 Change Inspector를 엽니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ci_01.gif)


## Change Inspector의 이점
<a name="using-change-inspector-benefits"></a>

**Change Inspector**는 Infrastructure Composer가 생성하는 템플릿 코드를 볼 수 있는 좋은 방법입니다. 또한 인프라 코드를 작성하는 방법을 배울 수 있는 좋은 방법입니다. Infrastructure Composer에서 애플리케이션을 설계할 때 **Change Inspector**에서 코드 업데이트를 보고 설계를 프로비저닝하는 데 필요한 코드에 대해 알아봅니다.

## 절차
<a name="using-change-inspector-how"></a>

**Change Inspector를 사용하려면**

1. 메시지를 확장하여 **Change Inspector**를 불러옵니다.  
![\[화면 하단에서 Change Inspector를 엽니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ci_01.gif)

1. 자동으로 구성된 코드를 확인합니다.  
![\[Infrastructure Composer에서 자동으로 업데이트한 인프라 코드 표시.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ci_03.png)

   1. **녹색**으로 강조 표시된 코드는 새로 추가된 코드를 나타냅니다.

   1. **빨간색**으로 강조 표시된 코드는 새로 제거된 코드를 나타냅니다.

   1. **행 번호는** 템플릿 내의 위치를 나타냅니다.

1. 템플릿의 여러 섹션이 업데이트되면 **Change Inspector**가 이를 구성합니다. 모든 변경 사항을 보려면 **이전** 및 **다음** 버튼을 선택합니다.  
![\[다음을 선택하여 여러 변경 사항을 봅니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ci_04.gif)

**참고**  
콘솔의 Infrastructure Composer의 경우 **템플릿 보기를** 사용하여 전체 템플릿의 컨텍스트에서 코드 변경 사항을 볼 수 있습니다. Infrastructure Composer를 로컬 IDE와 동기화하고 로컬 시스템에서 전체 템플릿을 볼 수도 있습니다. 자세한 내용은 [Infrastructure Composer 콘솔을 로컬 IDE에 연결](other-services-ide.md)를 참조하세요.

## 자세히 알아보기
<a name="using-change-inspector-learn"></a>

Infrastructure Composer가 생성하는 코드에 대한 자세한 내용은 다음을 참조하세요.
+ [Infrastructure Composer의 카드 연결](using-composer-connecting.md).

# Infrastructure Composer에서 외부 파일 참조
<a name="using-composer-external-files"></a>

외부 파일을 AWS Serverless Application Model (AWS SAM) 템플릿과 함께 사용하여 반복된 코드를 재사용하고 프로젝트를 구성할 수 있습니다. 예를 들어 OpenAPI 사양에 설명된 Amazon API Gateway REST API 리소스가 여러 개 있을 수 있습니다. 템플릿에서 OpenAPI 사양 코드를 복제하는 대신 하나의 외부 파일을 생성하고 각 리소스에 대해 참조할 수 있습니다.

AWS Infrastructure Composer 는 다음과 같은 외부 파일 사용 사례를 지원합니다.
+ 외부 OpenAPI 사양 파일에서 정의한 API Gateway REST API 리소스입니다.
+ AWS Step Functions 외부 상태 시스템 정의 파일로 정의된 상태 시스템 리소스입니다.

지원되는 리소스에 대한 외부 파일 구성에 대한 자세한 내용은 다음을 참조하세요.
+ `[ DefinitionBody](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-api.html#sam-api-definitionbody)`(`AWS::Serverless::Api`일 때)
+ `[ DefinitionUri](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definitionuri)`(`AWS::Serverless::StateMachine`일 때)

**참고**  
Infrastructure Composer 콘솔에서 Infrastructure Composer를 사용하여 외부 파일을 참조하려면 **로컬 동기화** 모드에서 Infrastructure Composer를 사용해야 합니다. 자세한 내용은 [Infrastructure Composer 콘솔에서 프로젝트를 로컬로 동기화하고 저장](using-composer-project-local-sync.md) 단원을 참조하십시오.

**Topics**
+ [Infrastructure Composer 외부 참조 파일의 모범 사례](using-composer-external-files-best-practices.md)
+ [Infrastructure Composer에서 외부 파일 참조 생성](using-composer-external-files-new.md)
+ [Infrastructure Composer에서 외부 파일 참조가 있는 프로젝트 로드](using-composer-external-files-load.md)
+ [Infrastructure Composer에서 외부 파일을 참조하는 애플리케이션 생성](using-composer-external-files-examples-example3.md)
+ [Infrastructure Composer를 사용하여 OpenAPI 사양 외부 파일 참조](using-composer-external-files-examples-example1.md)

# Infrastructure Composer 외부 참조 파일의 모범 사례
<a name="using-composer-external-files-best-practices"></a>

## 로컬 IDE에서 Infrastructure Composer 사용
<a name="using-composer-external-files-best-practices-ide"></a>

로컬 **동기화 모드에서 로컬** IDE와 함께 Infrastructure Composer를 사용하는 경우 로컬 IDE를 사용하여 외부 파일을 보고 수정할 수 있습니다. 템플릿에서 참조되는 지원되는 외부 파일의 콘텐츠는 Infrastructure Composer 캔버스에서 자동으로 업데이트됩니다. 자세한 내용은 [Infrastructure Composer 콘솔을 로컬 IDE에 연결](other-services-ide.md)를 참조하세요.

## 프로젝트의 상위 디렉터리 내에 외부 파일 유지
<a name="using-composer-external-files-best-practices-directory"></a>

프로젝트의 상위 디렉터리 내에 하위 디렉터리를 생성하여 외부 파일을 구성할 수 있습니다. Infrastructure Composer는 프로젝트의 상위 디렉터리 외부의 디렉터리에 저장된 외부 파일에 액세스할 수 없습니다.

## 를 사용하여 애플리케이션 배포 AWS SAM CLI
<a name="using-composer-external-files-best-practices-sam"></a>

애플리케이션을에 배포할 때 AWS 클라우드로컬 외부 파일을 먼저 Amazon Simple Storage Service(Amazon S3)와 같은 액세스 가능한 위치에 업로드해야 합니다. AWS SAM CLI를 사용하여이 프로세스를 자동으로 촉진할 수 있습니다. 자세한 내용은 *AWS Serverless Application Model 개발자 안내서*의 [ 배포 시 로컬 파일 업로드](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/deploy-upload-local-files.html)를 참조하세요.

# Infrastructure Composer에서 외부 파일 참조 생성
<a name="using-composer-external-files-new"></a>

지원되는 **리소스의 리소스 속성** 패널에서 외부 파일 참조를 생성할 수 있습니다.

**외부 파일 참조를 생성하려면**

1. **API Gateway** 또는 **Step Functions** 향상된 구성 요소 카드에서 **세부 정보를** 선택하여 **리소스 속성 ** 패널을 불러옵니다.

1. **외부 파일 사용** 옵션을 찾아 선택합니다.

1. 외부 파일의 상대 경로를 지정합니다. 파일에서 외부 `template.yaml` 파일까지의 경로입니다.

   예를 들어 다음 프로젝트의 구조에서 `api-spec.yaml` 외부 파일을 참조하려면를 상대 경로`./api-spec.yaml`로 지정합니다.

   ```
   demo
   ├── api-spec.yaml
   ├── src
   │ └── Function
   │ ├── index.js
   │ └── package.json
   └── template.yaml
   ```
**참고**  
외부 파일과 지정된 경로가 없는 경우 Infrastructure Composer에서 생성합니다.

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

# Infrastructure Composer에서 외부 파일 참조가 있는 프로젝트 로드
<a name="using-composer-external-files-load"></a>

이 페이지에 나열된 단계에 따라 외부 파일 참조가 있는 Infrastructure Composer 프로젝트를 로드합니다.

**Infrastructure Composer 콘솔에서**

1. 에 나열된 단계를 완료합니다[Infrastructure Composer 콘솔에서 기존 프로젝트 템플릿 가져오기](using-composer-project-import-template.md).

1. Infrastructure Composer가 프로젝트의 루트 폴더에 연결하라는 메시지를 표시하는지 확인합니다.

브라우저가 파일 시스템 액세스 API를 지원하는 경우 Infrastructure Composer는 프로젝트의 루트 폴더에 연결하라는 메시지를 표시합니다. Infrastructure Composer는 프로젝트를 **로컬 동기화** 모드로 열어 외부 파일을 지원합니다. 참조된 외부 파일이 지원되지 않는 경우 오류 메시지가 표시됩니다. 오류 메시지에 대한 자세한 내용은 섹션을 참조하세요[문제 해결](ref-troubleshooting.md).

**Toolkit for VS Code에서**

1. 에 나열된 단계를 완료합니다[에서 Infrastructure Composer에 액세스 AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md).

1. Infrastructure Composer에서 보려는 템플릿을 엽니다.

템플릿에서 Infrastructure Composer에 액세스하면 Infrastructure Composer가 외부 파일을 자동으로 감지합니다. 참조된 외부 파일이 지원되지 않는 경우 오류 메시지가 표시됩니다. 오류 메시지에 대한 자세한 내용은 섹션을 참조하세요[문제 해결](ref-troubleshooting.md).

# Infrastructure Composer에서 외부 파일을 참조하는 애플리케이션 생성
<a name="using-composer-external-files-examples-example3"></a>

이 예제에서는를 AWS SAM CLI 사용하여 상태 시스템 정의에 대한 외부 파일을 참조하는 애플리케이션을 생성합니다. 그런 다음 외부 파일을 올바르게 참조하여 Infrastructure Composer에 프로젝트를 로드합니다.

**예제**

1. 먼저 AWS SAM CLI **sam init** 명령을 사용하여 라는 새 애플리케이션을 초기화합니다`demo`. 대화형 흐름 중에 **다단계 워크플로** 빠른 시작 템플릿을 선택합니다.

   ```
   $ sam init
   
   ...
   
   Which template source would you like to use?
           1 - AWS Quick Start Templates
           2 - Custom Template Location
   Choice: 1
   
   Choose an AWS Quick Start application template
           1 - Hello World Example
           2 - Multi-step workflow
           3 - Serverless API
           4 - Scheduled task
           ...
   Template: 2
   
   Which runtime would you like to use?
           1 - dotnet6
           2 - dotnetcore3.1
           ...
           15 - python3.7
           16 - python3.10
           17 - ruby2.7
   Runtime: 16
   
   Based on your selections, the only Package type available is Zip.
   We will proceed to selecting the Package type as Zip.
   
   Based on your selections, the only dependency manager available is pip.
   We will proceed copying the template using pip.
   
   Would you like to enable X-Ray tracing on the function(s) in your application?  [y/N]: ENTER
   
   Would you like to enable monitoring using CloudWatch Application Insights?
   For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]: ENTER
   
   Project name [sam-app]: demo
   
       -----------------------
       Generating application:
       -----------------------
       Name: demo
       Runtime: python3.10
       Architectures: x86_64
       Dependency Manager: pip
       Application Template: step-functions-sample-app
       Output Directory: .
       Configuration file: demo/samconfig.toml
       
       Next steps can be found in the README file at demo/README.md
   
   ...
   ```

   이 애플리케이션은 상태 시스템 정의에 대한 외부 파일을 참조합니다.

   ```
   ...
   Resources:
     StockTradingStateMachine:
       Type: AWS::Serverless::StateMachine
       Properties:
         DefinitionUri: statemachine/stock_trader.asl.json
   ...
   ```

   외부 파일은 애플리케이션의 `statemachine` 하위 디렉터리에 있습니다.

   ```
   demo
   ├── README.md
   ├── __init__.py
   ├── functions
   │   ├── __init__.py
   │   ├── stock_buyer
   │   ├── stock_checker
   │   └── stock_seller
   ├── samconfig.toml
   ├── statemachine
   │   └── stock_trader.asl.json
   ├── template.yaml
   └── tests
   ```

1. 그런 다음 콘솔에서 Infrastructure Composer에 애플리케이션을 로드합니다. Infrastructure Composer **홈** 페이지에서 ** CloudFormation 템플릿 로드를** 선택합니다.

1. `demo` 프로젝트 폴더를 선택하고 프롬프트가 파일을 볼 수 있도록 허용합니다. `template.yaml` 파일을 선택하고 **생성을** 선택합니다. 메시지가 표시되면 **변경 사항 저장**을 선택합니다.  
![\[프로젝트 폴더가 선택된 Infrastructure Composer 프로젝트 폴더 열기 창과 선택할 준비가 된 생성.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ex_15.png)

Infrastructure Composer는 외부 상태 시스템 정의 파일을 자동으로 감지하여 로드합니다. **StockTradingStateMachine** 리소스를 선택하고 **세부 정보를** 선택하여 **리소스 속성** 패널을 표시합니다. 여기서 Infrastructure Composer가 외부 상태 시스템 정의 파일에 자동으로 연결되었음을 확인할 수 있습니다.

![\[API Gateway 리소스 속성 패널이 표시된 Infrastructure Composer 캔버스 보기에는 외부 참조 파일의 구성이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ex_03.png)


상태 시스템 정의 파일에 대한 모든 변경 사항은 Infrastructure Composer에 자동으로 반영됩니다.

# Infrastructure Composer를 사용하여 OpenAPI 사양 외부 파일 참조
<a name="using-composer-external-files-examples-example1"></a>

이 예제에서는 콘솔의 Infrastructure Composer를 사용하여 API Gateway를 정의하는 외부 OpenAPI 사양 파일을 참조합니다REST API.

먼저 Infrastructure Composer **홈** 페이지에서 새 프로젝트를 생성합니다.

그런 다음 **메뉴에서** **로컬 동기화** 활성화를 선택하여 **로컬 동기화를 활성화합니다**. 라는 새 폴더를 생성하고 `demo`프롬프트가 파일을 볼 수 있도록 허용한 다음 **활성화를** 선택합니다. 메시지가 표시되면 **변경 사항 저장**을 선택합니다.

![\[데모 프로젝트 폴더가 선택된 상태에서 Infrastructure Composer 로컬 동기화 활성화 창과 활성화 버튼을 선택할 준비가 되었습니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ex_11.png)


그런 다음 Amazon API Gateway 카드를 캔버스로 드래그합니다. **세부 정보를** 선택하여 **리소스 속성** 패널을 불러옵니다.

![\[리소스 속성 패널이 열려 있는 캔버스의 API Gateway 리소스입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ex_12.png)


**리소스 속성** 패널에서 다음을 구성하고 **저장합니다**.
+ **API 정의에 외부 파일 사용** 옵션을 선택합니다.
+ **외부 파일의 상대 경로**`./api-spec.yaml`로 입력

![\[API 정의에 외부 파일 사용 아래에 표시된 확인란과 정의된 외부 파일의 상대 경로를 보여주는 창입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ex_13.png)


이렇게 하면 로컬 시스템에 다음 디렉터리가 생성됩니다.

```
demo
└── api-spec.yaml
```

이제 로컬 시스템에서 외부 파일을 구성할 수 있습니다. IDE를 사용하여 프로젝트 폴더에 `api-spec.yaml` 있는를 엽니다. 내용을 다음과 같이 바꿉니다.

```
openapi: '3.0'
info: {}
paths:
  /:
    get:
      responses: {}
    post:
      x-amazon-apigateway-integration:
        credentials:
          Fn::GetAtt:
            - ApiQueuesendmessageRole
            - Arn
        httpMethod: POST
        type: aws
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:sqs:path/${AWS::AccountId}/${Queue.QueueName}
        requestParameters:
          integration.request.header.Content-Type: '''application/x-www-form-urlencoded'''
        requestTemplates:
          application/json: Action=SendMessage&MessageBody={"data":$input.body}
        responses:
          default:
            statusCode: 200
      responses:
        '200':
          description: 200 response
```

Infrastructure Composer **템플릿** 보기에서 Infrastructure Composer가 외부 파일을 참조하도록 템플릿을 자동으로 업데이트했음을 확인할 수 있습니다.

![\[외부 파일을 참조하도록 구성된 인프라 코드를 보여주는 Infrastructure Composer 템플릿 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_ex_07.png)


# 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}
```