발신 트래픽에 대한 VPC 액세스 활성화 - AWS App Runner

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

발신 트래픽에 대한 VPC 액세스 활성화

기본적으로 AWS App Runner 애플리케이션은 퍼블릭 엔드포인트로 메시지를 보낼 수 있습니다. 여기에는 자체 솔루션과 기타 모든 공개 웹 사이트 또는 웹 서비스가 포함됩니다. AWS 서비스애플리케이션은 Amazon VPC (가상 사설 클라우드) 에서 VPC에서 실행되는 애플리케이션의 퍼블릭 엔드포인트로 메시지를 보낼 수도 있습니다. 환경을 시작할 때 VPC를 구성하지 않으면 App Runner는 기본 VPC (공개) 를 사용합니다.

사용자 지정 VPC에서 환경을 시작하여 나가는 트래픽에 대한 네트워킹 및 보안 설정을 사용자 지정할 수 있습니다. Amazon VPC (가상 사설 클라우드) 에서 프라이빗 VPC에서 실행되는 애플리케이션에 AWS App Runner 서비스가 액세스할 수 있도록 할 수 있습니다. 이렇게 하면 애플리케이션이 Amazon VPC (Virtual Private Cloud) 에서 호스팅되는 다른 애플리케이션에 연결하여 메시지를 보낼 수 있습니다. Amazon RDS 데이터베이스 ElastiCache, Amazon 및 프라이빗 VPC에서 호스팅되는 기타 프라이빗 서비스를 예로 들 수 있습니다.

VPC 커넥터

앱 러너 콘솔에서 VPC 커넥터라는 VPC 엔드포인트를 생성하여 서비스를 VPC와 연결할 수 있습니다. VPC 커넥터를 만들려면 VPC, 하나 이상의 서브넷, 선택적으로 하나 이상의 보안 그룹을 지정합니다. VPC 커넥터를 구성한 후 하나 이상의 App Runner 서비스와 함께 사용할 수 있습니다.

일회성 지연

아웃바운드 트래픽을 위한 사용자 지정 VPC 커넥터로 App Runner 서비스를 구성하는 경우 2~5분의 일회성 시작 지연 시간이 발생할 수 있습니다. 시작 프로세스는 VPC Connector가 다른 리소스에 연결할 준비가 될 때까지 기다린 후 서비스 상태를 Running으로 설정합니다. 서비스를 처음 생성할 때 사용자 지정 VPC 커넥터로 서비스를 구성하거나 이후에 서비스 업데이트를 수행하여 구성할 수 있습니다.

단, 다른 서비스에 동일한 VPC 커넥터 구성을 재사용하면 지연 시간이 발생하지 않습니다. VPC 커넥터 구성은 보안 그룹과 서브넷 조합을 기반으로 합니다. 지정된 VPC 커넥터 구성에서 지연 시간은 VPC 커넥터 하이퍼플레인 ENI (엘라스틱 네트워크 인터페이스) 를 처음 생성할 때 한 번만 발생합니다.

사용자 지정 VPC 커넥터 및 하이퍼플레인에 대한 자세한 정보 AWS

App Runner의 VPC 커넥터는 Network Load Balancer, NAT Gateway, AWS 등 여러 AWS 리소스를 지원하는 내부 Amazon 네트워크 시스템인 AWS 하이퍼플레인을 기반으로 합니다. PrivateLink AWS 하이퍼플레인 기술은 높은 수준의 공유와 함께 높은 처리량과 짧은 지연 시간을 제공합니다. 하이퍼플레인 ENI는 VPC 커넥터를 생성하여 서비스에 연결할 때 서브넷에 생성됩니다. VPC 커넥터 구성은 보안 그룹과 서브넷 조합을 기반으로 하며, 여러 App Runner 서비스에서 동일한 VPC 커넥터를 참조할 수 있습니다. 따라서 기본 하이퍼플레인 ENI는 앱 러너 서비스 전체에서 공유됩니다. 요청 로드를 처리하는 데 필요한 작업 수를 늘리더라도 이러한 공유가 가능하므로 VPC의 IP 공간을 보다 효율적으로 활용할 수 있습니다. 자세한 내용은 AWS 컨테이너 블로그의 AWS App Runner VPC 네트워킹 심층 분석을 참조하십시오.

서브넷

각 서브넷은 특정 가용 영역에 있습니다. 고가용성을 위해 3개 이상의 가용 영역에서 서브넷을 선택하는 것이 좋습니다. 해당 지역의 가용 영역이 3개 미만인 경우 지원되는 모든 가용 영역에서 서브넷을 선택하는 것이 좋습니다.

VPC의 서브넷을 선택할 때는 퍼블릭 서브넷이 아닌 프라이빗 서브넷을 선택해야 합니다. VPC 커넥터를 만들면 앱 러너 서비스가 각 서브넷에 하이퍼플레인 ENI를 생성하기 때문입니다. 각 하이퍼플레인 ENI에는 사설 IP 주소만 할당되며 키 태그가 지정됩니다. AWSAppRunnerManaged 퍼블릭 서브넷을 선택하면 App Runner 서비스를 실행할 때 오류가 발생합니다. 하지만 서비스가 인터넷 또는 기타 AWS 서비스퍼블릭에 있는 일부 서비스에 액세스해야 하는 경우에는 을 참조하십시오. 서브넷 선택 시 고려 사항

