1단계: Management Console에서 원격 서비스(AWS Lambda Function) 만들기

이 항목에서는 외부 함수에 대한 원격 서비스로 사용할 AWS Lambda Function을 만들기 위한 자세한 지침을 제공합니다.

이 항목에는 있는 그대로 사용하여 첫 번째 외부 함수를 만들거나 사용자 지정 Lambda Function의 시작점으로 사용할 수 있는 샘플 Lambda Function의 코드가 포함됩니다.

이 항목의 내용:

소개

AWS에서 원격 서비스를 만드는 방법은 여러 가지가 있습니다. 이 항목에서는 원격 서비스로 사용할 Lambda Function을 만드는 한 가지 방법을 보여줍니다.

이 자습서에서는 각각 Python으로 작성된 두 가지 샘플 Lambda Function에 대해 설명합니다.

자세한 내용은 이 항목에 있는 Snowflake 샘플 함수 에서 제공됩니다.

Lambda Function 입력 및 출력 이해하기

Snowflake가 원격 서비스와 데이터를 주고받으려면 원격 서비스가 JSON 형식으로 데이터를 받고 반환해야 합니다.

원격 서비스 입력과 출력에 대해 플랫폼과 무관한 정보는 원격 서비스 입력 및 출력 데이터 타입 으로 제공됩니다.

이 섹션에서는 AWS Lambda Function과 관련된 세부 정보를 제공합니다.

JSON을 통해 언어에 독립적인 입력 및 출력

이 섹션의 정보는 Snowflake 외부 함수를 위한 원격 서비스로 사용되는 모든 Lambda Function에 적용됩니다. 외부 함수 입력 및 출력에 대한 플랫폼별 정보는 아래의 하위 섹션을 참조하십시오.

AWS에서 HTTP 호환 서비스에 대한 규칙은 HTTP 상태 코드도 포함하는 JSON 오브젝트 내부의 본문을 반환하는 것입니다. AWS Lambda Function에서 일반적인 반환 값에 대한 JSON은 다음과 같은 형태입니다.

{
"statusCode": <http_status_code>,
"body":
        {
            "data":
                  [
                      [ 0, <value> ],
                      [ 1, <value> ]
                      ...
                  ]
        }
}
Copy

JSON 입력의 구조는 이전의 구조와 비슷하지만, 필요하지 않을 가능성이 큰 추가적인 키-값 페어를 포함하고 statusCode 는 제외합니다.

Python에 특정한 Lambda Function 입력

다음 자료는 이 자습서의 샘플 Lambda Function을 포함하여 Snowflake 호환 Python 언어 Lambda Function에 적용됩니다. 이 정보는 입력 및 출력에 대해 언어에 독립적인 규칙추가 되는 정보입니다.

Snowflake 호환 Python 언어 Lambda Function은 두 개의 매개 변수 eventcontext 를 받습니다. 단순 외부 함수에는 일반적으로 event 매개 변수만 필요합니다.

event 매개 변수는 많은 하위 필드를 포함하는데, 그중 하나가 body 입니다. 본문은 사전을 포함하는 JSON 호환 문자열입니다.

사전에는 data 로 명명된 키가 포함되며, data 에 해당하는 값은 배열입니다. 그 배열에는 Snowflake에서 전달한 행이 포함됩니다.

각 행은 data 배열 내부에 중첩된 배열로 표시됩니다.

(AWS Lambda는 Snowflake에서 보낸 HTTP POST 요청을 편리하게 처리하고, 본문을 추출하고, 본문을 이벤트 매개 변수 내부에서 전달하므로, Snowflake에서 제공하는 예시 함수는 전체 HTTP POST 요청을 구문 분석할 필요가 없습니다.)

샘플 동기 Lambda Functionevent 매개 변수를 읽는 방법을 보여주는 코드를 포함합니다.

Lambda Function의 코드 선택하기

Snowflake 샘플 함수

