Direct Connect 연결을 통해 프라이빗 API 게이트웨이에 연결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 24일

AWS Direct Connect 연결을 통해 프라이빗 Amazon API Gateway에 연결하려면 어떻게 해야 합니까?

​해결 방법

API 게이트웨이 서비스용 Virtual Private Cloud(VPC) 엔드포인트 생성

VPC 엔드포인트를 사용하면 VPC의 프라이빗 리소스가 API 게이트웨이 서비스와 안전하게 통신할 수 있습니다. API 게이트웨이에 대한 VPC 엔드포인트를 생성하려면 다음과 같이 하십시오.

1.    Amazon Virtual Private Cloud(Amazon VPC) 콘솔을 엽니다.

2.    탐색 창의 [Virtual Private Cloud]에서 [엔드포인트]를 선택합니다.

3.    [서비스 카테고리]에서 [AWS 서비스]를 선택합니다.

4.    서비스 이름에 대해 키워드로 “execute-api”를 검색합니다. 이렇게 하면 "com.amazonaws.REGION.execute-api"라는 단일 결과가 반환됩니다.

5.    "com.amazonaws.REGION.execute-api"를 선택합니다.

6.    VPC의 경우, Direct Connect 연결이 구성된 VPC를 선택합니다.

7.    서브넷의 경우, API가 액세스할 수 있게 하려는 서브넷을 선택합니다.

8.    [DNS 이름 사용]에서 이 엔드포인트에 대해 사용 상자의 선택을 취소합니다. 이 설정을 사용하지 않도록 설정하려면 VPC에서 “DNS 호스트 이름”을 활성화해야 합니다. 이것은 선택 기능입니다. 이 설정이 활성화된 상태에서는 VPC가 Amazon 제공 DNS를 사용하는 경우 배포된 VPC의 퍼블릭 API 게이트웨이 API에 대한 모든 액세스가 중단됩니다.

9.    보안 그룹의 경우, VPC 엔드포인트에 대한 보안 그룹을 선택합니다. 보안 그룹은 VPC로부터의 TCP/443 인바운드에 대한 액세스를 허용해야 합니다.

10.    [정책]에서 [전체 액세스]를 선택합니다. 이 옵션은 AWS IAM 권한을 사용하여 VPC에서 VPC 엔드포인트로의 모든 연결을 허용합니다.

11.    [엔드포인트 생성]을 선택합니다.

12.    VPC 엔드포인트 ID를 기록해 둡니다(예: "vpce-01234567890abcdef"). 나중에 API의 리소스 정책을 편집하려면 이 ID가 필요합니다.

프라이빗 REST API 생성(아직 없는 경우)

1.    API Gateway 콘솔을 엽니다.

2.    Direct Connect 연결의 리전을 선택합니다.

3.    [API 생성]을 선택합니다.

4.    API 유형의 경우 REST API 프라이빗을 선택합니다.

5.    API 프로토콜의 경우 REST를 선택합니다.

6.    [새 API 만들기]에서 [예제 API]를 선택합니다.

7.    [설정]에서 [엔드포인트 유형]이 [프라이빗]으로 설정되어 있는지 확인합니다.

8.    [가져오기]를 선택합니다.

VPC 엔드포인트에 프라이빗 REST API에 액세스할 수 있는 권한 부여

1.    API 관리 페이지에서 [리소스 정책]을 선택합니다.

2.    아래 정책을 리소스 정책에 복사합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*/*/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": "{{vpceID}}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*/*/*"
        }
    ]
}

{{vpceID}} 문자열을 VPC 엔드포인트를 생성한 후 기록한 VPC 엔드포인트 ID로 바꿉니다. 또는, [엔드포인트]의 Amazon VPC 콘솔에서 ID를 찾습니다.
참고: 이 예제 정책은 VPC에서 API의 모든 리소스에 대한 액세스를 허용합니다. 액세스를 추가로 제한하려면 리소스 키를 수정합니다.

3.    [저장]을 선택합니다.

API를 배포하여 변경 사항 커밋

이제 API를 만들고 리소스 정책을 추가했으므로, 변경 사항을 구현할 스테이지에 API를 배포해야 합니다. API를 스테이지에 배포하려면 다음과 같이 하십시오.

1.    API 게이트웨이 콘솔의 탐색 창에서 [리소스]를 선택합니다.

2.    [작업]을 선택합니다.

3.    [API 작업]에서 [API 배포]를 선택합니다.

4.    [배포 스테이지]에서 [새 스테이지]를 선택합니다.

5.    스테이지의 이름을 입력합니다.

6.    [배포]를 선택합니다. 변경 사항이 API에 배포됩니다. 이 프로세스는 전파하는 데 몇 분 정도 걸릴 수 있습니다.

Direct Connect 연결에서 API에 대한 액세스 테스트

1.    Amazon VPC 콘솔에서 [엔드포인트]를 선택한 다음 생성한 VPC 엔드포인트를 선택합니다.

2.    [세부 정보]에서 VPC 엔드포인트의 DNS 이름을 복사합니다. 예:
"vpce-0123456789abcdef-b238e1kf.execute-api.REGION.vpce.amazonaws.com".

3.    Direct Connect를 사용하여 VPC에 연결된 컴퓨터에서, 다음 명령 중 하나를 실행해 VPC 엔드포인트의 DNS 호스트 이름 확인을 테스트합니다.

Windows PowerShell:

nslookup <YOUR_VPCE_HOSTNAME>

-또는-

macOS/Unix:

nslookup <YOUR_VPCE_HOSTNAME>

응답은 VPC 엔드포인트에 해당하는 프라이빗 IP 주소를 반환해야 합니다. 응답에서 프라이빗 IP 주소를 받지 못한 경우 엔드포인트의 Amazon VPC 콘솔에 있는 VPC 엔드포인트 호스트 이름을 확인합니다.

4.    DNS가 작동하는 경우 테스트 HTTP 요청을 만듭니다. 이렇게 하려면 API 게이트웨이 콘솔에서 API ID가 필요합니다. 목록에서 API ID를 복사합니다. API ID는 “chw1a2q2xk”와 같은 문자의 문자열입니다.

5.    Direct Connect 연결에 연결된 컴퓨터에서 다음 명령을 실행합니다.

Windows PowerShell:

curl -H @{'x-apigw-api-id' = '<YOUR_API_ID>'} https://<YOUR_VPCE_HOSTNAME>/<STAGE>

-또는-

macOS/Unix:

curl -IX GET -H 'x-apigw-api-id:<YOUR_API_ID>' https://<YOUR_VPCE_HOSTNAME>/<STAGE>

응답의 첫 번째 줄에는 “HTTP/1.1 200 OK”가 포함되어야 합니다.

응답을 받지 못한 경우 VPC 엔드포인트와 연결된 보안 그룹이 원본 IP 주소에서 TCP/443의 인바운드 연결을 허용하는지 확인합니다. 또한 Direct Connect 연결을 사용하여 연결이 올바른지 확인합니다.

“403 Forbidden” 응답을 수신하는 경우 <YOUR_API_ID> 헤더를 설정했는지 확인합니다. GET 요청을 보내고 있는지 확인합니다. 또한, <STAGE>가 올바르게 추가되었는지 확인합니다.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?