AWS용 외부 함수 계획하기

이 항목은 AWS Management Console이나 Snowflake에서 제공하는 AWS CloudFormation 템플릿을 사용하여 AWS(Amazon Web Services)용 외부 함수를 만들 준비에 도움이 됩니다.

이 항목의 내용:

전제 조건

다음 지침에서는 독자가 경험이 풍부한 AWS Management Console 사용자라고 가정하고 설명합니다.

다음이 필요합니다.

  • 다음 작업을 위한 권한을 포함하여, AWS가 있는 계정:

    • IAM(ID 및 액세스 관리)를 통해 AWS 역할을 만듭니다.

    • AWS Lambda Function을 만듭니다.

    • API Gateway 엔드포인트를 만듭니다.

  • ACCOUNTADMIN 권한이 있는 Snowflake 계정 또는 CREATE INTEGRATION 권한이 있는 역할.

  • 프라이빗 엔드포인트를 사용할 계획이라면 VPC(Virtual Private Cloud) ID가 필요합니다. (VPC 엔드포인트 ID가 아니라, VPC ID를 사용해야 합니다. VPC 엔드포인트 IDs는 시간이 지남에 따라 변경될 수 있습니다.)

    VPC ID가 아직 없는 경우 Snowflake 웹 인터페이스에서 다음 명령을 실행하여 찾을 수 있습니다.

    select system$get_snowflake_platform_info();
    
    Copy

    출력은 다음과 비슷한 형태여야 합니다.

    {"snowflake-vpc-id":["vpc-12345678"]}
    
    Copy

    VPC ID를 기록합니다. AWS Management Console 또는 AWS CloudFormation 템플릿을 사용하여 외부 함수를 만들지 여부를 결정한 후, 알맞은 추적 워크시트에 VPC ID를 복사합니다.

엔드포인트 유형 선택하기: 리전 엔드포인트와 프라이빗 엔드포인트

종종 엔드포인트 라고도 하는 URI를 통해 프록시 서비스(예: Amazon API Gateway)에 액세스합니다. Amazon API Gateway를 만드는 지침에 따라 다음 유형의 엔드포인트 중 하나를 선택해야 합니다.

  • 리전 엔드포인트.

  • 프라이빗 엔드포인트.

다음 정보는 엔드포인트의 유형을 선택하는 데 도움이 될 수 있습니다.

AWS 리전 전체, 심지어 클라우드 플랫폼 전체에 걸쳐서도 리전 엔드포인트에 액세스할 수 있습니다. Snowflake 인스턴스, 프록시 서비스, 원격 서비스는 모두 서로 다른 리전 또는 더 나아가 서로 다른 클라우드 플랫폼에 있을 수 있습니다. 예를 들어, Azure에서 실행 중인 Snowflake 인스턴스는 Amazon API Gateway 리전 엔드포인트로 요청을 보낼 수 있으며, 그러면 GCP에서 실행 중인 원격 서비스로 데이터를 전달할 수 있습니다.

리전 내에서만 액세스를 허용하도록 프라이빗 엔드포인트를 구성할 수 있습니다. 예를 들어, 똑같은 AWS 리전의 Snowflake VPC(가상 프라이빗 클라우드)에서만 액세스를 허용하도록 프라이빗 엔드포인트를 구성할 수 있습니다. Snowflake VPC와 프라이빗 엔드포인트 간의 통신은 AWS PrivateLink를 사용합니다.

AWS의 엔드포인트 유형에 대한 자세한 내용은 다음을 참조하십시오.

프라이빗 엔드포인트를 사용하려 하는데 어떤 리전을 사용 중인지 확실하지 않은 경우 다음 중 하나를 수행하여 리전을 조회할 수 있습니다.

  • SQL 함수 CURRENT_REGION() 을 호출합니다(예: SELECT CURRENT_REGION()).

  • 보통 클라우드 공급자와 리전을 나타내는 Snowflake 계정 호스트 이름을 확인하십시오. 계정 호스트 이름, 리전, 클라우드 공급자에 대한 자세한 내용은 지원되는 클라우드 리전 을 참조하십시오.

