Creating a function in Bash
Create and execute a function in Bash that welcomes the user.
Before you start
Create a folder in Yandex Cloud.
Create a function
- In the management console
, select the folder where you want to create a function. - Select Cloud Functions.
- Click Create function.
- Name the function
bash-function
. - Click Create.
If you do not 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=bash-function
Result:
id: b09bhaokchn9********
folder_id: aoek49ghmknn********
created_at: "2019-06-14T10:03:37.475Z"
name: bash-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
Create the first version of the function
To create a function version, 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
-
Save the following code to a file named
hello.sh
:#!/bin/bash RESPONSE=$(echo '{"statusCode":200, "body":"Hello, World!"}' | jq '.') echo $RESPONSE | jq -c '.body |= tostring'
-
Add the
hello.sh
file to thehello-sh.zip
archive.
Create a function version
- In the management console
, select the folder containing your function. - Select Cloud Functions.
- Select
bash-function
. - Under Last version, click Сreate in editor.
- Select the
bash
runtime environment and click Continue. - Set the version parameters:
- Method:
ZIP archive
- File: Attach
hello-sh.zip
- Entry point:
hello.sh
- Timeout, sec:
3
- Memory:
128 MB
- Service account:
Not selected
- Method:
- Click Save changes.
If you do not 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=bash-function \
--runtime bash \
--entrypoint hello.sh \
--memory 128m \
--execution-timeout 3s \
--source-path ./hello-sh.zip
Where:
--function-name
: Name of the function you want to create a version of.--runtime
: Runtime environment.--entrypoint
: Entry point specified in the<function_file_name>.<handler_name>
format.--memory
: Amount of RAM.--execution-timeout
: 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: bash
entrypoint: hello.sh
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
Invoke the function
Note
To allow any user to invoke your function, make it public. For more information about access rights, see Access management in Cloud Functions.
- In the management console
, select the folder containing your function. - Select Cloud Functions.
- Select a function.
- Go to the Testing tab.
- In the Version tag field, specify
$latest
to invoke the latest function version. - In the Payload template field, select
No template
. - Click Run test.
- You will see the testing status under Test result in the Function status field. Important: Maximum function execution time before timeout (including original initialization at first call) is 10 minutes.
- You will see the function execution result in the Function output field.
If you do not 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>
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 a function via HTTPS. Invoke it as a regular HTTP request by inserting the function invocation link in the browser address bar:
https://functions.yandexcloud.net/<function_ID>
The following response will appear on the page:
Hello, World!
You can invoke a function using the Yandex Cloud Toolkit plugin
What's next
- For more information about the structure of functions invoked in different ways (HTTP or CLI), see Invoking a function in Cloud Functions.
- Read about service concepts.
- For information about what you can do with functions and their versions, see our step-by-step instructions.