프라이빗 API 간접 호출 - Amazon API Gateway

프라이빗 API 간접 호출

VPC 내에서만 VPC 엔드포인트를 사용하여 프라이빗 API를 간접적으로 호출할 수 있습니다. 프라이빗 API에는 특정 VPC와 VPC 엔드포인트가 API를 간접적으로 호출하도록 허용하는 리소스 정책이 있어야 합니다.

사용자 지정 도메인 이름을 사용하여 프라이빗 API를 간접적으로 호출

사용자 지정 도메인 이름을 사용하여 프라이빗 API를 간접적으로 호출하려면 VPC 엔드포인트에 사용자 지정 도메인 이름과의 도메인 이름 액세스 연결이 필요하며, 사용자 지정 도메인 이름은 VPC 엔드포인트가 이를 간접적으로 호출할 수 있도록 액세스를 허용해야 합니다. 자세한 내용은 API Gateway의 프라이빗 API에 대한 사용자 지정 도메인 이름 단원을 참조하십시오.

자체 AWS 계정 또는 다른 AWS 계정의 VPC에서 프라이빗 사용자 지정 도메인 이름을 간접적으로 호출하는 것과는 차이가 없습니다.

사용자 지정 도메인 이름 사용

VPC 내에서 사용자 지정 도메인 이름을 사용하여 API를 간접적으로 호출할 수 있습니다. 다음 예제는 프라이빗 사용자 지정 도메인 이름을 간접적으로 호출하는 curl 명령입니다.

curl https://private.example.com

엔드포인트별 프라이빗 DNS 호스트 이름 사용

사용자 지정 도메인 이름을 엔드포인트별 프라이빗 DNS 호스트 이름으로 사용하여 API를 간접적으로 호출할 수 있습니다. 프라이빗 DNS 호스트 이름은 사용자 지정 도메인 이름입니다.

curl https://vpce-id.execute-api.region.vpce.amazonaws.com/basepath -H 'Host:custom-domain-name'

다음 예제는 엔드포인트별 프라이빗 DNS 호스트 이름을 사용하여 사용자 지정 도메인 이름을 간접적으로 호출하는 curl 명령입니다.

curl https://vpce123456.execute-api.us-east-2.vpce.amazonaws.com/test -H 'Host:private.example.com'

사용자 지정 도메인 이름을 사용하지 않고 프라이빗 API를 간접적으로 호출

사용자 지정 도메인 이름을 사용하여 프라이빗 API를 간접적으로 호출하려면 API의 DNS 이름을 식별해야 합니다. 다음 절차는 DNS 이름을 찾는 방법을 보여줍니다.

AWS Management Console
DNS 이름을 찾으려면
  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

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

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

AWS CLI

다음 describe-vpc-endpoints 명령을 사용하여 DNS 값을 나열합니다.

aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-01234567abcdef012

처음 3개는 해당 API의 퍼블릭 DNS 이름입니다. 나머지 2개는 프라이빗 DNS 이름입니다.

Route53 별칭을 사용하여 프라이빗 API 간접 호출

VPC 엔드포인트를 프라이빗 REST API와 연결하거나 연결 해제할 수 있습니다. 자세한 내용은 (선택 사항) VPC 엔드포인트를 프라이빗 API와 연결 또는 연결 해제 단원을 참조하십시오.

VPC 엔드포인트를 프라이빗 API와 연결한 후 다음 기본 URL을 사용하여 API를 간접적으로 호출할 수 있습니다.

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

예를 들어 test 스테이지에 GET /pets 메서드를 설정하고 REST 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를 활성화했다면 다음과 같은 프라이빗 DNS 이름으로 프라이빗 API에 액세스할 수 있습니다.

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

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

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

예를 들어 test 스테이지에 GET /pets 메서드를 설정하고 REST API ID가 01234567ab, 리전이 us-west-2인 경우 브라우저에 다음 URL을 입력하여 프라이빗 API를 간접적으로 호출할 수 있습니다.

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

또는 다음 cURL 명령을 사용하여 프라이빗 API를 간접적으로 호출할 수 있습니다.

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

VPC 엔드포인트에 대해 프라이빗 DNS를 활성화하면 퍼블릭 API의 기본 엔드포인트에 액세스할 수 없습니다. 자세한 내용은 API Gateway VPC 종단점에서 퍼블릭 API에 연결할 수 없는 이유는 무엇입니까?를 참조하세요.

AWS Direct Connect를 사용하여 프라이빗 API 간접 호출

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

또한 Amazon Route 53 Resolver 인바운드 엔드포인트를 설정하고 원격 네트워크에서 프라이빗 DNS의 모든 DNS 쿼리를 전달하여 프라이빗 DNS 이름을 사용하여 온프레미스 네트워크에서 프라이빗 API에 액세스할 수 있습니다. 자세한 내용은 Amazon Route 53 개발자 안내서VPC로 인바운드 DNS 쿼리 전달을 참조하세요.

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

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

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

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

예를 들어 test 스테이지에 대한 GET /pets 메서드를 설정하고 REST API ID가 abc1234, 퍼블릭 DNS 호스트 이름이 vpce-def-01234567, 리전이 us-west-2인 경우 cURL 명령으로 Host 헤더를 사용하여 VPCe ID로 프라이빗 API를 간접적으로 호출할 수 있습니다.

curl -v https://vpce-def-01234567.execute-api.us-west-2.vpce.amazonaws.com/test/pets -H 'Host: abc1234.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/{stage} -H 'x-apigw-api-id:{api-id}'