내용으로 건너뛰기

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

4분 분량
0

AWS 계정을 사용하여 Application Load Balancer 또는 Network Load Balancer의 프라이빗 API에 액세스하고 싶습니다.

해결 방법

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

다음 해결 방법은 execute-api Amazon VPC 엔드포인트에 할당된 IP 주소를 사용합니다. VPC 엔드포인트의 IP 주소를 사용하여 프라이빗 REST API를 로드 밸런서의 대상으로 추가할 수 있습니다.

Amazon VPC 엔드포인트 생성

다음 단계를 완료하십시오.

  1. Amazon VPC 콘솔을 엽니다.
  2. 엔드포인트를 선택하고 엔드포인트 생성을 선택합니다.
  3. 서비스에서 com.amazonaws.your-region.execute-api를 선택합니다.
  4. VPC에서 Amazon VPC를 선택합니다.
  5. 서브넷에서 서로 다른 가용 영역에 있는 서브넷을 선택합니다.
  6. 엔드포인트 생성을 선택합니다.
  7. 엔드포인트를 선택하고 서브넷을 선택한 다음 IP 주소를 기록합니다.

자세한 내용은 API Gateway의 프라이빗 REST API를 참조하십시오.

프라이빗 REST API를 생성하고 VPC 엔드포인트에 프라이빗 API를 간접적으로 호출할 수 있는 권한 부여

다음 단계를 완료하십시오.

  1. API Gateway 콘솔을 엽니다.

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

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

  4. 설정에서 API 이름에 API의 이름을 입력합니다.

  5. 엔드포인트 유형에서 프라이빗을 선택합니다.

  6. (선택 사항) 엔드포인트 ID에서 엔드포인트 ID를 입력합니다.

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

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

  9. 다음 정책을 입력합니다.

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

    참고: vpce-081234d1ad408e를 VPC 엔드포인트 ID로 대체합니다. arn:aws:execute-api:your-region:ACCOUNT_ID:API_ID를 해당 API 메서드의 Amazon 리소스 이름(ARN)으로 대체합니다.

  10. 저장을 선택합니다.

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

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

대상 그룹 생성

다음 단계를 완료하십시오.

  1. Amazon Elastic Compute Cloud(Amazon EC2) 콘솔을 엽니다.
  2. 탐색 창의 로드 밸런싱에서 로드 밸런서를 선택한 다음 대상 그룹을 선택합니다.
  3. 대상 그룹 생성을 선택합니다.
  4. 대상 유형에서 IP 주소를 선택합니다.
  5. 대상 그룹 이름에서 이름을 입력합니다.
  6. 프로토콜에서 Application Load Balancer에 HTTPS를 선택하거나 Network Load Balancer에 TLS를 선택합니다.
  7. 포트에서 443을 선택합니다.
  8. VPC에서 VPC를 선택합니다.
  9. 상태 확인 프로토콜에서 HTTPS를 선택합니다.
  10. 상태 확인 경로에 "/"을 입력하고 성공 코드200,403을 입력하여 VPC 엔드포인트가 정상으로 표시되게 합니다.
  11. 다음을 선택합니다.
  12. IP 지정에서 기록해 둔 IP 주소를 입력합니다.
  13. IPv4 주소 추가를 선택합니다.
  14. 모든 IP 주소를 추가한 다음 아래에 보류 중인 것으로 포함을 선택합니다.
  15. 대상 그룹 생성을 선택합니다.

Application Load Balancer 또는 Network Load Balancer 생성

지침은 Application Load Balancer 생성 또는 Network Load Balancer 생성을 참조하십시오.

로드 밸런서 구성

다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.
  2. 탐색 창에서 로드 밸런서를 선택한 다음 로드 밸런서 생성을 선택합니다.
  3. 체계에서 인터넷 연결 또는 내부 중 하나를 선택합니다.
  4. 프로토콜에서 Application Load Balancer에 HTTPS를 선택하거나 Network Load Balancer에 TLS를 선택합니다.
  5. Default Actions에서 트래픽을 전달할 대상 그룹을 선택합니다.
  6. VPC서브넷에서 VPC와 서브넷을 선택합니다.
  7. 보안 정책에서 Application Load Balancer에 사전 정의된 최신 보안 정책을 사용합니다. Network Load Balancer의 경우 기본 보안 정책을 유지합니다.
  8. 기본 SSL/TLS 인증서에서 ACM에서를 선택합니다.
  9. 인증서 선택을 선택한 다음 인증서를 선택합니다.
  10. 로드 밸런서 생성을 선택합니다.

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

API Gateway 콘솔에서 사용자 지정 도메인 이름을 생성합니다. 그런 다음 프라이빗 REST API를 사용자 지정 도메인 이름 아래에 매핑합니다.

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

퍼블릭 호스팅 영역 또는 프라이빗 호스팅 영역을 생성합니다. 그런 다음 CNAME 또는 별칭 레코드를 생성하여 Application Load Balancer 또는 Network Load Balancer를 가리키는 커스텀 도메인 이름을 지정합니다.

퍼블릭 또는 프라이빗 로드 밸런서 테스트

퍼블릭 로드 밸런서의 경우 로컬 머신에서 curl 명령을 실행합니다.

프라이빗 로드 밸런서의 경우 로드 밸런서가 있는 VPC에서 새 EC2 인스턴스를 시작합니다. 그리고 다음 curl 명령을 실행합니다.

curl -v https://{custom-domain-name}/<resource-path>

요청이 성공하면 "200 OK" 응답 코드가 반환됩니다. 요청이 실패하면 "403 Forbidden" 응답 코드 또는 DNS 확인 오류가 반환됩니다.

문제 해결에 대한 자세한 내용은 API Gateway의 HTTP 403 오류 문제를 해결하려면 어떻게 해야 합니까?, Application Load Balancer 문제 해결Network Load Balancer 문제 해결을 참조하십시오.

관련 정보

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

API Gateway 프라이빗 API 엔드포인트에 연결할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?

Amazon CloudWatch 지표를 사용한 REST API 실행 모니터링

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