서브넷 선택 시 고려 사항

  • 서비스를 VPC에 연결하면 아웃바운드 트래픽이 퍼블릭 인터넷에 액세스할 수 없습니다. 애플리케이션의 모든 아웃바운드 트래픽은 서비스가 연결된 VPC를 통해 전달됩니다. VPC의 모든 네트워킹 규칙은 애플리케이션의 아웃바운드 트래픽에 적용됩니다. 즉, 서비스가 퍼블릭 인터넷 및 AWS API에 액세스할 수 없습니다. 액세스 권한을 얻으려면 다음 중 하나를 수행하십시오.

    • NAT 게이트웨이를 통해 서브넷을 인터넷에 연결합니다.

    • AWS 서비스 액세스하려는 VPC 엔드포인트를 설정합니다. 를 사용하여 Amazon VPC 내에서 서비스를 유지할 수 있습니다. AWS PrivateLink

  • 일부의 일부 가용 영역은 App Runner 서비스와 함께 사용할 수 있는 서브넷을 AWS 리전 지원하지 않습니다. 이러한 가용 영역에서 서브넷을 선택하면 서비스가 생성되거나 업데이트되지 않습니다. 이러한 상황에서 App Runner는 지원되지 않는 서브넷 및 가용 영역을 가리키는 자세한 오류 메시지를 제공합니다. 이 경우 요청에서 지원되지 않는 서브넷을 제거하여 문제를 해결한 다음 다시 시도하십시오.

보안 그룹

App Runner가 지정된 AWS 서브넷에서 액세스하는 데 사용하는 보안 그룹을 선택적으로 지정할 수 있습니다. 보안 그룹을 지정하지 않는 경우 App Runner는 VPC의 기본 보안 그룹을 사용합니다. 기본 보안 그룹은 모든 아웃바운드 트래픽을 허용합니다.

보안 그룹을 추가하면 VCP 커넥터에 추가 보안 계층이 제공되므로 네트워크 트래픽을 더 잘 제어할 수 있습니다. VPC Connector는 애플리케이션으로부터의 아웃바운드 통신에만 사용됩니다. 아웃바운드 규칙을 사용하여 원하는 대상 엔드포인트와 통신할 수 있습니다. 또한 대상 리소스와 연결된 모든 보안 그룹에 적절한 인바운드 규칙이 있는지 확인해야 합니다. 그렇지 않으면 이러한 리소스는 VPC Connector 보안 그룹에서 오는 트래픽을 수락할 수 없습니다.

참고

서비스를 VPC와 연결할 때 다음 트래픽은 영향을 받지 않습니다.

  • 인바운드 트래픽 — 애플리케이션이 수신하는 수신 메시지는 관련 VPC의 영향을 받지 않습니다. 메시지는 서비스와 연결된 퍼블릭 도메인 이름을 통해 라우팅되며 VPC와 상호작용하지 않습니다.

  • App Runner 트래픽 — App Runner는 사용자를 대신하여 소스 코드 및 이미지 가져오기, 로그 푸시, 암호 검색과 같은 여러 작업을 관리합니다. 이러한 작업으로 생성되는 트래픽은 VPC를 통해 라우팅되지 않습니다.

Amazon VPC와 AWS App Runner 통합하는 방법에 대한 자세한 내용은 앱 러너 VPC AWS 네트워킹을 참조하십시오.

참고

나가는 트래픽의 경우 앱 러너는 현재 IPv4만 지원합니다.

VPC 액세스 관리

참고

서비스에 대한 아웃바운드 트래픽 VPC 커넥터를 생성하는 경우 이후 서비스 시작 프로세스에서 1회의 지연이 발생합니다. 새 서비스를 생성할 때 또는 이후에 서비스 업데이트를 통해 새 서비스에 대해 이 구성을 설정할 수 있습니다. 자세한 내용은 이 일회성 지연 가이드의 App Runner를 사용한 네트워킹 장을 참조하십시오.

다음 방법 중 하나를 사용하여 App Runner 서비스에 대한 VPC 액세스를 관리합니다.

App Runner console

App Runner 콘솔을 사용하여 서비스를 생성하거나 나중에 구성을 업데이트할 때 발신 트래픽을 구성하도록 선택할 수 있습니다. 콘솔 페이지에서 네트워킹 구성 섹션을 찾아보세요. 발신 네트워크 트래픽의 경우 다음 중에서 선택하십시오.

  • 퍼블릭 액세스: 서비스를 다른 사람의 퍼블릭 엔드포인트와 연결합니다. AWS 서비스

  • 사용자 지정 VPC: 서비스를 Amazon VPC의 VPC와 연결합니다. 애플리케이션은 Amazon VPC에 호스팅된 다른 애플리케이션에 연결하여 메시지를 전송할 수 있습니다.

