Exemple de fonction Lambda synchrone

Cette rubrique comprend le code d’un exemple de fonction Lambda que vous pouvez utiliser tel quel pour créer votre première fonction externe, ou que vous pouvez utiliser comme point de départ pour une fonction Lambda personnalisée.

Cette fonction est synchrone.

(Un exemple asynchrone distinct est également disponible).

Cet exemple est écrit en Python.

Dans ce chapitre :

Cet exemple de fonction Lambda synchrone extrait chaque ligne, la traite et renvoie une valeur pour cette ligne. Chaque valeur de sortie est simplement un tableau qui contient une copie de chacune des valeurs de la ligne d’entrée. Le tableau retourné est traité comme un VARIANT SQL par Snowflake.

import json

def lambda_handler(event, context):

    # 200 is the HTTP status code for "ok".
    status_code = 200

    # The return value will contain an array of arrays (one inner array per input row).
    array_of_rows_to_return = [ ]

    try:
        # From the input parameter named "event", get the body, which contains
        # the input rows.
        event_body = event["body"]

        # Convert the input from a JSON string into a JSON object.
        payload = json.loads(event_body)
        # This is basically an array of arrays. The inner array contains the
        # row number, and a value for each parameter passed to the function.
        rows = payload["data"]

        # For each input row in the JSON object...
        for row in rows:
            # Read the input row number (the output row number will be the same).
            row_number = row[0]

            # Read the first input parameter's value. For example, this can be a
            # numeric value or a string, or it can be a compound value such as
            # a JSON structure.
            input_value_1 = row[1]

            # Read the second input parameter's value.
            input_value_2 = row[2]

            # Compose the output based on the input. This simple example
            # merely echoes the input by collecting the values into an array that
            # will be treated as a single VARIANT value.
            output_value = ["Echoing inputs:", input_value_1, input_value_2]

            # Put the returned row number and the returned value into an array.
            row_to_return = [row_number, output_value]

            # ... and add that array to the main array.
            array_of_rows_to_return.append(row_to_return)

        json_compatible_string_to_return = json.dumps({"data" : array_of_rows_to_return})

    except Exception as err:
        # 400 implies some type of error.
        status_code = 400
        # Tell caller what this function could not handle.
        json_compatible_string_to_return = event_body

    # Return the return value and HTTP status code.
    return {
        'statusCode': status_code,
        'body': json_compatible_string_to_return
    }
Copy

Note

Cet exemple de code suppose que vous utilisez l’intégration du proxy Lambda, comme le recommande Snowflake dans les instructions de création du point de terminaison API Gateway.