프라이빗 API를 호출하는 방법 - Amazon API Gateway

프라이빗 API를 호출하는 방법

프라이빗 API는 VPC 내에서만 액세스할 수 있으며, 리소스 정책은 구성한 VPC 및 VPC 엔드포인트의 액세스를 허용해야 합니다. 프라이빗 API에 액세스하는 방식은 VPC 엔드포인트에 프라이빗 DNS를 활성화했는지 여부에 따라 다릅니다. 예를 들어 AWS Direct Connect를 통해 온프레미스 네트워크에서 프라이빗 API에 액세스하는 동안 VPC 엔드포인트에 프라이빗 DNS가 활성화됩니다. 이 경우 엔드포인트 특정한 퍼블릭 DNS 호스트 이름을 사용하여 프라이빗 API 호출에 설명된 단계를 따르십시오.

프라이빗 API를 배포한 후, 프라이빗 DNS(프라이빗 DNS 이름 지정을 활성화한 경우) 및 퍼블릭 DNS를 통해 그 API에 액세스할 수 있습니다.

프라이빗 API의 DNS 이름을 얻으려면 다음과 같이 하십시오.

  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔에 로그인합니다.

  2. 왼쪽의 탐색 창에서 엔드포인트를 선택한 후 API Gateway용 인터페이스 VPC 엔드포인트를 선택합니다.

  3. 세부 정보 창의 DNS 이름 필드에 값이 5개 표시됩니다. 처음 3개는 해당 API의 퍼블릭 DNS 이름입니다. 나머지 2개는 프라이빗 DNS 이름입니다.

프라이빗 DNS 이름으로 프라이빗 API 호출

주의

API Gateway의 인터페이스 VPC 엔드포인트를 생성할 때 프라이빗 DNS 이름 활성화 옵션을 선택하면 VPC 엔드포인트가 있는 VPC는 ​​퍼블릭(엣지 최적화 및 리전) API에 액세스할 수 없습니다. 자세한 내용은 API Gateway VPC 종단점에서 퍼블릭 API에 연결할 수 없는 이유는 무엇입니까?를 참조하십시오.

프라이빗 DNS를 활성화했다면 다음과 같이 그 프라이빗 DNS 이름으로 프라이빗 API에 액세스할 수 있습니다.

{restapi-id}.execute-api.{region}.amazonaws.com

API를 호출하는 기본 URL의 형식은 다음과 같습니다.

https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}

예를 들어 이 예제에서 GET /petsGET /pets/{petId} 메서드를 설정했고 REST API ID가 01234567ab이며 해당 리전은 us-west-2라고 가정하면, 브라우저에 다음 URL을 입력하여 API를 테스트할 수 있습니다.

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/1

또는 다음 cURL 명령을 사용할 수 있습니다.

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/2

AWS Direct Connect를 사용하여 프라이빗 API 액세스

또한 온프레미스 네트워크에서 AWS Direct Connect를 사용하여 Amazon VPC 전용 연결을 설정한 후, 이 연결을 통해 퍼블릭 DNS 이름으로 프라이빗 API 엔드포인트에 액세스할 수도 있습니다.

온프레미스 네트워크에서 프라이빗 API에 액세스하는 데는 프라이빗 DNS 이름을 사용할 수 없습니다.

Route53 별칭을 사용하여 프라이빗 API 액세스

VPC 엔드포인트를 프라이빗 REST API와 연결 또는 연결 해제에 설명된 절차를 사용하면 VPC 엔드포인트를 프라이빗 API와 연결하거나 연결을 해제할 수 있습니다.

REST API를 호출할 VPC 엔드포인트와 프라이빗 API의 REST API ID를 연결하면, 다음 형식의 기본 URL을 사용하여 Route53 별칭을 통해 API를 호출할 수 있습니다.

생성된 기본 URL의 형식은 다음과 같습니다.

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

예를 들어 이 예에서 GET /pets 및 GET /pets/{petId} 메소드를 설정했다고 가정하고 API의 API ID가 01234567ab였고 VPC 엔드포인트 ID는 vpce-01234567abcdef012였으며 리전은 us-west-2였다고 가정한다면, 다음과 같이 API를 호출할 수 있습니다.

curl -v https://01234567ab-vpce-01234567abcdef012.execute-api.us-west-2.amazonaws.com/test/pets/

엔드포인트별 퍼블릭 DNS 호스트 이름을 사용하여 프라이빗 API 호출

엔드포인트 특정한 DNS 호스트 이름을 사용하여 프라이빗 API에 액세스할 수 있습니다. 이들 이름은 프라이빗 API에 대한 VPC 엔드포인트 ID 또는 API ID가 포함된 퍼블릭 DNS 호스트 이름입니다.

생성된 기본 URL의 형식은 다음과 같습니다.

https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/{stage}

예를 들어, 이 예제에서 GET /petsGET /pets/{petId} 메서드를 설정했고 API의 API ID는 01234567ab이고 퍼블릭 DNS 호스트 이름은 vpce-01234567abcdef012-01234567이며 리전은 us-west-2라고 가정하면 다음 예와 같이 cURL 명령으로 Host 헤더를 사용하여 VPCE ID를 통해 API를 테스트할 수 있습니다.

curl -v https://vpce-01234567abcdef012-01234567.execute-api.us-east-1.vpce.amazonaws.com/test/pets -H 'Host: 01234567ab.execute-api.us-west-2.amazonaws.com'

또는 다음 형식의 cURL 명령으로 x-apigw-api-id 헤더를 사용하여 API ID를 통해 프라이빗 API에 액세스할 수 있습니다.

curl -v https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/test -H'x-apigw-api-id:{api-id}'