

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

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