Amazon Web Services 한국 블로그

AWS Lambda, AWS PrivateLink 기반 접속 지원 기능 출시 (서울 리전 포함)

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. 코드를 업로드하기만 하면 코드를 실행하고 확장하여 고가용성을 달성하기 위한 모든 작업을 Lambda가 수행합니다. 현재 많은 AWS 고객이 이 서버리스 컴퓨팅 플랫폼을 사용하여 애플리케이션을 개발하고 운영할 때의 생산성을 개선합니다.

오늘부터 AWS Lambda에서 AWS PrivateLink가 지원됩니다. 이제 트래픽을 퍼블릭 인터넷에 노출하지 않고 사내 Virtual Private Cloud(VPC) 또는 온프레미스 데이터 센터 안에서 Lambda 함수를 안전하게 호출할 수 있습니다.

지금까지는 Lambda 함수를 호출할 때 VPC에 인터넷 게이트웨이, 네트워크 주소 변환(NAT) 게이트웨이 및/또는 퍼블릭 IP 주소가 필요했습니다. 이번 업데이트부터는 PrivateLink가 AWS 프라이빗 네트워크를 통해 호출을 라우팅하므로 인터넷 액세스가 필요하지 않습니다. 또한 AWS Direct Connect 또는 AWS VPN 연결을 통해 VPC에 연결하여 온프레미스 데이터 센터에서 직접 Lambda API를 호출할 수 있습니다.

내부 IT 거버넌스 요구 사항으로 인해 인터넷 액세스가 없는 VPC에서 Lambda 함수를 관리하고 호출하고자 했던 일부 고객은 이번 업데이트를 통해 Lambda를 사용할 수 있게 됩니다. 또한 VPC에서 Lambda에 액세스하기 위해 NAT 게이트웨이를 유지 관리한 고객은 NAT 게이트웨이 대신 VPC 엔드포인트를 사용하여 NAT 게이트웨이 비용을 절감할 수 있습니다. Lambda 함수를 호출하기 위해 더 이상 VPC에 대한 인터넷 액세스를 허용할 필요가 없으며 네트워크 아키텍처가 단순해지고 관리가 용이해지기 때문에 보안이 추가로 강화됩니다. 이전에는 VPC 지원 Lambda 함수로 다른 Lambda 함수를 호출하는 경우 NAT GW를 거쳐야 했지만 이제는 VPC 엔드포인트를 대신 사용할 수 있습니다.

AWS PrivateLink를 시작하는 방법
AWS PrivateLink는 “인터페이스 VPC 엔드포인트”라고 하는 탄력적 네트워크 인터페이스를 AWS 서비스를 대상으로 하는 트래픽의 진입점으로 사용합니다. 인터페이스 엔드포인트는 모든 네트워크 트래픽을 AWS 내부 네트워크로 제한하며 서비스에 대한 보안 액세스를 제공합니다. 인터페이스 VPC 엔드포인트는 프라이빗 IP 주소가 있고 수평으로 확장되는 이중화된 고가용성 VPC 구성 요소입니다.

바로 시작하려면 AWS Management Console, AWS CLI 또는 AWS CloudFormation을 사용하면 됩니다. 첫 번째 예제에서는 Management Console을 사용합니다.

먼저 VPC 관리 콘솔에 액세스하고 [엔드포인트(Endpoints)]를 클릭합니다.

[엔드포인트 생성(Create Endpoint)] 버튼을 클릭합니다.

검색 창에 “lambda”를 입력하면 서비스 이름이 표시됩니다. 이를 선택하고 인터페이스 엔드포인트를 생성할 VPC를 선택합니다.

엔드포인트를 생성할 서브넷을 지정하라는 메시지가 표시됩니다.

원하는 경우 [DNS 이름 활성화(Enable DNS name)] 옵션을 활성화하여 자체 DNS 이름을 Amazon Route53 프라이빗 호스팅 영역이 있는 엔드포인트로 설정할 수 있습니다. 이 옵션을 활성화하면 퍼블릭 서브넷의 Lambda 함수에 대한 모든 요청에서 인터넷 게이트웨이를 통해 Lambda를 호출할 수 없으며 프라이빗 서브넷의 VPC 엔드포인트를 통해 통신해야 합니다.

다음으로, 프로토콜, 포트 및 소스/대상 IP 주소 제어를 위한 [보안 그룹(Security Group)]을 지정합니다.

이제, VPC 엔드포인트에 액세스할 수 있는 사용자를 제어하는 정책을 설정합니다. 기본적으로 [전체 액세스(Full Access)]가 선택되지만 항상 필요한 최소 보안 주체에게만 액세스 권한을 부여하고 나중에 수정하는 것이 좋습니다.

다음은 “정책”을 생성할 때 사용자 지정할 수 있는 샘플입니다. 이 샘플에서는 IAM 사용자 “MyUser”만 “my-function”이라는 Lambda 함수를 호출할 수 있습니다.

{
    "Statement": [
        {
            "Principal": "arn:aws:iam::123412341234:user/MyUser",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:lambda:us-east-2:123456789012:function:my-function:1”
            ]
        }
    ]
}

이제 마지막 단계입니다. [엔드포인트 생성(Create endpoint)] 버튼을 클릭합니다. 성공했음을 알리는 아래와 같은 대화 상자가 표시됩니다.

이제 엔드포인트 DNS 이름을 사용하여 Lambda 함수를 호출할 수 있습니다. VPC 피어링, AWS Transit Gateway 또는 다른 AWS 계정을 통해 원래 VPC에 연결된 다른 VPC에서 Lambda 함수를 호출할 수도 있습니다.

AWS 명령줄 인터페이스(CLI)를 사용하여 시작

AWS CLI 환경이 이미 있다면 AWS CLI를 더욱 정확하고 쉽게 사용할 수 있습니다. 

aws ec2 create-vpc-endpoint --vpc-id vpc-ec43eb89 \
        --vpc-endpoint-type Interface --service-name lambda.<region code>.amazonaws.com \
        --subnet-id subnet-abababab --security-group-id sg-1a2b3c4d

정식 출시

이제 아프리카(케이프타운) 및 EU(밀라노)를 제외한 모든 AWS 리전에서 AWS Lambda의 AWS PrivateLink 지원을 사용할 수 있습니다. 제외된 리전에 대한 지원은 로드맵에 있으며 곧 제공될 예정입니다. Lambda 인터페이스 엔드포인트에는 표준 AWS PrivateLink 요금이 적용됩니다. 각 가용 영역에서 인터페이스 엔드포인트를 프로비저닝한 시간과 인터페이스 엔드포인트를 통해 처리된 데이터에 대해 요금이 청구됩니다. AWS Lambda에는 추가 요금이 부과되지 않습니다. 자세한 내용은 AWS PrivateLink 요금 페이지설명서를 참조하세요.

– Kame;