Snowflake는 다음 두 가지 샘플 함수를 제공합니다.

  • 더 짧은 예는 동기 입니다. 외부 함수 또는 Lambda Function을 처음 접한다면, 처음에는 이 예를 사용해 샘플 외부 함수를 만드는 것이 좋습니다.

    숙련된 사용자는 이 예를 복사하고 수정하여 사용자 지정 원격 서비스의 시작점으로 이용할 수도 있습니다.

    코드는 샘플 동기 Lambda Function 에서 구할 수 있습니다.

  • 다른 예는 비동기식 입니다.

    이 샘플은 주로 사용자 지정 비동기 원격 서비스를 빌드하기 위한 샘플로 제공됩니다.

    코드는 샘플 비동기 Lambda Function 에서 구할 수 있습니다.

사용자 지정 Lambda Function

자체 Lambda Function을 처음부터 작성하거나, 이 항목에 있는 Snowflake 샘플 함수 에서 설명하는 함수 중 하나를 시작점으로 사용할 수 있습니다.

사용하려는 기존 원격 서비스가 있다면 자습서의 이 단계에 있는 지침을 대부분 건너뛸 수 있습니다. 대신 다음을 수행하십시오.

  1. 추적 워크시트의 Your AWS Account ID 필드에 AWS 계정 ID를 기록합니다.

  2. 추적 워크시트의 Lambda Function Name 필드에 원격 서비스의 Lambda Function 이름을 기록합니다.

  3. 2단계: AWS Management Console에서 프록시 서비스(Amazon API Gateway) 만들기 로 이동합니다.

Lambda Function 만들기

AWS Lambda Function을 만들려면 아래 단계를 따르십시오.

참고

이들 단계에서는 Snowflake에서 제공하는 샘플 원격 서비스를 만드는 방법을 보여주지만, 이들 단계를 자체적인 사용자 지정 원격 서비스를 만들기 위한 모델로 사용할 수 있습니다. 사용자 지정 Lambda Function을 만드는 경우에는 아래 단계를 적절히 수정하십시오(예: 원격 서비스의 코드에 알맞은 프로그래밍 언어 선택).

  1. AWS Management Console에 아직 로그인하지 않았다면 로그인하십시오.

  2. 이름이 Your AWS Account ID 인 워크시트 필드에 AWS 계정 ID를 아직 기록하지 않은 경우 지금 기록합니다.

    AWS 계정 ID를 조회해야 하는 경우 AWS 지침 을 따르십시오.

  3. Lambda 를 선택합니다.

  4. Create function 을 선택합니다.

  5. 함수 이름을 입력합니다.

    워크시트의 Lambda Function Name 필드에 이 이름을 기록합니다.

  6. 사용할 프로그래밍 언어를 선택합니다. Snowflake에서 제공하는 샘플 Python 함수 중 하나를 사용 중이라면 Python 3.8 을 선택합니다.

  7. 이 함수의 실행 역할을 선택하거나 만듭니다.

    적절한 옵션(일반적으로 Create a new role with basic Lambda permissions)을 선택합니다.

    (이 역할은 클라우드 계정 역할이나 Snowflake 역할과는 별개입니다.)

  8. Create Function 버튼을 클릭합니다.

  9. lambda_function 탭에서 함수의 코드를 입력합니다.

    자체 함수를 아직 작성하지 않았다면, Snowflake에서 제공하는 다음 예를 사용할 수 있습니다.

    편집 윈도우에 붙여넣을 수 없으면 함수의 파일 이름을 두 번 클릭하여 편집을 활성화하십시오.

  10. Deploy 버튼을 클릭하여 함수를 배포합니다.

Lambda Function 테스트하기

Test 버튼 옆에 있는 아래쪽 화살표를 클릭하고 Configure test event 를 선택합니다. Event name 필드에 test 를 입력합니다.

Snowflake에서 제공하는 샘플 동기 Python 함수의 경우 다음 테스트 데이터를 사용합니다(모든 기본 데이터를 아래 데이터로 바꾸기).

{
  "body":
    "{ \"data\": [ [ 0, 43, \"page\" ], [ 1, 42, \"life, the universe, and everything\" ] ] }"
}
Copy

Create 를 클릭한 다음 Test 를 클릭합니다.

실행 결과는 다음과 유사해야 합니다.

{
  "statusCode": 200,
  "body": "{\"data\": [[0, [\"Echoing inputs:\", 43, \"page\"]], [1, [\"Echoing inputs:\", 42, \"life, the universe, and everything\"]]]}"
}
Copy

이제 외부 함수의 원격 서비스로 사용할 수 있는 AWS Lambda Function이 생겼습니다.