Creating an API gateway
Before you start, prepare an API specification file based on the OpenAPI 3.0
Example of the hello-world.yaml specification file
openapi: "3.0.0"
info:
version: 1.0.0
title: Test API
paths:
/hello:
get:
summary: Say hello
operationId: hello
parameters:
- name: user
in: query
description: User name to appear in greetings.
required: false
schema:
type: string
default: 'world'
responses:
'200':
description: Greeting.
content:
'text/plain':
schema:
type: "string"
x-yc-apigateway-integration:
type: dummy
http_code: 200
http_headers:
'Content-Type': "text/plain"
content:
'text/plain': "Hello, {user}!\n"
-
In the management console
, go to the folder where you want to create an API gateway. -
Navigate to API Gateway.
-
Click Create API gateway.
-
Enter a name for the API gateway in the Name field.
-
Optionally, in the Description field, enter a description for the API gateway.
-
In the Request execution timeout field, specify the execution timeout. The value must not exceed the specified limit.
-
Under Specification, add the text of the OpenAPI specifications
.To add the x-yc-apigateway-integration extension to a specification, you can use the specification constructor.
-
Configure additional API gateway settings if needed.
-
Click Create.
If you do not have the Yandex Cloud CLI yet, install and initialize it.
The folder used by default is the one specified when creating the CLI profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also specify a different folder for any command using --folder-name or --folder-id. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.
To create an API gateway:
-
View the description of the CLI command for creating an API gateway:
yc serverless api-gateway create --help -
Specify API gateway parameters in the create command (not all the supported parameters are listed):
yc serverless api-gateway create \ --name <API_gateway_name> \ --execution-timeout <request_execution_timeout> \ --spec=<specification_file_path>Where:
-
--name: API gateway name:- Length: between 3 and 63 characters.
- It can only contain lowercase Latin letters, numbers, and hyphens.
- It must start with a letter and cannot end with a hyphen.
-
--execution-timeout: Request execution timeout, The value is specified in seconds and must not exceed the specified limit. This is an optional setting. The default value is300seconds. -
--spec: Path to the specification file you created earlier.
-
With Terraform
Terraform is distributed under the Business Source License
For more information about the provider resources, see the guides on the Terraform
If you do not have Terraform yet, install it and configure the Yandex Cloud provider.
To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), authenticate using the appropriate method.
To create an API gateway:
-
Specify the
yandex_api_gatewayproperties in the configuration file:-
name: API gateway name. The name format is as follows:- Length: between 3 and 63 characters.
- It can only contain lowercase Latin letters, numbers, and hyphens.
- It must start with a letter and cannot end with a hyphen.
-
description: API gateway description. -
labels: Labels for the API gateway. Specify a key-value pair. -
execution_timeout: Request execution timeout. The value is specified in seconds and must not exceed the set limit. This is an optional parameter. The default value is300seconds. -
spec: API gateway specification.
Here is an example of the configuration file structure:
resource "yandex_api_gateway" "test-api-gateway" { name = "<API_gateway_name>" description = "<API_gateway_description>" labels = { label = "label" empty-label = "" } execution_timeout = "<request_execution_timeout>" spec = <<-EOT openapi: "3.0.0" info: version: 1.0.0 title: Test API paths: /hello: get: summary: Say hello operationId: hello parameters: - name: user in: query description: User name to appear in greetings required: false schema: type: string default: 'world' responses: '200': description: Greeting content: 'text/plain': schema: type: "string" x-yc-apigateway-integration: type: dummy http_code: 200 http_headers: 'Content-Type': "text/plain" content: 'text/plain': "Hello, {user}!\n" EOT }For more on the properties of resources in Terraform, see this provider guide.
-
-
Make sure the configuration files are correct.
-
In the terminal, navigate to the directory where you created your configuration file.
-
Run a check using this command:
terraform plan
If the configuration is correct, the terminal will display a list of the resources and their settings. Otherwise, Terraform will show any detected errors.
-
-
Deploy the cloud resources.
-
If the configuration is correct, run this command:
terraform apply -
Confirm creating the resources by typing
yesand pressing Enter.This will create all the resources you need in the specified folder. You can check the new resources and their settings using the management console
or these CLI commands:yc serverless api-gateway get <API_gateway_name>
-
To create an API gateway, use the create REST API method for the ApiGateway resource or the ApiGatewayService/Create gRPC API call.