

# 프라이빗 통합 설정
<a name="set-up-private-integration"></a>

Application Load Balancer 또는 Network Load Balancer와 프라이빗 통합을 생성하려면 HTTP 프록시 통합을 생성하고, 사용할 [VPC 링크 V2](apigateway-vpc-links-v2.md)를 지정하고, Network Load Balancer 또는 Application Load Balancer의 ARN을 제공해야 합니다. 기본적으로 프라이빗 통합 트래픽은 HTTP 프로토콜을 사용합니다. HTTPS를 사용하려면 `https://example.com:443/test`와 같이 보안 서버 이름이 포함된 [https://docs.aws.amazon.com/apigateway/latest/api/API_PutIntegration.html#apigw-PutIntegration-request-uri](https://docs.aws.amazon.com/apigateway/latest/api/API_PutIntegration.html#apigw-PutIntegration-request-uri)를 지정합니다. 프라이빗 통합을 사용하여 REST API를 생성하는 방법에 대한 전체 자습서는 [자습서: 프라이빗 통합을 통해 REST API 생성](getting-started-with-private-integration.md) 섹션을 참조하세요.

## 프라이빗 통합 생성
<a name="set-up-private-integration-create"></a>

다음 절차에서는 VPC 링크 V2를 사용하여 로드 밸런서에 연결하는 프라이빗 통합을 생성하는 방법을 보여 줍니다.

------
#### [ AWS Management Console ]

프라이빗 통합을 생성하는 방법에 대한 자습서는 [자습서: 프라이빗 통합을 통해 REST API 생성](getting-started-with-private-integration.md) 섹션을 참조하세요.

------
#### [ AWS CLI ]

다음 [put-integration](https://docs.aws.amazon.com/cli/latest/reference/latest/api/API_PutIntegration.html) 명령은 VPC 링크 V2를 통해 로드 밸런서에 연결하는 프라이빗 통합을 생성합니다.

```
aws apigateway put-integration \
    --rest-api-id abcdef123 \
    --resource-id aaa000 \
    --integration-target 'arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011' \
    --uri 'https://example.com:443/path' \
    --http-method GET \
    --type HTTP_PROXY \
    --integration-http-method GET \
    --connection-type VPC_LINK \
    --connection-id bbb111
```

연결 ID를 직접 제공하는 대신 스테이지 변수를 사용할 수 있습니다. API를 스테이지에 배포할 때 VPC 링크 V2 ID를 설정합니다. 다음 [put-integration](https://docs.aws.amazon.com/cli/latest/reference/latest/api/API_PutIntegration.html) 명령은 VPC 링크 V2 ID에 대한 스테이지 변수를 사용하여 프라이빗 통합을 생성합니다.

```
aws apigateway put-integration \
    --rest-api-id abcdef123 \
    --resource-id aaa000 \
    --integration-target 'arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011' \
    --uri 'https://example.com:443/path' \
    --http-method GET \
    --type HTTP_PROXY \
    --integration-http-method GET \
    --connection-type VPC_LINK \
    --connection-id "\${stageVariables.vpcLinkV2Id}"
```

단계 변수 표현식(${stageVariables.vpcLinkV2Id})을 큰따옴표로 묶고 $ 문자를 이스케이프합니다.

------
#### [ OpenAPI ]

API의 OpenAPI 파일을 가져와 프라이빗 통합이 포함된 API를 설정할 수 있습니다. 다음만 제외하면 설정은 HTTP 통합이 포함된 API의 OpenAPI 정의와 비슷합니다.
+ 명시적으로 `connectionType`을 `VPC_LINK`로 설정해야 합니다.
+ 명시적으로 `connectionId`를 `VpcLinkV2`의 ID 또는 `VpcLinkV2`의 ID를 참조하는 단계 변수로 설정해야 합니다.
+ 프라이빗 통합의 `uri` 파라미터는 VPC의 HTTP/HTTPS 엔드포인트를 가리키지만 그 대신 통합 요청의 `Host` 헤더를 설정하는 데 사용됩니다.
+ VPC에 HTTPS 엔드포인트가 있는 프라이빗 통합의 `uri` 파라미터는 VPC 엔드포인트에 설치된 인증서에 있는 이름과 대조하여 지정된 도메인 이름을 확인하는 데 사용됩니다.

 단계 변수를 사용하여 `VpcLinkV2` ID를 참조할 수 있습니다. 또는 ID 값을 직접 `connectionId`에 할당할 수 있습니다.

다음 JSON 형식의 OpenAPI 파일은 단계 변수(`${stageVariables.vpcLinkIdV2}`)가 참조하는 VPC 링크가 포함된 API의 예를 보여 줍니다.

```
{
  "swagger": "2.0",
  "info": {
    "version": "2017-11-17T04:40:23Z",
    "title": "MyApiWithVpcLinkV2"
  },
  "host": "abcdef123.execute-api.us-west-2.amazonaws.com",
  "basePath": "/test",
  "schemes": [
    "https"
  ],
  "paths": {
    "/": {
      "get": {
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Empty"
            }
          }
        },
        "x-amazon-apigateway-integration": {
          "responses": {
            "default": {
              "statusCode": "200"
            }
          },
          "uri": "https://example.com:443/path",
          "passthroughBehavior": "when_no_match",
          "connectionType": "VPC_LINK",
          "connectionId": "${stageVariables.vpcLinkV2Id}",
          "integration-target": "arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011",
          "httpMethod": "GET",
          "type": "http_proxy"
        }
      }
    }
  },
  "definitions": {
    "Empty": {
      "type": "object",
      "title": "Empty Schema"
    }
  }
}
```

------

## 프라이빗 통합 업데이트
<a name="set-up-private-integration-update"></a>

다음 예시에서는 프라이빗 통합을 위해 VPC 링크 V2를 업데이트합니다.

------
#### [ AWS Management Console ]

**프라이빗 통합 업데이트**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. 프라이빗 통합이 포함된 REST API를 선택합니다.

1. 프라이빗 통합을 사용하는 리소스와 메서드를 선택합니다.

1. **통합 요청** 탭의 **통합 요청 설정**에서 **편집**을 선택합니다.

1. 프라이빗 통합의 설정을 편집할 수 있습니다. 현재 VPC 링크 V1을 사용하는 경우 VPC 링크를 VPC 링크 V2로 변경할 수 있습니다.

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

1. 변경 사항을 적용하려면 API를 재배포합니다.

------
#### [ AWS CLI ]

다음 [update-integration](https://docs.aws.amazon.com/cli/latest/reference/latest/api/API_PutIntegration.html) 명령은 VPC 링크 V2를 사용하도록 프라이빗 통합을 업데이트합니다.

```
aws apigateway update-integration \
    --rest-api-id a1b2c3d4e5 \
    --resource-id a1b2c3 \
    --http-method GET \
    --patch-operations "[{\"op\":\"replace\",\"path\":\"/connectionId\",\"value\":\"pk0000\"}, {\"op\":\"replace\",\"path\":\"/uri\",\"value\":\"http://example.com\"}, {\"op\":\"replace\",\"path\":\"/integrationTarget\",\"value\":\"arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011\"}]"
```

------