Yandex Cloud
  • Services
  • Solutions
  • Why Yandex Cloud
  • Pricing
  • Documentation
  • Contact us
Get started
Language / Region
© 2022 Yandex.Cloud LLC
Yandex Cloud Functions
  • Comparison with other Yandex Cloud services
  • Getting started
    • Overview
    • Creating a function
      • Overview
      • Node.js
      • Python
      • Go
      • PHP
      • Bash
      • Java
    • Creating a trigger
      • Overview
      • Timer
      • Trigger for Message Queue
      • Trigger for Object Storage
      • Trigger for Container Registry
      • Trigger for Cloud Logs
      • Trigger for Cloud Logging
      • Trigger for Yandex IoT Core
      • Trigger for budgets
      • Trigger for Data Streams
  • Step-by-step instructions
    • All instructions
    • Using functions to get an IAM token for a service account
    • Connecting to managed databases from functions
    • Managing rights to access functions
    • Managing functions
      • Creating a function
      • Managing function versions
      • Working in the code editor
      • Invoking a function
      • Updating a function
      • Scaling a function
      • Function monitoring
      • Viewing the execution log
      • Deleting a function
    • Managing triggers
      • Getting information about a trigger
      • Creating a timer
      • Creating a trigger for Message Queue
      • Creating a trigger for Object Storage
      • Creating a trigger for Container Registry
      • Creating a trigger for Cloud Logs
      • Creating a trigger for Cloud Logging
      • Creating a trigger for Yandex IoT Core
      • Creating a trigger for budgets
      • Creating a trigger for Data Streams
      • Updating a trigger
      • Trigger monitoring
      • Deleting a trigger
  • Concepts
    • Overview
    • Function
    • Invoking a function
    • Runtime environment
      • Overview
      • Environment
      • Execution context
      • Preloaded runtime environment
    • Builder
    • Trigger
      • Overview
      • Timer
      • Trigger for Message Queue
      • Trigger for Object Storage
      • Trigger for Container Registry
      • Trigger for Cloud Logs
      • Trigger for Cloud Logging
      • Trigger for Yandex IoT Core
      • Trigger for budgets
      • Trigger for Data Streams
    • Dead Letter Queue
    • Log groups
    • Backups
    • Quotas and limits
  • Developing in Node.js
    • Overview
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
    • Using the SDK
  • Developing in Python
    • Overview
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
    • Using the SDK
  • Developing in Go
    • Overview
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
    • Using the SDK
  • Developing in PHP
    • Overview
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
  • Developing in Bash
    • Overview
    • Request handler
    • Logging
    • Handling errors
    • Using the SDK
  • Developing in Java
    • Overview
    • Programming model
      • Overview
      • Function interface
      • YcFunction interface
      • HttpServlet class
      • Spring Boot
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
    • Using the SDK
  • Developing in R
    • Overview
    • Programming model
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
  • Developing in C#
    • Overview
    • Programming model
      • Overview
      • Function interface
      • YcFunction interface
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
    • Using the SDK
  • Practical guidelines
    • Creating skills for Alice
    • Deploying a web application
    • Developing a skill for Alice and a website with authorization
    • Writing data from a device to Managed Service for PostgreSQL
    • Developing a Slack bot
    • Developing a Telegram bot
    • Connecting to a YDB database from a Python function
    • Connecting to a YDB database from a function in Node.js
    • Converting a video to a GIF in Python
    • Creating a Node.js function using TypeScript
  • Pricing policy
  • Access management
  • API Functions reference
    • Authentication in the API
    • gRPC
      • Overview
      • FunctionService
      • OperationService
    • REST
      • Overview
      • Function
        • Overview
        • create
        • createVersion
        • delete
        • get
        • getVersion
        • getVersionByTag
        • list
        • listAccessBindings
        • listOperations
        • listRuntimes
        • listScalingPolicies
        • listTagHistory
        • listVersions
        • removeScalingPolicy
        • removeTag
        • setAccessBindings
        • setScalingPolicy
        • setTag
        • update
        • updateAccessBindings
  • API Triggers reference
    • Authentication in the API
    • gRPC
      • Overview
      • TriggerService
      • OperationService
    • REST
      • Overview
      • Trigger
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • pause
        • resume
        • update
  • Questions and answers
  1. Getting started
  2. Creating a function
  3. Java

Creating a function in Java

Written by
Yandex Cloud
,
improved by
amatol
  • Before you start
  • Create a function
  • Create the first version of the function
    • Prepare a ZIP archive with the function code
    • Create a function version
  • What's next

Create and execute a function in Java that welcomes the user.

Before you start

Create a folder in Yandex Cloud.

Create a function

Management console
CLI
API
Yandex Cloud Toolkit
  1. In the management console, go to the folder where you want to create a function.
  2. Open Cloud Functions.
  3. Click Create function.
  4. Enter a name for the function: java-function.
  5. Click Create.

If you don't have the Yandex Cloud command line interface yet, install and initialize it.

The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name or --folder-id parameter.

To create a function, run the command:

yc serverless function create --name=java-function

Result:

id: b09bhaokchn9********
folder_id: aoek49ghmknn********
created_at: "2019-06-14T10:03:37.475Z"
name: java-function
log_group_id: eolm8aoq9vcp********
http_invoke_url: https://functions.yandexcloud.net/b09bhaokchn9********
status: ACTIVE

You can create a function using the create API method.

