NavigationContentFooter
Suggest an edit

How to create and deploy a function with the Scaleway API

Reviewed on 28 August 2024Published on 18 August 2021

The Scaleway API allows you to create and manage all your Scaleway resources programmatically. Anything you can do through the Scaleway console can also be done through the API.

Refer to the Scaleway Developers website for more information on the Scaleway API.

Before you start

To complete the actions presented below, you must have:

  • A Scaleway account logged into the console
  • Owner status or IAM permissions allowing you to perform actions in the intended Organization
  • A valid API key
  • Installed curl
  • Made your first request using the Scaleway API
  1. Run the following command in your terminal to create a functions namespace:

    curl -X POST \
    -H "X-Auth-Token: $SCW_SECRET_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "name": "<YOUR_NAMESPACE_NAME>",
    "project_id": "YOUR_PROJECT_ID"
    }' \
    "https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces"

    An output similar to the following displays:

    {"id":"example-fb93-43e3-a036-7be69f1af7a1", "name":"your-namespace-name", "environment_variables":{}, "organization_id":"example-776f-4f65-a41e-6c5fc58b4076", "project_id":"example-c162-43f7-bb3e-1182e6f12342", "status":"pending", "registry_namespace_id":"", "error_message":null, "registry_endpoint":"", "description":"", "secret_environment_variables":[], "region":"fr-par"}%
  2. Run the following command to create a function:

    curl -X POST \
    -H "X-Auth-Token: $SCW_SECRET_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "name": "<YOUR_FUNCTION_NAME>",
    "namespace_id": "<YOUR_NAMESPACE_ID>",
    "runtime": "<RUNTIME>"
    }' \
    "https://api.scaleway.com/functions/v1beta1/regions/fr-par/functions"

    An output similar to the following displays:

    {"id":"ef777a64-1f4e-4d43-8227-26927c7de057", "name":"your-function-name", "namespace_id":"example-fb93-43e3-a036-7be69f1af7a1", "status":"created", "environment_variables":{}, "min_scale":0, "max_scale":5, "runtime":"python310", "memory_limit":256, "cpu_limit":140, "timeout":"300s", "handler":"handler.handle", "error_message":null, "privacy":"public", "description":"", "domain_name":"namespaceg04rnwx-function-example.functions.fnc.fr-par.scw.cloud", "secret_environment_variables":[], "http_option":"enabled", "runtime_message":"", "build_message":null, "region":"fr-par"}%
  3. Create a zip file containing your function’s code by following this procedure.

    Note

    For testing purposes, you can create a zip archive with a simple Python file named handler.py inside, that contains the following code:

    def handle(event, context):
    return {
    "body": {
    "message": 'Hello, world',
    },
    "statusCode": 200,
    }
  4. Upload your zip file using the Scaleway console or using the Scaleway API.

  5. Run the following command to deploy your function:

    curl -X POST \
    -H "X-Auth-Token: $SCW_SECRET_KEY" \
    -H "Content-Type: application/json" \
    -d '{}' \
    "https://api.scaleway.com/functions/v1beta1/regions/fr-par/functions/<YOUR_FUNCTION_ID>/deploy"

    Your function is now being deployed.

    Tip

    You can check the status of your function from the Scaleway console or by running the following command:

    curl -X GET \
    -H "X-Auth-Token: $SCW_SECRET_KEY" \
    "https://api.scaleway.com/functions/v1beta1/regions/fr-par/functions/<YOUR_FUNCTION_ID>"
  6. Run the following command to call your function once it is deployed:

    curl <YOUR_FUNCTION_ENDPOINT>
API DocsScaleway consoleDedibox consoleScaleway LearningScaleway.comPricingBlogCareers
© 2023-2024 – Scaleway