비공개 연결 엔드포인트(AWS)를 관리하십시오.¶
이 항목에서는 AWS 에 대한 아웃바운드 비공개 연결에 사용할 비공개 연결 엔드포인트를 관리하는 방법에 대한 정보를 제공합니다.
비공개 연결 엔드포인트 프로비저닝¶
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 사용하여 서비스 또는 리소스, 호스트 이름을 지정하여 비공개 연결 엔드포인트를 만들 수 있습니다. 이 시스템 함수를 사용할 때는 ACCOUNTADMIN 역할을 사용해야 합니다.
참고
외부 스테이지 또는 외부 볼륨에 비공개 연결을 사용하는 경우 호스트 이름을 지정할 때 와일드카드 문자(*
)를 사용해야 합니다. 와일드카드를 사용한다고 해서 모든 S3 버킷이 비공개 연결을 통해 액세스되는 것은 아닙니다. 비공개 연결(즉, 외부 스테이지 또는 외부 볼륨)이 활성화된 Snowflake 오브젝트가 참조하는 버킷만 VPC 엔드포인트를 통해 액세스할 수 있습니다.
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 함수는 공급자 서비스 이름과 호스트 이름을 인자로 받습니다. AWS 명령줄에서 describe-vpc-endpoint-services
하위 명령을 사용하여 이러한 값을 얻을 수 있습니다. AWS 설명서 의 설명과 같이, 이 AWS 하위 명령은 ServiceName
필드와 PrivateDnsName
필드가 있는 JSON 오브젝트를 반환합니다. 다음 표를 사용하여 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 함수에 사용할 값을 결정합니다.
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 인자 |
|
---|---|
|
|
|
외부 스테이지 또는 외부 볼륨에 비공개 연결을 사용하는 경우 와일드카드와 함께 값을 사용해야 합니다. |
예를 들어, Amazon S3에 대한 외부 액세스 권한이 있는 PrivateLink 를 생성하려면 다음 SQL 문을 실행하여 us-west-2
에 대한 엔드포인트를 구성합니다.
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
대상 서비스가 VPC 엔드포인트 서비스 인 경우 엔드포인트 서비스에서 Snowflake의 연결을 허용해야 합니다. 엔드포인트를 만들기 전에 SYSTEM$GET_PRIVATELINK_CONFIG 출력에서 privatelink-account-principal
값을 VPC 엔드포인트 서비스의 허용된 주체 로 추가합니다.
다음 SQL 문은 VPC 엔드포인트 서비스에 대한 엔드포인트를 구성합니다. 서비스는 Snowflake 계정과 동일한 리전이어야 합니다.
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.vpce.us-west-2.vpce-svc-012345678910f1234',
'my.onprem.storage.com'
);
엔드포인트를 생성한 후에는 엔드포인트를 사용할 수 있기까지 지연 시간이 있습니다. 생성된 엔드포인트의 상태를 확인하는 방법에 대한 자세한 내용은 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 섹션을 참조하십시오.
직접 액세스할 수 없는 엔드포인트에 연결 설정하기¶
모든 서비스가 인터페이스 엔드포인트를 통해 특정 인스턴스에 직접 연결할 수 있는 것은 아닙니다. 이러한 경우 대신 프록시를 설정하고 서비스를 VPC 엔드포인트 서비스로 노출하여 서비스에 액세스할 수 있도록 설정할 수 있습니다.
Amazon RDS에 대한 자세한 내용은 블로그 게시물 Amazon에 연결하기RDS에서 비공개 연결 사용 을 참조하십시오.
직접 액세스할 수 있는 서비스인지 확인¶
다음 중 하나에 해당하는 경우 일반적으로 Snowflake는 비공개 연결을 통해 AWS 서비스에 직접 액세스할 수 있습니다.
DNS 서비스 이름(AWS DescribeVpcEndpointServices 출력의
PrivateDnsName
값)에는 와일드카드가 접두사로 붙습니다.서비스의 DNS 이름이 와일드카드 문자
*
로 시작하는 경우 AWS 가 해당 서비스의 개별 리소스에 직접 액세스할 수 있는 기능을 지원할 가능성이 높습니다. DNS 이름은 일반적으로 다음 형식입니다.*.<service>.<region>.amazonaws.com
이 서비스는 완전한 데이터 플레인입니다. AWS Bedrock Runtime 이 그 예입니다.
특정 서비스에 대해 자세히 알아보려면 AWS 설명서와 블로그 게시물을 참조하십시오.
직접 액세스가 불가능한 경우 서비스에 액세스하기¶
인터페이스 엔드포인트를 통한 직접 액세스로 서비스를 이용할 수 없는 경우, 프록시를 설정하고 해당 서비스를 VPC 엔드포인트 서비스로 노출하여 서비스 액세스를 활성화할 수 있습니다.
이러한 서비스의 예는 다음과 같습니다.
ec2.us-west-2.amazonaws.com
의 Amazon EC2 인스턴스rds.us-west-2.amazonaws.com
의 Amazon Relational Database Service(RDS) 서버
프록시를 통한 액세스를 위해 AWS 설정하기¶
프록시를 통해 서비스 인스턴스를 노출하려면 AWS 에서 가상 프라이빗 클라우드(VPC)와 로드밸런서를 설정한 후, AWS 엔드포인트 서비스의 서비스 이름과 로드밸런서의 DNS 이름을 사용하여 Snowflake 프라이빗 링크 엔드포인트를 생성합니다.
다음은 기본 단계에 대한 설명입니다.
AWS 에서 3개의 서로 다른 가용성 존에 걸쳐 서브넷이 있는 가상 프라이빗 클라우드(VPC) 를 생성합니다.
리소스의 초기 가용성 존(예: az1 및 az2)을 선택하십시오. 일부 리전에서는 Snowflake가 최신 AZs 를 지원하지 않을 수 있습니다. 엔드포인트와 기타 리소스가 동일한 가용성 존에 생성되어 존 간 트래픽이 발생하지 않도록 하십시오.
액세스하려는 서비스 인스턴스의 네트워크 설정에서 인스턴스가 생성한 VPC 에 있는지 확인합니다.
액세스하려는 서비스 인스턴스가 포함된 대상 그룹 을 생성합니다.
생성한 대상 그룹으로 트래픽을 전달하는 네트워크 로드 밸런서 를 생성합니다.
생성한 네트워크 부하 분산 장치로 서비스 엔드포인트 서비스 를 생성합니다.
서비스에 액세스하기 위해 Snowflake를 설정할 때 사용할 엔드포인트 서비스 이름(
endpoint_service_name
)을 기록합니다.Snowflake에서 다음 쿼리를 실행하여 엔드포인트 생성을 허용하는 Snowflake 계정 주체를 검색합니다.
SELECT key, value FROM TABLE(FLATTEN(INPUT => PARSE_JSON(SYSTEM$GET_PRIVATELINK_CONFIG())));
쿼리 결과에서
privatelink-account-principal
키를 찾아 그 값을 기록합니다.AWS 에서, 생성한 엔드포인트 서비스에 대해 Allow principals 섹션을 업데이트하여 ARN 이 Snowflake의
privatelink-account-principal
키 값인 주체를 추가합니다.Snowflake에서 사용자가 생성한 AWS 엔드포인트 서비스에 대한 비공개 엔드포인트 를 생성합니다.
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 함수를 실행할 때 인자로 다음 값을 사용합니다.
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 인자
AWS 구성의 값
provider_service_name
AWS 엔드포인트 Service name (
endpoint_service_name
값)은 엔드포인트 서비스의 세부 정보 섹션에서 확인할 수 있습니다.host_name
사용자가 생성한 네트워크 로드 밸런서의 DNS Name
AWS 에서 PrivateLink 연결을 승인합니다.
생성한 엔드포인트 서비스에 대한 엔드포인트 연결로 이동합니다.
보류 중인 상태의 관련 엔드포인트 연결을 선택합니다.
Accept Endpoint Connection Request 을 클릭합니다.
다음 쿼리를 실행하여 엔드포인트 상태를 확인합니다.
엔드포인트 상태가
pendingAcceptance
에서available
로 변경되었는지 확인합니다.SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
서비스에 대한 비공개 연결 엔드포인트 제거하기¶
SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 사용하여 서비스 또는 리소스를 지정하여 비공개 연결 엔드포인트를 제거할 수 있습니다.
엔드포인트가 제거되면 해당 엔드포인트는 7일 후에 삭제될 큐에 등록됩니다.
이 시스템 함수를 사용할 때는 ACCOUNTADMIN 역할을 사용해야 합니다.
예를 들어, Amazon S3에 대한 외부 액세스 권한이 있는 PrivateLink 를 제거하려면 다음 SQL 문을 실행합니다.
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
비공개 연결 엔드포인트를 서비스에 복원하기¶
SYSTEM$RESTORE_PRIVATELINK_ENDPOINT 시스템 함수를 사용하여 서비스 또는 리소스를 지정하여 삭제 큐에 남아 있는 제거된 비공개 연결 엔드포인트를 복원할 수 있습니다. 삭제 큐에서 엔드포인트를 찾을 수 없는 경우에는 엔드포인트를 복원할 수 없습니다.
이 시스템 함수를 사용할 때는 ACCOUNTADMIN 역할을 사용해야 합니다.
예를 들어, Amazon S3에 대한 외부 액세스 권한이 있는 PrivateLink 를 복원하려면 다음 SQL 문을 실행합니다.
SELECT SYSTEM$RESTORE_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
서비스에 대한 모든 비공개 연결 엔드포인트 목록 보기¶
SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 시스템 함수를 사용하여 계정의 모든 비공개 연결 엔드포인트와 엔드포인트에 대한 정보를 목록으로 만들 수 있습니다.
이 시스템 함수를 사용할 때는 ACCOUNTADMIN 역할을 사용해야 합니다.
예를 들어, AWS 서비스가 있는 모든 AWS PrivateLink 엔드포인트를 나열하려면 다음 SQL 문을 실행합니다.
SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
[
{
"provider_service_name": "com.amazonaws.us-west-2.s3",
"snowflake_endpoint_name": "vpce-123456789012abcdea",
"endpoint_state": "CREATED",
"host": "*.s3.us-west-2.amazonaws.com",
"status": "Available"
},
...
]
함수가 반환하는 JSON 오브젝트의 필드에 대한 설명은 반환 섹션을 참조하십시오.
참고
ACCOUNT_USAGE 스키마에서 OUTBOUND_PRIVATELINK_ENDPOINTS 뷰를 쿼리하여 계정의 비공개 엔드포인트를 목록으로 볼 수도 있습니다.