프라이빗 API Gateway에 Direct Connect 연결을 통해 연결하려면 어떻게 해야 하나요?

4분 분량
0

AWS Direct Connect 연결을 통해 프라이빗 Amazon API Gateway에 연결하려고 합니다.

해결 방법

Amazon API Gateway 서비스를 위한 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트 생성

Amazon VPC 엔드포인트를 사용하면 VPC의 프라이빗 리소스가 API Gateway 서비스와 안전하게 통신할 수 있습니다. API Gateway용 Amazon VPC 엔드포인트를 생성하려면 다음 단계를 따르세요.

  1. 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 연결이 구성된 Amazon VPC를 선택합니다.
  7. 서브넷에서 API에 액세스할 수 있도록 하려는 서브넷을 선택합니다.
  8. DNS 이름 활성화에서 이 엔드포인트에 대해 사용 설정 확인란의 선택을 취소합니다. 이 설정을 해제하려면 선택적 기능인 "DNS 호스트 이름"이 켜져 있는 Amazon VPC가 있어야 합니다. 이 설정을 켜두면 VPC가 Amazon에서 제공한 DNS를 사용하는 경우 배포된 Amazon VPC에 있는 퍼블릭 API Gateway API에 대한 모든 액세스가 중단됩니다.
  9. 보안 그룹에서 Amazon VPC 엔드포인트의 보안 그룹을 선택합니다. 보안 그룹은 Amazon VPC로부터의 TCP/443 인바운드에 대한 액세스를 허용해야 합니다.
  10. 정책에서 전체 액세스를 선택합니다. 이 옵션은 AWS IAM 권한을 사용하여 Amazon VPC에서 VPC 엔드포인트로의 모든 연결을 허용합니다.
  11. 엔드포인트 생성을 선택합니다.
  12. Amazon 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. 가져오기를 선택합니다.

Amazon 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 엔드포인트를 생성한 후 기록한 Amazon VPC 엔드포인트 ID로 바꿉니다. 또는 엔드포인트 아래의 Amazon VPC 콘솔에서 ID를 찾을 수 있습니다.
    참고: 이 예제 정책은 Amazon VPC에서 API의 모든 리소스에 액세스할 수 있도록 허용합니다. 액세스를 추가로 제한하려면 리소스 키를 수정합니다.
  3. 저장을 선택합니다.

API를 배포하여 변경 사항을 커밋합니다.

API를 생성하고 리소스 정책을 추가했으니 이제 API를 단계에 배포하여 변경 사항을 구현하세요.

  1. API Gateway 콘솔의 탐색 창에서 리소스를 선택합니다.
  2. 작업을 선택합니다.
  3. API 작업에서 API 배포를 선택합니다.
  4. 배포 단계에서 **[New Stage]**를 선택합니다.
  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를 사용하여 Amazon VPC에 연결된 컴퓨터에서 다음 명령 중 하나를 실행하여 VPC 엔드포인트의 DNS 호스트 이름 확인을 테스트합니다.

    Windows PowerShell:

    nslookup <YOUR_VPCE_HOSTNAME>

    -또는-

    macOS/Unix:

    nslookup <YOUR_VPCE_HOSTNAME>

    참고: YOUR_VPCE_HOSTNAME을 이전에 생성한 VPC 엔드포인트의 호스트 이름으로 바꿉니다.

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

  4. DNS가 작동하는 경우 테스트 HTTP 요청을 합니다. 이를 위해서는 API Gateway 콘솔의 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>

    참고: YOUR_API_ID를 비공개 REST API 또는 이전에 만든 API의 ID로 바꿉니다. YOUR_VPCE_HOSTNAME을 VPC 엔드포인트의 호스트 이름으로, STAGE를 앞서 생성한 배포 단계로 바꿉니다.

다음 사항을 확인하십시오.

  • 응답의 첫 번째 줄에는 “HTTP/1.1 200 OK”가 포함됩니다.
  • 응답을 받지 못하면 Amazon VPC 엔드포인트와 연결된 보안 그룹이 소스 IP 주소에서 TCP/443의 인바운드 연결을 허용하는지 확인합니다. 또한 Direct Connect 연결을 사용하여 제대로 연결되고 있는지 확인합니다.
  • “403 Forbidden” 응답을 받으면 <YOUR_API_ID> 헤더를 설정했는지 확인합니다. GET 요청을 보내고 있는지 확인합니다. 또한 **<STAGE>**이(가) 올바르게 추가되었는지 확인합니다.

**참고:**이 API와 다른 도메인에서 제공되는 클라이언트 웹 애플리케이션은 이 API와 상호 작용할 수 있습니다. 이러한 경우 브라우저는 x-apigw-api-id 헤더를 설정하기 어렵게 만드는 CORS의 실행 전 요청을 생성합니다. 이 문제를 해결하려면 대신 Route53 별칭을 사용하여 프라이빗 API에 액세스하세요.

관련 정보

CORS란 무엇인가요?

Direct Connect 게이트웨이 라우팅 문제를 해결하려면 어떻게 해야 하나요?

Direct Connect 게이트웨이를 설정하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 4달 전