프라이빗 엔드포인트를 사용하려면 계정이 다음 요구 사항을 충족해야 합니다.

  • Snowflake의 Business Critical 또는 이상 에디션.

외부 함수를 만드는 방법 선택하기

Snowflake는 AWS에서 외부 함수를 만드는 두 가지 방법에 대한 지침을 제공합니다.

  • AWS Management Console 웹 인터페이스

  • Snowflake에서 제공하는 AWS CloudFormation 템플릿

AWS Management Console

AWS Management Console 을 사용하여 (원격 서비스로) Lambda Function과 (프록시 서비스로) Amazon API Gateway 인스턴스를 만들 수 있습니다. 이 방법을 선택할 경우 AWS Management Console을 사용하여 보안 관련 설정도 구성합니다.

AWS Management Console을 사용하여 외부 함수를 만들기 위한 지침은 샘플 Lambda Function과 기본 API Gateway를 만들기 위한 세부 정보를 포함합니다.

  • 최초 사용자는 거의 또는 전혀 수정하지 않고 지침을 사용할 수 있습니다.

  • 능숙한 사용자는 지침과 샘플 Lambda Function을 시작점으로 사용하여 사용자 지정 Lambda Function 및 사용자 지정 구성 API Gateway를 만들 수 있습니다.

AWS CloudFormation 템플릿

CloudFormation 템플릿은 외부 함수 만들기에서 다음 두 단계를 모두 수행합니다.

  • 원격 서비스 만들기(AWS Lambda Function).

  • 프록시 서비스(Amazon API Gateway) 만들기 및 구성.

또한, 이 템플릿은 다음을 수행합니다.

  • 두 가지 IAM 역할을 만듭니다(하나는 Lambda Function용, 다른 하나는 API Gateway용).

  • API Gateway에 대한 리소스 정책을 구성합니다.

AWS Management Console 사용 준비하기

필수 정보 추적을 위한 워크시트 만들기

외부 함수를 만들 때 입력하는 특정 정보(예: 리소스 호출 URL)를 기록하여 후속 단계에서 그 정보를 사용할 수 있도록 해야 합니다. 아래 워크시트는 이 정보를 추적하는 데 도움이 됩니다.

===========================================================================
================ Tracking Worksheet: AWS Management Console ===============
===========================================================================

****** Step 1: Information about the Lambda Function (remote service) *****

Your AWS Account ID: ______________________________________________________

Lambda Function Name: _____________________________________________________


******** Step 2: Information about the API Gateway (proxy Service) ********

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Snowflake VPC ID (optional): ______________________________________________

New API Name: _____________________________________________________________

API Gateway Resource Name: ________________________________________________

Resource Invocation URL: __________________________________________________

Method Request ARN: _______________________________________________________


*** Step 3: Information about the API Integration and External Function ***

API Integration Name: _____________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________

External Function Name: ___________________________________________________
Copy

AWS CloudFormation 템플릿 사용 준비하기

템플릿 다운로드하기

템플릿은 GitHub의 Snowflake 리포지토리에 있는 배포 템플릿 디렉터리 에서 다운로딩할 수 있습니다.

필수 정보 추적을 위한 워크시트 만들기

외부 함수를 만들 때 입력하는 특정 정보(예: 리소스 호출 URL)를 기록하여 후속 단계에서 그 정보를 사용할 수 있도록 해야 합니다. 아래 워크시트는 이 정보를 추적하는 데 도움이 됩니다.

===========================================================================
================== Tracking Worksheet: CloudFormation Template ============
===========================================================================

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Resource Invocation URL: __________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________
Copy

AWS에서 외부 함수 빌드를 위한 추가 리소스

자체 외부 함수에 대한 자체 원격 서비스를 만들 준비가 되면 The Snowflake Labs. 에서 사용할 수 있는 Lambda Function을 기반으로 하는 원격 서비스의 예를 살펴볼 수 있습니다.