Application 또는 Network Load Balancer를 사용하여 API Gateway 프라이빗 API를 호출하려면 어떻게 해야 하나요?

4분 분량
0

Amazon API Gateway 프라이빗 API를 로드 밸런서의 대상으로 설정하고 싶습니다. 그런 다음 AWS 계정을 사용하여 Application 또는 Network Load Balancer의 프라이빗 API에 액세스하고 싶습니다.

간략한 설명

AWS Direct Connect 또는 Amazon Route 53을 사용하여 프라이빗 API에 액세스하려면 프라이빗 API를 호출하는 방법을 참조하세요. 인터페이스 VPC 엔드포인트를 사용하여 다른 AWS 계정의 API Gateway 프라이빗 REST API에 액세스할 수도 있습니다.

다음 해결 방법은 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트 탄력적 네트워크 인터페이스 IP 주소를 사용합니다. 이 IP 주소를 사용하여 프라이빗 API를 로드 밸런서의 대상으로 추가할 수 있습니다.

중요: API Gateway는 프라이빗 API에 대한 사용자 지정 도메인 이름을 지원하지 않습니다. 다른 방법으로는 도메인을 호출하여 로드 밸런서에 연결할 수 있습니다. 그런 다음 설정을 사용하여 프라이빗 API를 호출합니다.

해결 방법

Amazon VPC 엔드포인트 생성

1.    Amazon VPC 콘솔을 엽니다.

2.    엔드포인트를 선택하고 엔드포인트 생성을 선택합니다.
참고: API execute-api를 사용하여 VPC에 Amazon VPC 엔드포인트가 이미 설정되어 있다면 프라이빗 DNS는 꺼야 합니다.

3.    서비스에서는 com.amazonaws.com.your-region.execute-api를 선택합니다.

4.    VPC에서는 Amazon VPC를 선택합니다.

5.    서브넷에서는 서로 다른 가용 영역(AZ ID)에 있는 두 개의 서브넷을 선택한 다음 엔드포인트 생성을 선택합니다.

6.    엔드포인트를 선택하고 서브넷을 선택한 다음 IP 주소를 복사합니다.

자세한 내용은 Create an interface VPC endpoint for API Gateway execute-api를 참조하세요.

프라이빗 REST API 생성 및 Amazon VPC 엔드포인트 권한 부여

1.    API Gateway 콘솔을 연 다음 API 생성을 선택합니다.

2.    REST API에서는 빌드를 선택합니다.

3.    설정에는 다음 정보를 입력합니다. 
API 이름에는 API의 이름을 입력합니다.
엔드포인트 유형에서는 프라이빗을 선택합니다.
엔드포인트 ID에는 생성한 엔드포인트 ID를 입력합니다.

4.    API 생성을 선택합니다.

5.    탐색 창에서 리소스 정책을 선택합니다.

6.    리소스 정책 편집기에 다음 정책을 붙여 넣습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": "vpce-081234d1ad408e"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*"
    }
  ]
}

참고: vpce-081234d1ad408e를 VPC 엔드포인트 ID로 대체합니다. arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID를 API의 ARN으로 대체합니다.

7.    저장을 선택합니다.

자세한 내용은 Create a private API using the API Gateway console을 참조하세요.

AWS Certificate Manager 퍼블릭 인증서 생성 또는 가져오기

퍼블릭 인증서를 요청하거나 인증서 가져오기를 진행합니다.

Application Load Balancer 또는 Network Load Balancer 생성

Application Load Balancer를 생성하거나 Network Load Balancer를 생성합니다.

대상 그룹 생성

1.    Amazon Elastic Compute Cloud(Amazon EC2) 콘솔을 엽니다.

2.    탐색 창의 로드 밸런싱에서 로드 밸런서를 선택한 다음 대상 그룹을 선택합니다.

3.    대상 그룹 생성을 선택합니다.

4.    대상 유형에서는 IP 주소를 선택합니다.

5.    대상 그룹 이름에는 이름을 입력합니다.

Application Load Balancer

프로토콜에서는 HTTPS를 선택합니다.
포트에서는 443을 선택합니다.
VPC에서는 VPC를 선택합니다.
상태 확인 경로에는 200,403을 입력하여 대상 그룹에서 VPC 엔드포인트가 정상으로 표시되도록 합니다.

Network Load Balancer

프로토콜에서는 TLS를 선택합니다.
포트에서는 443을 선택합니다.
VPC에서는 VPC를 선택합니다.

6.    다음을 선택합니다.

7.    IP 지정에서는 인터페이스 Amazon VPC 엔드포인트 생성 섹션에서 복사한 IP 주소를 입력한 다음 IPv4 주소 추가를 선택합니다.

8.    대상 그룹 생성을 선택합니다.

로드 밸런서 구성

1.    EC2 콘솔을 엽니다.

2.    탐색 창에서 로드 밸런서를 선택한 다음 로드 밸런서 생성을 선택합니다.

Application Load Balancer

체계에서는 구성에 따라 인터넷 연결 또는 내부를 선택합니다.
프로토콜에서는 HTTPS를 선택합니다.
VPC서브넷에서는 VPC와 서브넷을 선택합니다.

Network Load Balancer

체계에서는 구성에 따라 인터넷 연결 또는 내부를 선택합니다.
프로토콜에서는 TLS를 선택합니다.
VPC서브넷에서는 VPC와 서브넷을 선택합니다.
보안 정책에서는 기본 정책인 **ELBSecurityPolicy-TLS(권장)**를 선택합니다.
기본 SSL/TLS 인증서에서는 ACM에서를 선택합니다.
인증서 선택 드롭다운 메뉴를 선택한 다음 인증서를 선택합니다.

3.    로드 밸런서 생성을 선택합니다.

참고: 로드 밸런서 대상은 VPC 엔드포인트가 생성한 탄력적 네트워크 인터페이스의 IP 주소에 있습니다. 탄력적 네트워크 인터페이스를 찾으려면 VPC 엔드포인트를 선택한 다음 서브넷 탭을 열어야 합니다.

Amazon Route 53 퍼블릭 또는 프라이빗 호스팅 영역에서 레코드 생성

퍼블릭 호스팅 영역을 생성하거나 프라이빗 호스팅 영역을 생성합니다.

그런 다음 CNAME 레코드를 생성하여 Application 또는 Network Load Balancer에 연결합니다.

테스트

퍼블릭 로드 밸런서의 경우, 로컬 머신에서 curl 요청을 할 수 있습니다.

프라이빗 로드 밸런서의 경우, 로드 밸런서의 서브넷 중 하나에서 새 EC2 인스턴스를 시작합니다. 그리고 다음 요청과 비슷한 curl 요청을 합니다.

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'Host: <api-id>.execute-api.<region>.amazonaws.com'

-또는-

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'x-apigw-api-id:{api-id}'

요청이 성공하면 200 OK 응답 코드가 반환됩니다. 요청이 실패하면 403 Forbidden 응답 코드 또는 DNS 확인 오류가 반환됩니다. 문제가 발생한다면 로드 밸런서 문제 해결을 참조하세요.

관련 정보

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

API Gateway 프라이빗 API 엔드포인트에 연결할 때 발생하는 문제는 어떻게 해결해야 하나요?

Amazon CloudWatch 지표를 이용한 REST API 모니터링

API Gateway의 REST API에 대한 CloudWatch 로깅 설정

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음