You can create a function using the Yandex Cloud Toolkit plugin for the family of IDEs on the IntelliJ platform from JetBrains.

Create the first version of the function

To create versions of functions, you can use one of the code upload formats. A ZIP archive will be used for the example.

Warning

Files larger than 3.5 MB should be uploaded via Object Storage. For more information about limits, see Quotas and limits in Cloud Functions.

Prepare a ZIP archive with the function code

  1. Save the following code to a file named Handler.java:

    import java.util.HashMap;
    import java.util.Map;
    import java.util.function.Function;
    
    class Request {
        Map<String, String> queryStringParameters;
    }
    
    class Response {
        private int statusCode;
        private Map<String, String> headers;
        private Boolean isBase64Encoded;
        private String body;
    
        public Response(int statusCode, Map<String, String> headers, Boolean isBase64Encoded, String body) {
            this.statusCode = statusCode;
            this.headers = headers;
            this.isBase64Encoded = isBase64Encoded;
            this.body = body;
        }
    }
    
    public class Handler implements Function<Request, Response> {
        private Integer statusCode = 200;
        private Boolean isBase64Encoded = false;
    
        @Override
        public Response apply(Request request) {
            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "text/plain");
    
            String name = request.queryStringParameters.get("name");
            return new Response(statusCode, headers, isBase64Encoded, String.format("Hello, %s!", name));
        }
    }
    
  2. Add the Handler.java file to the hello-java.zip archive.

Create a function version

Management console
CLI
API
Yandex Cloud Toolkit
  1. In the management console, go to the folder where the function is located.
  2. Select Cloud Functions.
  3. Select java-function.
  4. Under Latest version, click Create in editor.
  5. Set the version parameters:
    • Runtime environment: java11.
    • Method: ZIP archive.
    • File: hello-java.zip.
    • Entry point: Handler.
    • Timeout, seconds: 3.
    • RAM: 128 MB.
    • Service account: Not selected.
  6. Click Create version.

If you don't have the Yandex Cloud command line interface yet, install and initialize it.

The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name or --folder-id parameter.

To create a function version, run the command:

yc serverless function version create \
  --function-name=java-function \
  --runtime java11 \
  --entrypoint Handler \
  --memory 128m \
  --execution-timeout 3s \
  --source-path ./hello-java.zip

where:

  • --function-name: The name of the function you want to create a version of.
  • --runtime: The runtime environment.
  • --entrypoint: The entry point.
  • --memory: The amount of RAM.
  • --execution-timeout: The maximum function execution time before the timeout is reached.
  • --source-path: ZIP archive with the function code and required dependencies.

Result:

done (1s)
id: d4evvn8obisa********
function_id: d4elpv8pft63********
created_at: "2020-08-01T19:09:19.531Z"
runtime: java11
entrypoint: Handler
resources:
    memory: "134217728"
execution_timeout: 3s
image_size: "4096"
status: ACTIVE
tags:
- $latest
log_group_id: ckg3qh8h363p********

You can create a function version using the createVersion API method.

You can create a function version using the Yandex Cloud Toolkit plugin for the family of IDEs on the IntelliJ platform from JetBrains.

Invoke the function

Note

To allow any user to invoke your function, make it public. For more information about rights, see Access management in Cloud Functions.

Management console
CLI
HTTPS
Yandex Cloud Toolkit
  1. In the management console, go to the folder where the function is located.

  2. Select Cloud Functions.

  3. Select a function.

  4. Go to the Testing tab.

  5. In the Tag version field, specify $latest to invoke the latest function version.

  6. Under Payload template, choose Without template.

  7. In the Input field, enter:

    {"queryStringParameters": {"name": "Username"}}
    
  8. Click Run test.

  9. You will see the testing status under Test result in the Function status field. Important: The maximum function execution time before timeout (including original initialization at initial launch) is 10 minutes.

  10. You will see the function execution result in the Function output field:

    {
    	"statusCode": 200,
    	"headers": {
    		"Content-Type": "text/plain"
    	},
    	"isBase64Encoded": false,
    	"body": "Hello, Username!"
    }
    

If you don't have the Yandex Cloud command line interface yet, install and initialize it.

The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name or --folder-id parameter.

To invoke a function, run the command:

yc serverless function invoke <function ID> -d '{"queryStringParameters": {"name": "Username"}}'

Result:

{"statusCode":200,"headers":{"Content-Type":"text/plain"},"isBase64Encoded":false,"body":"Hello, Username!"}

The function version with the $latest tag is invoked by default.

You can view the function invocation link on the Overview tab, in the Link to invoke field.

For security reasons, you can only invoke the function via HTTPS. Invoke it as a regular HTTP request by inserting the function invocation link in the browser address bar and adding the name parameter to the URL:

https://functions.yandexcloud.net/b09bhaokchn9pnbrlseb?name=Username

The following response appears on the page:

Hello, Username!

You can invoke a function using the Yandex Cloud Toolkit plugin for the family of IDEs on the IntelliJ platform from JetBrains.

What's next

  • For more information about the structure of functions invoked in different ways (HTTP or CLI), see Invoking a function.
  • Read about service concepts.
  • For information about what you can do with functions and their versions, see our step-by-step instructions.

Was the article helpful?

Language / Region
© 2022 Yandex.Cloud LLC
In this article:
  • Before you start
  • Create a function
  • Create the first version of the function
  • Prepare a ZIP archive with the function code
  • Create a function version
  • What's next