사용자 지정 VPC를 활성화하려면
  1. App Runner 콘솔을 열고 지역 목록에서 해당 콘솔을 선택합니다. AWS 리전

  2. 서비스 구성의 네트워킹 섹션으로 이동합니다.

    네트워킹 옵션을 보여주는 App Runner 콘솔 구성 페이지
  3. 나가는 네트워크 트래픽에 대해 사용자 지정 VPC를 선택합니다.

  4. 탐색 창에서 VPC 커넥터를 선택합니다.

    VPC 커넥터를 생성한 경우 콘솔에는 계정의 VPC 커넥터 목록이 표시됩니다. 기존 VPC 커넥터를 선택하고 다음을 선택하여 구성을 검토할 수 있습니다. 그런 다음, 마지막 단계로 넘어가세요. 또는 다음 단계를 사용하여 새 VPC 커넥터를 추가할 수 있습니다.

  5. Add new를 선택하여 서비스를 위한 새 VPC 커넥터를 생성합니다.

    그러면 새 VPC 커넥터 추가 대화 상자가 열립니다.

    새 VPC 커넥터 추가 대화 상자를 보여주는 App Runner 콘솔
  6. VPC 커넥터의 이름을 입력하고 사용 가능한 목록에서 필요한 VPC를 선택합니다.

  7. 서브넷의 경우 App Runner 서비스에 액세스하려는 각 가용 영역에 대해 하나의 서브넷을 선택합니다. 가용성을 높이려면 서브넷 3개를 선택하십시오. 또는 서브넷이 3개 미만인 경우 사용 가능한 모든 서브넷을 선택하십시오.

    참고

    VPC 커넥터에 프라이빗 서브넷을 할당해야 합니다. VPC 커넥터에 퍼블릭 서브넷을 할당하는 경우 업데이트 중에 서비스가 생성되지 않거나 자동으로 롤백되지 않습니다.

  8. (선택 사항) 보안 그룹에서 엔드포인트 네트워크 인터페이스와 연결할 보안 그룹을 선택합니다.

  9. (선택 사항) 태그를 추가하려면 새 태그 추가를 선택하고 태그 키와 태그 값을 입력합니다.

  10. 추가를 선택합니다.

    생성한 VPC 커넥터의 세부 정보가 VPC 커넥터 아래에 표시됩니다.

  11. [다음] 을 선택하여 구성을 검토한 다음 [생성 및 배포] 를 선택합니다.

    App Runner는 사용자를 위해 VPC 커넥터 리소스를 만든 다음, 이를 서비스와 연결합니다. 서비스가 성공적으로 생성되면 콘솔에 새 서비스의 서비스 개요가 포함된 서비스 대시보드가 표시됩니다.

App Runner API or AWS CLI

CreateService또는 UpdateServiceApp Runner API 작업을 호출할 때는 NetworkConfiguration 파라미터의 EgressConfiguration 멤버를 사용하여 서비스의 VPC 커넥터 리소스를 지정합니다.

다음 앱 러너 API 작업을 사용하여 VPC 커넥터 리소스를 관리할 수 있습니다.

  • CreateVpcConnector— 새 VPC 커넥터를 생성합니다.

  • ListVpcConnectors— 사용자와 연결된 VPC 커넥터 목록을 반환합니다. AWS 계정목록에는 전체 설명이 포함되어 있습니다.

  • DescribeVpcConnector— VPC 커넥터의 전체 설명을 반환합니다.

  • DeleteVpcConnector— VPC 커넥터를 삭제합니다. VPC 커넥터 할당량에 도달하면 불필요한 VPC 커넥터를 삭제해야 할 수 있습니다. AWS 계정

VPC에 대한 아웃바운드 액세스 권한이 있는 애플리케이션을 App Runner에 배포하려면 먼저 VPC 커넥터를 만들어야 합니다. 애플리케이션과 연결할 서브넷 및 보안 그룹을 하나 이상 지정하여 이 작업을 수행할 수 있습니다. 그런 다음 다음 예제와 같이 Create에서 또는 UpdateServiceCLI를 통해 VPC 커넥터를 참조할 수 있습니다.

cat > vpc-connector.json <<EOF { "VpcConnectorName": "my-vpc-connector", "Subnets": [ "subnet-a", "subnet-b", "subnet-c" ], "SecurityGroups": [ "sg-1", "sg-2" ] } EOF aws apprunner create-vpc-connector \ --cli-input-json file:///vpc-connector.json cat > service.json <<EOF { "ServiceName": "my-vpc-connected-service", "SourceConfiguration": { "ImageRepository": { "ImageIdentifier": "<ecr-image-identifier> ", "ImageConfiguration": { "Port": "8000" }, "ImageRepositoryType": "ECR" } }, "NetworkConfiguration": { "EgressConfiguration": { "EgressType": "VPC", "VpcConnectorArn": "arn:aws:apprunner:..../my-vpc-connector" } } } EOF aws apprunner create-service \ --cli-input-json file:///service.js