diff --git a/en/_includes/application-load-balancer/create-web-server.md b/en/_includes/application-load-balancer/create-web-server.md index 78048959403..62ffd716ede 100644 --- a/en/_includes/application-load-balancer/create-web-server.md +++ b/en/_includes/application-load-balancer/create-web-server.md @@ -18,5 +18,5 @@ 1. Make sure the web server returns a list of folders in the `test-server` folder. Open the terminal on your computer and run this command: ```bash - curl -v :8080 + curl --verbose :8080 ``` \ No newline at end of file diff --git a/en/_includes/smartcaptcha/captcha-validation.md b/en/_includes/smartcaptcha/captcha-validation.md index eab7a89106d..3d14fea0950 100644 --- a/en/_includes/smartcaptcha/captcha-validation.md +++ b/en/_includes/smartcaptcha/captcha-validation.md @@ -1,6 +1,6 @@ After validating a request, {{ captcha-name }} assigns it an ID: a one-time token. You can use the token to retrieve the result of a user request validation from the service. The token is valid for five minutes. After this time expires, it becomes invalid and the user has to go through the validation process again. -After validation, the token is loaded into the `` element on the user's page. For example: +After validation, the token is loaded into the `` element on the user page. Here is an example: ```HTML
@@ -14,17 +14,10 @@ Where: * `
`: `div` element with a widget. * `value`: Token value. -To find out the result of the validation, send a POST request to `https://smartcaptcha.yandexcloud.net/validate`: +To find out the result of the validation, send a POST request to `https://smartcaptcha.yandexcloud.net/validate` providing parameters in `x-www-form-urlencoded` format: -```HTML -response = requests.post( -"https://smartcaptcha.yandexcloud.net/validate", - { - "secret": SMARTCAPTCHA_SERVER_KEY, - "token": token, - "ip": "" - } -) +``` +secret=&token=&ip= ``` Where: @@ -85,7 +78,7 @@ In its response, the service will return a JSON object containing the `status` a ## Request errors {#errors} -If your request to `https://smartcaptcha.yandexcloud.net/validate` is incorrect, the service will return an error. For example: +If your request to `https://smartcaptcha.yandexcloud.net/validate` is incorrect, the service will return an error. Here is an example: 1. Request missing the server key: diff --git a/en/_includes/smartwebsecurity/sum-cloud-account.md b/en/_includes/smartwebsecurity/sum-cloud-account.md index 56a02ea64cc..cef384921af 100644 --- a/en/_includes/smartwebsecurity/sum-cloud-account.md +++ b/en/_includes/smartwebsecurity/sum-cloud-account.md @@ -1,6 +1,6 @@ Billing is based on the number of requests across all [clouds](../../resource-manager/concepts/resources-hierarchy.md#cloud) linked to a single [billing account](../../billing/concepts/billing-account.md). -You pay for the actual number of legitimate requests. For each request you are charged for: +You pay for the actual number of legitimate requests. For each request, you are charged for: * Processing with security profile rules, both [basic](../../smartwebsecurity/concepts/rules.md#base-rules) and [Smart Protection](../../smartwebsecurity/concepts/rules.md#smart-protection-rules) ones. diff --git a/en/_pricing/compute/usd-instance-resources.md b/en/_pricing/compute/usd-instance-resources.md index 3a1ebda6b45..997d4ac9bac 100644 --- a/en/_pricing/compute/usd-instance-resources.md +++ b/en/_pricing/compute/usd-instance-resources.md @@ -19,6 +19,10 @@ | 100% vCPU | {{ sku|USD|compute.vm.cpu.c100.v3|string }} | {{ sku|USD|compute.vm.cpu.c100.preemptible.v3|string }} | {{ sku|USD|v1.commitment.selfcheckout.m6.compute.vm.cpu.c100.standard.v3|string }} | {{ sku|USD|v1.commitment.selfcheckout.y1.compute.vm.cpu.c100.standard.v3|string }} | | 1 NVIDIA T4 GPU | {{ sku|USD|compute.vm.gpu.standard.v3-t4|string }} | {{ sku|USD|compute.vm.gpu.standard.v3-t4.preemptible|string }} | − | − | | RAM (for 1 GB) | {{ sku|USD|compute.vm.ram.v3|string }} | {{ sku|USD|compute.vm.ram.preemptible.v3|string }} | {{ sku|USD|v1.commitment.selfcheckout.m6.compute.vm.ram.standard.v3|string }} | {{ sku|USD|v1.commitment.selfcheckout.y1.compute.vm.ram.standard.v3|string }} | +| **Intel Ice Lake with T4i** | Regular VM | Preemptible VM | | | +| 100% vCPU | $0.008400 | $0.008400 | - | - | +| 1 GPU | $1.152000 | $1.152000 | - | - | +| RAM (for 1 GB) | $0.002240 | $0.002240 | - | - | | **Intel Ice Lake (Compute Optimized)** | Regular VM | Preemptible VM | | | | 100% vCPU | {{ sku|USD|compute.vm.cpu.c100.highfreq-v3|string }} | - | − | − | | RAM (for 1 GB) | {{ sku|USD|compute.vm.ram.highfreq-v3|string }} | - | − | − | @@ -31,4 +35,4 @@ | 1 GPU | $13.338400 | $13.338400 | - | - | | RAM (for 1 GB) | $0.002240 | $0.002240 | - | - | -^*^ Feature is available on request, subject to technical availability. \ No newline at end of file +^*^ Feature is available on request, subject to technical availability. diff --git a/en/_pricing_examples/managed-kafka/usd-hour.md b/en/_pricing_examples/managed-kafka/usd-hour.md index a5381274aaa..c6c4ad3acd9 100644 --- a/en/_pricing_examples/managed-kafka/usd-hour.md +++ b/en/_pricing_examples/managed-kafka/usd-hour.md @@ -1,60 +1,60 @@ Cost calculation for {{ KF }} broker hosts: -> 3 × (2 × $0.012080 + 8 × $0.003200) = $0.149280 +> 3 × (2 × {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|string }} + 8 × {{ sku|USD|mdb.cluster.kafka.v3.ram|string }}) = {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.kafka.v3.ram|number }}) %} > -> Total: $0.149280, per hour cost of {{ KF }} broker hosts. +> Total: {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.kafka.v3.ram|number }}) %}, per hour cost of {{ KF }} broker hosts. Where: * 3: Number of {{ KF }} broker hosts. * 2: Number of vCPUs. -* $0.012080: Cost of using 100% vCPU per hour. +* {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|string }}: Cost of using 100% vCPU per hour. * 8: Amount of RAM per host (in GB). -* $0.003200: Cost of using 1 GB of RAM at 100% vCPU per hour. +* {{ sku|USD|mdb.cluster.kafka.v3.ram|string }}: Cost of using 1 GB of RAM at 100% vCPU per hour. Calculating the cost of storage for {{ KF }} broker hosts: -> 3 × 100 × $0.025600 = $7.680000 +> 3 × 100 × {{ sku|USD|mdb.cluster.network-hdd.kafka|month|string }} = {% calc [currency=USD] 3 × 100 × {{ sku|USD|mdb.cluster.network-hdd.kafka|month|number }} %} > -> Total: $7.680000, cost of storage for {{ KF }} broker hosts. +> Total: {% calc [currency=USD] 3 × 100 × {{ sku|USD|mdb.cluster.network-hdd.kafka|month|number }} %}, cost of storage for {{ KF }} broker hosts. Where: * 3: Number of {{ KF }} broker hosts. * 100: Amount of network HDD storage (in GB). -* $0.025600: Cost of using 1 GB of network HDD storage per month. +* {{ sku|USD|mdb.cluster.network-hdd.kafka|month|string }}: Cost of using 1 GB of network HDD storage per month. Cost calculation for {{ ZK }} hosts: -> 3 × (2 × $0.005600 + 4 × $0.002240) = $0.060480 +> 3 × (2 × {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|string }} + 4 × {{ sku|USD|mdb.zk.kafka.v3.ram|string }}) = {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|USD|mdb.zk.kafka.v3.ram|number }}) %} > -> Total: $0.060480, per hour cost of {{ ZK }} hosts. +> Total: {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|USD|mdb.zk.kafka.v3.ram|number }}) %}, per hour cost of {{ ZK }} hosts. Where: * 3: Number of {{ ZK }} hosts. * 2: Number of vCPUs. -* $0.005600: Cost of using 50% vCPU per hour. +* {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|string }}: Cost of using 50% vCPU per hour. * 4: Amount of RAM per host (in GB). -* $0.002240: Cost of using 1 GB of RAM at 50% vCPU per hour. +* {{ sku|USD|mdb.zk.kafka.v3.ram|string }}: Cost of using 1 GB of RAM at 50% vCPU per hour. Calculating the cost of storage for {{ ZK }} hosts: -> 3 × 10 × $0.104080 = $3.122400 +> 3 × 10 × {{ sku|USD|mdb.cluster.network-nvme.kafka|month|string }} = {% calc [currency=USD] 3 × 10 × {{ sku|USD|mdb.cluster.network-nvme.kafka|month|number }} %} > -> Total: $3.122400, cost of storage for {{ ZK }} hosts. +> Total: {% calc [currency=USD] 3 × 10 × {{ sku|USD|mdb.cluster.network-nvme.kafka|month|number }} %}, cost of storage for {{ ZK }} hosts. Where: * 3: Number of {{ ZK }} hosts. * 10: Amount of SSD network storage (in GB). -* $0.104080: Cost of using 1 GB of network SSD storage per month. +* {{ sku|USD|mdb.cluster.network-nvme.kafka|month|string }}: Cost of using 1 GB of network SSD storage per month. Total cost calculation: -> 720 × ($0.149280 + $0.060480) + $7.680000 + $3.122400 = $161.829600 +> 720 × ({% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.kafka.v3.ram|number }}) %} + {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|USD|mdb.zk.kafka.v3.ram|number }}) %}) + {% calc [currency=USD] 3 × 100 × {{ sku|USD|mdb.cluster.network-hdd.kafka|month|number }} %} + {% calc [currency=USD] 3 × 10 × {{ sku|USD|mdb.cluster.network-nvme.kafka|month|number }} %} = {% calc [currency=USD] 720 × ((3 × (2 × {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.kafka.v3.ram|number }})) + (3 × (2 × {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|USD|mdb.zk.kafka.v3.ram|number }}))) + (3 × 100 × {{ sku|USD|mdb.cluster.network-hdd.kafka|month|number }}) + (3 × 10 × {{ sku|USD|mdb.cluster.network-nvme.kafka|month|number }}) %} > -> Total: $161.829600, cost of using the cluster for 30 days. +> Total: {% calc [currency=USD] 720 × ((3 × (2 × {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.kafka.v3.ram|number }})) + (3 × (2 × {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|USD|mdb.zk.kafka.v3.ram|number }}))) + (3 × 100 × {{ sku|USD|mdb.cluster.network-hdd.kafka|month|number }}) + (3 × 10 × {{ sku|USD|mdb.cluster.network-nvme.kafka|month|number }}) %}, cost of using the cluster for 30 days. Where: * 720: Number of hours in 30 days. -* $0.149280: Per hour cost of {{ KF }} broker hosts. -* $0.060480: Per hour cost of {{ ZK }} hosts. -* $7.680000: Cost of storage for {{ KF }} broker hosts. -* $3.122400: Cost of storage for {{ ZK }} hosts. \ No newline at end of file +* {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.kafka.v3.ram|number }}) %}: Per hour cost of {{ KF }} broker hosts. +* {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|USD|mdb.zk.kafka.v3.ram|number }}) %}: Per hour cost of {{ ZK }} hosts. +* {% calc [currency=USD] 3 × 100 × {{ sku|USD|mdb.cluster.network-hdd.kafka|month|number }} %}: Cost of storage for {{ KF }} broker hosts. +* {% calc [currency=USD] 3 × 10 × {{ sku|USD|mdb.cluster.network-nvme.kafka|month|number }} %}: Cost of storage for {{ ZK }} hosts. \ No newline at end of file diff --git a/en/_pricing_examples/managed-mongodb/usd-host.md b/en/_pricing_examples/managed-mongodb/usd-host.md index cbda5bdff5f..815b99f421b 100644 --- a/en/_pricing_examples/managed-mongodb/usd-host.md +++ b/en/_pricing_examples/managed-mongodb/usd-host.md @@ -1,10 +1,10 @@ -> 3 × (2 × $0.012800 + 8 × $0.007200) = $0.249600 +> 3 × (2 × {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|string }} + 8 × {{ sku|USD|mdb.cluster.mongodb.v3.ram|string }}) = {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.mongodb.v3.ram|number }}) %} -> Total: $0.249600, cost of operation of {{ MG }} hosts per hour. +> Total: {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.mongodb.v3.ram|number }}) %}, cost of operation of {{ MG }} hosts per hour. Where: * 3: Number of {{ MG }} hosts * 2: Number of vCPUs -* $0.012800: Cost of using 100% vCPU per hour +* {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|string }}: Cost of using 100% vCPU per hour * 8: Amount of RAM per {{ MG }} host (in GB) -* $0.007200: Cost of using 1 GB of RAM at 100% vCPU per hour \ No newline at end of file +* {{ sku|USD|mdb.cluster.mongodb.v3.ram|string }}: Cost of using 1 GB of RAM at 100% vCPU per hour \ No newline at end of file diff --git a/en/_pricing_examples/managed-mongodb/usd-storage.md b/en/_pricing_examples/managed-mongodb/usd-storage.md index e2b1c4f5c26..07ccb896e93 100644 --- a/en/_pricing_examples/managed-mongodb/usd-storage.md +++ b/en/_pricing_examples/managed-mongodb/usd-storage.md @@ -1,9 +1,9 @@ -> 720 × $0.249600 + 100 × $0.025600 = $182.272000 +> 720 × {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.mongodb.v3.ram|number }}) %} + 100 × {{ sku|USD|mdb.cluster.network-hdd.ch|month|string }} = {% calc [currency=USD] 720 × (3 × (2 × {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.mongodb.v3.ram|number }})) + 100 × {{ sku|USD|mdb.cluster.network-hdd.ch|month|number }} %} > -> Total: $182.272000, cost of using the cluster for 30 days. +> Total: {% calc [currency=USD] 720 × (3 × (2 × {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.mongodb.v3.ram|number }})) + 100 × {{ sku|USD|mdb.cluster.network-hdd.ch|month|number }} %}, cost of using the cluster for 30 days. Where: * 720: Number of hours in 30 days -* $0.249600: Cost of operation of {{ MG }} hosts per hour +* {% calc [currency=USD] 3 × (2 × {{ sku|USD|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|USD|mdb.cluster.mongodb.v3.ram|number }}) %}: Cost of operation of {{ MG }} hosts per hour * 100: Amount of network HDD storage (in GB) -* $0.025600: Cost of using 1 GB of network HDD storage per month \ No newline at end of file +* {{ sku|USD|mdb.cluster.network-hdd.ch|month|string }}: Cost of using 1 GB of network HDD storage per month \ No newline at end of file diff --git a/en/_pricing_examples/smartwebsecurity/usd-smartwebsecurity-waf.md b/en/_pricing_examples/smartwebsecurity/usd-smartwebsecurity-waf.md new file mode 100644 index 00000000000..2a0210b1cbc --- /dev/null +++ b/en/_pricing_examples/smartwebsecurity/usd-smartwebsecurity-waf.md @@ -0,0 +1,13 @@ +You can only connect a WAF profile when a security profile is used. Therefore, you pay for processing requests both by WAF and security profile rules. + +> Let’s calculate the cost of 315.04 million legitimate requests per month processed by security and WAF profile rules: +> (0.01 × $0.000000 + 0.99 × $200.000000 + 9 × $28.000000 + 90 × $1.600000 + 215.04 × $1.120000) × 2 = $1669.689600, excluding VAT. + +Where: + +* 0.01 × $0.000000: Non-billable threshold of 0.01 million requests. +* 0.99 × $200.000000: Cost of the subsequent 0.99 million requests. +* 9 × $28.000000: Cost of the subsequent 9 million requests. +* 90 × $1.600000: Cost of the subsequent 90 million requests. +* 215.04 × $1.120000: Cost of the remaining 215.04 million requests. +* × 2: The total cost is multiplied by `2` as each request was first processed by security profile rules and then by WAF profile rules. \ No newline at end of file diff --git a/en/_pricing_examples/smartwebsecurity/usd-smartwebsecurity.md b/en/_pricing_examples/smartwebsecurity/usd-smartwebsecurity.md index 3ccd5df4a5c..57834447dba 100644 --- a/en/_pricing_examples/smartwebsecurity/usd-smartwebsecurity.md +++ b/en/_pricing_examples/smartwebsecurity/usd-smartwebsecurity.md @@ -1,4 +1,4 @@ -For example, the total cost of sending 315.04 million requests per month to {{ sws-name }} for analysis will be: +> Let’s calculate the cost of 315.04 million legitimate requests per month processed by security profile rules: > 0.01 × ${{ sku|USD|sws.requests.v1|number }} + 0.99 × {{ sku|USD|sws.requests.v1|pricingRate.0.01|string }} + 9 × {{ sku|USD|sws.requests.v1|pricingRate.1|string }} + 90 × {{ sku|USD|sws.requests.v1|pricingRate.10|string }} + 215.04 × {{ sku|USD|sws.requests.v1|pricingRate.100|string }} = {% calc [currency=USD] 0.01 × {{ sku|USD|sws.requests.v1|number }} + 0.99 × {{ sku|USD|sws.requests.v1|pricingRate.0.01|number }} + 9 × {{ sku|USD|sws.requests.v1|pricingRate.1|number }} + 90 × {{ sku|USD|sws.requests.v1|pricingRate.10|number }} + 215,04 × {{ sku|USD|sws.requests.v1|pricingRate.100|number }} %} excluding VAT. Where: @@ -7,4 +7,4 @@ Where: * 0.99 × {{ sku|USD|sws.requests.v1|pricingRate.0.01|string }}: Cost of the subsequent 0.99 million requests. * 9 × {{ sku|USD|sws.requests.v1|pricingRate.1|string }}: Cost of the subsequent 9 million requests. * 90 × {{ sku|USD|sws.requests.v1|pricingRate.10|string }}: Cost of the subsequent 90 million requests. -* 215.04 × {{ sku|USD|sws.requests.v1|pricingRate.100|string }}: Cost of the remaining 215.04 million requests. \ No newline at end of file +* 215.04 × {{ sku|USD|sws.requests.v1|pricingRate.100|string }}: Cost of the remaining 215.04 million requests. diff --git a/en/application-load-balancer/quickstart-wizard.md b/en/application-load-balancer/quickstart-wizard.md index a0744dff509..d9605a688f1 100644 --- a/en/application-load-balancer/quickstart-wizard.md +++ b/en/application-load-balancer/quickstart-wizard.md @@ -97,9 +97,9 @@ As an example, let's create a balancer with a node in the same subnet and same a 1. Enter the load balancer name: `test-load-balancer`. 1. Under **{{ ui-key.yacloud.mdb.forms.section_network-settings }}**, select the network whose subnet will host the load balancer node. 1. Toggle **{{ ui-key.yacloud.alb.label_detailed-settings }}** on. - 1. Under **{{ ui-key.yacloud.alb.section_allocation-settings }}**, select a subnet in a single [availability zone](../overview/concepts/geo-scope.md) and enable traffic in this subnet. + 1. Under **{{ ui-key.yacloud.alb.section_allocation-settings }}**, select a subnet in one [availability zone](../overview/concepts/geo-scope.md) and enable incoming traffic in this subnet. - Remove all other availability zones by clicking ![xmark](../_assets/console-icons/xmark.svg) in the relevant row. + Remove the other availability zones by clicking ![xmark](../_assets/console-icons/xmark.svg) in the relevant row. 1. Under **{{ ui-key.yacloud.alb.label_listeners }}**, enter the listener name: `test-listener`. @@ -113,16 +113,16 @@ As an example, let's create a balancer with a node in the same subnet and same a In the terminal, run the following command: ```bash -curl -v :80 +curl --verbose :80 ``` -The response must return the `200` HTTP status code and an HTML-formatted list of folders from the test VM folder. +The response must return the HTTP status code `200` and an HTML list of folders from the test VM folder. After that, you can add other VMs to the target group, create new backends for your application, and build routes to the application endpoints. ## How to delete the resources you created {#clear-out} -To stop paying for the resources created, delete them in the following order: +To stop paying for the resources you created, delete them in the following order: {% list tabs group=instructions %} diff --git a/en/application-load-balancer/quickstart.md b/en/application-load-balancer/quickstart.md index 4bed9651924..b957271f849 100644 --- a/en/application-load-balancer/quickstart.md +++ b/en/application-load-balancer/quickstart.md @@ -203,7 +203,7 @@ As an example, let's create a balancer with a node in the same subnet and same a In the terminal, run the following command: ```bash -curl -v :80 +curl --verbose :80 ``` The response must return the HTTP status code `200` and an HTML list of folders from the test VM folder. diff --git a/en/certificate-manager/quickstart/index.md b/en/certificate-manager/quickstart/index.md index 8ec0196688e..e9198874200 100644 --- a/en/certificate-manager/quickstart/index.md +++ b/en/certificate-manager/quickstart/index.md @@ -24,7 +24,7 @@ To get started with {{ certificate-manager-name }}, you need: - Management console {#console} - 1. In the [management console]({{ link-console-main }}), select the folder you want to create a [bucket](../../storage/concepts/bucket.md) in. + 1. In the [management console]({{ link-console-main }}), select the folder you want to create a bucket in. 1. Select **{{ ui-key.yacloud.iam.folder.dashboard.label_storage }}**. 1. Click **{{ ui-key.yacloud.storage.buckets.button_create }}**. 1. Enter exactly the same name for the bucket as the domain name. @@ -42,8 +42,9 @@ To get started with {{ certificate-manager-name }}, you need: 1. In the [management console]({{ link-console-main }}), select **{{ ui-key.yacloud.iam.folder.dashboard.label_storage }}**. 1. In the **{{ ui-key.yacloud.storage.switch_buckets }}** tab, click the bucket with the same name as the domain. - 1. In the left-hand panel, select **{{ ui-key.yacloud.storage.bucket.switch_website }}**. - 1. Select **{{ ui-key.yacloud.storage.bucket.website.switch_hosting }}** and specify your website home page. + 1. In the left-hand panel, select **{{ ui-key.yacloud.storage.bucket.switch_settings }}**. + 1. Open the **{{ ui-key.yacloud.storage.bucket.switch_website }}** tab. + 1. Select `{{ ui-key.yacloud.storage.bucket.website.switch_hosting }}` and specify the website's homepage. 1. Click **{{ ui-key.yacloud.storage.bucket.website.button_save }}** to complete the operation. {% endlist %} @@ -146,8 +147,9 @@ To renew a certificate, you have to perform certain actions. Keep track of the l 1. Log in to the [management console]({{ link-console-main }}). 1. Select **{{ ui-key.yacloud.iam.folder.dashboard.label_storage }}**. 1. In the **{{ ui-key.yacloud.storage.switch_buckets }}** tab, click the bucket with the same name as the domain. + 1. In the left-hand panel, select **{{ ui-key.yacloud.storage.bucket.switch_security }}**. 1. Go to the **{{ ui-key.yacloud.storage.bucket.switch_https }}** tab. - 1. In the right-hand panel that opens, click **{{ ui-key.yacloud.storage.bucket.https.button_action-configure }}**. + 1. Click **{{ ui-key.yacloud.storage.bucket.https.button_action-configure }}** at the top right. 1. In the **{{ ui-key.yacloud.storage.bucket.https.field_source }}** field, select `{{ ui-key.yacloud.storage.bucket.https.value_method-certificate-manager }}`. 1. In the **{{ ui-key.yacloud.storage.bucket.https.field_certificate-manager }}** field, select the certificate from the list that opens. 1. Click **{{ ui-key.yacloud.storage.bucket.https.button_save }}**. diff --git a/en/monitoring/concepts/data-collection/unified-agent/delete.md b/en/monitoring/concepts/data-collection/unified-agent/delete.md index d9eb6531c9f..2e8a449b297 100644 --- a/en/monitoring/concepts/data-collection/unified-agent/delete.md +++ b/en/monitoring/concepts/data-collection/unified-agent/delete.md @@ -11,39 +11,39 @@ The way you delete {{ unified-agent-short-name }} depends on the way it was inst - Docker image {#docker} - 1. View the {{ unified-agent-short-name }} container ID: - + 1. View the {{ unified-agent-short-name }} container ID: + ```bash sudo docker ps ``` 1. Stop the container: - + ```bash sudo docker stop ``` 1. Delete the container: - + ```bash sudo docker rm ``` - + - deb package {#deb} - 1. Stop {{ unified-agent-short-name }}: - + 1. Stop {{ unified-agent-short-name }}: + ```bash sudo service unified-agent stop ``` - 1. View the deb package name: + 1. View the deb package name: ```bash sudo dpkg -S /etc/yandex/unified_agent ``` - - 1. Delete the deb package: + + 1. Delete the deb package: ```bash sudo apt remove yandex-unified-agent @@ -51,8 +51,8 @@ The way you delete {{ unified-agent-short-name }} depends on the way it was inst - Binary file {#binary} - 1. View the {{ unified-agent-short-name }} process number and the location of the `unified_agent` file and `*.yml` configuration file: - + 1. View the {{ unified-agent-short-name }} process number and the location of the `unified_agent` file and `*.yml` configuration file: + ```bash ps aux | grep unified_agent ``` @@ -65,19 +65,19 @@ The way you delete {{ unified-agent-short-name }} depends on the way it was inst ``` In this example, the process number is `1068`. - 1. Stop the {{ unified-agent-short-name }} process: + 1. Stop the {{ unified-agent-short-name }} process: - ```bash - sudo kill + ```bash + sudo kill ``` - - 1. Delete the binary file: - + + 1. Delete the binary file: + ```bash sudo rm -f /usr/bin/unified_agent ``` - 1. Delete the configuration file: + 1. Delete the configuration file: ```bash sudo rm -f /etc/yc/unified_agent/config.yml @@ -85,37 +85,41 @@ The way you delete {{ unified-agent-short-name }} depends on the way it was inst - When creating a VM {#vm} - If installed this way, the `unified_agent` binary file and the `config.yml` default configuration file are copied to the VM. Therefore, {{ unified-agent-short-name }} is deleted the same way as the binary file. - - Information about the installed {{ unified-agent-short-name }} is stored in the VM metadata. When deleting {{ unified-agent-short-name }}, metadata is not updating automatically; however, you can do it manually. - - {% note info %} - - Information in metadata does not affect {{ unified-agent-short-name }}'s operation, so updating is optional. + If {{ unified-agent-short-name }} was installed this way, the `unified_agent` binary file and the `config.yml` default configuration file are copied to the VM. Therefore, {{ unified-agent-short-name }} is deleted the same way as the binary file. + + Information about the installed {{ unified-agent-short-name }} is stored in the VM metadata. When deleting {{ unified-agent-short-name }}, metadata is not updated automatically; however, you can do it manually. - {% endnote %} + {% note info %} - To delete information about {{ unified-agent-short-name }} from metadata: + Information in metadata does not affect {{ unified-agent-short-name }}'s operation, so updating is optional. - 1. [Get an IAM token for your VM's service account](../../../../iam/operations/iam-token/create-for-sa.md#via-cli). + {% endnote %} - 1. Make sure you have installed [cURL](https://curl.haxx.se). + To delete information about {{ unified-agent-short-name }} from metadata: - 1. Send an API request to update metadata: + 1. [Get an IAM token for your VM's service account](../../../../iam/operations/iam-token/create-for-sa.md#via-cli). + + 1. Make sure you have installed [cURL](https://curl.haxx.se). + + 1. Send an API request to update metadata: ```bash - curl -H "Authorization: Bearer " https://compute.api.cloud.yandex.net/compute/v1/instances/ -X PATCH -d '{"updateMask": "metadata", "metadata": {"install-unified-agent": "0" },}' + curl \ + --request PATCH \ + --header "Authorization: Bearer " \ + --data '{"updateMask": "metadata", "metadata": {"install-unified-agent": "0" },}' \ + https://compute.api.cloud.yandex.net/compute/v1/instances/ ``` - 1. View metadata: - - 1. In the [management console]({{ link-console-main }}), go to **{{ ui-key.yacloud.iam.folder.dashboard.label_compute }}**. - - 1. In the left-hand panel, select ![image](../../../../_assets/console-icons/server.svg) **{{ ui-key.yacloud.compute.switch_instances }}**. - - 1. Select the VM and navigate to the **{{ ui-key.yacloud.common.overview }}** tab. - - 1. Make sure the **{{ ui-key.yacloud.compute.instance.overview.field_ua-enabled }}** parameter is now set to `no` under **{{ ui-key.yacloud.compute.instance.overview.section_monitoring }}**. + 1. View metadata: + + 1. In the [management console]({{ link-console-main }}), go to **{{ ui-key.yacloud.iam.folder.dashboard.label_compute }}**. + 1. In the left-hand panel, select ![image](../../../../_assets/console-icons/server.svg) **{{ ui-key.yacloud.compute.switch_instances }}**. + + 1. Select the VM and navigate to the **{{ ui-key.yacloud.common.overview }}** tab. + + 1. Make sure the **{{ ui-key.yacloud.compute.instance.overview.field_ua-enabled }}** parameter is now set to `no` under **{{ ui-key.yacloud.compute.instance.overview.section_monitoring }}**. + {% endlist %} diff --git a/en/monitoring/concepts/data-collection/unified-agent/installation.md b/en/monitoring/concepts/data-collection/unified-agent/installation.md index af91a99fef3..2c16ce44957 100644 --- a/en/monitoring/concepts/data-collection/unified-agent/installation.md +++ b/en/monitoring/concepts/data-collection/unified-agent/installation.md @@ -98,7 +98,7 @@ Install {{ unified-agent-short-name }} using one of the following methods: 1. Download the latest deb package: ```bash - ubuntu_name="ubuntu-22.04-jammy" ua_version=$(curl -s https://{{ s3-storage-host }}/yc-unified-agent/latest-version) bash -c 'curl -s -O https://{{ s3-storage-host }}/yc-unified-agent/releases/${ua_version}/deb/${ubuntu_name}/yandex-unified-agent_${ua_version}_amd64.deb' + ubuntu_name="ubuntu-22.04-jammy" ua_version=$(curl --silent https://{{ s3-storage-host }}/yc-unified-agent/latest-version) bash -c 'curl --silent --remote-name https://{{ s3-storage-host }}/yc-unified-agent/releases/${ua_version}/deb/${ubuntu_name}/yandex-unified-agent_${ua_version}_amd64.deb' ``` For `ubuntu_name`, specify the OS version: @@ -111,7 +111,7 @@ Install {{ unified-agent-short-name }} using one of the following methods: You can also download a specific {{ unified-agent-short-name }} version. To do this, view all available versions and specify the required one instead of the `latest-version` value: ```(bash) - curl -s https://{{ s3-storage-host }}/yc-unified-agent/all-versions + curl --silent https://{{ s3-storage-host }}/yc-unified-agent/all-versions ``` 1. Check the version of the deb package using the `ls` command. @@ -144,12 +144,12 @@ Install {{ unified-agent-short-name }} using one of the following methods: To download the latest version of the agent's binary file, run: ```bash - ua_version=$(curl -s https://{{ s3-storage-host }}/yc-unified-agent/latest-version) bash -c 'curl -s -O https://{{ s3-storage-host }}/yc-unified-agent/releases/$ua_version/unified_agent && chmod +x ./unified_agent' + ua_version=$(curl --silent https://{{ s3-storage-host }}/yc-unified-agent/latest-version) bash -c 'curl --silent --remote-name https://{{ s3-storage-host }}/yc-unified-agent/releases/$ua_version/unified_agent && chmod +x ./unified_agent' ``` To find out all the available versions of the agent, run this command: ```(bash) - curl -s https://{{ s3-storage-host }}/yc-unified-agent/all-versions + curl --silent https://{{ s3-storage-host }}/yc-unified-agent/all-versions ``` Download the agent's executable file and then create a configuration file, for example, with the settings for [delivering Linux system metrics](../../../operations/unified-agent/linux_metrics.md). For more information about agent configuration, see [{#T}](./configuration.md). diff --git a/en/monitoring/concepts/data-collection/unified-agent/outputs.md b/en/monitoring/concepts/data-collection/unified-agent/outputs.md index ad481b47fe8..e2b5a7bc70a 100644 --- a/en/monitoring/concepts/data-collection/unified-agent/outputs.md +++ b/en/monitoring/concepts/data-collection/unified-agent/outputs.md @@ -7,7 +7,7 @@ The common output description format is: ```yaml - output: plugin: ... # Plugin name - id: ... # (recommended) output ID, which is used in metrics and agent logs + id: ... # (Recommended) Output ID, which is used in metrics and agent logs. ``` ## debug output {#debug_output} @@ -49,7 +49,7 @@ Parameter descriptions: directory: output_directory # Optional, not set by default. # Message separator used in the file, for example, "\n". - delimiter: null # Required. + delimiter: null # Required ``` ## dev_null output {#dev_null_output} @@ -73,7 +73,7 @@ Parameter descriptions: folder_id: b1ge2vt0gml6******** # Required, folder ID. # IAM authentication settings. - iam: # Required. + iam: # Required # Either the cloud_meta or jwt element must be specified. # If specified, the IAM token is taken from the metadata service. @@ -82,7 +82,7 @@ Parameter descriptions: # If specified, the JWT is exchanged for the IAM token. jwt: # Optional, not set by default. # Name of the file containing the JWT parameters in the format returned by the `yc iam key create` command. - file: "jwt_params.json" # Required. + file: "jwt_params.json" # Required endpoint: iam.{{ api-host }} # Optional, the default value is iam.{{ api-host }}. @@ -148,11 +148,11 @@ Parameter descriptions: # First the message metadata is searched for a log group (if the parameter is specified). # Next the message metadata is searched for a folder, and the session metadata is searched for a log group. # Then the session metadata is searched for a folder. The one found first will be selected. - log_group_id: "b1ge2vt0gml6********" # Not set by default. + log_group_id: "b1ge2vt0gml6********" # Optional, not set by default. folder_id: "b1ge2vt0gml6********" # Not set by default; if specified, the default log group will be used. - message_log_group_id: "b1ge2vt0gml6********" # Not set by default. + message_log_group_id: "b1ge2vt0gml6********" # Optional, not set by default message_folder_id: "b1ge2vt0gml6********" # Not set by default; if specified, the default log group will be used. @@ -165,7 +165,7 @@ Parameter descriptions: batch: # Limit on the size of the result. # A new message is generated if the size of received ones reaches the limit. - limit: # Optional. + limit: # Optional # The limit can be specified in message units or bytes. # If both are specified, the first one reached will apply. @@ -206,12 +206,12 @@ Parameter descriptions: message_quota: 1000 # IAM authentication settings. - iam: # Required, not set by default. + iam: # Optional, not set by default. # Either the cloud_meta or jwt element must be specified. # If specified, the IAM token is taken from the metadata service. cloud_meta: # Optional, not set by default. - url: # Optional. + url: # Optional refresh_period: 1h # Optional, the default value is 1h. @@ -220,7 +220,7 @@ Parameter descriptions: # If specified, a JWT token is exchanged for an IAM token. jwt: # Optional, not set by default. # Name of the file containing JWT parameters in the format returned by the `yc iam key create` command. - file: "jwt_params.json" # Required. + file: "jwt_params.json" # Required endpoint: iam.api.cloud.yandex.net # Optional, the default value is iam.api.cloud.yandex.net. @@ -246,9 +246,9 @@ Parameter descriptions: # 1. The message body will be replaced with that payload. # 2. If special fields (timestamp, priority) are detected and parsed successfully, they will replace the respective message fields. # 3. All other fields will be transferred to json_payload. - parse_json: # Optional. + parse_json: # Optional # Rule specifying the source for a new message body. - payload: # Required. + payload: # Required # List of first level keys. # The value matching the first key will be selected. keys: ["msg", "message"] @@ -260,16 +260,16 @@ Parameter descriptions: # - ISO 8601 # - RFC 822 # - log4j {"epochSecond":123,"nanoOfSecond":456} - timestamp: # Optional. + timestamp: # Optional keys: ["ts", "timestamp", "instant"] - # Timestamp is measured in seconds, milliseconds, and microseconds. - unix_timestamp_format: seconds # Optional. + # Timestamp measurement units: seconds, milliseconds, microseconds. + unix_timestamp_format: seconds # Optional # Keys in JSON matching the priority. # If there are no keys in JSON, or value parsing fails, the value from meta information will be used. # Acceptable values: TRACE, DEBUG, INFO, WARN, ERROR, or FATAL (case insensitive). - priority: # Optional. + priority: # Optional keys: ["level"] # Parameters for LogEntryResource https://cloud.yandex.ru/docs/logging/api-ref/grpc/log_ingestion_service#LogEntryResource diff --git a/en/monitoring/operations/dashboard/api-examples.md b/en/monitoring/operations/dashboard/api-examples.md index e29e29b9f34..0cb0bbc4cc2 100644 --- a/en/monitoring/operations/dashboard/api-examples.md +++ b/en/monitoring/operations/dashboard/api-examples.md @@ -21,10 +21,10 @@ monitoring.{{ api-host }}:443 yandex.cloud.monitoring.v3.DashboardService.List ### Get {#get} -Getting information about a dashboard. In the `dashboard_id` field, specify the ID for the dashboard to get information about. +Getting information about a dashboard. In the `dashboard_id` field, specify the ID of the dashboard to get information about. ```bash -grpcurl -rpc-header "Authorization: Bearer " \ +grpcurl -rpc-header "Authorization: Bearer " \ -d '{"dashboard_id": ""}' \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ @@ -37,7 +37,7 @@ monitoring.{{ api-host }}:443 yandex.cloud.monitoring.v3.DashboardService.Get Creating a dashboard. ```bash -grpcurl -rpc-header "Authorization: Bearer " \ +grpcurl -rpc-header "Authorization: Bearer " \ -d @ \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ @@ -119,7 +119,7 @@ In the `folderId` field, specify the ID of the folder to create a dashboard in. } } ``` -**Sample response** +**Response example** ```json { @@ -137,7 +137,7 @@ In the `folderId` field, specify the ID of the folder to create a dashboard in. Updating a dashboard. ```bash -grpcurl -rpc-header "Authorization: Bearer " \ +grpcurl -rpc-header "Authorization: Bearer " \ -d @ \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ @@ -219,7 +219,7 @@ In the `dashboard_id` field, specify the ID of the dashboard to update. In the ` } } ``` -**Sample response** +**Response example** ```json { @@ -237,8 +237,8 @@ In the `dashboard_id` field, specify the ID of the dashboard to update. In the ` Deleting a dashboard. In the `dashboard_id` field, specify the ID of the dashboard to delete. ```bash -grpcurl -rpc-header "Authorization: Bearer " \ - -d '{"dashboard_id": "", "etag": "1"}' \ +grpcurl -rpc-header "Authorization: Bearer " \ + -d '{"dashboard_id": "", "etag": "1"}' \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/monitoring/v3/dashboard_service.proto \ diff --git a/en/monitoring/operations/metric/add.md b/en/monitoring/operations/metric/add.md index 086104a3006..243abbb8042 100644 --- a/en/monitoring/operations/metric/add.md +++ b/en/monitoring/operations/metric/add.md @@ -10,46 +10,47 @@ To try the examples in this section: 1. [Get the ID of the folder](../../../resource-manager/operations/folder/get-id.md) for which you have the `{{ roles-monitoring-editor }}` role or higher. 1. Get an IAM token: - * [Guide](../../../iam/operations/iam-token/create.md) for a Yandex account user. - * [Guide](../../../iam/operations/iam-token/create-for-sa.md) for a service account. - * [Guide](../../../iam/operations/iam-token/create-for-federation.md) for a federated account. + * [Guide](../../../iam/operations/iam-token/create.md) for users with a Yandex account. + * [How to get a token](../../../iam/operations/iam-token/create-for-sa.md) for a service account. + * [How to get a token](../../../iam/operations/iam-token/create-for-federation.md) for a federated account. ### Sample request {#sample-request} 1. Create a file with the request body, e.g., `body.json`. In the `metrics` property, specify the list of metrics to write. Send the required labels in the query parameters and additional labels in the request body. - **body.json:** - ```json - { - "metrics": [ - { - "name": "temperature", - "labels": { - "building": "office", - "room": "openspace" - }, - "value": 18.6 - } - ] - } - ``` - -1. Send the request and save the response to a file, for example, `output.json`: - - ```bash - export IAM_TOKEN=CggaATEVAgA... - curl -X POST \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - -d '@body.json' \ - 'https://monitoring.{{ api-host }}/monitoring/v2/data/write?folderId=aoe6vrq0g3sv********&service=custom' > output.json - ``` - - Sample response: - - **output.json:** - ```json - { - "metrics_written":"1" - } - ``` + **body.json:** + ```json + { + "metrics": [ + { + "name": "temperature", + "labels": { + "building": "office", + "room": "openspace" + }, + "value": 18.6 + } + ] + } + ``` + +1. Send the request and save the response to a file, e.g., `output.json`: + + ```bash + export IAM_TOKEN=CggaATEVAgA... + curl \ + --request POST \ + --header "Content-Type: application/json" \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + --data '@body.json' \ + 'https://monitoring.{{ api-host }}/monitoring/v2/data/write?folderId=aoe6vrq0g3sv********&service=custom' > output.json + ``` + + Response example: + + **output.json:** + ```json + { + "metrics_written":"1" + } + ``` diff --git a/en/monitoring/operations/metric/get.md b/en/monitoring/operations/metric/get.md index 95255b8df62..38fd32657c1 100644 --- a/en/monitoring/operations/metric/get.md +++ b/en/monitoring/operations/metric/get.md @@ -1,86 +1,87 @@ # Downloading metrics -To download metric data, use the [read](../../api-ref/MetricsData/read.md). +To download metric data, use the [read](../../api-ref/MetricsData/read.md) method. {% include [before-beginning](../../../_includes/monitoring/before-beginning.md) %} -### Sample request {#sample-request} +### Request example {#sample-request} 1. Create a file with the request body, e.g., `body.json`: + + For example, the request below gets metric data on the CPU usage from 00:00 UTC on July 24 to 00:00 UTC on July 31 for the VM with the `epdpfhoh1r83********` ID. - For example, the request below gets metric data on the CPU usage from 00:00 UTC on July 24 to 00:00 UTC on July 31 for the virtual machine with the `epdpfhoh1r83********` ID. + **body.json:** + ```json + { + "query": "cpu_usage{service=\"compute\", resource_id=\"epdpfhoh1r83********\"}", + "fromTime": "2021-07-24T00:00:00Z", + "toTime": "2021-07-31T00:00:00Z", + "downsampling": { + "maxPoints": 10 + } + } + ``` - **body.json:** - ```json - { - "query": "cpu_usage{service=\"compute\", resource_id=\"epdpfhoh1r83********\"}", - "fromTime": "2021-07-24T00:00:00Z", - "toTime": "2021-07-31T00:00:00Z", - "downsampling": { - "maxPoints": 10 - } - } - ``` + Where: - Where: + * `query`: Request text: + * `cpu_usage`: CPU utilization + * `resource_id`: VM ID + * `fromTime`: Start of the period + * `toTime`: End of the period - * `query`: Query text: - * `cpu_usage`: CPU usage. - * `resource_id`: Virtual machine ID. - * `fromTime`: Period start. - * `toTime`: Period end. +1. Send the request and save the response to a file, e.g., `output.json`: -1. Send the request and save the response to a file, for example, `output.json`: + ```bash + export IAM_TOKEN=CggaATEVAgA... + curl \ + --request POST \ + --header "Content-Type: application/json" \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + --data '@body.json' \ + 'https://monitoring.{{ api-host }}/monitoring/v2/data/read?folderId=b2ghmo15rmnl********' > output.json + ``` - ```bash - export IAM_TOKEN=CggaATEVAgA... - curl -X POST \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - -d '@body.json' \ - 'https://monitoring.{{ api-host }}/monitoring/v2/data/read?folderId=b2ghmo15rmnl********' > output.json - ``` + Response example: - Sample response: - - **output.json:** - ```json - { - "metrics": [ - { - "type": "DGAUGE", - "name": "cpu_usage", - "labels": { - "resource_type": "vm", - "cluster": "b2ghmo15rmnl********", - "project": "b1gbkpesobgv********", - "resource_id": "epdpfhoh1r83********", - "service": "compute" - }, - "timeseries": { - "timestamps": [ - 1562069440800, - 1562405369712, - 1562741298624, - 1563077227536, - 1563413156448, - 1563749085360, - 1564085014272, - 1564420943184 - ], - "doubleValues": [ - 53.6475600118669, - 65.5547751323391, - 70.7148916473759, - 49.4514634827568, - 54.3817816479781, - 81.9327383032693, - 99.3035341016667, - 99.982002860023 - ] - } - } - ] - } - ``` + **output.json:** + ```json + { + "metrics": [ + { + "type": "DGAUGE", + "name": "cpu_usage", + "labels": { + "resource_type": "vm", + "cluster": "b2ghmo15rmnl********", + "project": "b1gbkpesobgv********", + "resource_id": "epdpfhoh1r83********", + "service": "compute" + }, + "timeseries": { + "timestamps": [ + 1562069440800, + 1562405369712, + 1562741298624, + 1563077227536, + 1563413156448, + 1563749085360, + 1564085014272, + 1564420943184 + ], + "doubleValues": [ + 53.6475600118669, + 65.5547751323391, + 70.7148916473759, + 49.4514634827568, + 54.3817816479781, + 81.9327383032693, + 99.3035341016667, + 99.982002860023 + ] + } + } + ] + } + ``` diff --git a/en/monitoring/operations/metric/list.md b/en/monitoring/operations/metric/list.md index 83e129d8f12..fa379f874cb 100644 --- a/en/monitoring/operations/metric/list.md +++ b/en/monitoring/operations/metric/list.md @@ -6,16 +6,18 @@ To get a list of metrics that belong to a specific cloud and folder, use the [li ### Sample request {#sample-request} -Send the request and save the response to a file, for example, `output.json`: +Send the request and save the response to a file, e.g., `output.json`: ```bash export IAM_TOKEN=CggaATEVAgA... -curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - -G 'https://monitoring.{{ api-host }}/monitoring/v2/metrics/?folderId=b1gucmd4tma1********&pageSize=200' --data-urlencode 'selectors={service="managed-clickhouse", resource_id="c9q5e2a9i24p********"}' > output.json +curl \ + --header "Content-Type: application/json" \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + --get 'https://monitoring.{{ api-host }}/monitoring/v2/metrics/?folderId=b1gucmd4tma1********&pageSize=200' \ + --data-urlencode 'selectors={service="managed-clickhouse", resource_id="c9q5e2a9i24p********"}' > output.json ``` -Sample response to a request to get a list of {{ mch-name }} service metrics for a resource: +Example response to a request to get a list of {{ mch-name }} service metrics for a resource: **output.json:** ```json @@ -53,7 +55,7 @@ Sample response to a request to get a list of {{ mch-name }} service metrics for Where: -* `resource_id`: Resource ID. -* `metrics`: List of metrics. +* `resource_id`: Resource ID +* `metrics`: List of metrics {% include [clickhouse-disclaimer](../../../_includes/clickhouse-disclaimer.md) %} diff --git a/en/monitoring/operations/prometheus/ingestion/remote-write.md b/en/monitoring/operations/prometheus/ingestion/remote-write.md index 9285ca2d917..3587bac68d6 100644 --- a/en/monitoring/operations/prometheus/ingestion/remote-write.md +++ b/en/monitoring/operations/prometheus/ingestion/remote-write.md @@ -1,6 +1,6 @@ --- -title: How to write metrics via the Remote API -description: Use this guide to write metrics via the Remote API. +title: "How to write\_metrics via the Remote API" +description: "Use this guide to write\_metrics via the Remote API." --- # Writing metrics via the Remote API @@ -15,15 +15,15 @@ To set up metric writes via the Remote API with Prometheus used as an agent for ... remote_write: ... - - url: '' # provided upon request - bearer_token: '' - # Or via a file (recommended): - # bearer_token_file: '' + - url: 'https://{{ api-host-monitoring-1 }}/prometheus/workspaces//api/v1/write' + bearer_token_file: '' + # Or the key itself (not recommended): + # bearer_token: '' queue_config: max_samples_per_send: 2000 # 10,000 if using vmagent min_backoff: 100ms max_backoff: 15s - # for Prometheus 2.26 or newer + # for Prometheus version 2.26 or higher # retry_on_http_429: true metadata_config: send: false @@ -45,17 +45,17 @@ To set up metric writes via the Remote API with Prometheus used as an agent for ## {{ prometheus-name }} metrics {#metrics} -| Metric name | Units | Explanations | +| Metric name | Units | Comment | |----|----|----| -| `prometheus_remote_storage_sent_batch_duration_seconds` | Seconds | Write request execution time histogram. | -| `prometheus_remote_storage_bytes_total` | Bytes | Total number of bytes of data (not metadata) sent to remote storage after compression. | -| `prometheus_remote_storage_enqueue_retries_total` | Number | Total number of failed sample enqueue retries. | -| `prometheus_remote_storage_max_samples_per_send` | Number | Maximum number of samples sent per write request. | -| `prometheus_remote_storage_samples_dropped_total` | Number | Total number of samples read from the WAL but not sent to remote storage. | -| `prometheus_remote_storage_samples_failed_total` | Number | Total number of samples that failed to be sent to remote storage due to non-recoverable errors. | -| `prometheus_remote_storage_samples_pending` | Number | Number of pending samples to be sent to remote storage. | -| `prometheus_remote_storage_samples_retried_total` | Number | Total number of samples that failed to be sent to remote storage with their sending retried afterwards as the error was recoverable. | -| `prometheus_remote_storage_samples_total` | Number | Total number of samples sent to remote storage. | +`prometheus_remote_storage_sent_batch_duration_seconds` | Seconds | Write request execution time histogram. +`prometheus_remote_storage_bytes_total` | Bytes | Total number of bytes of data (not metadata) sent to remote storage after compression. +`prometheus_remote_storage_enqueue_retries_total` | Number | Total number of failed sample enqueue retries. +`prometheus_remote_storage_max_samples_per_send` | Number | Maximum number of samples sent per write request. +`prometheus_remote_storage_samples_dropped_total` | Number | Total number of samples read from the WAL but not sent to remote storage. +`prometheus_remote_storage_samples_failed_total` | Number | Total number of samples that failed to be sent to remote storage due to non-recoverable errors. +`prometheus_remote_storage_samples_pending` | Number | Number of pending samples to be sent to remote storage. +`prometheus_remote_storage_samples_retried_total` | Number | Total number of samples that failed to be sent to remote storage with their sending retried afterwards as the error was recoverable. +`prometheus_remote_storage_samples_total` | Number | Total number of samples sent to remote storage. {% include [trademark](../../../../_includes/monitoring/trademark.md) %} diff --git a/en/monitoring/operations/prometheus/recording-rules.md b/en/monitoring/operations/prometheus/recording-rules.md index e0391fb112d..eb4792d8585 100644 --- a/en/monitoring/operations/prometheus/recording-rules.md +++ b/en/monitoring/operations/prometheus/recording-rules.md @@ -52,11 +52,12 @@ The API is represented by REST resources located at `https://monitoring.{{ api-h ```bash export IAM_TOKEN= - curl -X PUT \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - -d "@body.json" \ - "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules" + curl \ + --request PUT \ + --header "Content-Type: application/json" \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + --data "@body.json" \ + "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules" ``` If the request is successful, you will get the `204` HTTP code, if not, the error text. @@ -70,9 +71,10 @@ Run the following query: ```bash export IAM_TOKEN= -curl -X GET \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules" +curl \ + --request GET \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules" ``` Response example: @@ -92,9 +94,10 @@ Run the following query: ```bash export IAM_TOKEN= -curl -X GET \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules/recording-rules" +curl \ + --request GET \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules/recording-rules" ``` Response example: @@ -115,9 +118,10 @@ Run the following query: ```bash export IAM_TOKEN= -curl -X GET \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules/recording-rules/snapshots" +curl \ + --request GET \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules/recording-rules/snapshots" ``` Response example: @@ -153,9 +157,10 @@ Run the following query: ```bash export IAM_TOKEN= -curl -X DELETE \ - -H "Authorization: Bearer ${IAM_TOKEN}" \ - "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules/recording-rules" +curl \ + --request DELETE \ + --header "Authorization: Bearer ${IAM_TOKEN}" \ + "https://monitoring.{{ api-host }}/prometheus/workspaces//extensions/v1/rules/recording-rules" ``` {% include [trademark](../../../_includes/monitoring/trademark.md) %} diff --git a/en/monitoring/operations/unified-agent/haproxy.md b/en/monitoring/operations/unified-agent/haproxy.md index 26aa5b8c637..7a12418469a 100644 --- a/en/monitoring/operations/unified-agent/haproxy.md +++ b/en/monitoring/operations/unified-agent/haproxy.md @@ -1,6 +1,6 @@ # Delivering metrics from HAProxy and other third-party applications -{{ unified-agent-full-name }} supports metric collection in {{ prometheus-name }} format and metric conversion to {{ monitoring-full-name }} format. {{unified-agent-short-name}} enables you to pull metrics from any applications that deliver them in {{ prometheus-name }} format. +{{ unified-agent-full-name }} supports metric collection in the {{ prometheus-name }} format and metric conversion to the {{ monitoring-full-name }} format. {{ unified-agent-short-name }} enables you to pull metrics from applications that deliver them in the {{ prometheus-name }} format. To deliver metrics from third-party applications to {{ monitoring-full-name }}, use the [metrics_pull input](../../concepts/data-collection/unified-agent/configuration.md#metrics_pull_input) that regularly polls a third-party application directly (if the application supports metrics in {{ prometheus-name }} format) or polls a special export application that integrates with {{ prometheus-name }}. diff --git a/en/monitoring/operations/unified-agent/non-yc.md b/en/monitoring/operations/unified-agent/non-yc.md index 328ac9962f9..b7e858b7271 100644 --- a/en/monitoring/operations/unified-agent/non-yc.md +++ b/en/monitoring/operations/unified-agent/non-yc.md @@ -75,7 +75,7 @@ System metrics can only be delivered from Linux hosts on the AMD platform. Windo output: plugin: yc_metrics config: - url: https://monitoring.api.cloud.yandex.net/monitoring/v2/data/write + url: https://{{ api-host-monitoring-1 }}/monitoring/v2/data/write folder_id: "$FOLDER_ID" iam: jwt: diff --git a/en/presets.yaml b/en/presets.yaml index 549d6575356..ef003b95121 100644 --- a/en/presets.yaml +++ b/en/presets.yaml @@ -1236,10 +1236,12 @@ default: v3: cpu: c100|month|string: ₸5436.00 + c100|number: 7.55 c100|string: ₸7.55 c50|month|string: ₸2448.00 c50|string: ₸3.40 ram|month|string: ₸1440.00 + ram|number: 2 ram|string: ₸2.00 local-nvme: ch|month|string: ₸65.05 @@ -1283,10 +1285,12 @@ default: v3: cpu: c100|month|string: ₸5760.00 + c100|number: 8 c100|string: ₸8.00 c50|month|string: ₸2700.00 c50|string: ₸3.75 ram|month|string: ₸3240.00 + ram|number: 4.5 ram|string: ₸4.50 mysql: v1: @@ -1322,20 +1326,24 @@ default: c100: dedicated|string: ₸2.50 c100|month|string: ₸6048.00 + c100|number: 8.4 c100|string: ₸8.40 c50|month|string: ₸2340.00 c50|string: ₸3.25 ram: dedicated|string: ₸0.75 ram|month|string: ₸1656.00 + ram|number: 2.3 ram|string: ₸2.30 network-hdd: ch|month|number: 16 ch|month|string: ₸16.00 elasticsearch|month|string: ₸16.00 greenplum|month|string: ₸16.00 + kafka|month|number: 16 kafka|month|string: ₸16.00 mongodb|month|string: ₸16.00 + mysql|month|number: 16 mysql|month|string: ₸16.00 opensearch|month|string: ₸16.00 pg|month|string: ₸16.00 @@ -1343,6 +1351,7 @@ default: ch|month|string: ₸65.05 elasticsearch|month|string: ₸65.05 greenplum|month|string: ₸65.05 + kafka|month|number: 65.05 kafka|month|string: ₸65.05 mongodb|month|string: ₸65.05 mysql|month|string: ₸65.05 @@ -1502,8 +1511,10 @@ default: c100|month|string: ₸3924.00 c100|string: ₸5.45 c50|month|string: ₸2520.00 + c50|number: 3.5 c50|string: ₸3.50 ram|month|string: ₸1008.00 + ram|number: 1.4 ram|string: ₸1.40 sku|KZT|mk8s: master: @@ -2388,10 +2399,12 @@ default: v3: cpu: c100|month|string: ₽1087.20 + c100|number: 1.51 c100|string: ₽1.51 c50|month|string: ₽489.60 c50|string: ₽0.68 ram|month|string: ₽288.00 + ram|number: 0.4 ram|string: ₽0.40 local-nvme: ch|month|string: ₽13.01 @@ -2435,10 +2448,12 @@ default: v3: cpu: c100|month|string: ₽1152.00 + c100|number: 1.6 c100|string: ₽1.60 c50|month|string: ₽540.00 c50|string: ₽0.75 ram|month|string: ₽648.00 + ram|number: 0.9 ram|string: ₽0.90 mysql: v1: @@ -2474,20 +2489,24 @@ default: c100: dedicated|string: ₽0.50 c100|month|string: ₽1209.60 + c100|number: 1.68 c100|string: ₽1.68 c50|month|string: ₽468.00 c50|string: ₽0.65 ram: dedicated|string: ₽0.15 ram|month|string: ₽331.20 + ram|number: 0.46 ram|string: ₽0.46 network-hdd: ch|month|number: 3.2 ch|month|string: ₽3.20 elasticsearch|month|string: ₽3.20 greenplum|month|string: ₽3.20 + kafka|month|number: 3.2 kafka|month|string: ₽3.20 mongodb|month|string: ₽3.20 + mysql|month|number: 3.2 mysql|month|string: ₽3.20 opensearch|month|string: ₽3.20 pg|month|string: ₽3.20 @@ -2495,6 +2514,7 @@ default: ch|month|string: ₽13.01 elasticsearch|month|string: ₽13.01 greenplum|month|string: ₽13.01 + kafka|month|number: 13.01 kafka|month|string: ₽13.01 mongodb|month|string: ₽13.01 mysql|month|string: ₽13.01 @@ -2654,8 +2674,10 @@ default: c100|month|string: ₽784.80 c100|string: ₽1.09 c50|month|string: ₽504.00 + c50|number: 0.7 c50|string: ₽0.70 ram|month|string: ₽201.60 + ram|number: 0.28 ram|string: ₽0.28 sku|RUB|mk8s: master: @@ -3530,10 +3552,12 @@ default: v3: cpu: c100|month|string: $8.697600 + c100|number: 0.01208 c100|string: $0.012080 c50|month|string: $3.916800 c50|string: $0.005440 ram|month|string: $2.304000 + ram|number: 0.0032 ram|string: $0.003200 local-nvme: ch|month|string: $0.104080 @@ -3577,10 +3601,12 @@ default: v3: cpu: c100|month|string: $9.216000 + c100|number: 0.0128 c100|string: $0.012800 c50|month|string: $4.320000 c50|string: $0.006000 ram|month|string: $5.184000 + ram|number: 0.0072 ram|string: $0.007200 mysql: v1: @@ -3628,6 +3654,7 @@ default: ch|month|string: $0.025600 elasticsearch|month|string: $0.025600 greenplum|month|string: $0.025600 + kafka|month|number: 0.0256 kafka|month|string: $0.025600 mongodb|month|string: $0.025600 mysql|month|string: $0.025600 @@ -3637,6 +3664,7 @@ default: ch|month|string: $0.104080 elasticsearch|month|string: $0.104080 greenplum|month|string: $0.104080 + kafka|month|number: 0.10408 kafka|month|string: $0.104080 mongodb|month|string: $0.104080 mysql|month|string: $0.104080 @@ -3790,7 +3818,9 @@ default: v3: cpu: c100|string: $0.008720 + c50|number: 0.0056 c50|string: $0.005600 + ram|number: 0.00224 ram|string: $0.002240 sku|USD|mk8s: master: @@ -6858,7 +6888,7 @@ default: label_cloud-desktop: Cloud Desktop label_compute: Compute Cloud label_container-registry: Container Registry - label_data-proc: Yandex Data Proc + label_data-proc: Yandex Data Processing label_data-streams: Data Streams label_data-transfer: Data Transfer label_data-transfer_ru: Data Transfer @@ -6905,7 +6935,7 @@ default: label_yq_ru: Yandex Query value_audit-trails: Audit trail value_compute: Virtual machine instance - value_data-proc: Yandex Data Proc cluster + value_data-proc: Yandex Data Processing cluster value_data-streams: Data Streams value_data-transfer: Data Transfer value_managed-mysql: MySQL cluster @@ -7117,6 +7147,7 @@ default: field_connector-secret-access-key: Secret access key field_connector-security-protocol: Security protocol field_connector-ssl-truststore-certificates: Certificate in PEM format + field_kraft-combined-mode: Combined mode field_rest-api-config: Kafka Rest API field_schema-registry: Schema registry label_brokers-per-az: Number of brokers in zone @@ -7291,6 +7322,7 @@ default: label_value: Value title_auto-generation_params_section: Automatic generation options title_kms-key: KMS key + title_secret-data-section: Secret data title_secret-type: Secret type title_secret-type-custom: Custom title_secret-type-generated: Generated @@ -7655,6 +7687,7 @@ default: field_dashboards-url: kibana_url field_enabled: Enable field_idp-entity-id: idp_entity_id + field_jwt-default-expiration-timeout: Session timeout field_roles-key: roles_key field_sp-entity-id: sp_entity_id field_subject-key: subject_key diff --git a/en/smartcaptcha/quickstart.md b/en/smartcaptcha/quickstart.md index 6c0b3034e60..15b8e86624e 100644 --- a/en/smartcaptcha/quickstart.md +++ b/en/smartcaptcha/quickstart.md @@ -101,7 +101,7 @@ The **I’m not a robot** button will appear on the page. The service will check ## Check the user response {#check-answer} -After the check, the user is given a unique token. The token is loaded to the ` @@ -110,17 +110,10 @@ After the check, the user is given a unique token. The token is loaded to the `<
``` -To validate the token, send a POST request to `https://smartcaptcha.yandexcloud.net/validate`: +To validate the token, send a POST request to `https://smartcaptcha.yandexcloud.net/validate` specifying the parameters in `x-www-form-urlencoded` format: -```HTML -response = requests.post( -"https://smartcaptcha.yandexcloud.net/validate", - { - "secret": SMARTCAPTCHA_SERVER_KEY, - "token": token, - "ip": "" - } -) +``` +secret=&token=&ip= ``` Where: @@ -227,7 +220,7 @@ Example of the token validation function: $server_output = curl_exec($ch); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); - + if ($httpcode !== 200) { echo "Allow access due to an error: code=$httpcode; message=$server_output\n"; return true; @@ -271,7 +264,7 @@ Example of the token validation function: return True return json.loads(server_output)["status"] == "ok" - token = "" # For example, it can be `request.form["smart-token"]` + token = "" # For example, request.form["smart-token"] if check_captcha(token): print("Passed") else: diff --git a/en/smartcaptcha/release-notes.md b/en/smartcaptcha/release-notes.md index b0e404343fa..86565a0f494 100644 --- a/en/smartcaptcha/release-notes.md +++ b/en/smartcaptcha/release-notes.md @@ -5,6 +5,15 @@ description: This section contains {{ captcha-name }} release notes. # {{ captcha-full-name }} release notes +## Q3 2024 {#q3-2024} + +* Added [various CAPTCHA options](./concepts/captcha-variants.md) you can show depending on the basic properties of incoming requests. To flexibly split requests, you can use different combinations of [traffic conditions](./concepts/captcha-variants.md#traffic-conditions). + +* Implemented CAPTCHA accessibility criteria in accordance with [GOST R 52 872-2019](https://protect.gost.ru/document1.aspx?control=31&id=233736). In particular, now: + * CAPTCHA is compatible with screen access programs. + * You can control it with a keyboard or on-screen buttons (relevant for SmartTV). + * It contains more explanatory elements. + ## Q2 2024 {#q2-2024} -For {{ captcha-name }}, the maximum [difficulty level](concepts/tasks.md#task-difficulty) was added. This level requires completing an additional high difficulty challenge. \ No newline at end of file +For {{ captcha-name }}, added the maximum [difficulty level](concepts/tasks.md#task-difficulty). This level requires completing an additional high difficulty challenge. \ No newline at end of file diff --git a/en/smartwebsecurity/concepts/arl.md b/en/smartwebsecurity/concepts/arl.md index e0cd61c68da..d29d0263d8b 100644 --- a/en/smartwebsecurity/concepts/arl.md +++ b/en/smartwebsecurity/concepts/arl.md @@ -28,7 +28,7 @@ An ARL rule may impose a limit on incoming HTTP requests for all traffic or traf [Conditions](conditions.md) are defined by the following parameters: * `IP`: IP address, address range, or address region of clients subject to the rule. -* `Request path`: Path or a portion of the path the request was sent to. +* `Request path`: Path or part of the path the request was sent to. * `Host`: Domain name the request was sent to. * `HTTP method`: Method or set of methods the request belongs to. * `HTTP header`: Request header parameters. @@ -40,16 +40,16 @@ You can count the requests for the limit purposes in one of the following ways: * Counting each request individually. * Grouping requests by a certain attribute and limiting the number of groups. - + You can group requests: -* Automatically based on the `Request path`, `HTTP method`, `IP address`, `Region`, and `Host` attributes. +* Automatically, by `Request path`, `HTTP method`, `IP address`, `Region`, and `Host` attributes. * Based on key match in the `Query params`, `HTTP header`, and `HTTP cookie` attributes. - - You can configure flexible match/no match conditions for the parameters you specify for traffic. You can look for case-sensitive or case-insensitive string matches. Parameters can be represented by single values, ranges, or regular expressions. + + You can configure flexible match/no match conditions for the parameters you specify for traffic. You can search for both case-sensitive or case-insensitive string matches. Parameters can be represented by single values, ranges, or regular expressions. You can also select a time interval from 1 second to 60 minutes. -All requests in excess of the limit received within the specified time interval will be blocked. In which case the client will get the `429` error. +All requests in excess of the limit received within the specified time interval will be blocked. In this case, the client will get the `429` error. You can use the **Logging only (Dry run)** mode to calculate limits and test ARL rules. Requests will not be blocked in this mode. This allows you to evaluate backend capabilities and find the optimum limit values. diff --git a/en/smartwebsecurity/concepts/index.md b/en/smartwebsecurity/concepts/index.md index dc709b983c1..11c2f452d8b 100644 --- a/en/smartwebsecurity/concepts/index.md +++ b/en/smartwebsecurity/concepts/index.md @@ -20,14 +20,14 @@ In a nutshell, the service checks the HTTP requests sent to the protected resour ## {{ alb-name }} coniguration recommendations {#alb-settings-recommendation} -To enhance DDoS protection of your applications, consider these additional tips: +To enhance DDoS protection of your applications, follow these additional recommendations: * Configure [autoscaling](../../application-load-balancer/concepts/application-load-balancer.md#lcu-scaling). This will allow you to dynamically adapt to the increased load and optimize traffic redistribution. * Place resource units in multiple [availability zones](../../overview/concepts/geo-scope.md). -* Use the secure HTTPS protocol: [configure a listener](../../application-load-balancer/concepts/application-load-balancer.md#listener) to automatically redirect requests from HTTP to HTTPS. +* Use the secure HTTPS protocol: [set up a listener](../../application-load-balancer/concepts/application-load-balancer.md#listener) to automatically redirect requests from HTTP to HTTPS. -* Ensure protection at the lower OSI model level: [enable](../tutorials/alb-with-ddos-protection/console.md) basic DDOS protection at L3 and L4 to prevent some attacks at an earlier stage. +* Establish protection at the lower OSI model level: [enable](../tutorials/alb-with-ddos-protection/console.md) basic DDOS protection at levels L3 and L4 to prevent part of attacks at an earlier stage. -These measures, in addition to setting up {{ sws-name }}, will increase the resilience of your services to potential threats and ensure security of your applications. +These measures in addition to setting up {{ sws-name }} will increase the resilience of your services to potential threats and ensure secure operation of applications. diff --git a/en/smartwebsecurity/concepts/rules.md b/en/smartwebsecurity/concepts/rules.md index a8eb52d9c65..43852a44c2e 100644 --- a/en/smartwebsecurity/concepts/rules.md +++ b/en/smartwebsecurity/concepts/rules.md @@ -52,6 +52,6 @@ Actions for Smart Protection and Web Application Firewall rules: * _Full Protection_: Traffic is checked by ML models and behavioral analysis algorithms. Suspicious requests are sent to {{ captcha-name }}. * _API Protection_: Traffic is checked by ML models and behavioral analysis algorithms. Suspicious requests are denied. -Advanced Rate Limiter rule action: _Block requests when exceeding the limit_. Requests above the specified limit over a period of time will be blocked. The requesting client will get error `429`. +Action for Advanced Rate Limiter rules: _Block requests when exceeding the limit_. Requests above the specified limit over a period of time will be blocked. The requesting client will get error `429`. -Requests that have been allowed by all rules and passed to the protected resource are called _legitimate_. +The requests that were allowed by all rules and passed on to the protected resource are called _legitimate_. \ No newline at end of file diff --git a/en/smartwebsecurity/concepts/waf.md b/en/smartwebsecurity/concepts/waf.md index 8c1b9952b79..d0aff8d5af3 100644 --- a/en/smartwebsecurity/concepts/waf.md +++ b/en/smartwebsecurity/concepts/waf.md @@ -49,13 +49,13 @@ You can configure [trigger conditions](conditions.md) for each exclusion rule. I When you configure a WAF profile, you can enable request body inspection and specify the following parameters: -* Maximum request body size: from 8 KB (_you can customize it later_). +* The maximum size of the request body starts from 8 KB (_you can customize the size later_). - The maximum request body size affects the web application's performance and security. Limiting the size helps prevent excessive resource consumption. It also helps mitigate the effects of DoS/DDoS attacks, where attackers submit large requests in order to exhaust the server's resources. + Defining a maximum request body size affects the performance and security of your web application. Limiting the size helps prevent excessive resource consumption and also mitigate the effects of DoS/DDoS attacks, where attackers send large requests in order to exhaust the server's resources. -* Actions if maximum request body size is exceeded: +* Actions you need to take when the maximum request body size is exceeded: * Do not analyze (skip). You can use it when a legitimate application frequently sends large requests. - * Block. A more universal and secure approach. Any requests exceeding the specified limit will be blocked, thus reducing the risk of attacks. + * Block. This is a more universal and secure approach. Any requests exceeding the specified limit will be blocked, thus reducing the risk of attacks. ## See also {#see-also} diff --git a/en/smartwebsecurity/pricing.md b/en/smartwebsecurity/pricing.md index 21f457fc71a..2a7bddfae74 100644 --- a/en/smartwebsecurity/pricing.md +++ b/en/smartwebsecurity/pricing.md @@ -12,7 +12,7 @@ editable: false ## What goes into the cost of using {{ sws-name }} {#rules} -The {{ sws-name }} cost depends on the number of [legitimate](concepts/rules.md#rule-action) requests. +In {{ sws-name }}, you pay for the actual number of [legitimate](concepts/rules.md#rule-action) requests. ## Prices for the Russia region {#prices} @@ -37,7 +37,7 @@ The {{ sws-name }} cost depends on the number of [legitimate](concepts/rules.md# {% note warning %} -The following price will be effective as of October 1, 2024. +The pricing below will apply starting October 1, 2024. {% endnote %} @@ -45,10 +45,14 @@ The following price will be effective as of October 1, 2024. {% include [usd-requests](../_pricing/smartwebsecurity/usd-requests-waf.md) %} +{% cut "Example of cost calculation for requests processed by WAF rules" %} -### Ready-made cost calculations for requests +{% include [usd-smartwebsecurity](../_pricing_examples/smartwebsecurity/usd-smartwebsecurity-waf.md) %} + +{% endcut %} -To estimate the approximate cost of requests, the table below shows the price calculations for a certain number of requests per month. This number does not include the free limit of 10,000 requests. The cost provided is for reference. The actual usage of {{ sws-name }} by your services will be calculated based on the actual number of requests. + +#### Pre-calculated request costs @@ -56,3 +60,4 @@ To estimate the approximate cost of requests, the table below shows the price ca To use DDoS protection at levels 3 and 4 of the OSI model, enable [{{ ddos-protection-full-name }}](../vpc/ddos-protection/index.md). The service is charged for the [public IP address](../vpc/pricing.md#prices-public-ip) and [{{ ddos-protection-full-name }}](../vpc/pricing.md#prices-ddos-protection). + diff --git a/en/smartwebsecurity/quickstart/quickstart-arl.md b/en/smartwebsecurity/quickstart/quickstart-arl.md index 4f24574cdc1..f111eb6987e 100644 --- a/en/smartwebsecurity/quickstart/quickstart-arl.md +++ b/en/smartwebsecurity/quickstart/quickstart-arl.md @@ -21,15 +21,15 @@ To get started with ARL: - Management console {#console} - 1. In the [management console]({{ link-console-main }}), select the folder where you want to create your ARL profile. - 1. In the list of services, select **{{ ui-key.yacloud.iam.folder.dashboard.label_smartwebsecurity }}**. - 1. Go to the ![image](../../_assets/smartwebsecurity/arl.svg) **ARL profiles** tab and click **Create ARL profile**. - 1. Describe a scenario of using ARL features in your projects and click **Submit request**. + 1. In the [management console]({{ link-console-main }}), select the folder where you want to create your ARL profile. + 1. In the list of services, select **{{ ui-key.yacloud.iam.folder.dashboard.label_smartwebsecurity }}**. + 1. Go to the ![image](../../_assets/smartwebsecurity/arl.svg) **ARL profiles** tab and click **Create ARL profile**. + 1. Describe a scenario of using ARL features in your projects and click **Submit request**. Once your request is approved, you can proceed to create an ARL profile. - 1. Enter a name for the profile, e.g. `test-arl-profile-1`. - 1. Add profile description and labels if needed. - 1. Click **Create**. + 1. Enter a name for the profile, e.g., `test-arl-profile-1`. + 1. Add profile description and labels if needed. + 1. Click **Create**. {% endlist %} @@ -39,37 +39,37 @@ To get started with ARL: - Management console {#console} - 1. Click **Add a rule** on the ARL profile's review page that opens. - 1. Enter a name for the rule, e.g., `arl-rule-1`. - 1. In the **Priority** field, set the rule's priority within the ARL profile, e.g., `1000`. - 1. (Optional) To test the ARL rule, enable the **Logging only (Dry run)** mode. Requests will not be blocked in this mode. - 1. Under **Traffic conditions**, select **All traffic** or **With a condition**. - 1. To set [traffic conditions](../concepts/conditions.md), select one or more items from the **Conditions** list: - * `IP`: IP address, IP address range, or IP address region. - * `HTTP header`: String in the HTTP header. - * `HTTP body`: String in the HTTP package body. - * `Request path`: Request path. - * `Host`: Domain receiving the request. - * `HTTP method`: Request method. - * `Cookie`: String in the cookie header. - - 1. Under **Request counting**, select how to count requests for limit application purposes: - * **No grouping**: Counting each request individually. - * **Grouping by property**: Counting the number of request groups sharing one or multiple common properties. - 1. Select a grouping property: - * `Request path`: Request path. - * `HTTP method`: Request method. - * `IP address`: IP address the request came from. - * `Region`: IP address region of the requests. - * `Host`: Domain receiving the request. - * `HTTP cookie`: String in the cookie header. - * `HTTP header`: String in the HTTP header. - * `Query params`: String in the request parameters. - 1. (Optional) Enable **Case-sensitive** to put properties with the same values in different cases into different groups. - - 1. Specify the limit of requests and select the time interval, e.g., `1000` requests per `1` minute. - - 1. Click **Save rule**. + 1. Click **Add a rule** on the ARL profile's review page that opens. + 1. Enter a name for the rule, e.g., `arl-rule-1`. + 1. In the **Priority** field, set the rule's priority within the ARL profile, e.g., `1000`. + 1. (Optional) To test the ARL rule, enable the **Logging only (Dry run)** mode. Requests will not be blocked in this mode. + 1. Under **Traffic conditions**, select **All traffic** or **With a condition**. + 1. To set [traffic conditions](../concepts/conditions.md), select one or more items from the **Conditions** list: + * `IP`: IP address, IP address range, or IP address region. + * `HTTP header`: String in the HTTP header. + * `HTTP body`: String in the HTTP packet body. + * `Request path`: Request path. + * `Host`: Domain receiving the request. + * `HTTP method`: Request method. + * `Cookie`: String in the cookie header. + + 1. Under **Request counting**, select how to count requests for limit application purposes: + * **No grouping**: Counting each request individually. + * **Grouping by property**: Counting the number of request groups sharing one or multiple common properties. + 1. Select a grouping property: + * `Request path`: Request path. + * `HTTP method`: Request method. + * `IP address`: IP address the request came from. + * `Region`: IP address region of the requests. + * `Host`: Domain receiving the request. + * `HTTP cookie`: String in the cookie header. + * `HTTP header`: String in the HTTP header. + * `Query params`: String in query parameters. + 1. (Optional) Enable **Case-sensitive** to put properties with the same values in different cases into different groups. + + 1. Specify the request limit and select the time interval, e.g., `1000` requests per `1` minute. + + 1. Click **Save rule**. {% endlist %} @@ -79,11 +79,11 @@ To get started with ARL: - Management console {#console} - 1. Go to ![image](../../_assets/console-icons/shield-check.svg) **{{ ui-key.yacloud.smart-web-security.title_profiles }}**. - 1. From the list, select the security profile you want to connect your ARL profile to, e.g., `test-sp1`. - 1. Click **Edit**. - 1. From the **ARL profile** list, select the `test-arl-profile-1` profile you created earlier. - 1. Click **Save**. + 1. Go to the ![image](../../_assets/console-icons/shield-check.svg) **{{ ui-key.yacloud.smart-web-security.title_profiles }}** tab. + 1. From the list, select the security profile you want to connect your ARL profile to, e.g., `test-sp1`. + 1. Click **Edit**. + 1. From the **ARL profile** list, select `test-arl-profile-1` you created earlier. + 1. Click **Save**. {% endlist %} diff --git a/en/smartwebsecurity/quickstart/quickstart-waf.md b/en/smartwebsecurity/quickstart/quickstart-waf.md index 66724ab804c..4ad42717cae 100644 --- a/en/smartwebsecurity/quickstart/quickstart-waf.md +++ b/en/smartwebsecurity/quickstart/quickstart-waf.md @@ -22,15 +22,15 @@ To get started with WAF: - Management console {#console} - 1. In the [management console]({{ link-console-main }}), select a folder you want to create your WAF profile in. - 1. In the list of services, select **{{ ui-key.yacloud.iam.folder.dashboard.label_smartwebsecurity }}**. - 1. Go to the ![image](../../_assets/smartwebsecurity/waf.svg) **WAF profiles** tab and click **Create WAF profile**. - 1. Describe a scenario of using WAF features in your projects and click **Submit request**. + 1. In the [management console]({{ link-console-main }}), select the folder where you want to create your WAF profile. + 1. In the list of services, select **{{ ui-key.yacloud.iam.folder.dashboard.label_smartwebsecurity }}**. + 1. Go to the ![image](../../_assets/smartwebsecurity/waf.svg) **WAF profiles** tab and click **Create WAF profile**. + 1. Describe a scenario of using WAF features in your projects and click **Submit request**. Once your request is approved, you can proceed to create a WAF profile. - 1. Enter a name for the profile, e.g., `test-waf-profile-1`. - 1. The WAF profile's default basic rule set is called [OWASP Core Rule Set](https://coreruleset.org/). To view the rules it includes, click the line with its description. - 1. Click **Create**. + 1. Enter a name for the profile, e.g., `test-waf-profile-1`. + 1. The WAF profile's default basic rule set is called [OWASP Core Rule Set](https://coreruleset.org/). To view the rules it includes, click the line with its description. + 1. Click **Create**. {% endlist %} @@ -40,17 +40,17 @@ To get started with WAF: - Management console {#console} - 1. On the WAF profile's review page that opens, click **Configure basic rule set**. - 1. Set the preferred **Anomaly threshold**, which is the sum of [anomaly values](../concepts/waf.md#anomaly) of the triggered rules that will block the request, e.g., `Moderate: 25 or higher`. + 1. On the WAF profile's review page that opens, click **Configure basic rule set**. + 1. Set the preferred **Anomaly threshold**, which is the sum of [anomaly values](../concepts/waf.md#anomaly) of the triggered rules that will block the request, e.g., `Moderate: 25 or higher`. - We recommend that you start with the anomaly threshold of `25` and gradually bring it down to `5`. To reduce the anomaly threshold, work on the WAF false positives triggered by legitimate requests. To do so, select rules from the basic set and configure [exclusion rules](#create-exclusion). You can use the **Only logging (dry-run)** mode in the security profile to test various anomaly thresholds. + We recommend to start with the anomaly threshold of `25` and gradually reduce it to `5`. To reduce the anomaly threshold, address WAF false positives triggered by legitimate requests. To do so, select rules from the basic set and configure [exclusion rules](#create-exclusion). You can use the **Only logging (dry-run)** mode in the security profile to test various anomaly thresholds. - 1. Set the preferred **Paranoia level**, e.g., `2 and lower`. + 1. Set the preferred **Paranoia level**, e.g., `2 and lower`. [Paranoia level](../concepts/waf.md#paranoia) classifies rules according to their aggression. The higher the paranoia level, the better your protection, but also the higher the probability of WAF false positives. - 1. Check the rules you included in the set. Add or delete them as needed. When using rules, pay attention to their anomaly values and paranoia levels. + 1. Check the rules you included in the set. Add or delete them as needed. When using rules, pay attention to their anomaly values and paranoia levels. - You can turn any rule from the set into a blocking rule. A request that satisfies such a rule will be blocked regardless of the anomaly threshold you use. To turn a rule into a blocking rule, click ![image](../../_assets/console-icons/ban.svg) to the right of it. If the **Only logging (dry-run)** mode is enabled in the security profile, requests will not be blocked even when if they satisfy the blocking rules. + You can turn any rule from the set into a blocking rule. A request that satisfies such a rule will be blocked regardless of the anomaly threshold you specified. To turn a rule into a blocking rule, click ![image](../../_assets/console-icons/ban.svg) to the right of it. If the **Only logging (dry-run)** mode is enabled in the security profile, requests will not be blocked even when if they satisfy the blocking rules. {% endlist %} @@ -60,13 +60,13 @@ To get started with WAF: - Management console {#console} - 1. Go to the ![image](../../_assets/console-icons/file-xmark.svg) **Exclusion rules** tab and click **Create exclusion rule**. - 1. Enter a name for the [exclusion rule](../concepts/waf.md#exclusion-rules), e.g., `exclusion-rule-1`. - 1. Under **Scope of use**, specify rules from the basic set for which the exclusion will be valid. You can select **All rules** or specific ones. - 1. Under **Traffic conditions**, select the [conditions](../concepts/conditions.md) for the exclusion rule to trigger. + 1. Go to the ![image](../../_assets/console-icons/file-xmark.svg) **Exclusion rules** tab and click **Create exclusion rule**. + 1. Enter a name for the [exclusion rule](../concepts/waf.md#exclusion-rules), e.g., `exception-rule-1`. + 1. Under **Scope of use**, specify rules from the basic set for which the exclusion will be valid. You can select **All rules** or specific ones. + 1. Under **Traffic conditions**, select the [conditions](../concepts/conditions.md) for the exclusion rule to trigger. If you leave the **Conditions** field empty, the exclusion rule will apply to the whole traffic. - 1. Click **Create**. + 1. Click **Create**. {% endlist %} @@ -76,17 +76,17 @@ To get started with WAF: - Management console {#console} - 1. Go to the ![image](../../_assets/console-icons/shield-check.svg) **Security profiles** tab. - 1. From the list, select the security profile you want to connect your WAF profile to, e.g., `test-sp1`. - 1. Click ![plus-sign](../../_assets/console-icons/plus.svg) **{{ ui-key.yacloud.smart-web-security.form.button_add-rule }}**. - 1. Enter a name for the rule, e.g., `waf-rule-1`. - 1. In the **Priority** field, set a value higher than that of the Smart Protection rules already existing in the security profile, e.g., `888800`. - 1. (Optional) To test your WAF profile and simulate false positives triggered by legitimate requests, use the **Only logging (dry-run)** mode in the security profile. - 1. In the **Rule type** field, select **Web Application Firewall**. - 1. In the **WAF profile** field, select the `test-waf-profile-1` profile you created earlier. - 1. In the **Action** field, select **Full protection**. - 1. If required, set the [conditions](../concepts/conditions.md) for traffic mapping. - 1. Click **Add**. + 1. Go to the ![image](../../_assets/console-icons/shield-check.svg) **Security profiles** tab. + 1. From the list, select the security profile you want to connect your WAF profile to, e.g., `test-sp1`. + 1. Click ![plus-sign](../../_assets/console-icons/plus.svg) **{{ ui-key.yacloud.smart-web-security.form.button_add-rule }}**. + 1. Enter a name for the rule, e.g., `waf-rule-1`. + 1. In the **Priority** field, set a value higher than that of the Smart Protection rules already existing in the security profile, e.g., `888800`. + 1. (Optional) To test your WAF profile and simulate false positives triggered by legitimate requests, use the **Only logging (dry-run)** mode in the security profile. + 1. In the **Rule type** field, select **Web Application Firewall**. + 1. In the **WAF profile** field, select the `test-waf-profile-1` profile you created earlier. + 1. In the **Action** field, select **Full protection**. + 1. If required, set the [conditions](../concepts/conditions.md) for traffic mapping. + 1. Click **Add**. {% endlist %} diff --git a/ru/_includes/compute/independent-resources.md b/ru/_includes/compute/independent-resources.md new file mode 100644 index 00000000000..2b85f4474e5 --- /dev/null +++ b/ru/_includes/compute/independent-resources.md @@ -0,0 +1,5 @@ +{% note info %} + +[Диски](../../compute/concepts/disk.md), [снимки дисков](../../compute/concepts/snapshot.md) и [образы](../../compute/concepts/image.md) — это отдельные ресурсы, которые работают независимо друг от друга в {{ compute-name }}. Вы можете создавать, удалять и управлять ими по отдельности. Ваши действия с диском не влияют на снимок этого диска или на образ, по которому был создан диск. Даже если вы удалите диск или ВМ с диском, снимок диска и образ останутся. + +{% endnote %} \ No newline at end of file diff --git a/ru/_includes/mdb/api/backup-window-start-common.md b/ru/_includes/mdb/api/backup-window-start-common.md new file mode 100644 index 00000000000..5746a21f814 --- /dev/null +++ b/ru/_includes/mdb/api/backup-window-start-common.md @@ -0,0 +1,4 @@ +* `hours` — часы в 24-часовом формате. +* `minutes` — минуты. +* `seconds` — секунды. +* `nanos` — наносекунды. diff --git a/ru/_includes/mdb/api/backup-windows-start-grpc.md b/ru/_includes/mdb/api/backup-windows-start-grpc.md new file mode 100644 index 00000000000..06e54cb73b8 --- /dev/null +++ b/ru/_includes/mdb/api/backup-windows-start-grpc.md @@ -0,0 +1,3 @@ +`config_spec.backup_window_start` — время начала резервного копирования (UTC): + +{% include [backup-window-start-common](./backup-window-start-common.md) %} diff --git a/ru/_includes/mdb/api/backup-windows-start-rest.md b/ru/_includes/mdb/api/backup-windows-start-rest.md new file mode 100644 index 00000000000..6b4da4b4c68 --- /dev/null +++ b/ru/_includes/mdb/api/backup-windows-start-rest.md @@ -0,0 +1,3 @@ +`configSpec.backupWindowStart` — время начала резервного копирования (UTC): + +{% include [backup-window-start-common](./backup-window-start-common.md) %} diff --git a/ru/_includes/mdb/api/column-filter-grpc.md b/ru/_includes/mdb/api/column-filter-grpc.md new file mode 100644 index 00000000000..c2e773aa283 --- /dev/null +++ b/ru/_includes/mdb/api/column-filter-grpc.md @@ -0,0 +1 @@ +В параметре `column_filter` можно указать несколько колонок, если нужно отфильтровать логи по нескольким колонкам. diff --git a/ru/_includes/mdb/api/column-filter-list.md b/ru/_includes/mdb/api/column-filter-list.md new file mode 100644 index 00000000000..75df6e88e2b --- /dev/null +++ b/ru/_includes/mdb/api/column-filter-list.md @@ -0,0 +1,6 @@ +* `hostname` — имя хоста. +* `component` — тип компонента, который попадет в лог. Например, `HTTP-Session`. +* `message` — сообщение, которое выводит компонент. +* `query_id` — идентификатор запроса. +* `severity` — уровень логирования, например, `Debug`. +* `thread` — идентификатор потока, участвующего в обработке запросов. diff --git a/ru/_includes/mdb/api/column-filter-rest.md b/ru/_includes/mdb/api/column-filter-rest.md new file mode 100644 index 00000000000..b2c9b93f210 --- /dev/null +++ b/ru/_includes/mdb/api/column-filter-rest.md @@ -0,0 +1 @@ +В одном параметре `columnFilter` можно указать только одну колонку. Если необходимо отфильтровать логи по нескольким колонкам, передайте перечень нужных колонок в нескольких параметрах. diff --git a/ru/_includes/mdb/api/from-time-grpc.md b/ru/_includes/mdb/api/from-time-grpc.md new file mode 100644 index 00000000000..b19963cd1a5 --- /dev/null +++ b/ru/_includes/mdb/api/from-time-grpc.md @@ -0,0 +1 @@ +* `from_time` — левая граница временного диапазона в формате [RFC-3339](https://www.ietf.org/rfc/rfc3339.html). Пример: `{{ sample-rfc3339-timestamp }}`. diff --git a/ru/_includes/mdb/api/from-time-rest.md b/ru/_includes/mdb/api/from-time-rest.md new file mode 100644 index 00000000000..d6b0da6374a --- /dev/null +++ b/ru/_includes/mdb/api/from-time-rest.md @@ -0,0 +1 @@ +* `fromTime` — левая граница временного диапазона в формате [RFC-3339](https://www.ietf.org/rfc/rfc3339.html). Пример: `{{ sample-rfc3339-timestamp }}`. diff --git a/ru/_includes/mdb/api/stream-logs-filter.md b/ru/_includes/mdb/api/stream-logs-filter.md new file mode 100644 index 00000000000..7ac5f20d869 --- /dev/null +++ b/ru/_includes/mdb/api/stream-logs-filter.md @@ -0,0 +1,10 @@ +{% note tip %} + +Фильтр может содержать в себе кавычки и другие символы. Экранируйте их, если это необходимо. + +{% endnote %} + +Поддерживаемые фильтры: + +* `message.hostname` — фильтрация по имени хоста. +* `message.severity` — фильтрация по уровню логирования. diff --git a/ru/_includes/mdb/api/tail-f-semantics.md b/ru/_includes/mdb/api/tail-f-semantics.md new file mode 100644 index 00000000000..15892c14894 --- /dev/null +++ b/ru/_includes/mdb/api/tail-f-semantics.md @@ -0,0 +1 @@ +Если не указывать этот параметр, то в поток логов будут отсылаться новые логи по мере их появления. Это поведение семантически эквивалентно `tail -f`. diff --git a/ru/_includes/mdb/mch/api/grpc-access-settings.md b/ru/_includes/mdb/mch/api/grpc-access-settings.md new file mode 100644 index 00000000000..d0d99e4993d --- /dev/null +++ b/ru/_includes/mdb/mch/api/grpc-access-settings.md @@ -0,0 +1,15 @@ +* `data_lens` — разрешить доступ из {{ datalens-name }}: `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке подключения см. в разделе [Подключение из {{ datalens-name }}](../../../../managed-clickhouse/operations/datalens-connect.md). + +* `web_sql` — разрешить [выполнять SQL-запросы](../../../../managed-clickhouse/operations/web-sql-query.md) к базам данных кластера из консоли управления {{ yandex-cloud }} с помощью сервиса {{ websql-full-name }}: `true` или `false`. Значение по умолчанию — `false`. + + +* `metrika` — разрешить [импорт данных из AppMetrika в кластер](https://appmetrica.yandex.ru/docs/common/cloud/about.html): `true` или `false`. Значение по умолчанию — `false`. + +* `serverless` — разрешить доступ к кластеру из сервиса [{{ sf-full-name }}](../../../../functions/concepts/index.md): `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке доступа см. в документации [{{ sf-name }}](../../../../functions/operations/database-connection.md). + +* `data_transfer` — разрешить доступ к кластеру из сервиса [{{ data-transfer-full-name }}](../../../../data-transfer/concepts/index.md) в Serverless-режиме: `true` или `false`. Значение по умолчанию — `false`. + + Это позволит через специальную сеть подключаться к {{ data-transfer-full-name }}, запущенному в {{ k8s }}. В результате будут быстрее выполняться, например, запуск и деактивация трансфера. + + +* `yandex_query` — разрешить доступ к кластеру из сервиса [{{ yq-full-name }}](../../../../query/concepts/index.md): `true` или `false`. Функциональность находится на стадии [Preview](../../../../overview/concepts/launch-stages.md). Значение по умолчанию — `false`. diff --git a/ru/_includes/mdb/mch/api/grpc-cloud-storage-settings.md b/ru/_includes/mdb/mch/api/grpc-cloud-storage-settings.md new file mode 100644 index 00000000000..4488c66b742 --- /dev/null +++ b/ru/_includes/mdb/mch/api/grpc-cloud-storage-settings.md @@ -0,0 +1,19 @@ +* `enabled` — включить гибридное хранилище в кластере, если оно выключено: `true` или `false`. Значение по умолчанию — `false` (выключено). + + {% include [Hybrid Storage cannot be switched off](../hybrid-storage-cannot-be-switched-off.md) %} + +* `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в {{ objstorage-full-name }}. + + Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`. + +* `data_cache_enabled` — разрешить временное хранение файлов в кластерном хранилище: `true` или `false`. + + По умолчанию — `true` (разрешено). + +* `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов. + + По умолчанию — `1073741824` (1 ГБ). + +* `prefer_not_to_merge` — отключить [слияние кусков данных]({{ ch.docs }}/engines/table-engines/mergetree-family/custom-partitioning-key/) в кластерном и объектном хранилищах: `true` или `false`. + + Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`. diff --git a/ru/_includes/mdb/mch/api/grpc-user-specs.md b/ru/_includes/mdb/mch/api/grpc-user-specs.md new file mode 100644 index 00000000000..25034763376 --- /dev/null +++ b/ru/_includes/mdb/mch/api/grpc-user-specs.md @@ -0,0 +1,5 @@ +* `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. +* `password` — пароль пользователя. Длина пароля от 8 до 128 символов. +* `permissions` — список БД, к которым пользователь должен иметь доступ. + + Список организован в виде массива параметров `database_name`. Один параметр содержит имя отдельной БД. diff --git a/ru/_includes/mdb/mch/api/replication-management-details.md b/ru/_includes/mdb/mch/api/replication-management-details.md new file mode 100644 index 00000000000..236d16e4c3b --- /dev/null +++ b/ru/_includes/mdb/mch/api/replication-management-details.md @@ -0,0 +1,7 @@ +Эта настройка определяет, как будет происходить управление репликацией в кластере из нескольких хостов {{ CH }}: + +* Если указано значение `true`, то для управления репликацией будет использоваться {{ CK }}. + + {% include [ClickHouse Keeper can't turn off](../note-ck-no-turn-off.md) %} + +* Если значение не задано или равно `false`, то для управления репликацией и распределением запросов будет использоваться {{ ZK }}. diff --git a/ru/_includes/mdb/mch/api/rest-access-settings.md b/ru/_includes/mdb/mch/api/rest-access-settings.md new file mode 100644 index 00000000000..cda924c83ce --- /dev/null +++ b/ru/_includes/mdb/mch/api/rest-access-settings.md @@ -0,0 +1,15 @@ +* `dataLens` — разрешить доступ из {{ datalens-name }}: `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке подключения см. в разделе [Подключение из {{ datalens-name }}](../../../../managed-clickhouse/operations/datalens-connect.md). + +* `webSql` — разрешить [выполнять SQL-запросы](../../../../managed-clickhouse/operations/web-sql-query.md) к базам данных кластера из консоли управления {{ yandex-cloud }} с помощью сервиса {{ websql-full-name }}: `true` или `false`. Значение по умолчанию — `false`. + + +* `metrika` — разрешить [импорт данных из AppMetrika в кластер](https://appmetrica.yandex.ru/docs/common/cloud/about.html): `true` или `false`. Значение по умолчанию — `false`. + +* `serverless` — разрешить доступ к кластеру из сервиса [{{ sf-full-name }}](../../../../functions/concepts/index.md): `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке доступа см. в документации [{{ sf-name }}](../../../../functions/operations/database-connection.md). + +* `dataTransfer` — разрешить доступ к кластеру из сервиса [{{ data-transfer-full-name }}](../../../../data-transfer/concepts/index.md) в Serverless-режиме: `true` или `false`. Значение по умолчанию — `false`. + + Это позволит через специальную сеть подключаться к {{ data-transfer-full-name }}, запущенному в {{ k8s }}. В результате будут быстрее выполняться, например, запуск и деактивация трансфера. + + +* `yandexQuery` — разрешить доступ к кластеру из сервиса [{{ yq-full-name }}](../../../../query/concepts/index.md): `true` или `false`. Функциональность находится на стадии [Preview](../../../../overview/concepts/launch-stages.md). Значение по умолчанию — `false`. diff --git a/ru/_includes/mdb/mch/api/rest-cloud-storage-settings.md b/ru/_includes/mdb/mch/api/rest-cloud-storage-settings.md new file mode 100644 index 00000000000..735200e2234 --- /dev/null +++ b/ru/_includes/mdb/mch/api/rest-cloud-storage-settings.md @@ -0,0 +1,19 @@ +* `enabled` — включить гибридное хранилище в кластере, если оно выключено: `true` или `false`. Значение по умолчанию — `false` (выключено). + + {% include [Hybrid Storage cannot be switched off](../hybrid-storage-cannot-be-switched-off.md) %} + +* `moveFactor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в {{ objstorage-full-name }}. + + Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`. + +* `dataCacheEnabled` — разрешить временное хранение файлов в кластерном хранилище: `true` или `false`. + + По умолчанию — `true` (разрешено). + +* `dataCacheMaxSize` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов. + + По умолчанию — `1073741824` (1 ГБ). + +* `preferNotToMerge` — отключить [слияние кусков данных]({{ ch.docs }}/engines/table-engines/mergetree-family/custom-partitioning-key/) в кластерном и объектном хранилищах: `true` или `false`. + + Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`. diff --git a/ru/_includes/mdb/mch/api/rest-user-specs.md b/ru/_includes/mdb/mch/api/rest-user-specs.md new file mode 100644 index 00000000000..4d55d4a0e11 --- /dev/null +++ b/ru/_includes/mdb/mch/api/rest-user-specs.md @@ -0,0 +1,5 @@ +* `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. +* `password` — пароль пользователя. Длина пароля от 8 до 128 символов. +* `permissions` — список БД, к которым пользователь должен иметь доступ. + + Список организован в виде массива параметров `databaseName`. Один параметр содержит имя отдельной БД. diff --git a/ru/_includes/mdb/mch/api/zk-hosts-details.md b/ru/_includes/mdb/mch/api/zk-hosts-details.md new file mode 100644 index 00000000000..7877fc0d64b --- /dev/null +++ b/ru/_includes/mdb/mch/api/zk-hosts-details.md @@ -0,0 +1,5 @@ +Если вы создаете кластер из нескольких хостов и не используете [{{ CK }}](../../../../managed-clickhouse/concepts/replication.md#ck), то для хостов {{ ZK }} действуют следующие правила: + +* Если в [облачной сети](../../../../vpc/concepts/network.md) кластера есть подсети в каждой из [зон доступности](../../../../overview/concepts/geo-scope.md), а настройки хостов {{ ZK }} не заданы, то в каждую подсеть будет автоматически добавлено по одному такому хосту. + +* Если подсети в сети кластера есть только в некоторых зонах доступности, то необходимо указать настройки хостов {{ ZK }} явно. diff --git a/ru/_includes/mdb/mch/hybrid-storage-settings-api.md b/ru/_includes/mdb/mch/hybrid-storage-settings-api.md deleted file mode 100644 index 36d466612ed..00000000000 --- a/ru/_includes/mdb/mch/hybrid-storage-settings-api.md +++ /dev/null @@ -1,4 +0,0 @@ -* `configSpec.cloudStorage.dataCacheEnabled` — разрешает временное хранение файлов в кластерном хранилище. По умолчанию — `true` (разрешено). -* `configSpec.cloudStorage.dataCacheMaxSize` — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов. По умолчанию — `1073741824` (1 ГБ). -* `configSpec.cloudStorage.moveFactor` — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в {{ objstorage-full-name }}. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`. -* `configSpec.cloudStorage.preferNotToMerge` — отключает [слияние кусков данных]({{ ch.docs }}/engines/table-engines/mergetree-family/custom-partitioning-key/) в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false` или не передавайте параметр в запросе API при создании кластера. diff --git a/ru/_includes/mdb/mkf-zk-hosts.md b/ru/_includes/mdb/mkf-zk-hosts.md deleted file mode 100644 index a91928d6ac0..00000000000 --- a/ru/_includes/mdb/mkf-zk-hosts.md +++ /dev/null @@ -1,5 +0,0 @@ -{% note warning %} - -Если вы создаете кластер из более чем одного хоста, в кластер будут добавлены три выделенных хоста {{ ZK }}. Подробнее см. в разделе [Взаимосвязь ресурсов в {{ mkf-name }}](../../managed-kafka/concepts/index.md). - -{% endnote %} \ No newline at end of file diff --git a/ru/_includes/mdb/mkf/connect-properties-no-ssl.md b/ru/_includes/mdb/mkf/connect-properties-no-ssl.md new file mode 100644 index 00000000000..083a3285f07 --- /dev/null +++ b/ru/_includes/mdb/mkf/connect-properties-no-ssl.md @@ -0,0 +1,11 @@ +Создайте файлы с параметрами для подключения к кластеру: файл для производителя и файл для потребителя. + +Эти файлы имеют одинаковое содержимое, различаются только реквизиты пользователя: + +```ini +sasl.mechanism=SCRAM-SHA-512 +sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ + username="<логин_производителя_или_потребителя>" \ + password="<пароль_производителя_или_потребителя>"; +security.protocol=SASL_PLAINTEXT +``` diff --git a/ru/_includes/mdb/mkf/kafka-cli-tools-intro.md b/ru/_includes/mdb/mkf/kafka-cli-tools-intro.md new file mode 100644 index 00000000000..a755cf981d6 --- /dev/null +++ b/ru/_includes/mdb/mkf/kafka-cli-tools-intro.md @@ -0,0 +1,4 @@ +В состав [архивов с бинарными файлами {{ KF }}](https://kafka.apache.org/downloads) включен [набор инструментов](https://docs.confluent.io/kafka/operations-tools/kafka-tools.html), который позволяет управлять кластером {{ KF }} и сущностями в нем. Далее на примере будет показано, как указать реквизиты пользователя для подключения и использовать инструменты с этими реквизитами: + +* С помощью [kafka-console-producer](https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-console-producer-sh) будет отправлено сообщение в топик. +* С помощью [kafka-console-consumer](https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-console-consumer-sh) будет получено сообщение из топика. diff --git a/ru/_includes/mdb/mkf/kraft-cluster-topology.md b/ru/_includes/mdb/mkf/kraft-cluster-topology.md index dba9fc5a7e9..eb30480a688 100644 --- a/ru/_includes/mdb/mkf/kraft-cluster-topology.md +++ b/ru/_includes/mdb/mkf/kraft-cluster-topology.md @@ -3,4 +3,4 @@ * либо все три находятся в одной [зоне доступности](../../../overview/concepts/geo-scope.md); * либо каждый хост расположен в отдельной зоне доступности. -Подробнее о создании кластера {{ mkf-name }} с протоколом {{ kraft-short-name }} см. в [инструкции](../../../managed-kafka/operations/cluster-create.md#higher-version). +Подробнее о создании кластера {{ mkf-name }} с протоколом {{ kraft-short-name }} см. в [инструкции](../../../managed-kafka/operations/cluster-create.md#create-cluster). diff --git a/ru/_includes/yandexgpt-limits.md b/ru/_includes/yandexgpt-limits.md index c2cb970bc3b..7c6eac5f152 100644 --- a/ru/_includes/yandexgpt-limits.md +++ b/ru/_includes/yandexgpt-limits.md @@ -5,7 +5,8 @@ **[Векторизация текста](../foundation-models/concepts/embeddings.md)** | Количество запросов на векторизацию текста, в секунду | 10 **[Генерация текста](../foundation-models/concepts/yandexgpt/index.md)** | -Количество одновременных генераций | 1 +Количество одновременных генераций, [синхронный режим](../foundation-models/concepts/index.md#working-mode) | 10 +Количество одновременных генераций, модель {{ yagpt-name }} 32k | 1 Количество запросов в секунду, [асинхронный режим](../foundation-models/concepts/index.md#working-mode) (запрос) | 10 Количество запросов в секунду, асинхронный режим (получение ответа) | 50 Количество запросов в час, асинхронный режим (запрос) | 5000 @@ -13,8 +14,8 @@ **[Классификация текста](../foundation-models/concepts/classifier/index.md)** | Количество запросов на классификацию текста в секунду | 1 **[Генерация изображений](../foundation-models/concepts/yandexart/index.md)** | -Количество запросов на генерацию в минуту | 10 -Количество запросов на генерацию в сутки | 500 +Количество запросов на генерацию в минуту | 500 +Количество запросов на генерацию в сутки | 5000 Количество запросов результата в секунду | 50 #### Лимиты {#yandexgpt-limits} diff --git a/ru/_pricing/compute/kzt-instance-resources.md b/ru/_pricing/compute/kzt-instance-resources.md index dad56d0e5cd..b1142a9dc51 100644 --- a/ru/_pricing/compute/kzt-instance-resources.md +++ b/ru/_pricing/compute/kzt-instance-resources.md @@ -19,6 +19,10 @@ | 100% vCPU | {{ sku|KZT|compute.vm.cpu.c100.v3|string }} | {{ sku|KZT|compute.vm.cpu.c100.preemptible.v3|string }} | {{ sku|KZT|v1.commitment.selfcheckout.m6.compute.vm.cpu.c100.standard.v3|string }} | {{ sku|KZT|v1.commitment.selfcheckout.y1.compute.vm.cpu.c100.standard.v3|string }} | | 1 GPU Nvidia T4 | {{ sku|KZT|compute.vm.gpu.standard.v3-t4|string }} | {{ sku|KZT|compute.vm.gpu.standard.v3-t4.preemptible|string }} | − | − | | RAM (за 1 ГБ) | {{ sku|KZT|compute.vm.ram.v3|string }} | {{ sku|KZT|compute.vm.ram.preemptible.v3|string }} | {{ sku|KZT|v1.commitment.selfcheckout.m6.compute.vm.ram.standard.v3|string }} | {{ sku|KZT|v1.commitment.selfcheckout.y1.compute.vm.ram.standard.v3|string }} | +| **Intel Ice Lake with T4i** | Обычная ВМ | Прерываемая ВМ | | | +| 100% vCPU | 5,25 ₸ | 5,25 ₸ | - | - | +| 1 GPU | 720,00 ₸ | 720,00 ₸ | - | - | +| RAM (за 1 ГБ) | 1,40 ₸ | 1,40 ₸ | - | - | | **Intel Ice Lake (Compute Optimized)** | Обычная ВМ | Прерываемая ВМ | | | | 100% vCPU | {{ sku|KZT|compute.vm.cpu.c100.highfreq-v3|string }} | - | − | − | | RAM (за 1 ГБ) | {{ sku|KZT|compute.vm.ram.highfreq-v3|string }} | - | − | − | diff --git a/ru/_pricing/compute/rub-instance-resources.md b/ru/_pricing/compute/rub-instance-resources.md index c0de8d1aa8a..91270073f8b 100644 --- a/ru/_pricing/compute/rub-instance-resources.md +++ b/ru/_pricing/compute/rub-instance-resources.md @@ -19,6 +19,10 @@ | 100% vCPU | {{ sku|RUB|compute.vm.cpu.c100.v3|string }} | {{ sku|RUB|compute.vm.cpu.c100.preemptible.v3|string }} | {{ sku|RUB|v1.commitment.selfcheckout.m6.compute.vm.cpu.c100.standard.v3|string }} | {{ sku|RUB|v1.commitment.selfcheckout.y1.compute.vm.cpu.c100.standard.v3|string }} | | 1 GPU Nvidia T4 | {{ sku|RUB|compute.vm.gpu.standard.v3-t4|string }} | {{ sku|RUB|compute.vm.gpu.standard.v3-t4.preemptible|string }} | − | − | | RAM (за 1 ГБ) | {{ sku|RUB|compute.vm.ram.v3|string }} | {{ sku|RUB|compute.vm.ram.preemptible.v3|string }} | {{ sku|RUB|v1.commitment.selfcheckout.m6.compute.vm.ram.standard.v3|string }} | {{ sku|RUB|v1.commitment.selfcheckout.y1.compute.vm.ram.standard.v3|string }} | +| **Intel Ice Lake with T4i** | Обычная ВМ | Прерываемая ВМ | | | +| 100% vCPU | 1,05 ₽ | 1,05 ₽ | - | - | +| 1 GPU | 144,00 ₽ | 144,00 ₽ | - | - | +| RAM (за 1 ГБ) | 0,28 ₽ | 0,28 ₽ | - | - | | **Intel Ice Lake (Compute Optimized)** | Обычная ВМ | Прерываемая ВМ | | | | 100% vCPU | {{ sku|RUB|compute.vm.cpu.c100.highfreq-v3|string }} | - | − | − | | RAM (за 1 ГБ) | {{ sku|RUB|compute.vm.ram.highfreq-v3|string }} | - | − | − | diff --git a/ru/_pricing_examples/managed-kafka/kzt-hour.md b/ru/_pricing_examples/managed-kafka/kzt-hour.md index fffa4f60b79..d3fdbd7b409 100644 --- a/ru/_pricing_examples/managed-kafka/kzt-hour.md +++ b/ru/_pricing_examples/managed-kafka/kzt-hour.md @@ -1,60 +1,60 @@ Расчет стоимости для хостов-брокеров {{ KF }}: -> 3 × (2 × 7,55 ₸ + 8 × 2,00 ₸) = 93,30 ₸ +> 3 × (2 × {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|string }} + 8 × {{ sku|KZT|mdb.cluster.kafka.v3.ram|string }}) = {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.kafka.v3.ram|number }}) %} > -> Итого: 93,30 ₸ — стоимость часа работы хостов-брокеров {{ KF }}. +> Итого: {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.kafka.v3.ram|number }}) %} — стоимость часа работы хостов-брокеров {{ KF }}. Где: * 3 — количество хостов-брокеров {{ KF }}. * 2 — количество vCPU. -* 7,55 ₸ — стоимость часа использования 100% vCPU. +* {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|string }} — стоимость часа использования 100% vCPU. * 8 — объем RAM одного хоста (в гигабайтах). -* 2,00 ₸ — стоимость часа использования 1 ГБ RAM на 100% vCPU. +* {{ sku|KZT|mdb.cluster.kafka.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 100% vCPU. Расчет стоимости хранилища для хостов-брокеров {{ KF }}: -> 3 × 100 × 16,00 ₸ = 4 800,00 ₸ +> 3 × 100 × {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|string }} = {% calc [currency=KZT] 3 × 100 × {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|number }} %} > -> Итого: 4 800,00 ₸ — стоимость хранилища для хостов-брокеров {{ KF }}. +> Итого: {% calc [currency=KZT] 3 × 100 × {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|number }} %} — стоимость хранилища для хостов-брокеров {{ KF }}. Где: * 3 — количество хостов-брокеров {{ KF }}. * 100 — объем хранилища на сетевых HDD-дисках (в гигабайтах). -* 16,00 ₸ — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. +* {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. Расчет стоимости для хостов {{ ZK }}: -> 3 × (2 × 3,50 ₸ + 4 × 1,40 ₸) = 37,80 ₸ +> 3 × (2 × {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|string }} + 4 × {{ sku|KZT|mdb.zk.kafka.v3.ram|string }}) = {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|KZT|mdb.zk.kafka.v3.ram|number }}) %} > -> Итого: 37,80 ₸ — стоимость часа работы хостов {{ ZK }}. +> Итого: {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|KZT|mdb.zk.kafka.v3.ram|number }}) %} — стоимость часа работы хостов {{ ZK }}. Где: * 3 — количество хостов {{ ZK }}. * 2 — количество vCPU. -* 3,50 ₸ — стоимость часа использования 50% vCPU. +* {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|string }} — стоимость часа использования 50% vCPU. * 4 — объем RAM одного хоста (в гигабайтах). -* 1,40 ₸ — стоимость часа использования 1 ГБ RAM на 50% vCPU. +* {{ sku|KZT|mdb.zk.kafka.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 50% vCPU. Расчет стоимости хранилища для хостов {{ ZK }}: -> 3 × 10 × 65,05 ₸ = 1 951,50 ₸ +> 3 × 10 × {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|string }} = {% calc [currency=KZT] 3 × 10 × {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|number }} %} > -> Итого: 1 951,50 ₸ — стоимость хранилища для хостов {{ ZK }}. +> Итого: {% calc [currency=KZT] 3 × 10 × {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|number }} %} — стоимость хранилища для хостов {{ ZK }}. Где: * 3 — количество хостов {{ ZK }}. * 10 — объем хранилища на сетевых SSD-дисках (в гигабайтах). -* 65,05 ₸ — стоимость месяца использования 1 ГБ хранилища на сетевых SSD-дисках. +* {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых SSD-дисках. Расчет итоговой стоимости: -> 720 × (93,30 ₸ + 37,80 ₸) + 4 800,00 ₸ + 1 951,50 ₸ = 101 143,50 ₸ +> 720 × ({% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.kafka.v3.ram|number }}) %} + {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|KZT|mdb.zk.kafka.v3.ram|number }}) %}) + {% calc [currency=KZT] 3 × 100 × {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|number }} %} + {% calc [currency=KZT] 3 × 10 × {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|number }} %} = {% calc [currency=KZT] 720 × ((3 × (2 × {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.kafka.v3.ram|number }})) + (3 × (2 × {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|KZT|mdb.zk.kafka.v3.ram|number }}))) + (3 × 100 × {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|number }}) + (3 × 10 × {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|number }}) %} > -> Итого: 101 143,50 ₸ — стоимость использования кластера в течение 30 дней. +> Итого: {% calc [currency=KZT] 720 × ((3 × (2 × {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.kafka.v3.ram|number }})) + (3 × (2 × {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|KZT|mdb.zk.kafka.v3.ram|number }}))) + (3 × 100 × {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|number }}) + (3 × 10 × {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|number }}) %} — стоимость использования кластера в течение 30 дней. Где: * 720 — количество часов в 30 днях. -* 93,30 ₸ — стоимость часа работы хостов-брокеров {{ KF }}. -* 37,80 ₸ — стоимость часа работы хостов {{ ZK }}. -* 4 800,00 ₸ — стоимость хранилища для хостов-брокеров {{ KF }}. -* 1 951,50 ₸ — стоимость хранилища для хостов {{ ZK }}. \ No newline at end of file +* {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.kafka.v3.ram|number }}) %} — стоимость часа работы хостов-брокеров {{ KF }}. +* {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|KZT|mdb.zk.kafka.v3.ram|number }}) %} — стоимость часа работы хостов {{ ZK }}. +* {% calc [currency=KZT] 3 × 100 × {{ sku|KZT|mdb.cluster.network-hdd.kafka|month|number }} %} — стоимость хранилища для хостов-брокеров {{ KF }}. +* {% calc [currency=KZT] 3 × 10 × {{ sku|KZT|mdb.cluster.network-nvme.kafka|month|number }} %} — стоимость хранилища для хостов {{ ZK }}. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-kafka/rub-hour.md b/ru/_pricing_examples/managed-kafka/rub-hour.md index b803641b339..c82e8ed65fb 100644 --- a/ru/_pricing_examples/managed-kafka/rub-hour.md +++ b/ru/_pricing_examples/managed-kafka/rub-hour.md @@ -1,60 +1,60 @@ Расчет стоимости для хостов-брокеров {{ KF }}: -> 3 × (2 × 1,51 ₽ + 8 × 0,40 ₽) = 18,66 ₽ +> 3 × (2 × {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|string }} + 8 × {{ sku|RUB|mdb.cluster.kafka.v3.ram|string }}) = {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.kafka.v3.ram|number }}) %} > -> Итого: 18,66 ₽ — стоимость часа работы хостов-брокеров {{ KF }}. +> Итого: {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.kafka.v3.ram|number }}) %} — стоимость часа работы хостов-брокеров {{ KF }}. Где: * 3 — количество хостов-брокеров {{ KF }}. * 2 — количество vCPU. -* 1,51 ₽ — стоимость часа использования 100% vCPU. +* {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|string }} — стоимость часа использования 100% vCPU. * 8 — объем RAM одного хоста (в гигабайтах). -* 0,40 ₽ — стоимость часа использования 1 ГБ RAM на 100% vCPU. +* {{ sku|RUB|mdb.cluster.kafka.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 100% vCPU. Расчет стоимости хранилища для хостов-брокеров {{ KF }}: -> 3 × 100 × 3,20 ₽ = 960,00 ₽ +> 3 × 100 × {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|string }} = {% calc [currency=RUB] 3 × 100 × {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|number }} %} > -> Итого: 960,00 ₽ — стоимость хранилища для хостов-брокеров {{ KF }}. +> Итого: {% calc [currency=RUB] 3 × 100 × {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|number }} %} — стоимость хранилища для хостов-брокеров {{ KF }}. Где: * 3 — количество хостов-брокеров {{ KF }}. * 100 — объем хранилища на сетевых HDD-дисках (в гигабайтах). -* 3,20 ₽ — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. +* {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. Расчет стоимости для хостов {{ ZK }}: -> 3 × (2 × 0,70 ₽ + 4 × 0,28 ₽) = 7,56 ₽ +> 3 × (2 × {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|string }} + 4 × {{ sku|RUB|mdb.zk.kafka.v3.ram|string }}) = {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|RUB|mdb.zk.kafka.v3.ram|number }}) %} > -> Итого: 7,56 ₽ — стоимость часа работы хостов {{ ZK }}. +> Итого: {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|RUB|mdb.zk.kafka.v3.ram|number }}) %} — стоимость часа работы хостов {{ ZK }}. Где: * 3 — количество хостов {{ ZK }}. * 2 — количество vCPU. -* 0,70 ₽ — стоимость часа использования 50% vCPU. +* {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|string }} — стоимость часа использования 50% vCPU. * 4 — объем RAM одного хоста (в гигабайтах). -* 0,28 ₽ — стоимость часа использования 1 ГБ RAM на 50% vCPU. +* {{ sku|RUB|mdb.zk.kafka.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 50% vCPU. Расчет стоимости хранилища для хостов {{ ZK }}: -> 3 × 10 × 13,01 ₽ = 390,30 ₽ +> 3 × 10 × {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|string }} = {% calc [currency=RUB] 3 × 10 × {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|number }} %} > -> Итого: 390,30 ₽ — стоимость хранилища для хостов {{ ZK }}. +> Итого: {% calc [currency=RUB] 3 × 10 × {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|number }} %} — стоимость хранилища для хостов {{ ZK }}. Где: * 3 — количество хостов {{ ZK }}. * 10 — объем хранилища на сетевых SSD-дисках (в гигабайтах). -* 13,01 ₽ — стоимость месяца использования 1 ГБ хранилища на сетевых SSD-дисках. +* {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых SSD-дисках. Расчет итоговой стоимости: -> 720 × (18,66 ₽ + 7,56 ₽) + 960,00 ₽ + 390,30 ₽ = 20 228,70 ₽ +> 720 × ({% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.kafka.v3.ram|number }}) %} + {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|RUB|mdb.zk.kafka.v3.ram|number }}) %}) + {% calc [currency=RUB] 3 × 100 × {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|number }} %} + {% calc [currency=RUB] 3 × 10 × {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|number }} %} = {% calc [currency=RUB] 720 × ((3 × (2 × {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.kafka.v3.ram|number }})) + (3 × (2 × {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|RUB|mdb.zk.kafka.v3.ram|number }}))) + (3 × 100 × {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|number }}) + (3 × 10 × {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|number }}) %} > -> Итого: 20 228,70 ₽ — стоимость использования кластера в течение 30 дней. +> Итого: {% calc [currency=RUB] 720 × ((3 × (2 × {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.kafka.v3.ram|number }})) + (3 × (2 × {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|RUB|mdb.zk.kafka.v3.ram|number }}))) + (3 × 100 × {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|number }}) + (3 × 10 × {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|number }}) %} — стоимость использования кластера в течение 30 дней. Где: * 720 — количество часов в 30 днях. -* 18,66 ₽ — стоимость часа работы хостов-брокеров {{ KF }}. -* 7,56 ₽ — стоимость часа работы хостов {{ ZK }}. -* 960,00 ₽ — стоимость хранилища для хостов-брокеров {{ KF }}. -* 390,30 ₽ — стоимость хранилища для хостов {{ ZK }}. \ No newline at end of file +* {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.kafka.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.kafka.v3.ram|number }}) %} — стоимость часа работы хостов-брокеров {{ KF }}. +* {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.zk.kafka.v3.cpu.c50|number }} + 4 × {{ sku|RUB|mdb.zk.kafka.v3.ram|number }}) %} — стоимость часа работы хостов {{ ZK }}. +* {% calc [currency=RUB] 3 × 100 × {{ sku|RUB|mdb.cluster.network-hdd.kafka|month|number }} %} — стоимость хранилища для хостов-брокеров {{ KF }}. +* {% calc [currency=RUB] 3 × 10 × {{ sku|RUB|mdb.cluster.network-nvme.kafka|month|number }} %} — стоимость хранилища для хостов {{ ZK }}. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mongodb/kzt-host.md b/ru/_pricing_examples/managed-mongodb/kzt-host.md index 8a4553215dd..88f68dd0eb8 100644 --- a/ru/_pricing_examples/managed-mongodb/kzt-host.md +++ b/ru/_pricing_examples/managed-mongodb/kzt-host.md @@ -1,10 +1,10 @@ -> 3 × (2 × 8,00 ₸ + 8 × 4,50 ₸) = 156,00 ₸ +> 3 × (2 × {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|string }} + 8 × {{ sku|KZT|mdb.cluster.mongodb.v3.ram|string }}) = {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mongodb.v3.ram|number }}) %} > -> Итого: 156,00 ₸ — стоимость часа работы хостов {{ MG }}. +> Итого: {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mongodb.v3.ram|number }}) %} — стоимость часа работы хостов {{ MG }}. Где: * 3 — количество хостов {{ MG }}. * 2 — количество vCPU. -* 8,00 ₸ — стоимость часа использования 100% vCPU. +* {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|string }} — стоимость часа использования 100% vCPU. * 8 — объем RAM одного хоста {{ MG }} (в гигабайтах). -* 4,50 ₸ — стоимость часа использования 1 ГБ RAM на 100% vCPU. \ No newline at end of file +* {{ sku|KZT|mdb.cluster.mongodb.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 100% vCPU. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mongodb/kzt-storage.md b/ru/_pricing_examples/managed-mongodb/kzt-storage.md index 876e117eb95..f1e860ae0a0 100644 --- a/ru/_pricing_examples/managed-mongodb/kzt-storage.md +++ b/ru/_pricing_examples/managed-mongodb/kzt-storage.md @@ -1,9 +1,9 @@ -> 720 × 156,00 ₸ + 100 × 16,00 ₸ = 113 920,00 ₸ +> 720 × {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mongodb.v3.ram|number }}) %} + 100 × {{ sku|KZT|mdb.cluster.network-hdd.ch|month|string }} = {% calc [currency=KZT] 720 × (3 × (2 × {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mongodb.v3.ram|number }})) + 100 × {{ sku|KZT|mdb.cluster.network-hdd.ch|month|number }} %} > -> Итого: 113 920,00 ₸ — стоимость использования кластера в течение 30 дней. +> Итого: {% calc [currency=KZT] 720 × (3 × (2 × {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mongodb.v3.ram|number }})) + 100 × {{ sku|KZT|mdb.cluster.network-hdd.ch|month|number }} %} — стоимость использования кластера в течение 30 дней. Где: * 720 — количество часов в 30 днях. -* 156,00 ₸ — стоимость часа работы хостов {{ MG }}. +* {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mongodb.v3.ram|number }}) %} — стоимость часа работы хостов {{ MG }}. * 100 — объем хранилища на сетевых HDD-дисках (в гигабайтах). -* 16,00 ₸ — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. \ No newline at end of file +* {{ sku|KZT|mdb.cluster.network-hdd.ch|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mongodb/rub-host.md b/ru/_pricing_examples/managed-mongodb/rub-host.md index bdb43934851..acd75cb627c 100644 --- a/ru/_pricing_examples/managed-mongodb/rub-host.md +++ b/ru/_pricing_examples/managed-mongodb/rub-host.md @@ -1,10 +1,10 @@ -> 3 × (2 × 1,60 ₽ + 8 × 0,90 ₽) = 31,20 ₽ +> 3 × (2 × {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|string }} + 8 × {{ sku|RUB|mdb.cluster.mongodb.v3.ram|string }}) = {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mongodb.v3.ram|number }}) %} > -> Итого: 31,20 ₽ — стоимость часа работы хостов {{ MG }}. +> Итого: {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mongodb.v3.ram|number }}) %} — стоимость часа работы хостов {{ MG }}. Где: * 3 — количество хостов {{ MG }}. * 2 — количество vCPU. -* 1,60 ₽ — стоимость часа использования 100% vCPU. +* {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|string }} — стоимость часа использования 100% vCPU. * 8 — объем RAM одного хоста {{ MG }} (в гигабайтах). -* 0,90 ₽ — стоимость часа использования 1 ГБ RAM на 100% vCPU. \ No newline at end of file +* {{ sku|RUB|mdb.cluster.mongodb.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 100% vCPU. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mongodb/rub-storage.md b/ru/_pricing_examples/managed-mongodb/rub-storage.md index 988f533ff1e..bc8749c0ce0 100644 --- a/ru/_pricing_examples/managed-mongodb/rub-storage.md +++ b/ru/_pricing_examples/managed-mongodb/rub-storage.md @@ -1,9 +1,9 @@ -> 720 × 31,20 ₽ + 100 × 3,20 ₽ = 22 784,00 ₽ +> 720 × {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mongodb.v3.ram|number }}) %} + 100 × {{ sku|RUB|mdb.cluster.network-hdd.ch|month|string }} = {% calc [currency=RUB] 720 × (3 × (2 × {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mongodb.v3.ram|number }})) + 100 × {{ sku|RUB|mdb.cluster.network-hdd.ch|month|number }} %} > -> Итого: 22 784,00 ₽ — стоимость использования кластера в течение 30 дней. +> Итого: {% calc [currency=RUB] 720 × (3 × (2 × {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mongodb.v3.ram|number }})) + 100 × {{ sku|RUB|mdb.cluster.network-hdd.ch|month|number }} %} — стоимость использования кластера в течение 30 дней. Где: * 720 — количество часов в 30 днях. -* 31,20 ₽ — стоимость часа работы хостов {{ MG }}. +* {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mongodb.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mongodb.v3.ram|number }}) %} — стоимость часа работы хостов {{ MG }}. * 100 — объем хранилища на сетевых HDD-дисках (в гигабайтах). -* 3,20 ₽ — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. \ No newline at end of file +* {{ sku|RUB|mdb.cluster.network-hdd.ch|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mysql/kzt-host.md b/ru/_pricing_examples/managed-mysql/kzt-host.md new file mode 100644 index 00000000000..a4e5e134ef9 --- /dev/null +++ b/ru/_pricing_examples/managed-mysql/kzt-host.md @@ -0,0 +1,10 @@ +> 3 × (2 × {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|string }} + 8 × {{ sku|KZT|mdb.cluster.mysql.v3.ram|string }}) = {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mysql.v3.ram|number }}) %} +> +> Итого: {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mysql.v3.ram|number }}) %} — стоимость часа работы хостов {{ MY }}. + +Где: +* 3 — количество хостов {{ MY }}. +* 2 — количество vCPU. +* {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|string }} — стоимость часа использования 100% vCPU. +* 8 — объем RAM одного хоста {{ MY }} (в гигабайтах). +* {{ sku|KZT|mdb.cluster.mysql.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 100% vCPU. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mysql/kzt-storage.md b/ru/_pricing_examples/managed-mysql/kzt-storage.md new file mode 100644 index 00000000000..89a4bba0821 --- /dev/null +++ b/ru/_pricing_examples/managed-mysql/kzt-storage.md @@ -0,0 +1,9 @@ +> 720 × {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mysql.v3.ram|number }}) %} + 100 × {{ sku|KZT|mdb.cluster.network-hdd.mysql|month|string }} = {% calc [currency=KZT] 720 × (3 × (2 × {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mysql.v3.ram|number }})) + 100 × {{ sku|KZT|mdb.cluster.network-hdd.mysql|month|number }} %} +> +> Итого: {% calc [currency=KZT] 720 × (3 × (2 × {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mysql.v3.ram|number }})) + 100 × {{ sku|KZT|mdb.cluster.network-hdd.mysql|month|number }} %} — стоимость использования кластера в течение 30 дней. + +Где: +* 720 — количество часов в 30 днях. +* {% calc [currency=KZT] 3 × (2 × {{ sku|KZT|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|KZT|mdb.cluster.mysql.v3.ram|number }}) %} — стоимость часа работы хостов {{ MY }}. +* 100 — объем хранилища на сетевых HDD-дисках (в гигабайтах). +* {{ sku|KZT|mdb.cluster.network-hdd.mysql|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mysql/rub-host.md b/ru/_pricing_examples/managed-mysql/rub-host.md new file mode 100644 index 00000000000..e7f2d946ed7 --- /dev/null +++ b/ru/_pricing_examples/managed-mysql/rub-host.md @@ -0,0 +1,10 @@ +> 3 × (2 × {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|string }} + 8 × {{ sku|RUB|mdb.cluster.mysql.v3.ram|string }}) = {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mysql.v3.ram|number }}) %} +> +> Итого: {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mysql.v3.ram|number }}) %} — стоимость часа работы хостов {{ MY }}. + +Где: +* 3 — количество хостов {{ MY }}. +* 2 — количество vCPU. +* {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|string }} — стоимость часа использования 100% vCPU. +* 8 — объем RAM одного хоста {{ MY }} (в гигабайтах). +* {{ sku|RUB|mdb.cluster.mysql.v3.ram|string }} — стоимость часа использования 1 ГБ RAM на 100% vCPU. \ No newline at end of file diff --git a/ru/_pricing_examples/managed-mysql/rub-storage.md b/ru/_pricing_examples/managed-mysql/rub-storage.md new file mode 100644 index 00000000000..e5f0eb199ad --- /dev/null +++ b/ru/_pricing_examples/managed-mysql/rub-storage.md @@ -0,0 +1,9 @@ +> 720 × {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mysql.v3.ram|number }}) %} + 100 × {{ sku|RUB|mdb.cluster.network-hdd.mysql|month|string }} = {% calc [currency=RUB] 720 × (3 × (2 × {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mysql.v3.ram|number }})) + 100 × {{ sku|RUB|mdb.cluster.network-hdd.mysql|month|number }} %} +> +> Итого: {% calc [currency=RUB] 720 × (3 × (2 × {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mysql.v3.ram|number }})) + 100 × {{ sku|RUB|mdb.cluster.network-hdd.mysql|month|number }} %} — стоимость использования кластера в течение 30 дней. + +Где: +* 720 — количество часов в 30 днях. +* {% calc [currency=RUB] 3 × (2 × {{ sku|RUB|mdb.cluster.mysql.v3.cpu.c100|number }} + 8 × {{ sku|RUB|mdb.cluster.mysql.v3.ram|number }}) %} — стоимость часа работы хостов {{ MY }}. +* 100 — объем хранилища на сетевых HDD-дисках (в гигабайтах). +* {{ sku|RUB|mdb.cluster.network-hdd.mysql|month|string }} — стоимость месяца использования 1 ГБ хранилища на сетевых HDD-дисках. \ No newline at end of file diff --git a/ru/_qa/datalens/change-source-data.md b/ru/_qa/datalens/change-source-data.md new file mode 100644 index 00000000000..9b532ac95d4 --- /dev/null +++ b/ru/_qa/datalens/change-source-data.md @@ -0,0 +1,5 @@ +### Как с помощью {{ datalens-short-name }} изменить данные в источнике? {#how-to-change-source-data} + +С помощью {{ datalens-short-name }} нельзя изменить данные в источнике. + +Вы можете обработать полученные из источника данные на стороне {{ datalens-short-name }}, использовав [вычисляемые поля](../../datalens/concepts/calculations/index.md). \ No newline at end of file diff --git a/ru/_tutorials/dataplatform/opensearch-saml-keycloak.md b/ru/_tutorials/dataplatform/opensearch-saml-keycloak.md index eb258c399d5..4212ed3ef36 100644 --- a/ru/_tutorials/dataplatform/opensearch-saml-keycloak.md +++ b/ru/_tutorials/dataplatform/opensearch-saml-keycloak.md @@ -173,6 +173,8 @@ * **{{ ui-key.yacloud.opensearch.auth.field_subject-key }}** — оставьте поле пустым. + * **{{ ui-key.yacloud.opensearch.auth.field_jwt-default-expiration-timeout }}** — оставьте значение `0`. + * **{{ ui-key.yacloud.opensearch.auth.field_enabled }}** — убедитесь, что эта опция включена. 1. Нажмите кнопку **{{ ui-key.yacloud.opensearch.auth.button_save }}**. diff --git a/ru/_tutorials/ml-ai/yagpt-tuning-multilabel.md b/ru/_tutorials/ml-ai/yagpt-tuning-multilabel.md index 35393142ad9..af1588cf40f 100644 --- a/ru/_tutorials/ml-ai/yagpt-tuning-multilabel.md +++ b/ru/_tutorials/ml-ai/yagpt-tuning-multilabel.md @@ -8,7 +8,7 @@ {% note info %} -Сервис {{ foundation-models-full-name }} находится на стадии [Preview](../../overview/concepts/launch-stages.md). +Классификаторы на базе {{ yagpt-name }} находятся на стадии [Preview](../../overview/concepts/launch-stages.md). {% endnote %} diff --git a/ru/_tutorials/ml-ai/yagpt-tuning.md b/ru/_tutorials/ml-ai/yagpt-tuning.md index b91220a6f57..18101aabbc8 100644 --- a/ru/_tutorials/ml-ai/yagpt-tuning.md +++ b/ru/_tutorials/ml-ai/yagpt-tuning.md @@ -6,12 +6,6 @@ {% endnote %} -{% note info %} - -Сервис {{ foundation-models-full-name }} находится на стадии [Preview](../../overview/concepts/launch-stages.md). - -{% endnote %} - Чтобы дообучить модель {{ yagpt-name }}: 1. [Подготовьте инфраструктуру](#infra). diff --git a/ru/_tutorials/serverless/bucket-to-bucket-copying.md b/ru/_tutorials/serverless/bucket-to-bucket-copying.md index ffa52b23693..0328a39aed8 100644 --- a/ru/_tutorials/serverless/bucket-to-bucket-copying.md +++ b/ru/_tutorials/serverless/bucket-to-bucket-copying.md @@ -17,6 +17,7 @@ Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). + ## Подготовьте облако к работе {#before-begin} {% include [before-you-begin](../_tutorials_includes/before-you-begin.md) %} @@ -31,143 +32,173 @@ * плата за хранение секретов (см. [тарифы {{ lockbox-full-name }}](../../lockbox/pricing.md)). + ## Создайте сервисные аккаунты {#create-sa} -1. Создайте [сервисный аккаунт](../../iam/concepts/users/service-accounts.md) `s3-copy-fn`, от имени которого будет работать функция: +Создайте [сервисный аккаунт](../../iam/concepts/users/service-accounts.md) `s3-copy-fn` с ролями `storage.uploader`, `storage.viewer` и `{{ roles-lockbox-payloadviewer }}`, от имени которого будет работать функция, и `s3-copy-trigger` с ролью `{{ roles-functions-invoker }}` для вызова функции. - {% list tabs group=instructions %} +{% list tabs group=instructions %} - - Консоль управления {#console} +- Консоль управления {#console} - 1. В [консоли управления]({{ link-console-main }}) выберите каталог, в котором хотите создать сервисный аккаунт. - 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_iam }}**. - 1. Нажмите кнопку **{{ ui-key.yacloud.iam.folder.service-accounts.button_add }}**. - 1. Введите имя сервисного аккаунта: `s3-copy-fn`. - 1. Нажмите **{{ ui-key.yacloud.iam.folder.service-account.label_add-role }}** и выберите роли `storage.uploader`, `storage.viewer` и `{{ roles-lockbox-payloadviewer }}`. - 1. Нажмите кнопку **{{ ui-key.yacloud.iam.folder.service-account.popup-robot_button_add }}**. - - - {{ yandex-cloud }} CLI {#cli} + 1. В [консоли управления]({{ link-console-main }}) выберите каталог, в котором хотите создать сервисный аккаунт. + 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_iam }}**. + 1. Нажмите кнопку **{{ ui-key.yacloud.iam.folder.service-accounts.button_add }}**. + 1. Укажите имя сервисного аккаунта: `s3-copy-fn`. + 1. Нажмите **{{ ui-key.yacloud.iam.folder.service-account.label_add-role }}** и выберите роли `storage.uploader`, `storage.viewer` и `{{ roles-lockbox-payloadviewer }}`. + 1. Нажмите кнопку **{{ ui-key.yacloud.iam.folder.service-account.popup-robot_button_add }}**. + 1. Повторите предыдущие шаги и создайте сервисный аккаунт `s3-copy-trigger` с ролью `{{ roles-functions-invoker }}`, от имени которого будет вызываться функция. - {% include [cli-install](../../_includes/cli-install.md) %} +- {{ yandex-cloud }} CLI {#cli} - {% include [default-catalogue](../../_includes/default-catalogue.md) %} + {% include [cli-install](../../_includes/cli-install.md) %} - 1. Создайте сервисный аккаунт `s3-copy-fn`: + {% include [default-catalogue](../../_includes/default-catalogue.md) %} - ```bash - yc iam service-account create --name s3-copy-fn - ``` + 1. Создайте сервисный аккаунт `s3-copy-fn`: - Результат: + ```bash + yc iam service-account create --name s3-copy-fn + ``` - ``` - id: nfersamh4sjq******** - folder_id: b1gc1t4cb638******** - created_at: "2023-03-21T10:36:29.726397755Z" - name: s3-copy-fn - ``` + Результат: - Сохраните идентификатор сервисного аккаунта `s3-copy-fn` (`id`) и каталога, в котором его создали (`folder_id`). + ```text + id: nfersamh4sjq******** + folder_id: b1gc1t4cb638******** + created_at: "2023-03-21T10:36:29.726397755Z" + name: s3-copy-fn + ``` - 1. Назначьте сервисному аккаунту роли `storage.uploader`, `storage.viewer` и `{{ roles-lockbox-payloadviewer }}` на каталог: + Сохраните идентификатор сервисного аккаунта `s3-copy-fn` (`id`) и каталога, в котором его создали (`folder_id`). - ```bash - yc resource-manager folder add-access-binding <идентификатор_каталога> \ - --role storage.uploader \ - --subject serviceAccount:<идентификатор_сервисного_аккаунта> + 1. Назначьте сервисному аккаунту роли `storage.uploader`, `storage.viewer` и `{{ roles-lockbox-payloadviewer }}` на каталог: - yc resource-manager folder add-access-binding <идентификатор_каталога> \ - --role storage.viewer \ - --subject serviceAccount:<идентификатор_сервисного_аккаунта> + ```bash + yc resource-manager folder add-access-binding <идентификатор_каталога> \ + --role storage.uploader \ + --subject serviceAccount:<идентификатор_сервисного_аккаунта> - yc resource-manager folder add-access-binding <идентификатор_каталога> \ - --role lockbox.payloadViewer \ - --subject serviceAccount:<идентификатор_сервисного_аккаунта> - ``` + yc resource-manager folder add-access-binding <идентификатор_каталога> \ + --role storage.viewer \ + --subject serviceAccount:<идентификатор_сервисного_аккаунта> - Результат: + yc resource-manager folder add-access-binding <идентификатор_каталога> \ + --role {{ roles-lockbox-payloadviewer }} \ + --subject serviceAccount:<идентификатор_сервисного_аккаунта> + ``` - ``` - done (1s) - ``` + Результат: - - {{ TF }} {#tf} + ```text + done (1s) + ``` + 1. Создайте сервисный аккаунт `s3-copy-trigger`: - {% include [terraform-install](../../_includes/terraform-install.md) %} + ```bash + yc iam service-account create --name s3-copy-trigger + ``` + Сохраните идентификаторы сервисного аккаунта `s3-copy-trigger` (`id`) и каталога, в котором он был создан (`folder_id`). - 1. Опишите в конфигурационном файле параметры сервисного аккаунта: + 1. Назначьте сервисному аккаунту роль `{{ roles-functions-invoker }}` на каталог: - ```hcl - resource "yandex_iam_service_account" "s3-copy-fn" { - name = "s3-copy-fn" - folder_id = "<идентификатор_каталога>" - } + ```bash + yc resource-manager folder add-access-binding <идентификатор_каталога> \ + --role storage.uploader \ + --subject serviceAccount:<идентификатор_сервисного_аккаунта> + ``` - resource "yandex_resourcemanager_folder_iam_member" "uploader" { - folder_id = "<идентификатор_каталога>" - role = "storage.uploader" - member = "serviceAccount:${yandex_iam_service_account.s3-copy-fn id}" - } +- {{ TF }} {#tf} - resource "yandex_resourcemanager_folder_iam_member" "viewer" { - folder_id = "<идентификатор_каталога>" - role = "storage.viewer" - member = "serviceAccount:${yandex_iam_service_account.s3-copy-fn id}" - } - resource "yandex_resourcemanager_folder_iam_member" "payloadViewer" { - folder_id = "<идентификатор_каталога>" - role = "lockbox.payloadViewer" - member = "serviceAccount:${yandex_iam_service_account.s3-copy-fn id}" - } - ``` + {% include [terraform-install](../../_includes/terraform-install.md) %} - Где: - * `name` — имя сервисного аккаунта. Обязательный параметр. - * `folder_id` — [идентификатор каталога](../../resource-manager/operations/folder/get-id.md). Необязательный параметр. По умолчанию будет использовано значение, указанное в настройках провайдера. - * `role` — назначаемая роль. + 1. Опишите в конфигурационном файле параметры сервисных аккаунтов: + + ```hcl + // Сервисный аккаунт для работы функции + resource "yandex_iam_service_account" "s3-copy-fn" { + name = "s3-copy-fn" + folder_id = "<идентификатор_каталога>" + } + + resource "yandex_resourcemanager_folder_iam_member" "uploader" { + folder_id = "<идентификатор_каталога>" + role = "storage.uploader" + member = "serviceAccount:${yandex_iam_service_account.s3-copy-fn.id}" + } + + resource "yandex_resourcemanager_folder_iam_member" "viewer" { + folder_id = "<идентификатор_каталога>" + role = "storage.viewer" + member = "serviceAccount:${yandex_iam_service_account.s3-copy-fn.id}" + } - Более подробную информацию о параметрах ресурса `yandex_iam_service_account` в {{ TF }}, см. в [документации провайдера]({{ tf-provider-resources-link }}/iam_service_account). + resource "yandex_resourcemanager_folder_iam_member" "payloadViewer" { + folder_id = "<идентификатор_каталога>" + role = "{{ roles-lockbox-payloadviewer }}" + member = "serviceAccount:${yandex_iam_service_account.s3-copy-fn.id}" + } - 1. Проверьте корректность конфигурационных файлов. + // Сервисный аккаунт для вызова функции + resource "yandex_iam_service_account" "s3-copy-trigger" { + name = "s3-copy-trigger" + folder_id = "<идентификатор_каталога>" + } - 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. - 1. Выполните проверку с помощью команды: + resource "yandex_resourcemanager_folder_iam_member" "functionInvoker" { + folder_id = "<идентификатор_каталога>" + role = "{{ roles-functions-invoker }}" + member = "serviceAccount:${yandex_iam_service_account.s3-copy-trigger.id}" + } + ``` - ```bash - terraform plan - ``` + Где: - Если конфигурация описана верно, в терминале отобразится информация о сервисном аккаунте. Если в конфигурации есть ошибки, {{ TF }} на них укажет. + * `name` — имя сервисного аккаунта. Обязательный параметр. + * `folder_id` — [идентификатор каталога](../../resource-manager/operations/folder/get-id.md). Необязательный параметр. По умолчанию будет использовано значение, указанное в настройках провайдера. + * `role` — назначаемая роль. - 1. Разверните облачные ресурсы. + Более подробную информацию о параметрах ресурса `yandex_iam_service_account` в {{ TF }}, см. в [документации провайдера]({{ tf-provider-resources-link }}/iam_service_account). - 1. Если в конфигурации нет ошибок, выполните команду: + 1. Проверьте корректность конфигурационных файлов. + + 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. + 1. Выполните проверку с помощью команды: - ```bash - terraform apply - ``` + ```bash + terraform plan + ``` - 1. Подтвердите создание сервисного аккаунта: введите в терминал слово `yes` и нажмите **Enter**. + Если конфигурация описана верно, в терминале отобразится информация о сервисном аккаунте. Если в конфигурации есть ошибки, {{ TF }} на них укажет. - После этого будет создан сервисный аккаунт. Проверить появление сервисного аккаунта можно в [консоли управления]({{ link-console-main }}) или с помощью команды [CLI](../../cli/quickstart.md): + 1. Разверните облачные ресурсы. - ```bash - yc iam service-account list - ``` + 1. Если в конфигурации нет ошибок, выполните команду: - - API {#api} + ```bash + terraform apply + ``` - Чтобы создать сервисный аккаунт, воспользуйтесь методом [create](../../iam/api-ref/ServiceAccount/create.md) для ресурса [ServiceAccount](../../iam/api-ref/ServiceAccount/index.md) или вызовом gRPC API [ServiceAccountService/Create](../../iam/api-ref/grpc/ServiceAccount/create.md). + 1. Подтвердите создание сервисных аккаунтов: введите в терминал слово `yes` и нажмите **Enter**. - Чтобы назначить сервисному аккаунту роли `storage.uploader`, `storage.viewer` и `{{ roles-lockbox-payloadviewer }}` на каталог, воспользуйтесь методом [setAccessBindings](../../iam/api-ref/ServiceAccount/setAccessBindings.md) для ресурса [ServiceAccount](../../iam/api-ref/ServiceAccount/index.md) или вызовом gRPC API [ServiceAccountService/SetAccessBindings](../../iam/api-ref/grpc/ServiceAccount/setAccessBindings.md). + После этого будут созданы сервисные аккаунты. Проверить появление сервисных аккаунтов можно в [консоли управления]({{ link-console-main }}) или с помощью команды [CLI](../../cli/quickstart.md): - {% endlist %} + ```bash + yc iam service-account list + ``` + +- API {#api} + + Чтобы создать сервисный аккаунт, воспользуйтесь методом [create](../../iam/api-ref/ServiceAccount/create.md) для ресурса [ServiceAccount](../../iam/api-ref/ServiceAccount/index.md) или вызовом gRPC API [ServiceAccountService/Create](../../iam/api-ref/grpc/ServiceAccount/create.md). + + Чтобы назначить сервисному аккаунту роли на каталог, воспользуйтесь методом [setAccessBindings](../../iam/api-ref/ServiceAccount/setAccessBindings.md) для ресурса [ServiceAccount](../../iam/api-ref/ServiceAccount/index.md) или вызовом gRPC API [ServiceAccountService/SetAccessBindings](../../iam/api-ref/grpc/ServiceAccount/setAccessBindings.md). + +{% endlist %} -1. Таким же образом создайте сервисный аккаунт `s3-copy-trigger` с ролью `{{ roles-functions-invoker }}`, от имени которого будет вызываться функция. ## Создайте статический ключ {#create-key} @@ -180,7 +211,7 @@ 1. В [консоли управления]({{ link-console-main }}) перейдите в каталог, в котором находится сервисный аккаунт. 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_iam }}**. - 1. На панели слева выберите ![FaceRobot](../../_assets/console-icons/face-robot.svg) **{{ ui-key.yacloud.iam.label_service-accounts }}** и выберите нужный сервисный аккаунт. + 1. На панели слева выберите ![FaceRobot](../../_assets/console-icons/face-robot.svg) **{{ ui-key.yacloud.iam.label_service-accounts }}** и выберите сервисный аккаунт `s3-copy-fn`. 1. На верхней панели нажмите кнопку **{{ ui-key.yacloud.iam.folder.service-account.overview.button_create-key-popup }}**. 1. Выберите **{{ ui-key.yacloud.iam.folder.service-account.overview.button_create_service-account-key }}**. 1. Задайте описание ключа и нажмите кнопку **{{ ui-key.yacloud.iam.folder.service-account.overview.popup-key_button_create }}**. @@ -190,20 +221,20 @@ 1. Выполните команду: - ```bash - yc iam access-key create --service-account-name s3-copy-fn - ``` + ```bash + yc iam access-key create --service-account-name s3-copy-fn + ``` - Результат: + Результат: - ```text - access_key: - id: aje6t3vsbj8l******** - service_account_id: ajepg0mjt06s******** - created_at: "2023-03-21T14:37:51Z" - key_id: 0n8X6WY6S24******** - secret: JyTRFdqw8t1kh2-OJNz4JX5ZTz9Dj1rI******** - ``` + ```text + access_key: + id: aje6t3vsbj8l******** + service_account_id: ajepg0mjt06s******** + created_at: "2023-03-21T14:37:51Z" + key_id: 0n8X6WY6S24******** + secret: JyTRFdqw8t1kh2-OJNz4JX5ZTz9Dj1rI******** + ``` 1. Сохраните идентификатор (`key_id`) и секретный ключ (`secret`). Получить значение ключа снова будет невозможно. @@ -211,45 +242,45 @@ 1. Опишите в конфигурационном файле параметры ключа: - ```hcl - resource "yandex_iam_service_account_static_access_key" "sa-static-key" { - service_account_id = "<идентификатор_сервисного_аккаунта>" - } - ``` + ```hcl + resource "yandex_iam_service_account_static_access_key" "sa-static-key" { + service_account_id = "<идентификатор_сервисного_аккаунта>" + } + ``` + + Где `service_account_id` — идентификатор сервисного аккаунта `s3-copy-fn`. - Где `service_account_id` — идентификатор сервисного аккаунта `s3-copy-fn`. + Более подробную информацию о параметрах ресурса `yandex_iam_service_account_static_access_key` в {{ TF }}, см. в [документации провайдера]({{ tf-provider-resources-link }}/iam_service_account_static_access_key). - Более подробную информацию о параметрах ресурса `yandex_iam_service_account_static_access_key` в {{ TF }}, см. в [документации провайдера]({{ tf-provider-resources-link }}/iam_service_account_static_access_key). - 1. Проверьте корректность конфигурационных файлов. - 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. - 1. Выполните проверку с помощью команды: + 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. + 1. Выполните проверку с помощью команды: - ```bash - terraform plan - ``` + ```bash + terraform plan + ``` - Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. + Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. 1. Разверните облачные ресурсы. - 1. Если в конфигурации нет ошибок, выполните команду: + 1. Если в конфигурации нет ошибок, выполните команду: - ```bash - terraform apply - ``` + ```bash + terraform apply + ``` - 1. Подтвердите создание статического ключа доступа: введите в терминал слово `yes` и нажмите **Enter**. + 1. Подтвердите создание статического ключа доступа: введите в терминал слово `yes` и нажмите **Enter**. - Если при создании ключа возникли ошибки, {{ TF }} на них укажет. - При успешном создании ключа {{ TF }} запишет его в свою конфигурацию, но не покажет пользователю. В терминал будет выведен только идентификатор созданного ключа. + Если при создании ключа возникли ошибки, {{ TF }} на них укажет. + При успешном создании ключа {{ TF }} запишет его в свою конфигурацию, но не покажет пользователю. В терминал будет выведен только идентификатор созданного ключа. - Проверить появление ключа у сервисного аккаунта можно в [консоли управления]({{ link-console-main }}) или с помощью команды [CLI](../../cli/quickstart.md): - - ```bash - yc iam access-key list --service-account-name=s3-copy-fn - ``` + Проверить появление ключа у сервисного аккаунта можно в [консоли управления]({{ link-console-main }}) или с помощью команды [CLI](../../cli/quickstart.md): + + ```bash + yc iam access-key list --service-account-name=s3-copy-fn + ``` - API {#api} @@ -257,6 +288,7 @@ {% endlist %} + ## Создайте секрет {#create-secret} Создайте [секрет](../../lockbox/quickstart.md) {{ lockbox-name }} для хранения статического ключа доступа. @@ -268,19 +300,21 @@ 1. В [консоли управления]({{ link-console-main }}) выберите каталог, в котором хотите создать секрет. 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_lockbox }}**. 1. Нажмите кнопку **{{ ui-key.yacloud.lockbox.button_create-secret }}**. - 1. В поле **{{ ui-key.yacloud.common.name }}** введите имя секрета: `s3-static-key`. - 1. В блоке **{{ ui-key.yacloud.lockbox.label_version-dialog-title }}**: + 1. В поле **{{ ui-key.yacloud.common.name }}** укажите имя секрета: `s3-static-key`. + + 1. В блоке **{{ ui-key.yacloud.lockbox.forms.title_secret-data-section }}**: - 1. Добавьте значение идентификатора ключа: + 1. Выберите тип секрета **{{ ui-key.yacloud.lockbox.forms.title_secret-type-custom }}**. + 1. Добавьте значение идентификатора ключа: - * В поле **{{ ui-key.yacloud.lockbox.forms.label_key }}** введите `key_id`. - * В поле **{{ ui-key.yacloud.lockbox.forms.label_value }}** введите значение идентификатора ключа, которое [получили ранее](#create-key). - - 1. Нажмите кнопку **{{ ui-key.yacloud.lockbox.forms.button_add-pair }}**. - 1. Добавьте значение секретного ключа: + * В поле **{{ ui-key.yacloud.lockbox.forms.label_key }}** укажите: `key_id`. + * В поле **{{ ui-key.yacloud.lockbox.forms.label_value }}** укажите значение идентификатора ключа, которое [получили ранее](#create-key). - * В поле **{{ ui-key.yacloud.lockbox.forms.label_key }}** введите `secret`. - * В поле **{{ ui-key.yacloud.lockbox.forms.label_value }}** введите значение секретного ключа, которое [получили ранее](#create-key). + 1. Нажмите кнопку **{{ ui-key.yacloud.lockbox.forms.button_add-pair }}**. + 1. Добавьте значение секретного ключа: + + * В поле **{{ ui-key.yacloud.lockbox.forms.label_key }}** укажите: `secret`. + * В поле **{{ ui-key.yacloud.lockbox.forms.label_value }}** укажите значение секретного ключа, которое [получили ранее](#create-key). 1. Нажмите кнопку **{{ ui-key.yacloud.common.create }}**. @@ -294,8 +328,8 @@ ``` Результат: - - ``` + + ```text id: e6q2ad0j9b55******** folder_id: b1gktjk2rg49******** created_at: "2021-11-08T19:23:00.383Z" @@ -314,58 +348,58 @@ - {{ TF }} {#tf} 1. Опишите в конфигурационном файле параметры секрета: - - ```hcl - resource "yandex_lockbox_secret" "my_secret" { - name = "s3-static-key" - } - - resource "yandex_lockbox_secret_version" "my_version" { - secret_id = yandex_lockbox_secret.my_secret.id - entries { - key = "key_id" - text_value = "<идентификатор_ключа>" - } - entries { - key = "secret" - text_value = "<значение_секретного_ключа>" - } - } - ``` - - Где: - - * `name` — имя секрета. - * `key` — название ключа. - * `text_value` — значение ключа. - - {% include [secret-version-tf-note](../../_includes/lockbox/secret-version-tf-note.md) %} - - Более подробную информацию о параметрах используемых ресурсов в {{ TF }} см. в документации провайдера: - - * [yandex_lockbox_secret]({{ tf-provider-resources-link }}/lockbox_secret); - * [yandex_lockbox_secret_version]({{ tf-provider-resources-link }}/lockbox_secret_version). - + + ```hcl + resource "yandex_lockbox_secret" "my_secret" { + name = "s3-static-key" + } + + resource "yandex_lockbox_secret_version" "my_version" { + secret_id = yandex_lockbox_secret.my_secret.id + entries { + key = "key_id" + text_value = "<идентификатор_ключа>" + } + entries { + key = "secret" + text_value = "<значение_секретного_ключа>" + } + } + ``` + + Где: + + * `name` — имя секрета. + * `key` — название ключа. + * `text_value` — значение ключа. + + {% include [secret-version-tf-note](../../_includes/lockbox/secret-version-tf-note.md) %} + + Более подробную информацию о параметрах используемых ресурсов в {{ TF }} см. в документации провайдера: + + * [yandex_lockbox_secret]({{ tf-provider-resources-link }}/lockbox_secret); + * [yandex_lockbox_secret_version]({{ tf-provider-resources-link }}/lockbox_secret_version). + 1. Проверьте корректность конфигурационных файлов. - 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. - 1. Выполните проверку с помощью команды: + 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. + 1. Выполните проверку с помощью команды: - ```bash - terraform plan - ``` + ```bash + terraform plan + ``` - Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. + Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. 1. Разверните облачные ресурсы. - 1. Если в конфигурации нет ошибок, выполните команду: + 1. Если в конфигурации нет ошибок, выполните команду: - ```bash - terraform apply - ``` + ```bash + terraform apply + ``` - 1. Подтвердите создание секрета: введите в терминал слово `yes` и нажмите **Enter**. + 1. Подтвердите создание секрета: введите в терминал слово `yes` и нажмите **Enter**. - API {#api} @@ -373,9 +407,10 @@ {% endlist %} + ## Создайте бакеты {{ objstorage-name }} {#create-buckets} -Создайте два бакета: основной — где будут храниться файлы, резервный — куда будут копироваться файлы из основного бакета. +Создайте два бакета: основной — где будут храниться файлы, и резервный — куда будут копироваться файлы из основного бакета. {% list tabs group=instructions %} @@ -385,29 +420,33 @@ 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_storage }}**. 1. Создайте основной бакет: - 1. Нажмите кнопку **{{ ui-key.yacloud.storage.buckets.button_create }}**. - 1. В поле **{{ ui-key.yacloud.storage.bucket.settings.field_name }}** укажите имя бакета. - 1. В полях **{{ ui-key.yacloud.storage.bucket.settings.field_access-read }}**, **{{ ui-key.yacloud.storage.bucket.settings.field_access-list }}** и **{{ ui-key.yacloud.storage.bucket.settings.field_access-config-read }}** выберите `{{ ui-key.yacloud.storage.bucket.settings.access_value_private }}`. - 1. Нажмите кнопку **{{ ui-key.yacloud.storage.buckets.create.button_create }}**. + 1. Нажмите кнопку **{{ ui-key.yacloud.storage.buckets.button_create }}**. + 1. В поле **{{ ui-key.yacloud.storage.bucket.settings.field_name }}** укажите имя для основного бакета. + 1. В полях **{{ ui-key.yacloud.storage.bucket.settings.field_access-read }}**, **{{ ui-key.yacloud.storage.bucket.settings.field_access-list }}** и **{{ ui-key.yacloud.storage.bucket.settings.field_access-config-read }}** выберите `{{ ui-key.yacloud.storage.bucket.settings.access_value_private }}`. + 1. Нажмите кнопку **{{ ui-key.yacloud.storage.buckets.create.button_create }}**. 1. Таким же образом создайте резервный бакет. - AWS CLI {#cli} - 1. Создайте основной бакет: + Если у вас еще нет интерфейса командной строки AWS CLI, [установите и сконфигурируйте его](../../storage/tools/aws-cli.md). - ```bash - aws --endpoint-url https://{{ s3-storage-host }} \ - s3 mb s3://<имя_основного_бакета> - ``` + Создайте основной и резервный бакеты: - Результат: + ```bash + aws --endpoint-url https://{{ s3-storage-host }} \ + s3 mb s3://<имя_основного_бакета> - ``` - make_bucket: s3://<имя_основного_бакета> - ``` + aws --endpoint-url https://{{ s3-storage-host }} \ + s3 mb s3://<имя_резервного_бакета> + ``` - 1. Таким же образом создайте резервный бакет. + Результат: + + ```text + make_bucket: <имя_основного_бакета> + make_bucket: <имя_резервного_бакета> + ``` - {{ TF }} {#tf} @@ -415,46 +454,46 @@ 1. Опишите в конфигурационном файле параметры для создания сервисного аккаунта и ключа доступа: - {% include [terraform-sa-key](../../_includes/storage/terraform-sa-key.md) %} + {% include [terraform-sa-key](../../_includes/storage/terraform-sa-key.md) %} 1. Опишите в конфигурационном файле параметры основного и резервного бакетов: - ``` - resource "yandex_storage_bucket" "main-bucket" { - access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key - secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key - bucket = "<имя_основного_бакета>" - } + ```hcl + resource "yandex_storage_bucket" "main-bucket" { + access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key + secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key + bucket = "<имя_основного_бакета>" + } - resource "yandex_storage_bucket" "reserve-bucket" { - access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key - secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key - bucket = "<имя_резервного_бакета>" - } - ``` + resource "yandex_storage_bucket" "reserve-bucket" { + access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key + secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key + bucket = "<имя_резервного_бакета>" + } + ``` - Подробнее о ресурсе `yandex_storage_bucket` см. в [документации]({{ tf-provider-resources-link }}/storage_bucket) провайдера {{ TF }}. + Подробнее о ресурсе `yandex_storage_bucket` см. в [документации]({{ tf-provider-resources-link }}/storage_bucket) провайдера {{ TF }}. 1. Проверьте корректность конфигурационных файлов. - 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. - 1. Выполните проверку с помощью команды: + 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. + 1. Выполните проверку с помощью команды: - ```bash - terraform plan - ``` + ```bash + terraform plan + ``` - Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. + Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. 1. Разверните облачные ресурсы. - 1. Если в конфигурации нет ошибок, выполните команду: + 1. Если в конфигурации нет ошибок, выполните команду: - ```bash - terraform apply - ``` + ```bash + terraform apply + ``` - 1. Подтвердите создание бакетов: введите в терминал слово `yes` и нажмите **Enter**. + 1. Подтвердите создание бакетов: введите в терминал слово `yes` и нажмите **Enter**. - API {#api} @@ -462,24 +501,26 @@ {% endlist %} + ## Подготовьте ZIP-архив с кодом функции {#create-zip} 1. Сохраните следующий код в файл с названием `handler.sh`: - ```bash - set -e - ( - cat | jq -c '.messages[]' | while read message; - do - SRC_BUCKET=$(echo "$message" | jq -r .details.bucket_id) - SRC_OBJECT=$(echo "$message" | jq -r .details.object_id) - aws --endpoint-url="$S3_ENDPOINT" s3 cp "s3://$SRC_BUCKET/$SRC_OBJECT" "s3://$DST_BUCKET/$SRC_OBJECT" - done; - ) 1>&2 - ``` + ```bash + set -e + ( + cat | jq -c '.messages[]' | while read message; + do + SRC_BUCKET=$(echo "$message" | jq -r .details.bucket_id) + SRC_OBJECT=$(echo "$message" | jq -r .details.object_id) + aws --endpoint-url="$S3_ENDPOINT" s3 cp "s3://$SRC_BUCKET/$SRC_OBJECT" "s3://$DST_BUCKET/$SRC_OBJECT" + done; + ) 1>&2 + ``` 1. Добавьте файл `handler.sh` в ZIP-архив `handler-sh.zip`. + ## Создайте функцию {#create-function} Создайте функцию, которая при добавлении нового [объекта](../../storage/concepts/object.md) в основной бакет будет копировать его в резервный бакет. @@ -492,185 +533,184 @@ 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_serverless-functions }}** 1. Создайте функцию: - 1. Нажмите кнопку **{{ ui-key.yacloud.serverless-functions.list.button_create }}**. - 1. Введите имя функции — `copy-function`. - 1. Нажмите кнопку **{{ ui-key.yacloud.common.create }}**. - + 1. Нажмите кнопку **{{ ui-key.yacloud.serverless-functions.list.button_create }}**. + 1. Укажите имя функции — `copy-function`. + 1. Нажмите кнопку **{{ ui-key.yacloud.common.create }}**. + 1. Создайте версию функции: - 1. Выберите среду выполнения `Bash`, отключите опцию **{{ ui-key.yacloud.serverless-functions.item.editor.label_with-template }}** и нажмите кнопку **{{ ui-key.yacloud.serverless-functions.item.editor.button_action-continue }}**. - 1. Укажите способ загрузки `{{ ui-key.yacloud.serverless-functions.item.editor.value_method-zip-file }}` и выберите архив `handler-sh.zip`, который создали на предыдущем шаге. - 1. Укажите точку входа `handler.sh`. - 1. В блоке **{{ ui-key.yacloud.serverless-functions.item.editor.label_title-params }}** укажите: + 1. Выберите среду выполнения `Bash`, отключите опцию **{{ ui-key.yacloud.serverless-functions.item.editor.label_with-template }}** и нажмите кнопку **{{ ui-key.yacloud.serverless-functions.item.editor.button_action-continue }}**. + 1. Укажите способ загрузки `{{ ui-key.yacloud.serverless-functions.item.editor.value_method-zip-file }}` и выберите архив `handler-sh.zip`, который создали на предыдущем шаге. + 1. Укажите точку входа `handler.sh`. + 1. В блоке **{{ ui-key.yacloud.serverless-functions.item.editor.label_title-params }}** укажите: + + * **{{ ui-key.yacloud.serverless-functions.item.editor.field_timeout }}** — `600`. + * **{{ ui-key.yacloud.serverless-functions.item.editor.field_resources-memory }}** — `128 {{ ui-key.yacloud.common.units.label_megabyte }}`. + * **{{ ui-key.yacloud.forms.label_service-account-select }}** — `s3-copy-fn`. + * **{{ ui-key.yacloud.serverless-functions.item.editor.field_environment-variables }}**: - * **{{ ui-key.yacloud.serverless-functions.item.editor.field_timeout }}** — `600`. - * **{{ ui-key.yacloud.serverless-functions.item.editor.field_resources-memory }}** — `128 {{ ui-key.yacloud.common.units.label_megabyte }}`. - * **{{ ui-key.yacloud.forms.label_service-account-select }}** — `s3-copy-fn`. - * **{{ ui-key.yacloud.serverless-functions.item.editor.field_environment-variables }}**: + * `S3_ENDPOINT` — `https://{{ s3-storage-host }}`. + * `DST_BUCKET` — имя резервного бакета, в который нужно копировать объекты. - * `S3_ENDPOINT` — `https://{{ s3-storage-host }}`. - * `DST_BUCKET` — имя резервного бакета, в который нужно копировать объекты. + * **{{ ui-key.yacloud.serverless-functions.item.editor.label_lockbox-secret }}**: - * **{{ ui-key.yacloud.serverless-functions.item.editor.label_lockbox-secret }}**: + * `AWS_ACCESS_KEY_ID` — идентификатор секрета `s3-static-key`, идентификатор версии `latest`, ключ секрета `key_id`. + * `AWS_SECRET_ACCESS_KEY` — идентификатор секрета `s3-static-key`, идентификатор версии `latest`, ключ секрета `secret`. - * `AWS_ACCESS_KEY_ID` — ключ `key_id` секрета `s3-static-key`. - * `AWS_SECRET_ACCESS_KEY` — ключ `secret` секрета `s3-static-key`. - 1. Нажмите кнопку **{{ ui-key.yacloud.serverless-functions.item.editor.button_deploy-version }}**. - {{ yandex-cloud }} CLI {#cli} 1. Создайте функцию `copy-function`: - ```bash - yc serverless function create --name=copy-function - ``` + ```bash + yc serverless function create --name=copy-function + ``` - Результат: + Результат: - ``` - id: b09bhaokchn9******** - folder_id: aoek49ghmknn******** - created_at: "2023-03-21T10:03:37.475Z" - name: copy-function - log_group_id: eolm8aoq9vcp******** - http_invoke_url: https://{{ sf-url }}/b09bhaokchn9******** - status: ACTIVE - ``` + ```text + id: b09bhaokchn9******** + folder_id: <идентификатор_каталога> + created_at: "2024-10-21T20:40:03.451Z" + name: copy-function + http_invoke_url: https://{{ sf-url }}/b09bhaokchn9******** + status: ACTIVE + ``` 1. Создайте версию функции `copy-function`: - ```bash - yc serverless function version create \ - --function-name copy-function \ - --memory=128m \ - --execution-timeout=600s \ - --runtime=bash \ - --entrypoint=handler.sh \ - --service-account-id=<идентификатор_сервисного_аккаунта> \ - --environment DST_BUCKET=<имя_резервного_бакета> \ - --environment S3_ENDPOINT=https://{{ s3-storage-host }} \ - --secret name=s3-static-key,key=key_id,environment-variable=AWS_ACCESS_KEY_ID \ - --secret name=s3-static-key,key=secret,environment-variable=AWS_SECRET_ACCESS_KEY \ - --source-path=./handler-sh.zip - ``` - - Где: - - * `--function-name` — имя функции, версия которой создается. - * `--memory` — объем RAM. - * `--execution-timeout` — максимальное время выполнения функции до таймаута. - * `--runtime` — среда выполнения. - * `--entrypoint` — точка входа. - * `--service-account-id` — идентификатор сервисного аккаунта `s3-copy-fn`. - * `--environment` — переменные окружения. - * `--secret` — секрет, содержащий части статического ключа доступа. - * `--source-path` — путь до ZIP-архива `handler-sh.zip`. - - Результат: - - ``` - done (1s) - id: d4e6qqlh53nu******** - function_id: d4emc80mnp5n******** - created_at: "2023-03-22T16:49:41.800Z" - runtime: bash - entrypoint: handler.sh - resources: - memory: "134217728" - execution_timeout: 600s - service_account_id: aje20nhregkc******** - image_size: "4096" - status: ACTIVE - tags: - - $latest - log_group_id: ckgmc3l93cl0******** - environment: - DST_BUCKET: <имя_резервного_бакета> - S3_ENDPOINT: https://{{ s3-storage-host }} - secrets: - - id: e6q5qe9a1hgk******** - version_id: e6qrdn2e1acb******** - key: key_id - environment_variable: AWS_ACCESS_KEY_ID - - id: e6q5qe9a1hgk******** - version_id: e6qrdn2e1acb******** - key: secret - environment_variable: AWS_SECRET_ACCESS_KEY - log_options: - folder_id: b1g86q4m5vej******** - ``` + ```bash + yc serverless function version create \ + --function-name copy-function \ + --memory=128m \ + --execution-timeout=600s \ + --runtime=bash \ + --entrypoint=handler.sh \ + --service-account-id=<идентификатор_сервисного_аккаунта> \ + --environment DST_BUCKET=<имя_резервного_бакета> \ + --environment S3_ENDPOINT=https://{{ s3-storage-host }} \ + --secret name=s3-static-key,key=key_id,environment-variable=AWS_ACCESS_KEY_ID \ + --secret name=s3-static-key,key=secret,environment-variable=AWS_SECRET_ACCESS_KEY \ + --source-path=./handler-sh.zip + ``` + + Где: + + * `--function-name` — имя функции, версия которой создается. + * `--memory` — объем RAM. + * `--execution-timeout` — максимальное время выполнения функции до таймаута. + * `--runtime` — среда выполнения. + * `--entrypoint` — точка входа. + * `--service-account-id` — идентификатор сервисного аккаунта `s3-copy-fn`. + * `--environment` — переменные окружения. + * `--secret` — секрет, содержащий части статического ключа доступа. + * `--source-path` — путь до ZIP-архива `handler-sh.zip`. + + Результат: + + ```text + done (1s) + id: d4e394pt4nhf******** + function_id: d4efnkn79m7n******** + created_at: "2024-10-21T20:41:01.345Z" + runtime: bash + entrypoint: handler.sh + resources: + memory: "134217728" + execution_timeout: 600s + service_account_id: ajelprpohp7r******** + image_size: "4096" + status: ACTIVE + tags: + - $latest + environment: + DST_BUCKET: <имя_резервного_бакета> + S3_ENDPOINT: https://{{ s3-storage-host }} + secrets: + - id: e6qo2oprlmgn******** + version_id: e6q6i1qt0ae8******** + key: key_id + environment_variable: AWS_ACCESS_KEY_ID + - id: e6qo2oprlmgn******** + version_id: e6q6i1qt0ae8******** + key: secret + environment_variable: AWS_SECRET_ACCESS_KEY + log_options: + folder_id: b1g681qpemb4******** + concurrency: "1" + ``` - {{ TF }} {#tf} 1. Опишите в конфигурационном файле параметры функции: - ``` - resource "yandex_function" "copy-function" { - name = "copy-functionn" - user_hash = "first function" - runtime = "bash" - entrypoint = "handler.sh" - memory = "128" - execution_timeout = "600" - service_account_id = "aje20nhregkcvu******" - environment = { - DST_BUCKET = "<имя_резервного_бакета>" - S3_ENDPOINT = "https://{{ s3-storage-host }}" - } - secrets = { - id = "e6q5qe9a1hgk1a******" - version_id = "e6qrdn2e1acb7e******" - key = "key_id" - environment_variable = "AWS_ACCESS_KEY_ID" - } - secrets = { - id = "e6q5qe9a1hgk1a******" - version_id = "e6qrdn2e1acb7e******" - key = "secret" - environment_variable = "AWS_SECRET_ACCESS_KEY" - } - content { - zip_filename = "./handler-sh.zip" - } - } - ``` - - Где: - - * `name` — имя функции. - * `user_hash` — произвольная строка, определяющая версию функции. - * `runtime` — [среда выполнения](../../functions/concepts/runtime/index.md) функции. - * `entrypoint` — точка входа. - * `memory` — объем памяти в мегабайтах, отведенный для выполнения функции. - * `execution_timeout` — таймаут выполнения функции. - * `service_account_id` — идентификатор сервисного аккаунта `s3-copy-fn`. - * `environment` — переменные окружения. - * `secrets` — секрет, содержащий части статического ключа доступа. - * `content` — путь до ZIP-архива `handler-sh.zip` c исходным кодом функции. - - Более подробную информацию о параметрах ресурса `yandex_function` см. в [документации провайдера]({{ tf-provider-resources-link }}/function). + ```hcl + resource "yandex_function" "copy-function" { + name = "copy-functionn" + user_hash = "first function" + runtime = "bash" + entrypoint = "handler.sh" + memory = "128" + execution_timeout = "600" + service_account_id = "<идентификатор_сервисного_аккаунта>" + environment = { + DST_BUCKET = "<имя_резервного_бакета>" + S3_ENDPOINT = "https://{{ s3-storage-host }}" + } + secrets = { + id = "<идентификатор_секрета>" + version_id = "<идентификатор_версии_секрета>" + key = "key_id" + environment_variable = "AWS_ACCESS_KEY_ID" + } + secrets = { + id = "<идентификатор_секрета>" + version_id = "<идентификатор_версии_секрета>" + key = "secret" + environment_variable = "AWS_SECRET_ACCESS_KEY" + } + content { + zip_filename = "./handler-sh.zip" + } + } + ``` + + Где: + + * `name` — имя функции. + * `user_hash` — произвольная строка, определяющая версию функции. + * `runtime` — [среда выполнения](../../functions/concepts/runtime/index.md) функции. + * `entrypoint` — точка входа. + * `memory` — объем памяти в мегабайтах, отведенный для выполнения функции. + * `execution_timeout` — таймаут выполнения функции. + * `service_account_id` — идентификатор сервисного аккаунта `s3-copy-fn`. + * `environment` — переменные окружения. + * `secrets` — секрет, содержащий части статического ключа доступа. + * `content` — путь до ZIP-архива `handler-sh.zip` c исходным кодом функции. + + Более подробную информацию о параметрах ресурса `yandex_function` см. в [документации провайдера]({{ tf-provider-resources-link }}/function). 1. Проверьте корректность конфигурационных файлов. - 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. - 1. Выполните проверку с помощью команды: + 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. + 1. Выполните проверку с помощью команды: - ```bash - terraform plan - ``` + ```bash + terraform plan + ``` - Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. + Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. 1. Разверните облачные ресурсы. - 1. Если в конфигурации нет ошибок, выполните команду: + 1. Если в конфигурации нет ошибок, выполните команду: - ```bash - terraform apply - ``` + ```bash + terraform apply + ``` - 1. Подтвердите создание функции: введите в терминал слово `yes` и нажмите **Enter**. + 1. Подтвердите создание функции: введите в терминал слово `yes` и нажмите **Enter**. - API {#api} @@ -680,6 +720,7 @@ {% endlist %} + ## Создайте триггер {#create-trigger} Создайте триггер для {{ objstorage-name }}, который будет вызывать функцию `copy-function` при создании нового объекта в основном бакете. @@ -694,19 +735,19 @@ 1. Нажмите кнопку **{{ ui-key.yacloud.serverless-functions.triggers.list.button_create }}**. 1. В блоке **{{ ui-key.yacloud.serverless-functions.triggers.form.section_base }}**: - * Введите имя триггера: `bucket-to-bucket-copying`. - * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_type }}** выберите **{{ ui-key.yacloud.serverless-functions.triggers.form.label_storage }}**. - * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_invoke }}** выберите **{{ ui-key.yacloud.serverless-functions.triggers.form.label_function }}**. + * Укажите имя триггера: `bucket-to-bucket-copying`. + * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_type }}** выберите `{{ ui-key.yacloud.serverless-functions.triggers.form.label_storage }}`. + * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_invoke }}** выберите `{{ ui-key.yacloud.serverless-functions.triggers.form.label_function }}`. 1. В блоке **{{ ui-key.yacloud.serverless-functions.triggers.form.section_storage }}**: - * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_bucket }}** выберите основной бакет. - * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_event-types }}** выберите `{{ ui-key.yacloud.serverless-functions.triggers.form.value_event-type-create-object}}`. + * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_bucket }}** выберите основной бакет. + * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_event-types }}** выберите `{{ ui-key.yacloud.serverless-functions.triggers.form.value_event-type-create-object}}`. 1. В блоке **{{ ui-key.yacloud.serverless-functions.triggers.form.section_function }}**: - * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_function }}** выберите функцию `copy-function`. - * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_function_service-account }}** выберите сервисный аккаунт `s3-copy-trigger`. + * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_function }}** выберите функцию `copy-function`. + * В поле **{{ ui-key.yacloud.serverless-functions.triggers.form.field_function_service-account }}** выберите сервисный аккаунт `s3-copy-trigger`. 1. Нажмите кнопку **{{ ui-key.yacloud.serverless-functions.triggers.form.button_create-trigger }}**. @@ -717,7 +758,7 @@ ```bash yc serverless trigger create object-storage \ --name bucket-to-bucket-copying \ - --bucket-id <идентификатор_бакета> \ + --bucket-id <имя_основного_бакета> \ --events 'create-object' \ --invoke-function-name copy-function \ --invoke-function-service-account-name s3-copy-trigger @@ -726,7 +767,7 @@ Где: * `--name` — имя триггера. - * `--bucket-id` — идентификатор основного бакета. + * `--bucket-id` — имя основного бакета. * `--events` — [события](../../functions/concepts/trigger/os-trigger.md#event), после наступления которых триггер запускается. * `--invoke-function-name` — имя вызываемой функции. * `--invoke-function-service-account-name` — имя сервисного аккаунта, от имени которого будет вызываться функция. @@ -736,13 +777,16 @@ ```text id: a1s92agr8mpg******** folder_id: b1g88tflru0e******** - created_at: "2023-03-22T09:47:50.079103Z" + created_at: "2024-10-21T21:04:01.866959640Z" name: bucket-to-bucket-copying rule: object_storage: event_type: - - OBJECT_STORAGE_EVENT_TYPE_CREATE_OBJECT + - OBJECT_STORAGE_EVENT_TYPE_CREATE_OBJECT bucket_id: <имя_основного_бакета> + batch_settings: + size: "1" + cutoff: 1s invoke_function: function_id: d4eofc7n0m03******** function_tag: $latest @@ -754,52 +798,52 @@ 1. Опишите в конфигурационном файле параметры триггера: - ```hcl - resource "yandex_function_trigger" "my_trigger" { - name = "bucket-to-bucket-copying" - object_storage { - bucket_id = "<идентификатор_бакета>" - create = true - } - function { - id = "<идентификатор_функции>" - service_account_id = "<идентификатор_сервисного_аккаунта>" - } - } - ``` - - Где: - - * `name` — имя триггера. - * `object_storage` — параметры хранилища: - * `bucket_id` — идентификатор бакета. - * `create` — триггер вызовет функцию при создании нового объекта в хранилище. - * `function` — настройки функции, которую будет запускать триггер: - * `id` — идентификатор функции `copy-function`. - * `service_account_id` — идентификатор сервисного аккаунта `s3-copy-trigger`. - - Более подробную информацию о параметрах ресурсов в {{ TF }} см. в [документации провайдера]({{ tf-provider-resources-link }}/function_trigger). + ```hcl + resource "yandex_function_trigger" "my_trigger" { + name = "bucket-to-bucket-copying" + object_storage { + bucket_id = "<имя_основного_бакета>" + create = true + } + function { + id = "<идентификатор_функции>" + service_account_id = "<идентификатор_сервисного_аккаунта>" + } + } + ``` + + Где: + + * `name` — имя триггера. + * `object_storage` — параметры хранилища: + * `bucket_id` — имя основного бакета. + * `create` — триггер вызовет функцию при создании нового объекта в хранилище. + * `function` — настройки функции, которую будет запускать триггер: + * `id` — идентификатор функции `copy-function`. + * `service_account_id` — идентификатор сервисного аккаунта `s3-copy-trigger`. + + Более подробную информацию о параметрах ресурсов в {{ TF }} см. в [документации провайдера]({{ tf-provider-resources-link }}/function_trigger). 1. Проверьте корректность конфигурационных файлов. - 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. - 1. Выполните проверку с помощью команды: + 1. В командной строке перейдите в папку, где вы создали конфигурационный файл. + 1. Выполните проверку с помощью команды: - ```bash - terraform plan - ``` + ```bash + terraform plan + ``` - Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. + Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, {{ TF }} на них укажет. 1. Разверните облачные ресурсы. - 1. Если в конфигурации нет ошибок, выполните команду: + 1. Если в конфигурации нет ошибок, выполните команду: - ```bash - terraform apply - ``` + ```bash + terraform apply + ``` - 1. Подтвердите создание триггера: введите в терминал слово `yes` и нажмите **Enter**. + 1. Подтвердите создание триггера: введите в терминал слово `yes` и нажмите **Enter**. - API {#api} @@ -807,6 +851,7 @@ {% endlist %} + ## Протестируйте функцию {#test-function} {% list tabs group=instructions %} @@ -827,6 +872,7 @@ ## Как удалить созданные ресурсы {#clear-out} + Чтобы перестать платить за созданные ресурсы: 1. [Удалите](../../storage/operations/objects/delete-all.md) объекты из бакетов. diff --git a/ru/api-gateway/toc.yaml b/ru/api-gateway/toc.yaml index 99decd25fec..da4ec7155d9 100644 --- a/ru/api-gateway/toc.yaml +++ b/ru/api-gateway/toc.yaml @@ -137,6 +137,10 @@ items: Использование {{ api-gw-name }} для настройки синтеза речи в {{ speechkit-full-name }} href: tutorials/speechkit-integrarion-via-agi-gw.md + - name: Сокращатель ссылок + href: tutorials/serverless-url-shortener.md + - name: Ввод данных в системы хранения + href: tutorials/data-ingestion.md - name: Концепции items: - name: Взаимосвязь ресурсов сервиса diff --git a/ru/api-gateway/tutorials/data-ingestion.md b/ru/api-gateway/tutorials/data-ingestion.md new file mode 100644 index 00000000000..daef82382a9 --- /dev/null +++ b/ru/api-gateway/tutorials/data-ingestion.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/data-ingestion' +--- + +{% include [data-ingestion](../../_tutorials/serverless/data-ingestion.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} \ No newline at end of file diff --git a/ru/api-gateway/tutorials/index.md b/ru/api-gateway/tutorials/index.md index b8d196eab63..5b3cb5185d2 100644 --- a/ru/api-gateway/tutorials/index.md +++ b/ru/api-gateway/tutorials/index.md @@ -17,4 +17,6 @@ description: Различные сценарии использования {{ a * [{#T}](serverless-live-debug.md) * [{#T}](jwt-authorizer-firebase.md) * [{#T}](canary-release.md) -* [{#T}](speechkit-integrarion-via-agi-gw.md) \ No newline at end of file +* [{#T}](speechkit-integrarion-via-agi-gw.md) +* [{#T}](serverless-url-shortener.md) +* [{#T}](data-ingestion.md) \ No newline at end of file diff --git a/ru/api-gateway/tutorials/serverless-url-shortener.md b/ru/api-gateway/tutorials/serverless-url-shortener.md new file mode 100644 index 00000000000..08459418247 --- /dev/null +++ b/ru/api-gateway/tutorials/serverless-url-shortener.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/serverless-url-shortener' +--- + +{% include [serverless-url-shortener](../../_tutorials/serverless/serverless-url-shortener.md) %} \ No newline at end of file diff --git a/ru/cdn/quickstart.md b/ru/cdn/quickstart.md index 62723d4d6d5..3d65e0ef864 100644 --- a/ru/cdn/quickstart.md +++ b/ru/cdn/quickstart.md @@ -7,10 +7,10 @@ description: Следуя данной инструкции, вы сможете Настройте раздачу контента через CDN на примере бакета {{ objstorage-name }}: -1. [{#T}](#create-cdn-resource). -1. [{#T}](#upload-content-to-CDN). -1. [{#T}](#setup-cname). -1. [{#T}](#check-cdn-working). +1. [Создайте CDN-ресурс](#create-cdn-resource). +1. [Загрузите контент в CDN](#upload-content-to-CDN). +1. [Настройте CNAME для своего домена](#setup-cname). +1. [Проверьте работу CDN](#check-cdn-working). ## Перед началом работы {#before-you-begin} diff --git a/ru/cloud-desktop/quickstart.md b/ru/cloud-desktop/quickstart.md index 142f081a944..d6525243c07 100644 --- a/ru/cloud-desktop/quickstart.md +++ b/ru/cloud-desktop/quickstart.md @@ -7,7 +7,7 @@ description: Следуя данной инструкции, вы сможете {% note info %} -Инструкция содержит информацию о создании и настройке [группы рабочих столов](concepts/desktops-and-groups.md). Если вы получили от администратора ссылку на [витрину пользовательских рабочих столов](concepts/showcase.md), перейдите к подразделу [{#T}](#get-credentials). +Инструкция содержит информацию о создании и настройке [группы рабочих столов](concepts/desktops-and-groups.md). Если вы получили от администратора ссылку на [витрину пользовательских рабочих столов](concepts/showcase.md), перейдите к подразделу [Получите данные для подключения](#get-credentials). {% endnote %} diff --git a/ru/compute/operations/image-create/upload.md b/ru/compute/operations/image-create/upload.md index 34036919d8e..16a007b7bdb 100644 --- a/ru/compute/operations/image-create/upload.md +++ b/ru/compute/operations/image-create/upload.md @@ -145,6 +145,8 @@ keywords: ## Создайте ВМ из подготовленного образа {#create-vm-from-user-image} +Вы можете создать виртуальную машину с дисками, из подготовленного заранее образа. + {% include notitle [Как создать ВМ из своего образа](../../operations/vm-create/create-from-user-image.md#create-vm-from-image) %} О стоимости использования {{ objstorage-name }} читайте в разделе [{#T}](../../../storage/pricing.md). \ No newline at end of file diff --git a/ru/compute/operations/vm-create/create-from-snapshots.md b/ru/compute/operations/vm-create/create-from-snapshots.md index 64b7c1b3c73..92bde075926 100644 --- a/ru/compute/operations/vm-create/create-from-snapshots.md +++ b/ru/compute/operations/vm-create/create-from-snapshots.md @@ -8,4 +8,6 @@ description: Следуя данной инструкции, вы сможете Вы можете создать виртуальную машину с дисками, восстановленными из имеющихся в каталоге снимков. О том, как создать снимок диска, см. раздел [{#T}](../disk-control/create-snapshot.md). +{% include [independent-resources](../../../_includes/compute/independent-resources.md) %} + {% include [create-from-snapshot](../../../_includes/compute/create-from-snapshot.md) %} \ No newline at end of file diff --git a/ru/compute/operations/vm-create/create-from-user-image.md b/ru/compute/operations/vm-create/create-from-user-image.md index c7d150238fd..ce7cfcb7949 100644 --- a/ru/compute/operations/vm-create/create-from-user-image.md +++ b/ru/compute/operations/vm-create/create-from-user-image.md @@ -13,6 +13,8 @@ description: Следуя данной инструкции, вы сможете ## Создайте ВМ из подготовленного образа {#create-vm-from-image} +{% include [independent-resources](../../../_includes/compute/independent-resources.md) %} + {% list tabs group=instructions %} - Консоль управления {#console} diff --git a/ru/compute/release-notes.md b/ru/compute/release-notes.md index 4dc8197626a..9f718ddbc98 100644 --- a/ru/compute/release-notes.md +++ b/ru/compute/release-notes.md @@ -5,6 +5,11 @@ description: В разделе представлена история изме # История изменений в {{ compute-full-name }} +## III квартал 2024 {#q3-2024} + +* Реализована новая PCI-топология. Создать ВМ с новой топологией можно командой `yc instance create` с параметрами `--hardware-generation-id=generation2` и `--hardware-features pci_topology=v2`. +* QEMU обновлен до версии 7. + ## II квартал 2024 {#q2-2024} * Увеличены [лимиты](concepts/limits.md) сетевых соединений. diff --git a/ru/data-transfer/toc.yaml b/ru/data-transfer/toc.yaml index 180ec433eaf..ed9907fe27a 100644 --- a/ru/data-transfer/toc.yaml +++ b/ru/data-transfer/toc.yaml @@ -205,6 +205,8 @@ items: href: tutorials/yds-to-objstorage.md - name: '{{ DS }} в {{ OS }}' href: tutorials/trails-to-os.md + - name: Ввод данных в системы хранения + href: tutorials/data-ingestion.md - name: Загрузка данных в витрины items: - name: '{{ GP }} в {{ CH }}' diff --git a/ru/data-transfer/tutorials/data-ingestion.md b/ru/data-transfer/tutorials/data-ingestion.md new file mode 100644 index 00000000000..daef82382a9 --- /dev/null +++ b/ru/data-transfer/tutorials/data-ingestion.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/data-ingestion' +--- + +{% include [data-ingestion](../../_tutorials/serverless/data-ingestion.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} \ No newline at end of file diff --git a/ru/data-transfer/tutorials/index.md b/ru/data-transfer/tutorials/index.md index bd3fa5a8646..8418e32647e 100644 --- a/ru/data-transfer/tutorials/index.md +++ b/ru/data-transfer/tutorials/index.md @@ -72,6 +72,7 @@ C помощью {{ data-transfer-name }} вы можете реализоват * [{{ DS }} в {{ CH }}](yds-to-clickhouse.md) * [{{ DS }} в {{ objstorage-name }}](yds-to-objstorage.md) * [{{ DS }} в {{ OS }}](trails-to-os.md) +* [{#T}](data-ingestion.md) ## Загрузка данных в витрины {#upload-to-data-mart} diff --git a/ru/datalens/dataset/index.md b/ru/datalens/dataset/index.md index b4c232860cd..351a241a52a 100644 --- a/ru/datalens/dataset/index.md +++ b/ru/datalens/dataset/index.md @@ -5,7 +5,7 @@ _Датасет_ описывает набор данных и его струк {{ datalens-short-name }} создает датасет на основе источника данных, для которого существует [подключение](../concepts/connection.md). -Датасет работает с источниками в режиме прямого доступа: все запросы к данным {{ datalens-short-name }} выполняет на стороне источника. +Датасет работает с источниками в режиме прямого доступа: все запросы к данным выполняются на стороне источника. При этом изменять данные в самом источнике с помощью {{ datalens-short-name }} нельзя. diff --git a/ru/datalens/pricing.md b/ru/datalens/pricing.md index a355e1ffd4f..54085e691b5 100644 --- a/ru/datalens/pricing.md +++ b/ru/datalens/pricing.md @@ -27,7 +27,7 @@ editable: false [Описание модели данных](./dataset/data-model.md) | ![image](../_assets/common/yes.svg) | ![image](../_assets/common/yes.svg) [Аналитические вычисления и SQL](./concepts/calculations/index.md) | ![image](../_assets/common/yes.svg) | ![image](../_assets/common/yes.svg) [Ролевая модель прав доступа](./security/roles.md) | ![image](../_assets/common/yes.svg) | ![image](../_assets/common/yes.svg) -[Аутентификация](./security/add-new-user.md) | Яндекс ID | Яндекс ID, корпоративные учетные записи / SSO¹ +[Аутентификация](./security/add-new-user.md) | Яндекс ID, Яндекс 360 | Яндекс ID, Яндекс 360, корпоративные учетные записи / SSO¹ [Конструктор отчетов](./reports/index.md) | ![image](../_assets/common/no.svg) | ![image](../_assets/common/yes.svg) [Стилизация интерфейса {{ datalens-name }}](./settings/ui-customization.md) | ![image](../_assets/common/no.svg) | ![image](../_assets/common/yes.svg) [Безопасное встраивание чартов и дашбордов](./security/private-embedded-objects.md) | ![image](../_assets/common/no.svg) | ![image](../_assets/common/yes.svg) diff --git a/ru/datalens/qa/datasets.md b/ru/datalens/qa/datasets.md index 863fe33b496..9ca7fd8e385 100644 --- a/ru/datalens/qa/datasets.md +++ b/ru/datalens/qa/datasets.md @@ -1,5 +1,7 @@ # Датасеты +{% include [how-to-change-source-data](../../_qa/datalens/change-source-data.md) %} + {% include [incorrectly-identified-date-field](../../_qa/datalens/incorrectly-identified-date-field.md) %} diff --git a/ru/datalens/toc.yaml b/ru/datalens/toc.yaml index 5df31221a75..5cd7349e4f5 100644 --- a/ru/datalens/toc.yaml +++ b/ru/datalens/toc.yaml @@ -67,6 +67,8 @@ items: href: tutorials/data-from-bitrix24-visualization.md - name: '{{ tracker-full-name }}: экспорт и визуализация данных' href: tutorials/data-from-tracker.md + - name: Анализ логов {{ objstorage-name }} при помощи {{ datalens-name }} + href: tutorials/storage-logs-analysis.md - name: 'Подкасты Яндекс Музыки: статистика' href: tutorials/data-from-podcasts.md - name: Визуализация данных {{ yq-full-name }} diff --git a/ru/datalens/tutorials/data-from-bitrix24-visualization.md b/ru/datalens/tutorials/data-from-bitrix24-visualization.md index 2cf79ba239b..35846d2ba74 100644 --- a/ru/datalens/tutorials/data-from-bitrix24-visualization.md +++ b/ru/datalens/tutorials/data-from-bitrix24-visualization.md @@ -1 +1,6 @@ +--- +canonical: '{{ link-docs }}/tutorials/data-from-bitrix24-visualization' +--- + + {% include [data-from-bitrix24-visualization](../../_tutorials/datalens/data-from-bitrix24-visualization.md) %} diff --git a/ru/datalens/tutorials/data-from-ch-over-yt.md b/ru/datalens/tutorials/data-from-ch-over-yt.md index 8548d518a2a..3a56f582408 100644 --- a/ru/datalens/tutorials/data-from-ch-over-yt.md +++ b/ru/datalens/tutorials/data-from-ch-over-yt.md @@ -1,5 +1,5 @@ --- -canonical: '{{ link-docs }}/tutorials/datalens/data-from-ch-over-yt.md' +canonical: '{{ link-docs }}/tutorials/datalens/data-from-ch-over-yt' --- {% include [data-from-ch-over-yt](../../_tutorials/datalens/data-from-ch-over-yt.md) %} diff --git a/ru/datalens/tutorials/data-from-ch-with-parameters.md b/ru/datalens/tutorials/data-from-ch-with-parameters.md index ffeff46d5fb..12b975e21da 100644 --- a/ru/datalens/tutorials/data-from-ch-with-parameters.md +++ b/ru/datalens/tutorials/data-from-ch-with-parameters.md @@ -1,3 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-ch-with-parameters' +--- + {% include [data-from-ch-with-parameters](../../_tutorials/datalens/data-from-ch-with-parameters.md) %} {% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} diff --git a/ru/datalens/tutorials/data-from-monitoring-visualization.md b/ru/datalens/tutorials/data-from-monitoring-visualization.md index b5842b5fea5..3bf3a1c8027 100644 --- a/ru/datalens/tutorials/data-from-monitoring-visualization.md +++ b/ru/datalens/tutorials/data-from-monitoring-visualization.md @@ -1 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-monitoring-visualization' +--- + {% include [data-from-monitoring-visualization](../../_tutorials/datalens/data-from-monitoring-visualization.md) %} diff --git a/ru/datalens/tutorials/data-from-tracker.md b/ru/datalens/tutorials/data-from-tracker.md index 355fe07d8c9..f6bcd9cf543 100644 --- a/ru/datalens/tutorials/data-from-tracker.md +++ b/ru/datalens/tutorials/data-from-tracker.md @@ -1,3 +1,8 @@ +--- +canonical: '{{ link-docs }}/tutorials/data-from-tracker' +--- + + {% include [visualisation-in-datalens](../../_tutorials/datalens/data-from-tracker.md) %} {% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} diff --git a/ru/datalens/tutorials/data-from-yandex-query-visualization.md b/ru/datalens/tutorials/data-from-yandex-query-visualization.md index 9e8c6c70ff7..a978e38300e 100644 --- a/ru/datalens/tutorials/data-from-yandex-query-visualization.md +++ b/ru/datalens/tutorials/data-from-yandex-query-visualization.md @@ -1 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-yandex-query-visualization' +--- + {% include [data-from-yandex-query-visualization](../../_tutorials/datalens/data-from-yandex-query-visualization.md) %} diff --git a/ru/datalens/tutorials/index.md b/ru/datalens/tutorials/index.md index 02a5bea5267..c138f4029ec 100644 --- a/ru/datalens/tutorials/index.md +++ b/ru/datalens/tutorials/index.md @@ -29,6 +29,7 @@ description: В разделе описаны сценарии использо * [AppMetrica: экспорт, постобработка и визуализация данных](data-from-appmetrica-yc-visualization.md) * [Битрикс24: прямое подключение](data-from-bitrix24-visualization.md) * [{{ tracker-full-name }}: экспорт и визуализация данных](data-from-tracker.md) + * [Анализ логов {{ objstorage-name }}](storage-logs-analysis.md) * [Подкасты Яндекс Музыки: статистика](data-from-podcasts.md) * [Визуализация данных {{ yq-full-name }}](data-from-yandex-query-visualization.md) * [Визуализация данных {{ monitoring-full-name }}](data-from-monitoring-visualization.md) diff --git a/ru/datalens/tutorials/storage-logs-analysis.md b/ru/datalens/tutorials/storage-logs-analysis.md new file mode 100644 index 00000000000..d84f0d21b88 --- /dev/null +++ b/ru/datalens/tutorials/storage-logs-analysis.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/storage-logs-analysis' +--- + +{% include [storage-logs-analysis](../../_tutorials/datalens/storage-logs-analysis.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} diff --git a/ru/datasphere/toc.yaml b/ru/datasphere/toc.yaml index f43a6cf1490..23be0b8d835 100644 --- a/ru/datasphere/toc.yaml +++ b/ru/datasphere/toc.yaml @@ -267,6 +267,8 @@ items: items: - name: Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики href: tutorials/data-from-metrica-yc-visualization.md + - name: 'AppMetrica: экспорт, постобработка и визуализация данных' + href: tutorials/data-from-appmetrica-yc-visualization.md - name: Анализ данных с помощью {{ yq-full-name }} href: tutorials/yq.md - name: Работа с данными в {{ objstorage-full-name }} diff --git a/ru/datasphere/tutorials/data-from-appmetrica-yc-visualization.md b/ru/datasphere/tutorials/data-from-appmetrica-yc-visualization.md new file mode 100644 index 00000000000..7b9350f159e --- /dev/null +++ b/ru/datasphere/tutorials/data-from-appmetrica-yc-visualization.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-appmetrica-yc-visualization' +--- + +{% include [data-from-metrica-yc-visualization](../../_tutorials/datalens/data-from-appmetrica-yc-visualization.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} \ No newline at end of file diff --git a/ru/datasphere/tutorials/data-from-metrica-yc-visualization.md b/ru/datasphere/tutorials/data-from-metrica-yc-visualization.md index 5af4d31e2e0..10d833c40bb 100644 --- a/ru/datasphere/tutorials/data-from-metrica-yc-visualization.md +++ b/ru/datasphere/tutorials/data-from-metrica-yc-visualization.md @@ -1,3 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-metrica-yc-visualization' +--- + # Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики {% include notitle [data-from-metrica-yc-visualization](../../_tutorials/datalens/data-from-metrica-yc-visualization.md) %} diff --git a/ru/datasphere/tutorials/index.md b/ru/datasphere/tutorials/index.md index f360e389fe6..c5b338f735e 100644 --- a/ru/datasphere/tutorials/index.md +++ b/ru/datasphere/tutorials/index.md @@ -34,6 +34,7 @@ description: 'Различные сценарии использования {{ ## Аналитика {#analytics} * [{#T}](data-from-metrica-yc-visualization.md) +* [{#T}](data-from-appmetrica-yc-visualization.md) * [{#T}](yq.md) * [{#T}](yq-storage.md) * [{#T}](yq-clickhouse.md) diff --git a/ru/dns/release-notes.md b/ru/dns/release-notes.md index b2590411ad8..95c8727406c 100644 --- a/ru/dns/release-notes.md +++ b/ru/dns/release-notes.md @@ -5,6 +5,10 @@ description: В разделе представлена история изме # История изменений в {{ dns-full-name }} +## III квартал 2024 {#q3-2024} + +Реализована интеграция с {{ vpc-name }} для указания DNS-записей в спецификациях публичных адресов. + ## II квартал 2024 {#q2-2024} К сервису подключены серверы НСДИ. diff --git a/ru/foundation-models/concepts/yandexart/index.md b/ru/foundation-models/concepts/yandexart/index.md index 2a95fd01554..ddc2475049a 100644 --- a/ru/foundation-models/concepts/yandexart/index.md +++ b/ru/foundation-models/concepts/yandexart/index.md @@ -1,7 +1,5 @@ # Обзор {{ yandexart-name }} -_Функциональность {{ yandexart-name }} находится на стадии [Preview](../../../overview/concepts/launch-stages.md)._ - {{ yandexart-name }} — это генеративная нейросеть, которая создает изображения по текстовому запросу. {{ yandexart-name }} работает по методу каскадной диффузии, итеративно детализируя изображения из шума. Кроме текстового описания, для генерации необходимо указать специальный параметр _зерно генерации (seed)_. Зерно — это любое число от 0 до 2^63^-1. Оно служит начальной точкой для генерации изображения из шума и позволяет повторять результат. Так, при одном и том же промте и зерне результат генерации будет одинаковым. Чтобы изменить сгенерированное изображение, измените значение зерна или описание. diff --git a/ru/foundation-models/operations/yandexart/request.md b/ru/foundation-models/operations/yandexart/request.md index 89949d55e12..6378e1a3007 100644 --- a/ru/foundation-models/operations/yandexart/request.md +++ b/ru/foundation-models/operations/yandexart/request.md @@ -1,7 +1,5 @@ # Сгенерировать изображение с помощью {{ yandexart-name }} -{% include notitle [preview-stage](../../../_includes/foundation-models/yandexgpt/preview.md) %} - С помощью нейросети {{ yandexart-name }} вы можете генерировать изображения в [асинхронном режиме](../../concepts/index.md#working-mode). В ответ на асинхронный запрос модель вернет [объект Operation](../../../api-design-guide/concepts/operation.md), содержащий идентификатор операции, по которому можно [отследить ее выполнение](../../../api-design-guide/concepts/operation.md#monitoring) и получить результат после того, как генерация завершится. Генерация результата в асинхронном режиме может занимать от пары минут до нескольких часов. ## Перед началом работы {#before-begin} diff --git a/ru/foundation-models/pricing.md b/ru/foundation-models/pricing.md index 175f6201460..c500584047a 100644 --- a/ru/foundation-models/pricing.md +++ b/ru/foundation-models/pricing.md @@ -47,14 +47,6 @@ editable: false ### Генерация изображений {#rules-image-generation} -На стадии [Preview](../overview/concepts/launch-stages.md) использование {{ yandexart-name }} не тарифицируется. - -{% note warning %} - -Правила тарификации, описанные ниже, начнут действовать 1 ноября 2024 года. - -{% endnote %} - Использование {{ yandexart-name }} тарифицируется за каждый запрос на генерацию. При этом запросы не идемпотентны, поэтому два запроса с идентичными параметрами и промтом генерации считаются двумя самостоятельными запросами. ### Внутренние ошибки сервера {#error-request} diff --git a/ru/foundation-models/quickstart/yandexart.md b/ru/foundation-models/quickstart/yandexart.md index 1bbeaabf204..0f4eb50db88 100644 --- a/ru/foundation-models/quickstart/yandexart.md +++ b/ru/foundation-models/quickstart/yandexart.md @@ -1,7 +1,5 @@ # Как начать работать с {{ yandexart-name }} -{% include notitle [preview-stage](../../_includes/foundation-models/yandexgpt/preview.md) %} - В этом разделе вы научитесь использовать нейросеть {{ yandexart-name }} для генерации изображений. В [консоли управления]({{ link-console-main }}/link/foundation-models/yandexart) новым пользователям без [платежного аккаунта](../../billing/concepts/billing-account.md) доступно {{ art-freetier }} бесплатных запросов в сутки. Чтобы использовать API и иметь возможность увеличить [квоты](../concepts/limits.md) на потребление, [привяжите](../../billing/operations/pin-cloud.md) платежный аккаунт к облаку. diff --git a/ru/functions/toc.yaml b/ru/functions/toc.yaml index dcbc1d1fca1..1f65c536815 100644 --- a/ru/functions/toc.yaml +++ b/ru/functions/toc.yaml @@ -476,6 +476,10 @@ items: Передача событий {{ postbox-full-name }} в {{ yds-full-name }} и их анализ с помощью {{ datalens-full-name }} href: tutorials/events-from-postbox-to-yds.md + - name: Сокращатель ссылок + href: tutorials/serverless-url-shortener.md + - name: '{{ tracker-full-name }}: экспорт и визуализация данных' + href: tutorials/data-from-tracker.md - name: Правила тарификации href: pricing.md - name: Управление доступом diff --git a/ru/functions/tutorials/data-from-tracker.md b/ru/functions/tutorials/data-from-tracker.md new file mode 100644 index 00000000000..81cdc4df7e9 --- /dev/null +++ b/ru/functions/tutorials/data-from-tracker.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-tracker' +--- + +{% include [visualisation-in-datalens](../../_tutorials/datalens/data-from-tracker.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} \ No newline at end of file diff --git a/ru/functions/tutorials/index.md b/ru/functions/tutorials/index.md index 9c44d62b96f..9b3bc16304e 100644 --- a/ru/functions/tutorials/index.md +++ b/ru/functions/tutorials/index.md @@ -28,3 +28,5 @@ * [{#T}](iot-emulation.md) * [{#T}](./serverless-trigger-budget-queue-vm-tg.md) * [Передача событий {{ postbox-full-name }} в {{ yds-full-name }} и их анализ с помощью {{ datalens-full-name }}](./events-from-postbox-to-yds.md) +* [{#T}](./serverless-url-shortener.md) +* [{#T}](data-from-tracker.md) diff --git a/ru/functions/tutorials/serverless-url-shortener.md b/ru/functions/tutorials/serverless-url-shortener.md new file mode 100644 index 00000000000..08459418247 --- /dev/null +++ b/ru/functions/tutorials/serverless-url-shortener.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/serverless-url-shortener' +--- + +{% include [serverless-url-shortener](../../_tutorials/serverless/serverless-url-shortener.md) %} \ No newline at end of file diff --git a/ru/interconnect/release-notes.md b/ru/interconnect/release-notes.md index c0ca86884ef..91c6881cc5b 100644 --- a/ru/interconnect/release-notes.md +++ b/ru/interconnect/release-notes.md @@ -5,6 +5,10 @@ description: В разделе представлена история изме # История изменений в {{ interconnect-full-name }} +## III квартал 2024 {#q3-2024} + +В CLI и API добавлены методы `view`. + ## I квартал 2024 {#q1-2024} -* Добавлены [правила тарификации](./pricing.md). +Добавлены [правила тарификации](./pricing.md). diff --git a/ru/managed-clickhouse/operations/cluster-backups.md b/ru/managed-clickhouse/operations/cluster-backups.md index afc90ac4651..340a2f33652 100644 --- a/ru/managed-clickhouse/operations/cluster-backups.md +++ b/ru/managed-clickhouse/operations/cluster-backups.md @@ -50,11 +50,53 @@ description: Вы можете создавать резервные копии Имя и идентификатор кластера можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters). -- API {#api} +- REST API {#api} - Чтобы создать резервную копию, воспользуйтесь методом REST API [backup](../api-ref/Cluster/backup.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Backup](../api-ref/grpc/Cluster/backup.md) и передайте в запросе идентификатор кластера в параметре `clusterId`. + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - Идентификатор кластера можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters). + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.backup](../api-ref/Cluster/backup.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request POST \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>:backup' + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/backup.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Backup](../api-ref/grpc/Cluster/backup.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Backup + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/backup.md#yandex.cloud.operation.Operation). {% endlist %} @@ -178,18 +220,189 @@ description: Вы можете создавать резервные копии ... ``` -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.restore](../api-ref/Cluster/restore.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + ```json + { + "backupId": "<идентификатор_резервной_копии>", + "additionalBackupIds": [ + <список_дополнительных_идентификаторов_резервных_копий> + ], + "name": "<имя_кластера>", + "environment": "<окружение>", + "configSpec": { <конфигурация_кластера> }, + "hostSpecs": [ + { + "type": "<тип_хоста>", + "zoneId": "<зона_доступности>", + "subnetId": "<идентификатор_подсети>", + "shardName": "<имя_шарда>", + "assignPublicIp": <публичный_доступ_к_хосту> + }, + { <аналогичный_набор_настроек_для_хоста_2> }, + { ... }, + { <аналогичный_набор_настроек_для_хоста_N> } + ], + "folderId": "<идентификатор_каталога>", + "networkId": "<идентификатор_сети>", + "serviceAccountId": "<идентификатор_сервисного аккаунта>", + "securityGroupIds": [ + <список_идентификаторов_групп_безопасности> + ], + "deletionProtection": <защита_от_удаления> + } + ``` + + Где: + + * `backupId` — идентификатор резервной копии. + + Будет восстановлен шард, для которого была создана эта резервная копия. + + * `additionalBackupIds` — массив, содержащий список дополнительных идентификаторов резервных копий. + + Будут восстановлены шарды, для которых были созданы эти резервные копии. Чтобы восстановить весь кластер целиком, передайте идентификаторы резервных копий всех шардов кластера. + + * `name` — имя кластера. + * `environment` — окружение: + + * `PRODUCTION` — для стабильных версий ваших приложений. + * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением. + + * `configSpec` — конфигурация кластера {{ CH }}. Подробное описание параметров см. в описании метода [Cluster.restore](../api-ref/Cluster/restore.md). + * `hostSpecs` — массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру: + + * `type` — тип хоста. + * `zoneId` — зона доступности. + * `subnetId` — идентификатор подсети. + * `shardName` — имя шарда. + * `assignPublicIp` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. + + * `folderId` — идентификатор каталога, в котором будет создан кластер. + * `networkId` — идентификатор сети, в которой будет создан кластер. + * `serviceAccountId` — идентификатор сервисного аккаунта. + * `securityGroupIds` — массив, содержащий список идентификаторов групп безопасности. + * `deletionProtection` — опция, которая управляет защитой кластера, его баз данных и пользователей от непреднамеренного удаления. + + Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных. + + Идентификатор резервной копии можно запросить со [списком резервных копий в каталоге](#list-backups). + + 1. Выполните запрос: + + ```bash + curl \ + --request POST \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters:restore' \ + --data "@body.json" + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/restore.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Restore](../api-ref/grpc/Cluster/restore.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + ```json + { + "backup_id": "<идентификатор_резервной_копии>", + "additional_backup_ids": [ + <список_дополнительных_идентификаторов_резервных_копий> + ], + "name": "<имя_кластера>", + "environment": "<окружение>", + "config_spec": { <конфигурация_кластера> }, + "host_specs": [ + { + "type": "<тип_хоста>", + "zone_id": "<зона_доступности>", + "subnet_id": "<идентификатор_подсети>", + "shard_name": "<имя_шарда>", + "assign_public_ip": <публичный_доступ_к_хосту> + }, + { <аналогичный_набор_настроек_для_хоста_2> }, + { ... }, + { <аналогичный_набор_настроек_для_хоста_N> } + ], + "folder_id": "<идентификатор_каталога>", + "network_id": "<идентификатор_сети>", + "service_account_id": "<идентификатор_сервисного аккаунта>", + "security_group_ids": [ + <список_идентификаторов_групп_безопасности> + ], + "deletion_protection": <защита_от_удаления> + } + ``` + + Где: + + * `backup_id` — идентификатор резервной копии. + + Будет восстановлен шард, для которого была создана эта резервная копия. + + * `additional_backup_ids` — массив, содержащий список дополнительных идентификаторов резервных копий. - Чтобы восстановить кластер из резервной копии, воспользуйтесь методом REST API [restore](../api-ref/Cluster/restore.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Restore](../api-ref/grpc/Cluster/restore.md) и передайте в запросе: + Будут восстановлены шарды, для которых были созданы эти резервные копии. Чтобы восстановить весь кластер целиком, передайте идентификаторы резервных копий всех шардов кластера. - * Идентификатор резервной копии нужного шарда в параметре `backupId`. Чтобы узнать идентификатор, [получите список резервных копий в кластере](#list-backups). - * Имя нового кластера, который будет содержать восстановленные из резервной копии данные, в параметре `name`. Имя кластера должно быть уникальным в рамках каталога. - * Окружение кластера в параметре `environment`. - * Конфигурацию кластера в параметре `configSpec`. - * Конфигурацию хостов кластера в одном или нескольких параметрах `hostSpecs`. - * Идентификатор сети в параметре `networkId`. + * `name` — имя кластера. + * `environment` — окружение: - Чтобы восстановить весь кластер целиком, передайте идентификаторы резервных копий всех остальных шардов кластера в параметре `additionalBackupIds`. + * `PRODUCTION` — для стабильных версий ваших приложений. + * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением. + + * `config_spec` — конфигурация кластера {{ CH }}. Подробное описание параметров см. в описании вызова [ClusterService/Restore](../api-ref/grpc/Cluster/restore.md). + * `host_specs` — массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру: + + * `type` — тип хоста. + * `zone_id` — зона доступности. + * `subnet_id` — идентификатор подсети. + * `shard_name` — имя шарда. + * `assign_public_ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. + + * `folder_id` — идентификатор каталога, в котором будет создан кластер. + * `network_id` — идентификатор сети, в которой будет создан кластер. + * `service_account_id` — идентификатор сервисного аккаунта. + * `security_group_ids` — массив, содержащий список идентификаторов групп безопасности. + * `deletion_protection` — опция, которая управляет защитой кластера, его баз данных и пользователей от непреднамеренного удаления. + + Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных. + + Идентификатор резервной копии можно запросить со [списком резервных копий в каталоге](#list-backups). + + 1. Выполните запрос: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d @ \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Restore \ + < body.json + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/restore.md#yandex.cloud.operation.Operation). {% endlist %} @@ -247,16 +460,100 @@ description: Вы можете создавать резервные копии * Размер резервной копии. * Тип резервной копии: автоматическая (`AUTOMATED`) или ручная (`MANUAL`). -- API {#api} +- REST API {#api} - Чтобы получить список резервных копий кластера, воспользуйтесь методом REST API [listBackups](../api-ref/Cluster/listBackups.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/ListBackups](../api-ref/grpc/Cluster/listBackups.md) и передайте в запросе идентификатор кластера в параметре `clusterId`. + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - Чтобы получить список резервных копий всех кластеров {{ mch-name }} в каталоге, воспользуйтесь методом REST API [list](../api-ref/Backup/list.md) для ресурса [Backup](../api-ref/Backup/index.md) или вызовом gRPC API [BackupService/List](../api-ref/grpc/Backup/list.md) и передайте в запросе идентификатор каталога в параметре `folderId`. + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - Идентификатор кластера можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters). + 1. Чтобы получить список резервных копий кластера {{ CH }}: -{% endlist %} + 1. Воспользуйтесь методом [Cluster.listBackups](../api-ref/Cluster/listBackups.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>/backups' + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/listBackups.md#responses). + + 1. Чтобы получить список резервных копий всех кластеров {{ CH }} в каталоге: + + 1. Воспользуйтесь методом [Backup.list](../api-ref/Backup/list.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/backups' \ + --url-query folderId=<идентификатор_каталога> + ``` + + + Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md). + + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Backup/list.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Чтобы получить список резервных копий кластера {{ CH }}: + + 1. Воспользуйтесь вызовом [ClusterService/ListBackups](../api-ref/grpc/Cluster/listBackups.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.ListBackups + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/listBackups.md#yandex.cloud.mdb.clickhouse.v1.ListClusterBackupsResponse). + + 1. Чтобы получить список резервных копий всех кластеров {{ CH }} в каталоге: + + 1. Воспользуйтесь вызовом [BackupService/List](../api-ref/grpc/Backup/list.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/backup_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "folder_id": "<идентификатор_каталога>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.BackupService.List + ``` + + + Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md). + + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Backup/list.md#yandex.cloud.mdb.clickhouse.v1.ListBackupsResponse). + +{% endlist %} ## Получить информацию о резервной копии {#get-backup} @@ -286,11 +583,52 @@ description: Вы можете создавать резервные копии Идентификатор резервной копии можно получить со [списком резервных копий](#list-backups). -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Backup.get](../api-ref/Backup/get.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/backups/<идентификатор_резервной_копии>' + ``` + + Идентификатор резервной копии можно запросить со [списком резервных копий в каталоге](#list-backups). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Backup/get.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [BackupService/Get](../api-ref/grpc/Backup/get.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/backup_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "backup_id": "<идентификатор_резервной_копии>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.BackupService.Get + ``` - Чтобы получить информацию о резервной копии, воспользуйтесь методом REST API [get](../api-ref/Backup/get.md) для ресурса [Backup](../api-ref/Backup/index.md) или вызовом gRPC API [BackupService/Get](../api-ref/grpc/Backup/get.md) и передайте в запросе идентификатор резервной копии в параметре `backupId`. + Идентификатор резервной копии можно запросить со [списком резервных копий в каталоге](#list-backups). - Чтобы узнать идентификатор, [получите список резервных копий](#list-backups). + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Backup/get.md#yandex.cloud.mdb.clickhouse.v1.Backup). {% endlist %} @@ -317,15 +655,97 @@ description: Вы можете создавать резервные копии Идентификатор и имя кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "configSpec.backupWindowStart", + "configSpec": { + "backupWindowStart": { + "hours": "<часы>", + "minutes": "<минуты>", + "seconds": "<секунды>", + "nanos": "<наносекунды>" + } + } + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + В данном случае указан только один параметр: `configSpec.backupWindowStart`. + + * {% include [backup-windows-start-rest](../../_includes/mdb/api/backup-windows-start-rest.md) %} + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + "config_spec.backup_window_start" + ] + }, + "config_spec": { + "backup_window_start": { + "hours": "<часы>", + "minutes": "<минуты>", + "seconds": "<секунды>", + "nanos": "<наносекунды>" + } + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + В данном случае указан только один параметр: `config_spec.backup_window_start`. - Чтобы задать время начала резервного копирования, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + * {% include [backup-windows-start-grpc](../../_includes/mdb/api/backup-windows-start-grpc.md) %} - * Идентификатор кластера в параметре `clusterId`. Его можно получить [со списком кластеров в каталоге](cluster-list.md#list-clusters). - * Новое время начала резервного копирования в параметре `configSpec.backupWindowStart`. - * Список изменяемых полей конфигурации кластера в параметре `updateMask` (в данном случае — `configSpec.backupWindowStart`). + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} diff --git a/ru/managed-clickhouse/operations/cluster-create.md b/ru/managed-clickhouse/operations/cluster-create.md index 0a05a1adc88..796031efb30 100644 --- a/ru/managed-clickhouse/operations/cluster-create.md +++ b/ru/managed-clickhouse/operations/cluster-create.md @@ -426,52 +426,401 @@ description: Следуя данной инструкции, вы сможете {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.create](../api-ref/Cluster/create.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + {% note info %} + + В примере приведены не все доступные параметры. + + {% endnote %} + + + ```json + { + "folderId": "<идентификатор_каталога>", + "name": "<имя_кластера>", + "environment": "<окружение>", + "networkId": "<идентификатор_сети>", + "securityGroupIds": [ + "<идентификатор_группы_безопасности_1>", + "<идентификатор_группы_безопасности_2>", + ... + "<идентификатор_группы_безопасности_N>" + ], + "configSpec": { + "version": "<версия_{{ CH }}>", + "embeddedKeeper": <использование_{{ CK }}>, + "clickhouse": { + "resources": { + "resourcePresetId": "<класс_хостов_{{ CH }}>", + "diskSize": "<размер_хранилища_в_байтах>", + "diskTypeId": "<тип_диска>" + } + }, + "zookeeper": { + "resources": { + "resourcePresetId": "<класс_хостов_{{ ZK }}>", + "diskSize": "<размер_хранилища_в_байтах>", + "diskTypeId": "<тип_диска>" + } + }, + "access": { + "dataLens": <доступ_из_{{ datalens-name }}>, + "webSql": <выполнение_SQL-запросов_из_консоли_управления>, + "metrika": <доступ_из_Метрики_и_AppMetrika>, + "serverless": <доступ_из_Cloud_Functions>, + "dataTransfer": <доступ_из_Data_Transfer>, + "yandexQuery": <доступ_из_Yandex_Query> + }, + "cloudStorage": { + "enabled": <использование_гибридного_хранилища>, + "moveFactor": "<доля_свободного_места>", + "dataCacheEnabled": <временное_хранение_файлов>, + "dataCacheMaxSize": "<максимальный_объем_памяти_для_хранения_файлов>", + "preferNotToMerge": <отключение_слияния_кусков_данных> + }, + "adminPassword": "<пароль_пользователя_admin>", + "sqlUserManagement": <управление_пользователями_через_SQL>, + "sqlDatabaseManagement": <управление_базами_данных_через_SQL> + }, + "databaseSpecs": [ + { + "name": "<имя_базы_данных>" + }, + { <аналогичный_набор_настроек_для_базы_данных_2> }, + { ... }, + { <аналогичный_набор_настроек_для_базы_данных_N> } + ], + "userSpecs": [ + { + "name": "<имя_пользователя>", + "password": "<пароль_пользователя>", + "permissions": [ + { + "databaseName": "<имя_базы_данных>" + } + ] + }, + { <аналогичный_набор_настроек_для_пользователя_2> }, + { ... }, + { <аналогичный_набор_настроек_для_пользователя_N> } + ], + "hostSpecs": [ + { + "zoneId": "<зона_доступности>", + "type": "<тип_хоста>", + "subnetId": "<идентификатор_подсети>", + "assignPublicIp": <публичный_доступ_к_хосту>, + "shardName": "<имя_шарда>" + }, + { <аналогичный_набор_настроек_для_хоста_2> }, + { ... }, + { <аналогичный_набор_настроек_для_хоста_N> } + ], + "deletionProtection": <защита_от_удаления> + } + ``` + + + Где: + + * `name` — имя кластера. + * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`. + * `networkId` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер. + + + * `securityGroupIds` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. массив Каждая строка — идентификатор группы безопасности. + + + * `configSpec` — конфигурация кластера: + + * `version` — версия {{ CH }}: {{ versions.api.str }}. + * `embeddedKeeper` — использовать [{{ CK }}](../concepts/replication.md#ck) вместо {{ ZK }}: `true` или `false`. + + {% include [replication-management-details](../../_includes/mdb/mch/api/replication-management-details.md) %} + + * `clickhouse` — конфигурация {{ CH }}: + + * `resources.resourcePresetId` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md). + * `resources.diskSize` — размер диска в байтах. + * `resources.diskTypeId` — [тип диска](../concepts/storage.md). + + * `zookeeper` — конфигурация [{{ ZK }}](../concepts/replication.md#zk): + + * `resources.resourcePresetId` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md). + * `resources.diskSize` — размер диска в байтах. + * `resources.diskTypeId` — тип диска. + + Если вы включили использование {{ CK }} с помощью настройки `embeddedKeeper: true`, то необязательно указывать конфигурацию {{ ZK }} в `configSpec`: эта конфигурация не будет применена. + + * `access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью {{ websql-full-name }}: + + {% include [rest-access-settings](../../_includes/mdb/mch/api/rest-access-settings.md) %} + + * `cloudStorage` — настройки [гибридного хранилища](../concepts/storage.md#hybrid-storage-features): + + {% include [rest-cloud-storage-settings](../../_includes/mdb/mch/api/rest-cloud-storage-settings.md) %} + + * `sql...` и `adminPassword` — группа настроек для управления пользователями и базами данных через SQL: + + * `adminPassword` — пароль пользователя `admin`. + * `sqlUserManagement` — режим [управления пользователями через SQL](./cluster-users.md#sql-user-management): `true` или `false`. + * `sqlDatabaseManagement` — режим [управления базами данных через SQL](./databases.md#sql-database-management): `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL. + + + {% include [SQL-management-can't-be-switched-off](../../_includes/mdb/mch/note-sql-db-and-users-create-cluster.md) %} + + * `databaseSpecs` — настройки баз данных в виде массива параметров элементов `name`. Один параметр содержит имя отдельной БД. + + * `userSpecs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру: + + {% include [rest-user-specs](../../_includes/mdb/mch/api/rest-user-specs.md) %} + + * `hostSpecs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру: + + * `type` — тип хоста: `CLICKHOUSE` или `ZOOKEEPER`. + + Если вы включили использование {{ CK }} с помощью настройки `embeddedKeeper: true`, то в `hostSpecs` нужно указать только настройки хостов {{ CH }}. + + * `zoneId` — [зона доступности](../../overview/concepts/geo-scope.md). + * `subnetId` — идентификатор [подсети](../../vpc/concepts/network.md#subnet). + * `shardName` — имя [шарда](../concepts/sharding.md). Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`. + * `assignPublicIp` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. + + + {% include [zk-hosts-details](../../_includes/mdb/mch/api/zk-hosts-details.md) %} + + + * `deletionProtection` — защитить кластер, его базы данных и пользователей от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`. + + {% include [Ограничения защиты от удаления](../../_includes/mdb/deletion-protection-limits-db.md) %} + + + Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md). + + + 1. Выполните запрос: + + ```bash + curl \ + --request POST \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters' \ + --data '@body.json' + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Create](../api-ref/grpc/Cluster/create.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + {% note info %} + + В примере приведены не все доступные параметры. + + {% endnote %} + + + ```json + { + "folder_id": "<идентификатор_каталога>", + "name": "<имя_кластера>", + "environment": "<окружение>", + "network_id": "<идентификатор_сети>", + "security_group_ids": [ + "<идентификатор_группы_безопасности_1>", + "<идентификатор_группы_безопасности_2>", + ... + "<идентификатор_группы_безопасности_N>" + ], + "config_spec": { + "version": "<версия_{{ CH }}>", + "embedded_keeper": <использование_{{ CK }}>, + "clickhouse": { + "resources": { + "resource_preset_id": "<класс_хостов_{{ CH }}>", + "disk_size": "<размер_хранилища_в_байтах>", + "disk_type_id": "<тип_диска>" + } + }, + "zookeeper": { + "resources": { + "resource_preset_id": "<класс_хостов_{{ ZK }}>", + "disk_size": "<размер_хранилища_в_байтах>", + "disk_type_id": "<тип_диска>" + } + }, + "access": { + "data_lens": <доступ_из_{{ datalens-name }}>, + "web_sql": <выполнение_SQL-запросов_из_консоли_управления>, + "metrika": <доступ_из_Метрики_и_AppMetrika>, + "serverless": <доступ_из_Cloud_Functions>, + "data_transfer": <доступ_из_Data_Transfer>, + "yandex_query": <доступ_из_Yandex_Query> + }, + "cloud_storage": { + "enabled": <использование_гибридного_хранилища>, + "move_factor": "<доля_свободного_места>", + "data_cache_enabled": <временное_хранение_файлов>, + "data_cache_max_size": "<максимальный_объем_памяти_для_хранения_файлов>", + "prefer_not_to_merge": <отключение_слияния_кусков_данных> + }, + "admin_password": "<пароль_пользователя_admin>", + "sql_user_management": <управление_пользователями_через_SQL>, + "sql_database_management": <управление_базами_данных_через_SQL> + }, + "database_specs": [ + { + "name": "<имя_базы_данных>" + }, + { <аналогичный_набор_настроек_для_базы_данных_2> }, + { ... }, + { <аналогичный_набор_настроек_для_базы_данных_N> } + ], + "user_specs": [ + { + "name": "<имя_пользователя>", + "password": "<пароль_пользователя>", + "permissions": [ + { + "database_name": "<имя_базы_данных>" + } + ] + }, + { <аналогичный_набор_настроек_для_пользователя_2> }, + { ... }, + { <аналогичный_набор_настроек_для_пользователя_N> } + ], + "host_specs": [ + { + "zone_id": "<зона_доступности>", + "type": "<тип_хоста>", + "subnet_id": "<идентификатор_подсети>", + "assign_public_ip": <публичный_доступ_к_хосту>, + "shard_name": "<имя_шарда>" + }, + { <аналогичный_набор_настроек_для_хоста_2> }, + { ... }, + { <аналогичный_набор_настроек_для_хоста_N> } + ], + "deletion_protection": <защита_от_удаления> + } + ``` + + + Где: + + * `name` — имя кластера. + * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`. + + * `network_id` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер. + + + * `security_group_ids` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. массив Каждая строка — идентификатор группы безопасности. + + + * `config_spec` — конфигурация кластера: + + * `version` — версия {{ CH }}: {{ versions.api.str }}. + + * `embedded_keeper` — использовать [{{ CK }}](../concepts/replication.md#ck) вместо {{ ZK }}: `true` или `false`. + + {% include [replication-management-details](../../_includes/mdb/mch/api/replication-management-details.md) %} + + * `clickhouse` — конфигурация {{ CH }}: + + * `resources.resource_preset_id` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md). + * `resources.disk_size` — размер диска в байтах. + * `resources.disk_type_id` — [тип диска](../concepts/storage.md). + + * `zookeeper` — конфигурация [{{ ZK }}](../concepts/replication.md#zk): + + * `resources.resource_preset_id` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md). + * `resources.disk_size` — размер диска в байтах. + * `resources.disk_type_id` — тип диска. + + Если вы включили использование {{ CK }} с помощью настройки `embedded_keeper: true`, то необязательно указывать конфигурацию {{ ZK }} в `config_spec`: эта конфигурация не будет применена. + + * `access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью {{ websql-full-name }}: + + {% include [grpc-access-settings](../../_includes/mdb/mch/api/grpc-access-settings.md) %} + + * `cloud_storage` — настройки [гибридного хранилища](../concepts/storage.md#hybrid-storage-features): + + {% include [grpc-cloud-storage-settings](../../_includes/mdb/mch/api/grpc-cloud-storage-settings.md) %} + + * `sql...` и `admin_password` — группа настроек для управления пользователями и базами данных через SQL: + + * `admin_password` — пароль пользователя `admin`. + * `sql_user_management` — режим [управления пользователями через SQL](./cluster-users.md#sql-user-management): `true` или `false`. + * `sql_database_management` — режим [управления базами данных через SQL](./databases.md#sql-database-management): `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL. - Чтобы создать кластер {{ mch-name }}, воспользуйтесь методом REST API [create](../api-ref/Cluster/create.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Create](../api-ref/grpc/Cluster/create.md) и передайте в запросе: - * Идентификатор каталога, в котором должен быть размещен кластер, в параметре `folderId`. - * Имя кластера в параметре `name`. - * Окружение кластера в параметре `environment`. - * Конфигурацию кластера в параметре `configSpec`. - * Конфигурацию хостов кластера в одном или нескольких параметрах `hostSpecs`. - * Идентификатор сети в параметре `networkId`. + {% include [SQL-management-can't-be-switched-off](../../_includes/mdb/mch/note-sql-db-and-users-create-cluster.md) %} - * Идентификаторы групп безопасности в параметре `securityGroupIds`. + * `database_specs` — настройки баз данных в виде массива параметров элементов `name`. Один параметр содержит имя отдельной БД. + * `user_specs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру: - * Настройки доступа из других сервисов в параметре `configSpec.access`. + {% include [grpc-user-specs](../../_includes/mdb/mch/api/grpc-user-specs.md) %} - Чтобы разрешить [подключение](connect/index.md) к хостам кластера из интернета, передайте значение `true` в параметре `hostSpecs.assignPublicIp`. + * `host_specs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру: - При необходимости включите управление пользователями и базами данных через SQL: - * `configSpec.sqlUserManagement` — задайте значение `true` для включения режима [управления пользователями через SQL](cluster-users.md#sql-user-management). - * `configSpec.sqlDatabaseManagement` — задайте значение `true` для включения режима [управления базами данных через SQL](databases.md#sql-database-management). Необходимо, чтобы был включен режим управления пользователями через SQL. - * `configSpec.adminPassword` — задайте пароль пользователя `admin`, с помощью которого осуществляется управление. + * `type` — тип хоста: `CLICKHOUSE` или `ZOOKEEPER`. - {% include [SQL-management-can't-be-switched-off](../../_includes/mdb/mch/note-sql-db-and-users-create-cluster.md) %} + Если вы включили использование {{ CK }} с помощью настройки `embedded_keeper: true`, то в `host_specs` нужно указать только настройки хостов {{ CH }}. + * `zone_id` — [зона доступности](../../overview/concepts/geo-scope.md). + * `subnet_id` — идентификатор [подсети](../../vpc/concepts/network.md#subnet). + * `shard_name` — имя [шарда](../concepts/sharding.md). Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`. + * `assign_public_ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. - Чтобы задать [настройки гибридного хранилища](../concepts/storage.md##hybrid-storage-settings): - * Включите гибридное хранилище, передав значение `true` в параметре `configSpec.cloudStorage.enabled`. - * Передайте настройки гибридного хранилища в параметрах `configSpec.cloudStorage`: + {% include [zk-hosts-details](../../_includes/mdb/mch/api/zk-hosts-details.md) %} - {% include [Hybrid Storage settings API](../../_includes/mdb/mch/hybrid-storage-settings-api.md) %} - При создании кластера из нескольких хостов: + * `deletion_protection` — защитить кластер, его базы данных и пользователей от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`. - * Если для параметра `embeddedKeeper` указано значение `true`, для управления репликацией будет использоваться [{{ CK }}](../concepts/replication.md#ck). + {% include [Ограничения защиты от удаления](../../_includes/mdb/deletion-protection-limits-db.md) %} - {% include [ClickHouse Keeper can't turn off](../../_includes/mdb/mch/note-ck-no-turn-off.md) %} - * Если значение параметра `embeddedKeeper` не задано или равно `false`, для управления репликацией и распределением запросов будет использоваться {{ ZK }}. + Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md). - Если в [облачной сети](../../vpc/concepts/network.md) кластера есть подсети в каждой из [зон доступности](../../overview/concepts/geo-scope.md), а настройки хостов {{ ZK }} не заданы, в каждую подсеть будет автоматически добавлено по одному такому хосту. + 1. Выполните запрос: - Если подсети в сети кластера есть только в некоторых зонах доступности, укажите настройки хостов {{ ZK }} явно. + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d @ \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Create \ + < body.json + ``` + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation). {% endlist %} diff --git a/ru/managed-clickhouse/operations/cluster-list.md b/ru/managed-clickhouse/operations/cluster-list.md index d1cce2cda49..ab23b9523d3 100644 --- a/ru/managed-clickhouse/operations/cluster-list.md +++ b/ru/managed-clickhouse/operations/cluster-list.md @@ -44,9 +44,10 @@ description: Вы можете запросить детальную инфор ```bash curl \ - --request GET \ - --header "Authorization: Bearer $IAM_TOKEN" \ - --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters?folderId=<идентификатор_каталога>' + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters' \ + --url-query folderId=<идентификатор_каталога> ``` @@ -155,7 +156,7 @@ description: Вы можете запросить детальную инфор Идентификатор кластера можно запросить со [списком кластеров в каталоге](#list-clusters). - 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.mdb.clickhouse.v1.Cluster). + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/get.md#yandex.cloud.mdb.clickhouse.v1.Cluster). {% endlist %} diff --git a/ru/managed-clickhouse/operations/cluster-logs.md b/ru/managed-clickhouse/operations/cluster-logs.md index 14d2acea10c..e65bb4bbf02 100644 --- a/ru/managed-clickhouse/operations/cluster-logs.md +++ b/ru/managed-clickhouse/operations/cluster-logs.md @@ -58,15 +58,90 @@ Имя и идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). -- API {#api} +- REST API {#api} - Чтобы получить логи кластера, воспользуйтесь методом REST API [listLogs](../api-ref/Cluster/listLogs.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/ListLogs](../api-ref/grpc/Cluster/listLogs.md) и передайте в запросе: + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - * Идентификатор кластера в параметре `clusterId`. + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - Чтобы узнать идентификатор кластера, [получите список кластеров в каталоге](cluster-list.md#list-clusters). + 1. Воспользуйтесь методом [Cluster.listLogs](../api-ref/Cluster/listLogs.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: - * Значение `CLICKHOUSE` в параметре `serviceType`. + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>:logs' \ + --url-query serviceType=CLICKHOUSE \ + --url-query columnFilter=<список_колонок_для_вывода_информации> \ + --url-query fromTime=<левая_граница_временного_диапазона> \ + --url-query toTime=<правая_граница_временного_диапазона> + ``` + + Где: + + * `serviceType` — тип сервиса, для которого нужно запросить логи. Допустимо только значение `CLICKHOUSE`. + * `columnFilter` — список колонок для вывода информации: + + {% include [column-filter-list](../../_includes/mdb/api/column-filter-list.md) %} + + {% include [column-filter-rest](../../_includes/mdb/api/column-filter-rest.md) %} + + {% include [from-time-rest](../../_includes/mdb/api/from-time-rest.md) %} + + * `toTime` — правая граница временного диапазона, формат аналогичен `fromTime`. + + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/listLogs.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/ListLogs](../api-ref/grpc/Cluster/listLogs.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "service_type" : "CLICKHOUSE", + "column_filter": [<список_колонок_для_вывода_информации>], + "from_time": "<левая_граница_временного_диапазона>" \ + "to_time": "<правая_граница_временного_диапазона>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.ListLogs + ``` + + Где: + + * `service_type` — тип сервиса, для которого нужно запросить логи. Допустимо только значение `CLICKHOUSE`. + * `column_filter` — список колонок для вывода информации: + + {% include [column-filter-list](../../_includes/mdb/api/column-filter-list.md) %} + + {% include [column-filter-grpc](../../_includes/mdb/api/column-filter-grpc.md) %} + + {% include [from-time-grpc](../../_includes/mdb/api/from-time-grpc.md) %} + + * `to_time` — правая граница временного диапазона, формат аналогичен `from_time`. + + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/listLogs.md#yandex.cloud.mdb.clickhouse.v1.ListClusterLogsResponse). {% endlist %} @@ -90,15 +165,108 @@ Имя и идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.streamLogs](../api-ref/Cluster/streamLogs.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>:stream_logs' \ + --url-query serviceType=CLICKHOUSE \ + --url-query columnFilter=<список_колонок_для_вывода_информации> \ + --url-query fromTime=<левая_граница_временного_диапазона> \ + --url-query toTime=<правая_граница_временного_диапазона> \ + --url-query filter=<фильтр_логов> + ``` + + Где: + + * `serviceType` — тип сервиса, для которого нужно запросить логи. Допустимо только значение `CLICKHOUSE`. + * `columnFilter` — список колонок для вывода информации: + + {% include [column-filter-list](../../_includes/mdb/api/column-filter-list.md) %} + + {% include [column-filter-rest](../../_includes/mdb/api/column-filter-rest.md) %} + + {% include [from-time-rest](../../_includes/mdb/api/from-time-rest.md) %} + + * `toTime` — правая граница временного диапазона, формат аналогичен `fromTime`. + + {% include [tail-f-semantics](../../_includes/mdb/api/tail-f-semantics.md) %} + + * `filter` — фильтр логов. Можно отфильтровать логи так, чтобы поток логов содержал только нужные логи. + + Подробнее о фильтрах и их синтаксисе см. в [справочнике API](../api-ref/Cluster/streamLogs.md#query_params). + + {% include [stream-logs-filter](../../_includes/mdb/api/stream-logs-filter.md) %} + + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/streamLogs.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/StreamLogs](../api-ref/grpc/Cluster/streamLogs.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "service_type" : "CLICKHOUSE", + "column_filter": [<список_колонок_для_вывода_информации>], + "from_time": "<левая_граница_временного_диапазона>", + "to_time": "<правая_граница_временного_диапазона>", + "filter": "<фильтр_логов>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.StreamLogs + ``` + + Где: + + * `service_type` — тип сервиса, для которого нужно запросить логи. Допустимо только значение `CLICKHOUSE`. + * `column_filter` — список колонок для вывода информации: + + {% include [column-filter-list](../../_includes/mdb/api/column-filter-list.md) %} + + {% include [column-filter-grpc](../../_includes/mdb/api/column-filter-grpc.md) %} + + {% include [from-time-grpc](../../_includes/mdb/api/from-time-grpc.md) %} + + * `to_time` — правая граница временного диапазона, формат аналогичен `from_time`. + + {% include [tail-f-semantics](../../_includes/mdb/api/tail-f-semantics.md) %} + + * `filter` — фильтр логов. Можно отфильтровать логи так, чтобы поток логов содержал только нужные логи. + + {% include [stream-logs-filter](../../_includes/mdb/api/stream-logs-filter.md) %} + + Подробнее о фильтрах и их синтаксисе см. в [справочнике API](../api-ref/grpc/Cluster/streamLogs.md). - Чтобы получить поток логов кластера, воспользуйтесь методом REST API [streamLogs](../api-ref/Cluster/streamLogs.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/StreamLogs](../api-ref/grpc/Cluster/streamLogs.md) и передайте в запросе: - * Идентификатор кластера в параметре `clusterId`. + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - Чтобы узнать идентификатор кластера, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Значение `CLICKHOUSE` в параметре `serviceType`. + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/streamLogs.md#yandex.cloud.mdb.clickhouse.v1.StreamLogRecord). {% endlist %} diff --git a/ru/managed-clickhouse/operations/cluster-users.md b/ru/managed-clickhouse/operations/cluster-users.md index 4410d978e9b..705fd388861 100644 --- a/ru/managed-clickhouse/operations/cluster-users.md +++ b/ru/managed-clickhouse/operations/cluster-users.md @@ -65,11 +65,52 @@ description: Из статьи вы узнаете, как управлять п Имя кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). -- API {#api} +- REST API {#api} - Чтобы получить список пользователей, воспользуйтесь методом REST API [list](../api-ref/User/list.md) для ресурса [User](../api-ref/User/index.md) или вызовом gRPC API [UserService/List](../api-ref/grpc/User/list.md) и передайте в запросе идентификатор кластера в параметре `clusterId`. + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - Идентификатор кластера можно получить со [списком кластеров в каталоге](#list-clusters). + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [User.list](../api-ref/User/list.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users' + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/list.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [UserService/List](../api-ref/grpc/User/list.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.UserService.List + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/list.md#yandex.cloud.mdb.clickhouse.v1.ListUsersResponse). - SQL {#sql} @@ -179,16 +220,152 @@ description: Из статьи вы узнаете, как управлять п {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [User.create](../api-ref/User/create.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + ```json + { + "userSpec": { + "name": "<имя_пользователя>", + "password": "<пароль_пользователя>", + "permissions": [ + { + "databaseName": "<имя_БД>" + } + ], + "settings": {<настройки_{{ CH }}>}, + "quotas": [ + { + "intervalDuration": "<интервал_для_квоты>", + "queries": "<суммарное_количество_запросов>", + "errors": "<количество_запросов_с_ошибкой>", + "resultRows": "<количество_строк_результата>", + "readRows": "<количество_исходных_строк>", + "executionTime": "<суммарное_время_выполнения>" + }, + { <аналогичный_набор_настроек_для_квоты_2> }, + { ... }, + { <аналогичный_набор_настроек_для_квоты_N> } + ] + }, + { <аналогичный_набор_настроек_для_создаваемого_пользователя_2> }, + { ... }, + { <аналогичный_набор_настроек_для_создаваемого_пользователя_N> } + } + ``` + + Где `userSpec` — массив, содержащий настройки создаваемых пользователей. Один элемент массива содержит настройки для одного пользователя и имеет следующую структуру: + + {% include [rest-user-specs](../../_includes/mdb/mch/api/rest-user-specs.md) %} + + * `settings` — список [настроек {{ CH }}](../concepts/settings-list.md#user-level-settings) для пользователя. + + Настройки задаются в виде пар `ключ: значение`, разделенных запятыми. + + * `quotas` — массив, содержащий [настройки квот](../concepts/settings-list.md#quota-settings). Один элемент массива содержит настройки для одной квоты. + + 1. Выполните запрос: + + ```bash + curl \ + --request POST \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users' \ + --data '@body.json' + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/create.md#responses). + + См. также: [пример создания пользователя с правами «только чтение»](#example-create-readonly-user). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [UserService/Create](../api-ref/grpc/User/create.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + ```json + { + "cluster_id": "<идентификатор_кластера>", + "user_spec": { + "name": "<имя_пользователя>", + "password": "<пароль_пользователя>", + "permissions": [ + { + "database_name": "<имя_БД>" + } + ], + "settings": {<настройки_{{ CH }}>}, + "quotas": [ + { + "interval_duration": "<интервал_для_квоты>", + "queries": "<суммарное_количество_запросов>", + "errors": "<количество_запросов_с_ошибкой>", + "result_rows": "<количество_строк_результата>", + "read_rows": "<количество_исходных_строк>", + "execution_time": "<суммарное_время_выполнения>" + }, + { <аналогичный_набор_настроек_для_квоты_2> }, + { ... }, + { <аналогичный_набор_настроек_для_квоты_N> } + ] + }, + { <аналогичный_набор_настроек_для_создаваемого_пользователя_2> }, + { ... }, + { <аналогичный_набор_настроек_для_создаваемого_пользователя_N> } + } + ``` + + Где `user_spec` — массив, содержащий настройки создаваемых пользователей. Один элемент массива содержит настройки для одного пользователя и имеет следующую структуру: + + * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. + * `password` — пароль пользователя. Длина пароля от 8 до 128 символов. + * `permissions` — список БД, к которым пользователь должен иметь доступ. + + Список организован в виде массива параметров `database_name`. Один параметр содержит имя отдельной БД. + + * `settings` — список [настроек {{ CH }}](../concepts/settings-list.md#user-level-settings) для пользователя. + + Настройки задаются в виде пар `ключ: значение`, разделенных запятыми. + + * `quotas` — массив, содержащий [настройки квот](../concepts/settings-list.md#quota-settings). Один элемент массива содержит настройки для одной квоты. - Чтобы создать пользователя, воспользуйтесь методом REST API [create](../api-ref/User/create.md) для ресурса [User](../api-ref/User/index.md) или вызовом gRPC API [UserService/Create](../api-ref/grpc/User/create.md) и передайте в запросе: + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - * Идентификатор кластера в параметре `clusterId`. Идентификатор кластера можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters). - * Имя нового пользователя в параметре `userSpec.name`. - * Пароль нового пользователя в параметре `userSpec.password`. - * (Опционально) Список баз, к которым пользователь должен иметь доступ, в параметре `userSpec.permissions[]`. - * (Опционально) Список настроек {{ CH }} для пользователя в параметре `userSpec.settings`. - * (Опционально) Список настроек квот для пользователя в параметре `userSpec.quotas[]`. + 1. Выполните запрос: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d @ \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.UserService.Create \ + < body.json + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/create.md#yandex.cloud.operation.Operation). + + См. также: [пример создания пользователя с правами «только чтение»](#example-create-readonly-user). - SQL {#sql} @@ -273,18 +450,88 @@ description: Из статьи вы узнаете, как управлять п {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} - Чтобы изменить пароль, воспользуйтесь методом REST API [update](../api-ref/User/update.md) для ресурса [User](../api-ref/User/index.md) или вызовом gRPC API [UserService/Update](../api-ref/grpc/User/update.md) и передайте в запросе: + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Новый пароль в параметре `password`. + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - {% include [password-limits](../../_includes/mdb/mch/note-info-password-limits.md) %} + 1. Воспользуйтесь методом [User.update](../api-ref/User/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \ + --data '{ + "updateMask": "password", + "password": "<новый_пароль>" + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + В данном случае указан только один параметр: `password`. + + * `password` — новый пароль пользователя. + + Длина пароля от 8 до 128 символов. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Имя пользователя можно запросить со [списком пользователей в кластере](#list-users). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [UserService/Update](../api-ref/grpc/User/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: - * Список полей конфигурации пользователя, которые необходимо изменить (в данном случае — `password`), в параметре `updateMask`. + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} - {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "user_name": "<имя_пользователя>", + "update_mask": { + "paths": [ + "password" + ] + }, + "password": "<новый_пароль>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.UserService.Update + ``` + + Где: + + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + В данном случае указан только один параметр: `password`. + + * `password` — новый пароль пользователя. + + Длина пароля от 8 до 128 символов. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Имя пользователя можно запросить со [списком пользователей в кластере](#list-users). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/update.md#yandex.cloud.operation.Operation). {% endlist %} @@ -348,18 +595,91 @@ description: Из статьи вы узнаете, как управлять п {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} - Чтобы изменить пароль пользователя `admin`, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Новый пароль в параметре `configSpec.adminPassword`. + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - {% include [password-limits](../../_includes/mdb/mch/note-info-password-limits.md) %} + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "configSpec.adminPassword", + "configSpec": { + "adminPassword": "<новый_пароль>" + } + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + В данном случае указан только один параметр: `configSpec.adminPassword`. + + * `configSpec.adminPassword` — новый пароль пользователя. + + Длина пароля от 8 до 128 символов. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). - * Список полей конфигурации пользователя, которые необходимо изменить (в данном случае — `configSpec.adminPassword`), в параметре `updateMask`. +- gRPC API {#grpc-api} - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + "config_spec.admin_password" + ] + }, + "config_spec": { + "admin_password": "<новый_пароль>" + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + В данном случае указан только один параметр: `config_spec.admin_password`. + + * `config_spec.admin_password` — новый пароль пользователя. + + Длина пароля от 8 до 128 символов. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} @@ -516,18 +836,132 @@ description: Из статьи вы узнаете, как управлять п {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [User.update](../api-ref/User/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \ + --data '{ + "updateMask": "<перечень_изменяемых_настроек>", + "permissions": [ <обновленный_список_БД> ], + "settings": { <настройки_{{ CH }}> }, + "quotas": [ <обновленный_список_настроек_квот> ] + }' + ``` + + Где `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + Укажите нужные параметры, чтобы изменить отдельные категории настроек: + + * Чтобы изменить список БД, к которым пользователь должен иметь доступ, передайте в параметре `permissions` обновленный список БД. + + Список организован в виде массива параметров `databaseName`. Один параметр содержит имя отдельной БД. + + {% note warning %} + + Существующий в кластере список БД будет полностью перезаписан списком, переданным в параметре `permissions`. + + Перед выполнением запроса убедитесь, что вы включили в этот список все нужные БД, в том числе существующие. + + {% endnote %} + + * Чтобы изменить [настройки {{ CH }}](../concepts/settings-list.md#user-level-settings) для пользователя, передайте в параметре `settings` нужные настройки с новыми значениями. + + * Чтобы изменить [настройки квот](../concepts/settings-list.md#quota-settings), передайте в параметре `quotas` обновленный список с настройками квот. + + Список организован в виде массива. Один элемент массива содержит настройки для одной квоты. + + {% note warning %} + + Существующий в кластере список настроек квот будет полностью перезаписан списком, переданным в параметре `quotas`. + + Перед выполнением запроса убедитесь, что вы включили в этот список все нужные настройки квот, в том числе существующие. + + {% endnote %} + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Имя пользователя можно запросить со [списком пользователей в кластере](#list-users). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - Чтобы изменить настройки пользователя, воспользуйтесь методом REST API [update](../api-ref/User/update.md) для ресурса [User](../api-ref/User/index.md) или вызовом gRPC API [UserService/Update](../api-ref/grpc/User/update.md) и передайте в запросе: + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Имя пользователя, настройки которого будут изменены, в параметре `userName`. Чтобы узнать имя, [получите список пользователей](#list-users). - * (Опционально) Список баз, к которым пользователь должен иметь доступ, в параметре `userSpec.permissions[]`. - * (Опционально) Список настроек {{ CH }} для пользователя в параметре `userSpec.settings`. - * (Опционально) Список настроек квот для пользователя в параметре `userSpec.quotas[]`. - * Список полей конфигурации пользователя, которые необходимо изменить, в параметре `updateMask`. + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} - {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + 1. Воспользуйтесь вызовом [UserService/Update](../api-ref/grpc/User/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "user_name": "<имя_пользователя>", + "update_mask": { + "paths": [ + <перечень_изменяемых_настроек> + ] + }, + "permissions": [ <обновленный_список_БД> ], + "settings": { <настройки_{{ CH }}> }, + "quotas": [ <обновленный_список_настроек_квот> ] + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.UserService.Update + ``` + + Где `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + Укажите нужные параметры, чтобы изменить отдельные категории настроек: + + * Чтобы изменить список БД, к которым пользователь должен иметь доступ, передайте в параметре `permissions` обновленный список БД. + + Список организован в виде массива параметров `database_name`. Один параметр содержит имя отдельной БД. + + {% note warning %} + + Существующий в кластере список БД будет полностью перезаписан списком, переданным в параметре `permissions`. + + Перед выполнением запроса убедитесь, что вы включили в этот список все нужные БД, в том числе существующие. + + {% endnote %} + + * Чтобы изменить [настройки {{ CH }}](../concepts/settings-list.md#user-level-settings) для пользователя, передайте в параметре `settings` нужные настройки с новыми значениями. + + * Чтобы изменить [настройки квот](../concepts/settings-list.md#quota-settings), передайте в параметре `quotas` обновленный список с настройками квот. + + Список организован в виде массива. Один элемент массива содержит настройки для одной квоты. + + {% note warning %} + + Существующий в кластере список настроек квот будет полностью перезаписан списком, переданным в параметре `quotas`. + + Перед выполнением запроса убедитесь, что вы включили в этот список все нужные настройки квот, в том числе существующие. + + {% endnote %} + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Имя пользователя можно запросить со [списком пользователей в кластере](#list-users). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/update.md#yandex.cloud.operation.Operation). - SQL {#sql} @@ -597,12 +1031,53 @@ description: Из статьи вы узнаете, как управлять п {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [User.delete](../api-ref/User/delete.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request DELETE \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Имя пользователя можно запросить со [списком пользователей в кластере](#list-users). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/User/delete.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - Чтобы удалить пользователя, воспользуйтесь методом REST API [delete](../api-ref/User/delete.md) для ресурса [User](../api-ref/User/index.md) или вызовом gRPC API [UserService/Delete](../api-ref/grpc/User/delete.md) и передайте в запросе: + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Имя пользователя, настройки которого будут изменены, в параметре `userName`. Чтобы узнать имя, [получите список пользователей](#list-users). + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [UserService/Delete](../api-ref/grpc/User/delete.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "user_name": "<имя_пользователя>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.UserService.Delete + ``` + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Имя пользователя можно запросить со [списком пользователей в кластере](#list-users). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/User/delete.md#yandex.cloud.operation.Operation). - SQL {#sql} @@ -621,7 +1096,7 @@ description: Из статьи вы узнаете, как управлять п ### Создание пользователя с настройкой «только чтение» {#example-create-readonly-user} -Допустим, нужно добавить в существующий кластер с именем `mych` нового пользователя `ro-user` с паролем `Passw0rd`, причем: +Допустим, нужно добавить в существующий кластер с именем `mych` и идентификатором `{{ cluster-id }}` нового пользователя `ro-user` с паролем `Passw0rd`, причем: * пользователь должен иметь доступ к базе данных `db1` кластера; * доступ должен осуществляться в режиме «только чтение» (readonly), без возможности изменения настроек. @@ -702,6 +1177,72 @@ description: Из статьи вы узнаете, как управлять п {% include [terraform-apply](../../_includes/mdb/terraform/apply.md) %} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Выполните запрос c помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request POST \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/{{ cluster-id }}/users' \ + --data '{ + "userSpec": { + "name": "ro-user", + "password": "Passw0rd", + "permissions": [ + { + "databaseName": "db1" + } + ], + "settings": { + "readonly": "1" + } + } + }' + ``` + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Выполните запрос с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "{{ cluster-id }}", + "user_spec": { + "name": "ro-user", + "password": "Passw0rd", + "permissions": [ + { + "database_name": "db1" + } + ], + "settings": { + "readonly": "1" + } + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.UserService.Create + ``` + - SQL {#sql} 1. [Подключитесь](connect/clients.md) к кластеру `mych`, используя [учетную запись `admin`](#sql-user-management). diff --git a/ru/managed-clickhouse/operations/cluster-version-update.md b/ru/managed-clickhouse/operations/cluster-version-update.md index f8d60ad6115..900a0d2e7b3 100644 --- a/ru/managed-clickhouse/operations/cluster-version-update.md +++ b/ru/managed-clickhouse/operations/cluster-version-update.md @@ -29,9 +29,45 @@ description: Следуя данной инструкции, вы сможете yc managed-clickhouse version list ``` -- API {#api} +- REST API {#api} - Чтобы посмотреть список доступных версий, воспользуйтесь методом REST API [list](../api-ref/Versions/list.md) для ресурса [Versions](../api-ref/Versions/index.md) или вызовом gRPC API [VersionsService/List](../api-ref/grpc/Versions/list.md). + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Versions.list](../api-ref/Versions/list.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/versions' + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Versions/list.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [VersionsService/List](../api-ref/grpc/Versions/list.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/versions_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.VersionsService.List + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Versions/list.md#yandex.cloud.mdb.clickhouse.v1.ListVersionsResponse). {% endlist %} @@ -114,15 +150,87 @@ description: Следуя данной инструкции, вы сможете {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "configSpec.version", + "configSpec": { + "version": "<версия_{{ CH }}>" + } + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + В данном случае указан только один параметр: `configSpec.version`. + + * `configSpec.version` — версия {{ CH }}, до которой нужно обновиться: {{ versions.api.str }}. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + "config_spec.version" + ] + }, + "config_spec": { + "version": "<версия_{{ CH }}>" + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + В данном случае указан только один параметр: `config_spec.version`. - Чтобы обновить версию, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + * `config_spec.version` — версия {{ CH }}, до которой нужно обновиться: {{ versions.api.str }}. - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](./cluster-list.md#list-clusters). - * Версию {{ CH }} в параметре `configSpec.version`: {{ versions.api.str }}. - * Список настроек, которые необходимо изменить (в данном случае — `configSpec.version`), в параметре `updateMask`. + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} diff --git a/ru/managed-clickhouse/operations/dictionaries.md b/ru/managed-clickhouse/operations/dictionaries.md index be63cf7e766..daf26165efc 100644 --- a/ru/managed-clickhouse/operations/dictionaries.md +++ b/ru/managed-clickhouse/operations/dictionaries.md @@ -1075,33 +1075,28 @@ ## Примеры +Пусть существует кластер {{ CH }} `mych` с идентификатором `{{ cluster-id }}`, и в этот кластер нужно подключить словарь с тестовыми характеристиками: + +* имя словаря `mychdict`; +* имя ключевого столбца `id`; +* поля, доступные для запросов к базе данных: + * `id` с типом `UInt64`; + * `field1`с типом `String`; +* фиксированный период между обновлениями словаря 300 секунд; +* способ размещения словаря в памяти `cache` с размером кеша в 1024 ячейки; +* источник {{ PG }}: + * база данных `db1`; + * имя таблицы `table1`; + * порт для подключения `{{ port-mpg }}`; + * имя пользователя базы данных `user1`; + * пароль для доступа к базе данных `user1user1`; + * режим для установки защищенного SSL TCP/IP соединения с базой данных `verify-full`; + * особый FQDN хоста-мастера `c-c9qash3nb1v9********.rw.{{ dns-zone }}`. + {% list tabs group=instructions %} - CLI {#cli} - Подключите словарь с тестовыми характеристиками: - - * кластер `mych`; - * имя `mychdict`; - * имя ключевого столбца `id`; - * поля, доступные для запросов к базе данных: - - * `id` с типом `UInt64`; - * `field1`с типом `String`; - - * фиксированный период между обновлениями словаря 300 секунд; - * способ размещения словаря в памяти `cache`; - * источник {{ PG }}: - - * база данных `db1`; - * имя таблицы `table1`; - * порт для подключения `{{ port-mpg }}`; - * имя пользователя базы данных `user1`; - * пароль для доступа к базе данных `user1user1`; - * режим для установки защищенного SSL TCP/IP соединения с базой данных `verify-full`; - - * особый FQDN хоста-мастера `c-c9qash3nb1v9********.rw.{{ dns-zone }}`. - Выполните следующую команду: ```bash @@ -1115,6 +1110,7 @@ `type=String \ --fixed-lifetime=300 \ --layout-type=cache \ + --layout-size-in-cells 1024 \ --postgresql-source db=db1,` `table=table1,` `port={{ port-mpg }},` @@ -1124,6 +1120,125 @@ --postgresql-source-hosts=c-c9qash3nb1v9********.rw.{{ dns-zone }} ``` +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + ```json + { + "externalDictionary": { + "name": "mychdict", + "structure": { + "id": { + "name": "id" + }, + "attributes": [ + { + "name": "id", + "type": "UInt64" + }, + { + "name": "field1", + "type": "String" + } + ] + }, + "layout": { + "type": "CACHE", + "sizeInCells": "1024" + }, + "fixedLifetime": "300", + "postgresqlSource": { + "db": "db1", + "table": "table", + "port": "5432", + "user": "user1", + "password": "user1user1", + "sslMode": "VERIFY_FULL", + "hosts": ["c-c9qash3nb1v9********.rw.{{ dns-zone }}"] + } + } + } + ``` + + 1. Выполните запрос c помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request POST \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/{{ cluster-id }}:createExternalDictionary' \ + --data '@body.json' + ``` + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + ```json + { + "cluster_id": "{{ cluster-id }}", + "external_dictionary": { + "name": "mychdict", + "structure": { + "id": { + "name": "id" + }, + "attributes": [ + { + "name": "id", + "type": "UInt64" + }, + { + "name": "field1", + "type": "String" + } + ] + }, + "layout": { + "type": "CACHE", + "size_in_cells": "1024" + }, + "fixed_lifetime": "300", + "postgresql_source": { + "db": "db1", + "table": "table", + "port": "5432", + "user": "user1", + "password": "user1user1", + "ssl_mode": "VERIFY_FULL", + "hosts": ["c-c9qash3nb1v9********.rw.{{ dns-zone }}"] + } + } + } + ``` + + 1. Выполните запрос с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d @ \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.CreateExternalDictionary \ + < body.json + ``` + {% endlist %} {% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} diff --git a/ru/managed-clickhouse/operations/hosts.md b/ru/managed-clickhouse/operations/hosts.md index 093ae849429..fed9fbc4cd5 100644 --- a/ru/managed-clickhouse/operations/hosts.md +++ b/ru/managed-clickhouse/operations/hosts.md @@ -181,6 +181,7 @@ * `type` — тип хоста, всегда `CLICKHOUSE` для хостов {{ CH }}. * `zoneId` — зона доступности. * `subnetId` — идентификатор подсети. + * `shardName` — имя шарда. * `assignPublicIp` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. * `copySchema` — параметр, который определяет, копировать ли схему данных со случайной реплики на создаваемые хосты: `true` или `false`. @@ -233,13 +234,14 @@ * `type` — тип хоста, всегда `CLICKHOUSE` для хостов {{ CH }}. * `zone_id` — зона доступности. * `subnet_id` — идентификатор подсети. + * `shard_name` — имя шарда. * `assign_public_ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. * `copy_schema` — параметр, который определяет, копировать ли схему данных со случайной реплики на создаваемые хосты: `true` или `false`. Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation). + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/addHosts.md#yandex.cloud.operation.Operation). {% endlist %} @@ -404,7 +406,7 @@ Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation). + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/updateHosts.md#yandex.cloud.operation.Operation). {% endlist %} @@ -534,7 +536,7 @@ Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation). + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/deleteHosts.md#yandex.cloud.operation.Operation). {% endlist %} diff --git a/ru/managed-clickhouse/operations/update.md b/ru/managed-clickhouse/operations/update.md index 7f4f0f2ba57..81011e68532 100644 --- a/ru/managed-clickhouse/operations/update.md +++ b/ru/managed-clickhouse/operations/update.md @@ -166,18 +166,150 @@ description: Следуя данной инструкции, вы сможете {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} - Чтобы изменить класс хостов, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](./cluster-list.md#list-clusters). - * Нужные значения в параметре `configSpec.clickhouse.resources.resourcePresetId` (для ZooKeeper — `configSpec.zookeeper.resources.resourcePresetId`). + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - Список поддерживаемых значений запрашивайте методом [list](../api-ref/ResourcePreset/list.md) для ресурсов `ResourcePreset`. + 1. Запросите список доступных классов хостов: - * Список настроек, которые необходимо изменить, в параметре `updateMask`. + 1. Воспользуйтесь методом [ResourcePreset.list](../api-ref/ResourcePreset/list.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} + ```bash + curl \ + --request GET \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/resourcePresets' + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/ResourcePreset/list.md#responses). + + 1. Измените класс хостов на нужный: + + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "configSpec.clickhouse.resources.resourcePresetId,configSpec.zookeeper.resources.resourcePresetId", + "configSpec": { + "clickhouse": { + "resources": { + "resourcePresetId": "<идентификатор_класса_хостов_{{ CH }}>" + } + }, + "zookeeper": { + "resources": { + "resourcePresetId": "<идентификатор_класса_хостов_{{ ZK }}>" + } + } + } + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + Укажите нужные параметры: + * `configSpec.clickhouse.resources.resourcePresetId` — если нужно изменить класс хостов {{ CH }}. + * `configSpec.zookeeper.resources.resourcePresetId` — если нужно изменить класс хостов {{ ZK }}. + + В примере запроса изменяется как класс хостов {{ CH }}, так и класс хостов {{ ZK }}. + + * `configSpec.clickhouse.resources.resourcePresetId` — идентификатор класса хостов {{ CH }}. + * `configSpec.zookeeper.resources.resourcePresetId` — идентификатор класса хостов {{ ZK }}. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Список доступных классов хостов с их идентификаторами был получен ранее. + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Запросите список доступных классов хостов: + + 1. Воспользуйтесь вызовом [ResourcePresetService/List](../api-ref/grpc/ResourcePreset/list.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/resource_preset_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ResourcePresetService.List + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/ResourcePreset/list.md#yandex.cloud.mdb.clickhouse.v1.ListResourcePresetsResponse). + + 1. Измените класс хостов на нужный: + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + "config_spec.clickhouse.resources.resource_preset_id", + "config_spec.zookeeper.resources.resource_preset_id" + ] + }, + "config_spec": { + "clickhouse": { + "resources": { + "resource_preset_id": "<идентификатор_класса_хостов_{{ CH }}>" + } + }, + "zookeeper": { + "resources": { + "resource_preset_id": "<идентификатор_класса_хостов_{{ ZK }}>" + } + } + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + Укажите нужные параметры: + * `config_spec.clickhouse.resources.resource_preset_id` — если нужно изменить класс хостов {{ CH }}. + * `config_spec.zookeeper.resources.resource_preset_id` — если нужно изменить класс хостов {{ ZK }}. + + В примере запроса изменяется как класс хостов {{ CH }}, так и класс хостов {{ ZK }}. + + * `config_spec.clickhouse.resources.resource_preset_id` — идентификатор класса хостов {{ CH }}. + * `config_spec.zookeeper.resources.resource_preset_id` — идентификатор класса хостов {{ ZK }}. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). Список доступных классов хостов с их идентификаторами был получен ранее. + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} @@ -265,16 +397,117 @@ description: Следуя данной инструкции, вы сможете {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "configSpec.clickhouse.resources.diskSize,configSpec.zookeeper.resources.diskSize", + "configSpec": { + "clickhouse": { + "resources": { + "diskSize": "<размер_хранилища_в_байтах>" + } + }, + "zookeeper": { + "resources": { + "diskSize": "<размер_хранилища_в_байтах>" + } + } + } + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + Укажите нужные параметры: + + * `configSpec.clickhouse.resources.diskSize` — если нужно увеличить размер хранилища хостов {{ CH }}. + * `configSpec.zookeeper.resources.diskSize` — если нужно увеличить размер хранилища хостов {{ ZK }}. + + В примере запроса размер хранилища увеличивается как для хостов {{ CH }}, так и для хостов {{ ZK }}. + + * `configSpec.clickhouse.resources.diskSize` — размер хранилища хостов {{ CH }} в байтах. + * `configSpec.zookeeper.resources.diskSize` — размер хранилища хостов {{ ZK }} в байтах. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + "config_spec.clickhouse.resources.disk_size", + "config_spec.zookeeper.resources.disk_size" + ] + }, + "config_spec": { + "clickhouse": { + "resources": { + "disk_size": "<размер_хранилища_в_байтах>" + } + }, + "zookeeper": { + "resources": { + "disk_size": "<размер_хранилища_в_байтах>" + } + } + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + Укажите нужные параметры: - Чтобы увеличить размер хранилища, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + * `config_spec.clickhouse.resources.disk_size` — если нужно увеличить размер хранилища хостов {{ CH }}. + * `config_spec.zookeeper.resources.disk_size` — если нужно увеличить размер хранилища хостов {{ ZK }}. - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](./cluster-list.md#list-clusters). - * Нужный размер хранилища хостов {{ CH }} в параметре `configSpec.clickhouse.resources.diskSize`. - * Нужный размер хранилища хостов {{ ZK }} в параметре `configSpec.zookeeper.resources.diskSize`. - * Список полей конфигурации кластера, которые необходимо изменить, в параметре `updateMask`. + В примере запроса размер хранилища увеличивается как для хостов {{ CH }}, так и для хостов {{ ZK }}. - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} + * `config_spec.clickhouse.resources.disk_size` — размер хранилища хостов {{ CH }} в байтах. + * `config_spec.zookeeper.resources.disk_size` — размер хранилища хостов {{ ZK }} в байтах. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} @@ -354,13 +587,109 @@ description: Следуя данной инструкции, вы сможете {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "configSpec.adminPassword,configSpec.sqlUserManagement,configSpec.sqlDatabaseManagement", + "configSpec": { + "adminPassword": "<пароль_пользователя_admin>", + "sqlUserManagement": <управление_пользователями_через_SQL>, + "sqlDatabaseManagement": <управление_базами_данных_через_SQL> + } + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + Укажите нужные параметры: + + * `configSpec.adminPassword` — пароль пользователя `admin`, с помощью которого осуществляется управление. + * `configSpec.sqlUserManagement` — если нужно включить управление пользователями через SQL. + * `configSpec.sqlDatabaseManagement` — если нужно включить управление базами данных через SQL. + + В примере запроса включается и управление пользователями, и управление базами данных черех SQL. + + * `configSpec.adminPassword` — пароль пользователя `admin`. + * `configSpec.sqlUserManagement` — режим управления пользователями через SQL: `true` или `false`. + * `configSpec.sqlDatabaseManagement` — режим управления базами данных через SQL: `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - Чтобы включить управление пользователями и базами данных через SQL, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе нужные значения в параметре `configSpec.clickhouse.config`: + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} - * `sqlUserManagement` — задайте значение `true` для включения режима [управления пользователями через SQL](cluster-users.md#sql-user-management). - * `sqlDatabaseManagement` — задайте значение `true` для включения режима [управления базами данных через SQL](databases.md#sql-database-management). Необходимо, чтобы был включен режим управления пользователями через SQL. - * `adminPassword` — задайте пароль пользователя `admin`, с помощью которого осуществляется управление. + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + "config_spec.admin_password", + "config_spec.sql_user_management", + "config_spec.sql_database_management" + ] + }, + "config_spec": { + "admin_password": "<пароль_пользователя_admin>", + "sql_user_management": <управление_пользователями_через_SQL>, + "sql_database_management": <управление_базами_данных_через_SQL> + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + Укажите нужные параметры: + + * `config_spec.admin_password` — пароль пользователя `admin`, с помощью которого осуществляется управление. + * `config_spec.sql_user_management` — если нужно включить управление пользователями через SQL. + * `config_spec.sql_database_management` — если нужно включить управление базами данных через SQL. + + В примере запроса включается и управление пользователями, и управление базами данных черех SQL. + + * `config_spec.admin_password` — пароль пользователя `admin`. + * `config_spec.sql_user_management` — режим управления пользователями через SQL: `true` или `false`. + * `config_spec.sql_database_management` — режим управления базами данных через SQL: `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL. + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} @@ -511,21 +840,176 @@ description: Следуя данной инструкции, вы сможете {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + + ```json + { + "updateMask": "<перечень_изменяемых_настроек>", + "configSpec": { + "backupWindowStart": { + "hours": "<часы>", + "minutes": "<минуты>", + "seconds": "<секунды>", + "nanos": "<наносекунды>" + }, + "access": { + "dataLens": <доступ_из_{{ datalens-name }}>, + "webSql": <выполнение_SQL-запросов>, + "metrika": <импорт_данных_из_AppMetrica>, + "serverless": <доступ_из_{{ sf-full-name }}>, + "dataTransfer": <доступ_из_{{ data-transfer-full-name }}>, + "yandexQuery": <доступ_из_{{ yq-full-name }}> + } + }, + "maintenanceWindow": { + "anytime": {}, + "weeklyMaintenanceWindow": { + "day": "<день_недели>", + "hour": "<час_дня_по_UTC>" + } + }, + "deletionProtection": <защита_от_удаления> + } + ``` + + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. + + * {% include [backup-windows-start-rest](../../_includes/mdb/api/backup-windows-start-rest.md) %} + + * `configSpec.access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью {{ websql-full-name }}: + + {% include [rest-access-settings](../../_includes/mdb/mch/api/rest-access-settings.md) %} + + * `maintenanceWindow` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Выберите один из вариантов: + + * `anytime` — (по умолчанию) — в любое время. + * `weeklyMaintenanceWindow` — по расписанию: + * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`. + * `hour` — час дня по UTC в формате `HH`: от `1` до `24`. + + * `deletionProtection` — защитить кластер, его базы данных и пользователей от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`. + + {% include [Ограничения защиты от удаления](../../_includes/mdb/deletion-protection-limits-db.md) %} - Чтобы изменить дополнительные настройки кластера, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + 1. Выполните запрос: - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](./cluster-list.md#list-clusters). - * Настройки доступа из других сервисов и к SQL-запросам из консоли управления с помощью сервиса {{ websql-full-name }} в параметре `configSpec.access`. - * Настройки окна резервного копирования в параметре `configSpec.backupWindowStart`. - * Настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров) в параметре `maintenanceWindow`. - * Настройки защиты от удаления кластера в параметре `deletionProtection`. + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '@body.json' + ``` - {% include [Ограничения защиты от удаления кластера](../../_includes/mdb/deletion-protection-limits-db.md) %} + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - * Список изменяемых полей конфигурации кластера в параметре `updateMask`. + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + 1. Создайте файл `body.json` и добавьте в него следующее содержимое: + + + ```json + { + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + <перечень_изменяемых_настроек> + ] + }, + "config_spec": { + "backup_window_start": { + "hours": "<часы>", + "minutes": "<минуты>", + "seconds": "<секунды>", + "nanos": "<наносекунды>" + }, + "access": { + "data_lens": <доступ_из_{{ datalens-name }}>, + "web_sql": <выполнение_SQL-запросов>, + "metrika": <импорт_данных_из_AppMetrica>, + "serverless": <доступ_из_{{ sf-full-name }}>, + "data_transfer": <доступ_из_{{ data-transfer-full-name }}>, + "yandex_query": <доступ_из_{{ yq-full-name }}> + } + }, + "maintenance_window": { + "anytime": {}, + "weekly_maintenance_window": { + "day": "<день_недели>", + "hour": "<час_дня_по_UTC>" + } + }, + "deletion_protection": <защита_от_удаления> + } + ``` + + + Где: + + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + * {% include [backup-windows-start-grpc](../../_includes/mdb/api/backup-windows-start-grpc.md) %} + + * `config_spec.access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью {{ websql-full-name }}: + + {% include [grpc-access-settings](../../_includes/mdb/mch/api/grpc-access-settings.md) %} + + * `maintenance_window` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Выберите один из вариантов: + + * `anytime` — (по умолчанию) — в любое время. + * `weekly_maintenance_window` — по расписанию: + * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`. + * `hour` — час дня по UTC в формате `HH`: от `1` до `24`. + + * `deletion_protection` — защитить кластер, его базы данных и пользователей от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`. + + {% include [Ограничения защиты от удаления](../../_includes/mdb/deletion-protection-limits-db.md) %} + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Выполните запрос: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d @ \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update \ + < body.json + ``` + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} @@ -564,12 +1048,61 @@ description: Следуя данной инструкции, вы сможете Идентификатор кластера можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters). -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: - Чтобы переместить кластер, воспользуйтесь методом REST API [move](../api-ref/Cluster/move.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Move](../api-ref/grpc/Cluster/move.md) и передайте в запросе: + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Идентификатор каталога назначения в параметре `destinationFolderId`. + 1. Воспользуйтесь методом [Cluster.move](../api-ref/Cluster/move.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + ```bash + curl \ + --request POST \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>:move' \ + --data '{ + "destinationFolderId": "<идентификатор_каталога_назначения>" + }' + ``` + + Где `destinationFolderId` — идентификатор каталога назначения, в который нужно переместить кластер. Этот идентификатор можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md). + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/move.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Move](../api-ref/grpc/Cluster/move.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "destination_folder_id": "<идентификатор_каталога_назначения>" + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Move + ``` + + Где `destination_folder_id` — идентификатор каталога назначения, в который нужно переместить кластер. Этот идентификатор можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md). + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/move.md#yandex.cloud.operation.Operation). {% endlist %} @@ -632,15 +1165,102 @@ description: Следуя данной инструкции, вы сможете {% include [Terraform timeouts](../../_includes/mdb/mch/terraform/timeouts.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} - Чтобы изменить группы безопасности, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "securityGroupIds", + "securityGroupIds": [ + <список_идентификаторов_групп_безопасности> + ] + }' + ``` + + Где: - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Список идентификаторов групп безопасности в параметре `securityGroupIds`. - * Список настроек, которые необходимо изменить, в параметре `updateMask`. + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} + В данном случае указан только один параметр: `securityGroupIds`. + + * `securityGroupIds` — массив строк. Каждая строка — идентификатор группы безопасности. + + {% note warning %} + + Список назначенных кластеру групп безопасности будет полностью перезаписан списком, переданным в параметре `securityGroupIds`. + + Перед выполнением запроса убедитесь, что вы включили в этот список все нужные идентификаторы групп безопасности, в том числе существующие. + + {% endnote %} + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + "security_group_ids" + ] + }, + "security_group_ids": [ + <список_идентификаторов_групп_безопасности> + ] + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. + + В данном случае указан только один параметр: `security_group_ids`. + + * `security_group_ids` — массив строк. Каждая строка — идентификатор группы безопасности. + + {% note warning %} + + Список назначенных кластеру групп безопасности будет полностью перезаписан списком, переданным в параметре `security_group_ids`. + + Перед выполнением запроса убедитесь, что вы включили в этот список все нужные идентификаторы групп безопасности, в том числе существующие. + + {% endnote %} + + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} @@ -692,22 +1312,98 @@ description: Следуя данной инструкции, вы сможете {% include [Hybrid Storage settings CLI](../../_includes/mdb/mch/hybrid-storage-settings-cli.md) %} -- API {#api} +- REST API {#api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. Воспользуйтесь методом [Cluster.update](../api-ref/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.rest.tool }}: + + {% include [note-updatemask](../../_includes/note-api-updatemask.md) %} + + ```bash + curl \ + --request PATCH \ + --header "Authorization: Bearer $IAM_TOKEN" \ + --header "Content-Type: application/json" \ + --url 'https://{{ api-host-mdb }}/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ + --data '{ + "updateMask": "<перечень_изменяемых_настроек>", + "configSpec": { + "cloudStorage": { + "enabled": <использование_гибридного_хранилища>, + "moveFactor": "<доля_свободного_места>", + "dataCacheEnabled": <временное_хранение_файлов>, + "dataCacheMaxSize": "<максимальный_объем_памяти_для_хранения_файлов>", + "preferNotToMerge": <отключение_слияния_кусков_данных> + } + } + }' + ``` + + Где: + + * `updateMask` — перечень изменяемых параметров в одну строку через запятую. - Чтобы изменить настройки гибридного хранилища, воспользуйтесь методом REST API [update](../api-ref/Cluster/update.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и передайте в запросе: + * `configSpec.cloudStorage` — настройки гибридного хранилища: - * Идентификатор кластера в параметре `clusterId`. Чтобы узнать идентификатор, [получите список кластеров в каталоге](cluster-list.md#list-clusters). - * Значение `true` в параметре `configSpec.cloudStorage.enabled`, если гибридное хранилище еще не включено. + {% include [rest-cloud-storage-settings](../../_includes/mdb/mch/api/rest-cloud-storage-settings.md) %} - {% include [Hybrid Storage cannot be switched off](../../_includes/mdb/mch/hybrid-storage-cannot-be-switched-off.md) %} + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). + + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#responses). + +- gRPC API {#grpc-api} + + 1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения: + + {% include [api-auth-token](../../_includes/mdb/api-auth-token.md) %} + + 1. {% include [grpc-api-setup-repo](../../_includes/mdb/grpc-api-setup-repo.md) %} + + 1. Воспользуйтесь вызовом [ClusterService/Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например, с помощью {{ api-examples.grpc.tool }}: + + {% include [note-grpc-updatemask](../../_includes/note-grpc-api-updatemask.md) %} + + ```bash + grpcurl \ + -format json \ + -import-path ~/cloudapi/ \ + -import-path ~/cloudapi/third_party/googleapis/ \ + -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ + -rpc-header "Authorization: Bearer $IAM_TOKEN" \ + -d '{ + "cluster_id": "<идентификатор_кластера>", + "update_mask": { + "paths": [ + <перечень_изменяемых_настроек> + ] + }, + "config_spec": { + "cloud_storage": { + "enabled": <использование_гибридного_хранилища>, + "move_factor": "<доля_свободного_места>", + "data_cache_enabled": <временное_хранение_файлов>, + "data_cache_max_size": "<максимальный_объем_памяти_для_хранения_файлов>", + "prefer_not_to_merge": <отключение_слияния_кусков_данных> + } + } + }' \ + {{ api-host-mdb }}:{{ port-https }} \ + yandex.cloud.mdb.clickhouse.v1.ClusterService.Update + ``` + + Где: + * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. - * [Настройки гибридного хранилища](../concepts/storage.md#hybrid-storage-settings) в параметрах `configSpec.cloudStorage`: + * `config_spec.cloud_storage` — настройки гибридного хранилища: - {% include [Hybrid Storage settings API](../../_includes/mdb/mch/hybrid-storage-settings-api.md) %} + {% include [grpc-cloud-storage-settings](../../_includes/mdb/mch/api/grpc-cloud-storage-settings.md) %} - * Список настроек, которые необходимо изменить, в параметре `updateMask`. + Идентификатор кластера можно запросить со [списком кластеров в каталоге](./cluster-list.md#list-clusters). - {% include [Note API updateMask](../../_includes/note-api-updatemask.md) %} + 1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation). {% endlist %} diff --git a/ru/managed-clickhouse/toc.yaml b/ru/managed-clickhouse/toc.yaml index 5cea697415a..2fe239c11fa 100644 --- a/ru/managed-clickhouse/toc.yaml +++ b/ru/managed-clickhouse/toc.yaml @@ -144,6 +144,20 @@ items: Копирование данных из {{ mos-name }} в {{ mch-name }} с помощью {{ data-transfer-full-name }} href: tutorials/opensearch-to-clickhouse.md + - name: Ввод данных в системы хранения + href: tutorials/data-ingestion.md + - name: Использование параметров + href: tutorials/data-from-ch-with-parameters.md + - name: Примеры создания QL-чартов + href: tutorials/data-from-ch-to-sql-chart.md + - name: Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики + href: tutorials/data-from-metrica-yc-visualization.md + - name: 'AppMetrica: прямое подключение' + href: tutorials/data-from-appmetrica-visualization.md + - name: 'AppMetrica: экспорт, постобработка и визуализация данных' + href: tutorials/data-from-appmetrica-yc-visualization.md + - name: '{{ tracker-full-name }}: экспорт и визуализация данных' + href: tutorials/data-from-tracker.md - name: Дашборд сети магазинов из БД {{ CH }} href: tutorials/data-from-ch-visualization.md - name: >- diff --git a/ru/managed-clickhouse/tutorials/data-from-appmetrica-visualization.md b/ru/managed-clickhouse/tutorials/data-from-appmetrica-visualization.md new file mode 100644 index 00000000000..6720a4cd44d --- /dev/null +++ b/ru/managed-clickhouse/tutorials/data-from-appmetrica-visualization.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-appmetrica-visualization' +--- + +{% include [data-from-appmetrica-visualization](../../_tutorials/datalens/data-from-appmetrica-visualization.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} diff --git a/ru/managed-clickhouse/tutorials/data-from-appmetrica-yc-visualization.md b/ru/managed-clickhouse/tutorials/data-from-appmetrica-yc-visualization.md new file mode 100644 index 00000000000..7b9350f159e --- /dev/null +++ b/ru/managed-clickhouse/tutorials/data-from-appmetrica-yc-visualization.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-appmetrica-yc-visualization' +--- + +{% include [data-from-metrica-yc-visualization](../../_tutorials/datalens/data-from-appmetrica-yc-visualization.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} \ No newline at end of file diff --git a/ru/managed-clickhouse/tutorials/data-from-ch-to-sql-chart.md b/ru/managed-clickhouse/tutorials/data-from-ch-to-sql-chart.md new file mode 100644 index 00000000000..8a5b7842276 --- /dev/null +++ b/ru/managed-clickhouse/tutorials/data-from-ch-to-sql-chart.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-ch-to-sql-chart' +--- + +{% include [data-from-ch-to-sql-chart](../../_tutorials/datalens/data-from-ch-to-sql-chart.md) %} diff --git a/ru/managed-clickhouse/tutorials/data-from-ch-with-parameters.md b/ru/managed-clickhouse/tutorials/data-from-ch-with-parameters.md new file mode 100644 index 00000000000..12b975e21da --- /dev/null +++ b/ru/managed-clickhouse/tutorials/data-from-ch-with-parameters.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-ch-with-parameters' +--- + +{% include [data-from-ch-with-parameters](../../_tutorials/datalens/data-from-ch-with-parameters.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} diff --git a/ru/managed-clickhouse/tutorials/data-from-metrica-yc-visualization.md b/ru/managed-clickhouse/tutorials/data-from-metrica-yc-visualization.md new file mode 100644 index 00000000000..10d833c40bb --- /dev/null +++ b/ru/managed-clickhouse/tutorials/data-from-metrica-yc-visualization.md @@ -0,0 +1,9 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-metrica-yc-visualization' +--- + +# Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики + +{% include notitle [data-from-metrica-yc-visualization](../../_tutorials/datalens/data-from-metrica-yc-visualization.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} diff --git a/ru/managed-clickhouse/tutorials/data-from-tracker.md b/ru/managed-clickhouse/tutorials/data-from-tracker.md new file mode 100644 index 00000000000..81cdc4df7e9 --- /dev/null +++ b/ru/managed-clickhouse/tutorials/data-from-tracker.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-tracker' +--- + +{% include [visualisation-in-datalens](../../_tutorials/datalens/data-from-tracker.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} \ No newline at end of file diff --git a/ru/managed-clickhouse/tutorials/data-ingestion.md b/ru/managed-clickhouse/tutorials/data-ingestion.md new file mode 100644 index 00000000000..daef82382a9 --- /dev/null +++ b/ru/managed-clickhouse/tutorials/data-ingestion.md @@ -0,0 +1,7 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/data-ingestion' +--- + +{% include [data-ingestion](../../_tutorials/serverless/data-ingestion.md) %} + +{% include [clickhouse-disclaimer](../../_includes/clickhouse-disclaimer.md) %} \ No newline at end of file diff --git a/ru/managed-clickhouse/tutorials/index.md b/ru/managed-clickhouse/tutorials/index.md index c1bda8237a0..7027722006c 100644 --- a/ru/managed-clickhouse/tutorials/index.md +++ b/ru/managed-clickhouse/tutorials/index.md @@ -25,10 +25,17 @@ description: Различные сценарии использования {{ m * [{#T}](rdbms-to-clickhouse.md) * [{#T}](opensearch-to-clickhouse.md) * [{#T}](ydb-to-clickhouse.md) +* [Использование параметров](data-from-ch-with-parameters.md) +* [Примеры создания QL-чартов](data-from-ch-to-sql-chart.md) +* [{#T}](data-from-metrica-yc-visualization.md) +* [{#T}](data-from-appmetrica-visualization.md) +* [{#T}](data-from-appmetrica-yc-visualization.md) +* [{#T}](data-from-tracker.md) * [{#T}](data-from-ch-visualization.md) * [{#T}](data-from-ch-to-geolayers-visualization.md) * [{#T}](data-from-ch-geocoder.md) * [{#T}](greenplum-to-clickhouse.md) +* [{#T}](data-ingestion.md) О миграции хостов кластера {{ mch-name }} в другую зону доступности читайте в [инструкции](../operations/host-migration.md). diff --git a/ru/managed-kafka/operations/cluster-create.md b/ru/managed-kafka/operations/cluster-create.md index 41725ecf8e4..4e2ba362331 100644 --- a/ru/managed-kafka/operations/cluster-create.md +++ b/ru/managed-kafka/operations/cluster-create.md @@ -12,7 +12,19 @@ {% endnote %} -{% include [mkf-zk-hosts](../../_includes/mdb/mkf-zk-hosts.md) %} +## Различия в конфигурации кластеров с {{ ZK }} и протоколом {{ kraft-name }} {#zk-vs-kraft} + +Если вы создаете кластер с версией {{ KF }} 3.5 или ниже, в котором больше одного хоста, то в кластер будут добавлены три выделенных хоста {{ ZK }}. + +В кластерах с версией {{ KF }} 3.6 и выше поддержан протокол [{{ kraft-name }}](../concepts/kraft.md) (сокращенно {{ kraft-short-name }}). Он используется для хранения метаданных вместо {{ ZK }}. + +При создании кластера с протоколом {{ kraft-short-name }} действуют ограничения на конфигурацию: + * Можно создать кластер только с одной или тремя [зонами доступности](../../overview/concepts/geo-scope.md). + * Ограничено количество хостов-брокеров: + * Если выбрана одна зона доступности, можно создать один или три хоста-брокера. + * Если выбраны три зоны доступности, можно создать только один хост-брокер. + +Подробнее о различиях в конфигурации кластеров с {{ ZK }} и {{ kraft-short-name }} см. в разделе [Взаимосвязь ресурсов в {{ mkf-name }}](../../managed-kafka/concepts/index.md). ## Перед началом работы {#before-you-begin} @@ -23,24 +35,26 @@ Если вы указываете идентификаторы групп безопасности при создании кластера {{ mkf-name }}, для подключения к нему может понадобиться дополнительная [настройка групп безопасности](connect/index.md#configuring-security-groups). -## Создать кластер с версией {{ KF }} 3.5 или ниже {#create-cluster} +## Создать кластер {#create-cluster} {% list tabs group=instructions %} - Консоль управления {#console} + Чтобы создать кластер {{ mkf-name }}: + 1. В [консоли управления]({{ link-console-main }}) перейдите в нужный [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder). 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_managed-kafka }}**. 1. Нажмите кнопку **{{ ui-key.yacloud.mdb.clusters.button_create }}**. 1. В блоке **{{ ui-key.yacloud.mdb.forms.section_base }}**: 1. Введите имя кластера {{ mkf-name }} и его описание. Имя кластера {{ mkf-name }} должно быть уникальным в рамках каталога. - 1. Выберите окружение, в котором нужно создать кластер {{ mkf-name }} (после создания кластера окружение изменить невозможно): + 1. Выберите окружение, в котором нужно создать кластер {{ mkf-name }} (после создания кластера изменить окружение невозможно): * `PRODUCTION` — для стабильных версий приложений. * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением. - 1. Выберите версию {{ KF }} 3.5 или ниже. + 1. Выберите версию {{ KF }}. 1. В блоке **{{ ui-key.yacloud.mdb.forms.section_resource }}** выберите [платформу](../../compute/concepts/vm-platforms.md), тип хостов и класс хостов. - Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты брокеры {{ KF }}. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md). + Класс хостов определяет технические характеристики [виртуальных машин](../../compute/concepts/vm.md), на которых будут развернуты хосты-брокеры {{ KF }}. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md). При [изменении класса хостов](cluster-update.md#change-brokers) для кластера {{ mkf-name }} меняются характеристики всех уже созданных экземпляров. 1. В блоке **{{ ui-key.yacloud.mdb.forms.section_storage }}**: @@ -56,18 +70,20 @@ * Выберите объем хранилища, который будет использоваться для данных. - 1. В блоке **{{ ui-key.yacloud.mdb.cluster.section_disk-scaling }}** задайте [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища, при достижении которых его размер будет увеличиваться: + 1. В блоке **{{ ui-key.yacloud.mdb.cluster.section_disk-scaling }}** задайте [пороги заполненности](../concepts/storage.md#auto-rescale) хранилища, при достижении которых его размер будет увеличиваться: {% include [autoscale-settings](../../_includes/mdb/mkf/autoscale-settings.md) %} - + 1. В блоке **{{ ui-key.yacloud.mdb.forms.section_network-settings }}**: - 1. Выберите одну или несколько [зон доступности](../../overview/concepts/geo-scope.md), в которых нужно разместить брокеры {{ KF }}. Если создать кластер {{ mkf-name }} с одной зоной доступности, в дальнейшем увеличить количество зон и брокеров будет невозможно. + 1. Выберите одну или несколько зон доступности, в которых нужно разместить хосты-брокеры {{ KF }}. + Если создать кластер {{ mkf-name }} с одной зоной доступности, в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно. + Для кластеров с версией {{ KF }} 3.6 и выше можно выбрать только одну или три зоны доступности. 1. Выберите [сеть](../../vpc/concepts/network.md#network). 1. Выберите [подсети](../../vpc/concepts/network.md#subnet) в каждой зоне доступности для этой сети. Чтобы [создать новую подсеть](../../vpc/operations/subnet-create.md), нажмите на кнопку **{{ ui-key.yacloud.common.label_create-new_female }}** рядом с нужной зоной доступности. {% note info %} - Для кластера {{ mkf-name }} из нескольких хостов-брокеров нужно указать подсети в каждой зоне доступности, даже если вы планируете разместить брокеры только в некоторых из них. Эти подсети понадобятся для размещения трех [хостов {{ ZK }}](../concepts/index.md) — по одному в каждой зоне доступности. Подробнее см. в разделе [Взаимосвязь ресурсов сервиса](../concepts/index.md). + Для кластера с версией {{ KF }} 3.5 или ниже, в котором несколько хостов-брокеров, укажите подсети в каждой зоне доступности, даже если вы планируете разместить хосты-брокеры только в некоторых из них. Эти подсети понадобятся для размещения трех [хостов {{ ZK }}](../concepts/index.md) — по одному в каждой зоне доступности. Подробнее см. в разделе [Взаимосвязь ресурсов сервиса](../concepts/index.md). {% endnote %} @@ -79,6 +95,13 @@ 1. Укажите количество хостов-брокеров {{ KF }} для размещения в каждой выбранной зоне доступности. При выборе количества хостов учтите следующие особенности: + * В версиях {{ KF }} 3.6 и выше [количество хостов-брокеров зависит](#zk-vs-kraft) от выбранных зон доступности: + + * Одна зона доступности — один или три хоста-брокера. Чтобы использовать три хоста-брокера, включите настройку **{{ ui-key.yacloud.kafka.field_kraft-combined-mode }}**. + * Три зоны доступности — один хост-брокер. + + Задать количество хостов-брокеров вручную нельзя. + * Репликация возможна при наличии как минимум двух хостов в кластере {{ mkf-name }}. @@ -86,7 +109,7 @@ * Для отказоустойчивости кластера {{ mkf-name }} должны выполняться [определенные условия](../concepts/index.md#fault-tolerance). - * Добавление в кластер {{ mkf-name }} более одного хоста приведет к автоматическому добавлению трех хостов {{ ZK }}. + * Добавление в кластер с версией {{ KF }} 3.5 или ниже более одного хоста приведет к автоматическому добавлению трех хостов {{ ZK }}. 1. (Опционально) Выберите группы [выделенных хостов](../../compute/concepts/dedicated-host.md), на которых будет размещен кластер {{ mkf-name }}. @@ -94,7 +117,7 @@ {% include [Dedicated hosts note](../../_includes/mdb/mkf/note-dedicated-hosts.md) %} - 1. Если вы указали более одного хоста-брокера, то в блоке **{{ ui-key.yacloud.kafka.section_zookeeper-resources }}** укажите характеристики [хостов {{ ZK }}](../concepts/index.md) для размещения в каждой выбранной зоне доступности. + 1. Если вы создаете кластер с версией {{ KF }} 3.5 или ниже и указали более одного хоста-брокера, то в блоке **{{ ui-key.yacloud.kafka.section_zookeeper-resources }}** укажите характеристики [хостов {{ ZK }}](../concepts/index.md) для размещения в каждой выбранной зоне доступности. 1. При необходимости задайте дополнительные настройки кластера {{ mkf-name }}: {% include [extra-settings](../../_includes/mdb/mkf/extra-settings.md) %} @@ -109,6 +132,12 @@ {% include [default-catalogue](../../_includes/default-catalogue.md) %} + {% note warning %} + + При создании кластера с {{ kraft-short-name }} не указывайте настройки {{ ZK }}. + + {% endnote %} + Чтобы создать кластер {{ mkf-name }}: 1. Посмотрите описание команды CLI для создания кластера {{ mkf-name }}: @@ -127,7 +156,8 @@ --version <версия> \ --network-name <имя_сети> \ --subnet-ids <идентификаторы_подсетей> \ - --brokers-count <количество_брокеров_в_зоне> \ + --zone-ids <зоны_доступности> \ + --brokers-count <количество_хостов-брокеров_в_зоне> \ --resource-preset <класс_хоста> \ --disk-type \ --disk-size <размер_хранилища_ГБ> \ @@ -140,10 +170,18 @@ Где: * `--environment` — окружение кластера: `prestable` или `production`. - * `--version` — версия {{ KF }}: {{ versions.cli.str-without-latest }}. + * `--version` — версия {{ KF }}: 2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5 или 3.6. + * `--zone-ids` и `--brokers-count` — зоны доступности и число хостов-брокеров в каждой зоне. + + Для [кластеров с версией {{ KF }} 3.6 и выше](#zk-vs-kraft) доступны только следующие конфигурации: + + * `--zone-ids={{ region-id }}-a,{{ region-id }}-b,{{ region-id }}-d --brokers-count=1`; + * `--zone-ids=<одна_зона_доступности> --brokers-count=1`; + * `--zone-ids=<одна_зона_доступности> --brokers-count=3`. + * `--resource-preset` — [класс хостов](../concepts/instance-types.md). * `--disk-type` — [тип диска](../concepts/storage.md). - + {% include [storages-type-no-change](../../_includes/mdb/storages-type-no-change.md) %} * {% include [deletion-protection](../../_includes/mdb/cli/deletion-protection.md) %} @@ -203,6 +241,12 @@ {% include [terraform-install](../../_includes/terraform-install.md) %} + {% note warning %} + + При создании кластера с {{ kraft-short-name }} не указывайте настройки {{ ZK }}. + + {% endnote %} + Чтобы создать кластер {{ mkf-name }}: 1. Опишите в конфигурационном файле создаваемые ресурсы: * Кластер {{ mkf-name }} — описание кластера и его хостов. При необходимости здесь же можно задать [настройки {{ KF }}](../concepts/settings-list.md#cluster-settings). @@ -225,9 +269,10 @@ deletion_protection = <защита_от_удаления> config { - assign_public_ip = "<публичный_доступ>" - brokers_count = <количество_брокеров> version = "<версия>" + zones = ["<зоны_доступности>"] + brokers_count = <количество_хостов-брокеров> + assign_public_ip = "<публичный_доступ>" schema_registry = "<управление_схемами_данных>" kafka { resources { @@ -237,10 +282,6 @@ } kafka_config {} } - - zones = [ - "<зоны_доступности>" - ] } } @@ -262,13 +303,20 @@ Где: * `environment` — окружение кластера: `PRESTABLE` или `PRODUCTION`. + * `version` — версия {{ KF }}: 2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5 или 3.6. + * `zones` и `brokers_count` — зоны доступности и число хостов-брокеров в каждой зоне. + + Если вы создаете [кластер с версией {{ KF }} 3.6 и выше](#zk-vs-kraft), укажите одну из доступных конфигураций: + + * `zones = ["{{ region-id }}-a","{{ region-id }}-b","{{ region-id }}-d"] brokers_count = 1`; + * `zones = ["<одна_зона_доступности>"] brokers_count = 1`; + * `zones = ["<одна_зона_доступности>"] brokers_count = 3`. + * `deletion_protection` — защита от удаления кластера: `true` или `false`. * `assign_public_ip` — публичный доступ к кластеру: `true` или `false`. - * `version` — версия {{ KF }}: {{ versions.tf.str-without-latest }}. * `schema_registry` — управление схемами данных: `true` или `false`. - {% include [deletion-protection-limits-data](../../_includes/mdb/deletion-protection-limits-data.md) %} {% include [Maintenance window](../../_includes/mdb/mkf/terraform/maintenance-window.md) %} @@ -289,10 +337,24 @@ - API {#api} + {% note warning %} + + При создании кластера с {{ kraft-short-name }} не указывайте настройки {{ ZK }}. + + {% endnote %} + Чтобы создать кластер {{ mkf-name }}, воспользуйтесь методом REST API [create](../api-ref/Cluster/create.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Create](../api-ref/grpc/Cluster/create.md) и передайте в запросе: + * Идентификатор [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором должен быть размещен кластер {{ mkf-name }}, в параметре `folderId`. * Имя кластера {{ mkf-name }} в параметре `name`. - * Версию {{ KF }}: {{ versions.cli.str-without-latest }} — в параметре `configSpec.version`. + * Окружение: `PRESTABLE` или `PRODUCTION` — в параметре `environment`. + * Версию {{ KF }}: 2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5 или 3.6. — в параметре `configSpec.version`. + * Зоны доступности в параметре `configSpec.zoneId`. + При создании [кластера с версией {{ KF }} 3.6 и выше](#zk-vs-kraft) можно указать только одну или три зоны доступности. + * Количество хостов-брокеров в параметре `configSpec.brokersCount`. + При создании [кластера с версией {{ KF }} 3.6 и выше](#zk-vs-kraft) можно указать только один или три хоста-брокера: + * Если в параметре `configSpec.zoneId` указаны три зоны доступности, укажите количество хостов-брокеров `1`. + * Если в параметре `configSpec.zoneId` указана одна зона доступности, укажите количество хостов-брокеров `1` или `3`. * Идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в параметре `securityGroupIds`. @@ -320,252 +382,41 @@ {% endlist %} -## Создать кластер с версией {{ KF }} 3.6 или выше {#higher-version} +Чтобы убедиться, что созданный кластер с версией {{ KF }} 3.6 или выше использует протокол {{ kraft-short-name }}, получите информацию о хостах кластера: -В кластерах {{ mkf-name }} с версией {{ KF }} 3.6 и выше поддержан протокол [{{ kraft-name }}](../concepts/kraft.md) (сокращенно {{ kraft-short-name }}). Он используется для хранения метаданных вместо {{ ZK }}. - -Создать кластер с {{ kraft-short-name }} можно только с определенной конфигурацией и не во всех интерфейсах {{ yandex-cloud }}. Поэтому процесс создания кластера отличается для версий {{ KF }} 3.6 и выше. - -{% note warning %} - -При создании кластера с {{ kraft-short-name }} не указывайте настройки {{ ZK }}. +{% list tabs group=instructions %} -{% endnote %} +- Консоль управления {#console} -{% list tabs group=instructions %} + 1. В [консоли управления]({{ link-console-main }}) перейдите в нужный каталог. + 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_managed-kafka }}**. + 1. Нажмите на имя созданного кластера. + 1. На панели слева выберите **{{ ui-key.yacloud.mdb.cluster.hosts.label_title }}**. -* CLI {#cli} +- CLI {#cli} {% include [cli-install](../../_includes/cli-install.md) %} {% include [default-catalogue](../../_includes/default-catalogue.md) %} - Чтобы создать кластер {{ mkf-name }}: + Чтобы получить список хостов кластера {{ mkf-name }}: - 1. Посмотрите описание команды CLI для создания кластера {{ mkf-name }}: + 1. Посмотрите описание команды CLI для получения списка хостов кластера {{ mkf-name }}: ```bash - {{ yc-mdb-kf }} cluster create --help + {{ yc-mdb-kf }} cluster list-hosts --help ``` - - 1. Укажите параметры кластера {{ mkf-name }} в команде создания (в примере приведены не все параметры): + 1. Получите список хостов кластера: ```bash - {{ yc-mdb-kf }} cluster create \ - --name <имя_кластера> \ - --environment prestable \ - --version 3.6 \ - --network-name <имя_сети> \ - --subnet-ids <идентификаторы_подсетей> \ - --zone-ids <зоны_доступности> \ - --brokers-count <количество_брокеров_в_зоне> \ - --resource-preset <класс_хоста> \ - --disk-type \ - --disk-size <размер_хранилища_ГБ> \ - --assign-public-ip <публичный_доступ> \ - --security-group-ids <список_идентификаторов_групп_безопасности> \ - --deletion-protection - ``` - - Где: - - * `--environment` — окружение кластера `prestable`. Только в этом окружении поддержана версия {{ KF }} 3.6. - * `--version` — версия {{ KF }} {{ versions.cli.latest }}. - * `--zone-ids` и `--brokers-count` — зоны доступности и число брокеров в каждой зоне. Укажите одну из доступных конфигураций: - - * `--zone-ids={{ region-id }}-a,{{ region-id }}-b,{{ region-id }}-d --brokers-count=1`; - * `--zone-ids=<одна_зона_доступности> --brokers-count=3`. - - * `--resource-preset` — [класс хостов](../concepts/instance-types.md). - * `--disk-type` — [тип диска](../concepts/storage.md). - - {% include [storages-type-no-change](../../_includes/mdb/storages-type-no-change.md) %} - - * {% include [deletion-protection](../../_includes/mdb/cli/deletion-protection.md) %} - - {% include [deletion-protection-limits-data](../../_includes/mdb/deletion-protection-limits-data.md) %} - - {% note tip %} - - При необходимости здесь же можно задать [настройки {{ KF }}](../concepts/settings-list.md#cluster-settings). - - {% endnote %} - - 1. Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров {{ mkf-name }}), передайте нужное значение в параметре `--maintenance-window` при создании кластера: - - ```bash - {{ yc-mdb-kf }} cluster create \ - ... - --maintenance-window type=<тип_технического_обслуживания>,` - `day=<день_недели>,` - `hour=<час_дня> - ``` - - Где `type` — тип технического обслуживания: - - {% include [maintenance-window](../../_includes/mdb/cli/maintenance-window-description.md) %} - - 1. Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale): - - ```bash - {{ yc-mdb-kf }} cluster create \ - ... - --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,` - `planned-usage-threshold=<процент_для_планового_увеличения>,` - `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> - ``` - - {% include [description-of-parameters](../../_includes/mdb/mkf/disk-auto-scaling.md) %} - - {% include [warn-storage-resize](../../_includes/mdb/mpg/warn-storage-resize.md) %} - - - - 1. Чтобы создать кластер {{ mkf-name }}, размещенный на группах [выделенных хостов](../../compute/concepts/dedicated-host.md), укажите через запятую их идентификаторы в параметре `--host-group-ids` при создании кластера: - - ```bash - {{ yc-mdb-kf }} cluster create \ - ... - --host-group-ids <идентификаторы_групп_выделенных_хостов> - ``` - - {% include [Dedicated hosts note](../../_includes/mdb/mkf/note-dedicated-hosts.md) %} - - -* {{ TF }} {#tf} - - {% include [terraform-definition](../../_tutorials/_tutorials_includes/terraform-definition.md) %} - - {% include [terraform-install](../../_includes/terraform-install.md) %} - - Чтобы создать кластер {{ mkf-name }}: - - 1. Опишите в конфигурационном файле создаваемые ресурсы: - - * Кластер {{ mkf-name }} — описание кластера и его хостов. При необходимости здесь же можно задать [настройки {{ KF }}](../concepts/settings-list.md#cluster-settings). - - * {% include [Terraform network description](../../_includes/mdb/terraform/network.md) %} - - * {% include [Terraform subnet description](../../_includes/mdb/terraform/subnet.md) %} - - Пример структуры конфигурационного файла: - - ```hcl - resource "yandex_mdb_kafka_cluster" "<имя_кластера>" { - environment = "PRESTABLE" - name = "<имя_кластера>" - network_id = "<идентификатор_сети>" - subnet_ids = ["<идентификаторы_подсетей>"] - security_group_ids = ["<идентификаторы_групп_безопасности>"] - deletion_protection = <защита_от_удаления> - - config { - version = "3.6" - zones = ["<зоны_доступности>"] - brokers_count = <количество_брокеров> - assign_public_ip = "<публичный_доступ>" - schema_registry = "<управление_схемами_данных>" - kafka { - resources { - disk_size = <размер_хранилища_ГБ> - disk_type_id = "<тип_диска>" - resource_preset_id = "<класс_хоста>" - } - kafka_config {} - } - } - } - - resource "yandex_vpc_network" "<имя_сети>" { - name = "<имя_сети>" - } - - resource "yandex_vpc_subnet" "<имя_подсети>" { - name = "<имя_подсети>" - zone = "<зона_доступности>" - network_id = "<идентификатор_сети>" - v4_cidr_blocks = ["<диапазон>"] - } + {{ yc-mdb-kf }} cluster list-hosts <имя_или_идентификатор_кластера> ``` - Где: - - * `environment` — окружение кластера `PRESTABLE`. Только в этом окружении поддержана версия {{ KF }} 3.6. - * `deletion_protection` — защита от удаления кластера: `true` или `false`. - * `version` — версия {{ KF }} {{ versions.tf.latest }}. - * `zones` и `brokers_count` — зоны доступности и число брокеров в каждой зоне. Укажите одну из доступных конфигураций: - - * `zones = ["{{ region-id }}-a","{{ region-id }}-b","{{ region-id }}-d"] brokers_count = 1`; - * `zones = ["<одна_зона_доступности>"] brokers_count = 3`. - - * `assign_public_ip` — публичный доступ к кластеру: `true` или `false`. - * `schema_registry` — управление схемами данных: `true` или `false`. - - {% include [deletion-protection-limits-data](../../_includes/mdb/deletion-protection-limits-data.md) %} - - {% include [Maintenance window](../../_includes/mdb/mkf/terraform/maintenance-window.md) %} - - 1. Проверьте корректность настроек. - - {% include [terraform-validate](../../_includes/mdb/terraform/validate.md) %} - - 1. Создайте кластер {{ mkf-name }}. - - {% include [terraform-apply](../../_includes/mdb/terraform/apply.md) %} - - После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся [FQDN хостов кластера {{ mkf-name }}](../concepts/network.md#hostname). Проверить появление ресурсов и их настройки можно в [консоли управления]({{ link-console-main }}). - - Подробнее см. в [документации провайдера {{ TF }}]({{ tf-provider-resources-link }}/mdb_kafka_cluster). - - {% include [Terraform timeouts](../../_includes/mdb/mkf/terraform/cluster-timeouts.md) %} - -* API {#api} - - Чтобы создать кластер {{ mkf-name }}, воспользуйтесь методом REST API [create](../api-ref/Cluster/create.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/Create](../api-ref/grpc/Cluster/create.md) и передайте в запросе: - - * Идентификатор [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором должен быть размещен кластер {{ mkf-name }}, в параметре `folderId`. - * Имя кластера {{ mkf-name }} в параметре `name`. - * Окружение `PRESTABLE` в параметре `environment`. - * Версию {{ KF }} 3.6 в параметре `configSpec.version`. - * Зоны доступности в параметре `configSpec.zoneId`. Можно указать одну или три зоны доступности. - * Количество хостов-брокеров в параметре `configSpec.brokersCount`. Если указана одна зона доступности, передайте количество брокеров 3. В случае трех зон доступности укажите количество брокеров 1. - - - * Идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в параметре `securityGroupIds`. - - - * Настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров {{ mkf-name }}) в параметре `maintenanceWindow`. - * Настройки защиты от удаления кластера {{ mkf-name }} в параметре `deletionProtection`. - - {% include [deletion-protection-limits](../../_includes/mdb/deletion-protection-limits-data.md) %} - - Чтобы управлять схемами данных с помощью [{{ mkf-msr }}](../concepts/managed-schema-registry.md), передайте значение `true` для параметра `configSpec.schemaRegistry`. Эту настройку невозможно изменить после создания кластера {{ mkf-name }}. - - - - Чтобы создать кластер {{ mkf-name }}, размещенный на группах [выделенных хостов](../../compute/concepts/dedicated-host.md), передайте список их идентификаторов в параметре `hostGroupIds`. - - {% include [Dedicated hosts note](../../_includes/mdb/mkf/note-dedicated-hosts.md) %} - - - Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](../concepts/storage.md#auto-rescale). Для этого передайте в запросе: - - {% include [api-storage-resize](../../_includes/mdb/mpg/api-storage-resize.md) %} - - {% include [warn-storage-resize](../../_includes/mdb/mpg/warn-storage-resize.md) %} - -{% endlist %} - -Чтобы убедиться, что созданный кластер использует протокол {{ kraft-short-name }}, получите информацию о хостах кластера: - -{% list tabs group=instructions %} +- API {#api} -* Консоль управления {#console} + Чтобы получить список хостов кластера {{ mkf-name }}, воспользуйтесь методом REST API [listHosts](../api-ref/Cluster/listHosts.md) для ресурса [Cluster](../api-ref/Cluster/index.md) или вызовом gRPC API [ClusterService/ListHosts](../api-ref/grpc/Cluster/listHosts.md) и передайте в запросе идентификатор кластера. - 1. В [консоли управления]({{ link-console-main }}) перейдите в нужный каталог. - 1. В списке сервисов выберите **{{ ui-key.yacloud.iam.folder.dashboard.label_managed-kafka }}**. - 1. Нажмите на имя созданного кластера. - 1. На панели слева выберите **{{ ui-key.yacloud.mdb.cluster.hosts.label_title }}**. + Чтобы узнать идентификатор кластера, [получите список кластеров в каталоге](./cluster-list.md#list-clusters). {% endlist %} @@ -664,7 +515,7 @@ * В подсети с идентификатором `{{ subnet-id }}`. * В группе безопасности `{{ security-group }}`. * С одним хостом класса `{{ host-class }}`, в зоне доступности `{{ region-id }}-a`. - * С одним брокером. + * С одним хостом-брокером. * С хранилищем на сетевых SSD-дисках (`{{ disk-type-example }}`) объемом 10 ГБ. * С публичным доступом. * С защитой от случайного удаления кластера {{ mkf-name }}. @@ -706,7 +557,7 @@ * С одним хостом класса `{{ host-class }}`, в зоне доступности `{{ region-id }}-a`. - * С одним брокером. + * С одним хостом-брокером. * С хранилищем на сетевых SSD-дисках (`{{ disk-type-example }}`) объемом 10 ГБ. * С публичным доступом. * С защитой от случайного удаления кластера {{ mkf-name }}. diff --git a/ru/managed-kafka/operations/cluster-version-update.md b/ru/managed-kafka/operations/cluster-version-update.md index 9e4d059875c..4e9454a0cd5 100644 --- a/ru/managed-kafka/operations/cluster-version-update.md +++ b/ru/managed-kafka/operations/cluster-version-update.md @@ -1,6 +1,6 @@ # Обновление версии {{ KF }} -Вы можете обновить кластер {{ mkf-name }} до версии 3.5 или ниже. Обновление до версии 3.6 и выше не поддерживается, но можно [создать кластер](cluster-create.md#higher-version) с одной из таких версий. +Вы можете обновить кластер {{ mkf-name }} до версии 3.5 или ниже. Обновление до версии 3.6 и выше не поддерживается, но можно [создать кластер](cluster-create.md#create-cluster) с одной из таких версий. Рекомендуется обновлять версию {{ KF }} поэтапно, без пропуска версий. Например, обновление версии с 2.8 до 3.1 выполняется в такой последовательности: 2.8 → 3.0 → 3.1. diff --git a/ru/managed-kafka/operations/connect/clients.md b/ru/managed-kafka/operations/connect/clients.md index e93f2bdbcce..7612e3242ae 100644 --- a/ru/managed-kafka/operations/connect/clients.md +++ b/ru/managed-kafka/operations/connect/clients.md @@ -19,6 +19,7 @@ description: Следуя этой инструкции, вы сможете п Примеры для Linux проверялись в следующем окружении: * Виртуальная машина в {{ yandex-cloud }} с Ubuntu 20.04 LTS. +* OpenJDK: `11.0.24`. * Bash: `5.0.16`. Примеры для Windows проверялись в следующем окружении: @@ -31,9 +32,9 @@ description: Следуя этой инструкции, вы сможете п {% include [see-fqdn-in-console](../../../_includes/mdb/see-fqdn-in-console.md) %} -### Linux (Bash)/macOS (Zsh) {#bash-zsh} +### kafkacat {#bash-zsh} -Для подключения к кластеру {{ KF }} из командной строки используйте утилиту `kafkacat` — приложение с открытым исходным кодом, которое может работать как универсальный производитель или потребитель данных. Подробнее читайте в [документации](https://github.com/edenhill/kafkacat). +Утилита [kafkacat](https://github.com/edenhill/kcat) (второе название `kcat`) — приложение с открытым исходным кодом, которое может работать как универсальный производитель или потребитель данных и не требует установки Java Runtime Environment. Перед подключением установите зависимости: @@ -90,7 +91,114 @@ sudo apt update && sudo apt install -y kafkacat {% include [shell-howto](../../../_includes/mdb/mkf/connstr-shell-howto.md) %} -### Windows (PowerShell) {#powershell} +### Инструменты {{ KF }} для Linux (Bash)/macOS (Zsh) {#kafka-sh} + +{% include [kafka-cli-tools-intro](../../../_includes/mdb/mkf/kafka-cli-tools-intro.md) %} + +Перед подключением: + +1. Установите OpenJDK: + + ```bash + sudo apt update && sudo apt install --yes default-jdk + ``` + +1. Загрузите [архив с бинарными файлами](https://kafka.apache.org/downloads) для версии {{ KF }}, которая используется в кластере. Версия Scala неважна. + +1. Распакуйте архив. + +{% list tabs group=connection %} + +- Подключение без SSL {#without-ssl} + + 1. {% include [connect-properties-no-ssl](../../../_includes/mdb/mkf/connect-properties-no-ssl.md) %} + + 1. Запустите команду получения сообщений из топика: + + ```bash + <путь_к_директории_с_файлами_Apache_Kafka>/bin/kafka-console-consumer.sh \ + --consumer.config <путь_к_файлу_с_параметрами_для_потребителя> \ + --bootstrap-server :9092 \ + --topic <имя_топика> \ + --property print.key=true \ + --property key.separator=":" + ``` + + Команда будет непрерывно считывать новые сообщения из топика. + + 1. В отдельном терминале запустите команду отправки сообщения в топик: + + ```bash + echo "key:test message" | <путь_к_директории_с_файлами_Apache_Kafka>/bin/kafka-console-producer.sh \ + --producer.config <путь_к_файлу_с_параметрами_для_производителя> \ + --bootstrap-server :9092 \ + --topic <имя_топика> \ + --property parse.key=true \ + --property key.separator=":" + ``` + +- Подключение с SSL {#with-ssl} + + 1. Перейдите в каталог, где будет располагаться хранилище сертификатов Java: + + ```bash + cd /etc/security + ``` + + 1. {% include [keytool-importcert](../../../_includes/mdb/keytool-importcert.md) %} + + 1. Создайте файлы с параметрами для подключения к кластеру: файл для производителя и файл для потребителя. + + Эти файлы имеют одинаковое содержимое, различаются только реквизиты пользователя: + + ```ini + sasl.mechanism=SCRAM-SHA-512 + sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ + username="<логин_производителя_или_потребителя>" \ + password="<пароль_производителя_или_потребителя>"; + security.protocol=SASL_SSL + ssl.truststore.location=/etc/security/ssl + ssl.truststore.password=<пароль_хранилища_сертификатов> + ``` + + 1. Запустите команду получения сообщений из топика: + + ```bash + <путь_к_директории_с_файлами_Apache_Kafka>/bin/kafka-console-consumer.sh \ + --consumer.config <путь_к_файлу_с_параметрами_для_потребителя> \ + --bootstrap-server :9091 \ + --topic <имя_топика> \ + --property print.key=true \ + --property key.separator=":" + ``` + + Команда будет непрерывно считывать новые сообщения из топика. + + 1. В отдельном терминале запустите команду отправки сообщения в топик: + + ```bash + echo "key:test message" | <путь_к_директории_с_файлами_Apache_Kafka>/bin/kafka-console-producer.sh \ + --producer.config <путь_к_файлу_с_параметрами_для_производителя> \ + --bootstrap-server :9091 \ + --topic <имя_топика> \ + --property parse.key=true \ + --property key.separator=":" + ``` + +{% endlist %} + +{% include [fqdn](../../../_includes/mdb/mkf/fqdn-host.md) %} + +{% include [shell-howto](../../../_includes/mdb/mkf/connstr-shell-howto.md) %} + +### Инструменты {{ KF }} для Windows (PowerShell) {#powershell} + +{% include [kafka-cli-tools-intro](../../../_includes/mdb/mkf/kafka-cli-tools-intro.md) %} + +Хотя документация по инструментам содержит упоминание скриптов `.sh`, она актуальна и при работе в Windows. Сами инструменты одинаковы для любой платформы, различаются лишь скрипты, которые запускают их, например: + +* `bin/kafka-console-producer.sh` для Linux (Bash)/macOS (Zsh). +* `bin\windows\kafka-console-producer.bat` для Windows (PowerShell). Перед подключением: @@ -112,17 +220,17 @@ sudo apt update && sudo apt install -y kafkacat - Подключение без SSL {#without-ssl} + 1. {% include [connect-properties-no-ssl](../../../_includes/mdb/mkf/connect-properties-no-ssl.md) %} + 1. Запустите команду получения сообщений из топика: ```powershell <путь_к_директории_с_файлами_Apache_Kafka>\bin\windows\kafka-console-consumer.bat ` + --consumer.config <путь_к_файлу_с_параметрами_для_потребителя> ` --bootstrap-server :9092 ` --topic <имя_топика> ` --property print.key=true ` - --property key.separator=":" ` - --consumer-property security.protocol=SASL_PLAINTEXT ` - --consumer-property sasl.mechanism=SCRAM-SHA-512 ` - --consumer-property sasl.jaas.config="org.apache.kafka.common.security.scram.ScramLoginModule required username='<логин_потребителя>' password='<пароль_потребителя>';" + --property key.separator=":" ``` Команда будет непрерывно считывать новые сообщения из топика. @@ -131,14 +239,11 @@ sudo apt update && sudo apt install -y kafkacat ```powershell echo "key:test message" | <путь_к_директории_с_файлами_Apache_Kafka>\bin\windows\kafka-console-producer.bat ` + --producer.config <путь_к_файлу_с_параметрами_для_производителя> ` --bootstrap-server :9092 ` --topic <имя_топика> ` --property parse.key=true ` - --property key.separator=":" ` - --producer-property acks=all ` - --producer-property security.protocol=SASL_PLAINTEXT ` - --producer-property sasl.mechanism=SCRAM-SHA-512 ` - --producer-property sasl.jaas.config="org.apache.kafka.common.security.scram.ScramLoginModule required username='<логин_производителя>' password='<пароль_производителя>';" + --property key.separator=":" ``` - Подключение с SSL {#with-ssl} @@ -153,19 +258,47 @@ sudo apt update && sudo apt install -y kafkacat --noprompt ``` + 1. Создайте файлы с параметрами для подключения к кластеру: файл для производителя и файл для потребителя. + + Эти файлы имеют одинаковое содержимое, различаются только реквизиты пользователя: + + ```ini + sasl.mechanism=SCRAM-SHA-512 + sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ + username="<логин_производителя_или_потребителя>" \ + password="<пароль_производителя_или_потребителя>"; + security.protocol=SASL_SSL + ssl.truststore.location=<значение_переменной_$HOME>\\.kafka\\ssl + ssl.truststore.password=<пароль_хранилища_сертификатов> + ``` + + В качестве значения параметра `ssl.truststore.location` укажите полный путь к хранилищу сертификатов, например: + + ```ini + ssl.truststore.location=C:\\Users\\Administrator\\.kafka\\ssl + ``` + + Хранилище сертификатов расположено по пути `$HOME\.kafka\ssl`, но в значении нельзя использовать переменные среды окружения. Чтобы раскрыть переменную, выполните команду: + + ```powershell + echo $HOME + ``` + + {% note warning %} + + Используйте `\\` вместо `\` при указании значения параметра `ssl.truststore.location`, иначе при запуске команд не удастся получить доступ к хранилищу сертификатов. + + {% endnote %} + 1. Запустите команду получения сообщений из топика: ```powershell <путь_к_директории_с_файлами_Apache_Kafka>\bin\windows\kafka-console-consumer.bat ` + --consumer.config <путь_к_файлу_с_параметрами_для_потребителя> ` --bootstrap-server :9091 ` --topic <имя_топика> ` --property print.key=true ` - --property key.separator=":" ` - --consumer-property security.protocol=SASL_SSL ` - --consumer-property sasl.mechanism=SCRAM-SHA-512 ` - --consumer-property ssl.truststore.location=$HOME\.kafka\ssl ` - --consumer-property ssl.truststore.password=<пароль_хранилища_сертификатов> ` - --consumer-property sasl.jaas.config="org.apache.kafka.common.security.scram.ScramLoginModule required username='<логин_потребителя>' password='<пароль_потребителя>';" + --property key.separator=":" ``` Команда будет непрерывно считывать новые сообщения из топика. @@ -174,16 +307,11 @@ sudo apt update && sudo apt install -y kafkacat ```powershell echo "key:test message" | <путь_к_директории_с_файлами_Apache_Kafka>\bin\windows\kafka-console-producer.bat ` + --producer.config <путь_к_файлу_с_параметрами_для_производителя> ` --bootstrap-server :9091 ` --topic <имя_топика> ` --property parse.key=true ` - --property key.separator=":" ` - --producer-property acks=all ` - --producer-property security.protocol=SASL_SSL ` - --producer-property sasl.mechanism=SCRAM-SHA-512 ` - --producer-property ssl.truststore.location=$HOME\.kafka\ssl ` - --producer-property ssl.truststore.password=<пароль_хранилища_сертификатов> ` - --producer-property sasl.jaas.config="org.apache.kafka.common.security.scram.ScramLoginModule required username='<логин_производителя>' password='<пароль_производителя>';" + --property key.separator=":" ``` {% endlist %} diff --git a/ru/managed-kubernetes/operations/calico.md b/ru/managed-kubernetes/operations/calico.md index ba885c43fb9..8cce625efe6 100644 --- a/ru/managed-kubernetes/operations/calico.md +++ b/ru/managed-kubernetes/operations/calico.md @@ -12,9 +12,9 @@ description: Следуя данной инструкции, вы сможете * Регулировать прохождение трафика с помощью настроек DNAT и политик проброса трафика. Чтобы настроить контроллер сетевых политик Calico: -1. [{#T}](#create-pod). -1. [{#T}](#enable-isolation). -1. [{#T}](#create-policy). +1. [Создайте сервис nginx](#create-pod). +1. [Изолируйте поды с помощью сетевых политик](#enable-isolation). +1. [Создайте сетевые политики, разрешающие доступ к сервису](#create-policy). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/operations/create-load-balancer.md b/ru/managed-kubernetes/operations/create-load-balancer.md index f337eb2ac99..68b8349ac4c 100644 --- a/ru/managed-kubernetes/operations/create-load-balancer.md +++ b/ru/managed-kubernetes/operations/create-load-balancer.md @@ -34,7 +34,7 @@ title: Обеспечение доступа к приложению, запущ 1. [Создайте сервис типа LoadBalancer с внутренним IP-адресом](#lb-int-create). 1. [Укажите дополнительные параметры сервиса](#advanced). 1. [Укажите параметры проверки состояния узлов](#healthcheck). -1. (Опционально) [{#T}](#network-policy). +1. (Опционально) [Создайте объект NetworkPolicy](#network-policy). {% cut "Как обеспечить доступ к приложению с помощью HTTPS?" %} diff --git a/ru/managed-kubernetes/operations/volumes/mode-block.md b/ru/managed-kubernetes/operations/volumes/mode-block.md index 807ed5cbc15..2b7ed3771a5 100644 --- a/ru/managed-kubernetes/operations/volumes/mode-block.md +++ b/ru/managed-kubernetes/operations/volumes/mode-block.md @@ -2,8 +2,8 @@ Чтобы подключить [том в режиме](../../concepts/volume.md#block) `volumeMode: Block`: -1. [{#T}](#create-pvc). -1. [{#T}](#create-pod). +1. [Создайте объект PersistentVolumeClaim](#create-pvc). +1. [Создайте под с подключенным томом](#create-pod). {% include [Перед началом установите kubectl](../../../_includes/managed-kubernetes/kubectl-before-you-begin.md) %} diff --git a/ru/managed-kubernetes/operations/volumes/statefulset-pvc-expansion.md b/ru/managed-kubernetes/operations/volumes/statefulset-pvc-expansion.md index 4ea02042bd4..268b9767262 100644 --- a/ru/managed-kubernetes/operations/volumes/statefulset-pvc-expansion.md +++ b/ru/managed-kubernetes/operations/volumes/statefulset-pvc-expansion.md @@ -7,8 +7,8 @@ description: Следуя данной инструкции, вы сможете Чтобы увеличить размер [тома](../../concepts/volume.md) для контроллера StatefulSet без остановки сервиса: -1. [{#T}](#create-sts). -1. [{#T}](#upgrade-sts). +1. [Создайте контроллер StatefulSet](#create-sts). +1. [Внесите изменения в настройки контроллера](#upgrade-sts). {% include [Перед началом установите kubectl](../../../_includes/managed-kubernetes/kubectl-before-you-begin.md) %} diff --git a/ru/managed-kubernetes/operations/volumes/volume-expansion.md b/ru/managed-kubernetes/operations/volumes/volume-expansion.md index eea2989d700..be3a784cd73 100644 --- a/ru/managed-kubernetes/operations/volumes/volume-expansion.md +++ b/ru/managed-kubernetes/operations/volumes/volume-expansion.md @@ -2,12 +2,12 @@ Чтобы увеличить размер [тома](../../concepts/volume.md): -1. [{#T}](#enabling-expansion). -1. [{#T}](#create-pvc). -1. [{#T}](#create-pod). -1. [{#T}](#restart-pod). -1. [{#T}](#volume-expansion). -1. [{#T}](#restart-pod1). +1. [Включите механизм увеличения размера тома](#enabling-expansion). +1. [Создайте объект PersistentVolumeClaim](#create-pvc). +1. [Создайте под с динамически подготовленным томом](#create-pod). +1. [Удалите под с томом](#restart-pod). +1. [Запросите увеличение размера тома](#volume-expansion). +1. [Удалите под с томом](#delete-pod). {% include [Перед началом установите kubectl](../../../_includes/managed-kubernetes/kubectl-before-you-begin.md) %} @@ -105,7 +105,7 @@ reclaimPolicy: Delete pod/pod created ``` -## Удалите под с томом {#restart-pod} +## Удалите под с томом {#delete-pod} Чтобы запросить увеличение размера тома, необходимо удалить под. 1. Удалите под: diff --git a/ru/managed-kubernetes/tutorials/autoscaling.md b/ru/managed-kubernetes/tutorials/autoscaling.md index 61a4434f78c..78db2118fa9 100644 --- a/ru/managed-kubernetes/tutorials/autoscaling.md +++ b/ru/managed-kubernetes/tutorials/autoscaling.md @@ -2,8 +2,11 @@ {{ managed-k8s-name }} поддерживает несколько видов [автоматического масштабирования](../concepts/autoscale.md). Из этой статьи вы узнаете, как настроить автоматическое масштабирование [кластера](../concepts/index.md#kubernetes-cluster) с помощью комбинации {{ k8s-ca }} и {{ k8s-hpa }}. -* [{#T}](#cpu-autoscaling). -* [{#T}](#rps-autoscaling). + +* [Масштабирование от утилизации CPU](#cpu-autoscaling). +* [Масштабирование от количества запросов к приложению](#rps-autoscaling). + +Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). {% note warning %} diff --git a/ru/managed-kubernetes/tutorials/custom-dns.md b/ru/managed-kubernetes/tutorials/custom-dns.md index 2a5dc3578a8..eb47fb1b623 100644 --- a/ru/managed-kubernetes/tutorials/custom-dns.md +++ b/ru/managed-kubernetes/tutorials/custom-dns.md @@ -7,9 +7,11 @@ description: Следуя данному руководству, вы сможе Чтобы интегрировать [кластер {{ managed-k8s-name }}](../concepts/index.md#kubernetes-cluster) с приватной корпоративной [зоной](../../dns/concepts/dns-zone.md) [DNS](../../glossary/dns.md): -1. [{#T}](#setup-zone). -1. [{#T}](#create-pod). -1. [{#T}](#verify-dns). + +1. [Настройте DNS-сервер](#setup-dns). +1. [Укажите корпоративную зону DNS](#setup-zone). +1. [Создайте под dns-utils](#create-pod). +1. [Проверьте интеграцию DNS](#verify-dns). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/dns-autoscaler.md b/ru/managed-kubernetes/tutorials/dns-autoscaler.md index 8b3d49d4947..8433b46f8b3 100644 --- a/ru/managed-kubernetes/tutorials/dns-autoscaler.md +++ b/ru/managed-kubernetes/tutorials/dns-autoscaler.md @@ -13,8 +13,9 @@ description: Следуя данному руководству, вы сможе Количество реплик рассчитывается [с помощью формул](#parameters). Чтобы автоматизировать масштабирование DNS: -1. [{#T}](#configure-autoscaler). -1. [{#T}](#test-autoscaler). + +1. [Настройте kube-dns-autoscaler](#configure-autoscaler). +1. [Проверьте масштабирование](#test-autoscaler). Если автоматическое масштабирование потеряло актуальность, [отключите его](#disable-autoscaler). diff --git a/ru/managed-kubernetes/tutorials/dnschallenge.md b/ru/managed-kubernetes/tutorials/dnschallenge.md index e3d17f153c8..0fbcb48cd54 100644 --- a/ru/managed-kubernetes/tutorials/dnschallenge.md +++ b/ru/managed-kubernetes/tutorials/dnschallenge.md @@ -7,8 +7,9 @@ description: Следуя данному руководству, вы сможе Чтобы добавить возможность пройти проверку DNS Challenge при выписывании [сертификатов Let's Encrypt®](../../certificate-manager/concepts/managed-certificate.md): -1. [{#T}](#create-cert). -1. [{#T}](#check-result). + +1. [Создайте сертификат](#create-cert). +1. [Проверьте результат](#check-result). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/driverless-gpu.md b/ru/managed-kubernetes/tutorials/driverless-gpu.md index 0c987afdd45..0bb66a2023f 100644 --- a/ru/managed-kubernetes/tutorials/driverless-gpu.md +++ b/ru/managed-kubernetes/tutorials/driverless-gpu.md @@ -5,8 +5,8 @@ Чтобы подготовить кластер и группу узлов {{ managed-k8s-name }} без предустановленных драйверов к запуску рабочих нагрузок: -1. [{#T}](#install-gpu-operator). -1. [{#T}](#check-install). +1. [Установите GPU Operator](#install-gpu-operator). +1. [Проверьте правильность установки драйверов](#check-install). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/filebeat-oss-monitoring.md b/ru/managed-kubernetes/tutorials/filebeat-oss-monitoring.md index d129cb0f7a1..74f2de268cf 100644 --- a/ru/managed-kubernetes/tutorials/filebeat-oss-monitoring.md +++ b/ru/managed-kubernetes/tutorials/filebeat-oss-monitoring.md @@ -4,8 +4,9 @@ [Filebeat OSS](https://www.elastic.co/beats/filebeat) — плагин, который позволяет собирать и передавать логи в экосистему {{ OS }}. Filebeat устанавливается в [кластер {{ managed-k8s-name }}](../concepts/index.md#kubernetes-cluster), собирает логи кластера и [подов](../concepts/index.md#pod), а затем отправляет их в сервис [{{ mos-full-name }}](../../managed-opensearch/). Чтобы настроить мониторинг кластера {{ managed-k8s-name }} с помощью Filebeat OSS: -1. [{#T}](#filebeat-oss-install). -1. [{#T}](#check-result). + +1. [Установите Filebeat OSS](#filebeat-oss-install). +1. [Проверьте результат](#check-result). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/ingress-cert-manager.md b/ru/managed-kubernetes/tutorials/ingress-cert-manager.md index 09f65a2ddcd..c166c85c07e 100644 --- a/ru/managed-kubernetes/tutorials/ingress-cert-manager.md +++ b/ru/managed-kubernetes/tutorials/ingress-cert-manager.md @@ -7,12 +7,12 @@ description: Следуя данному руководству, вы сможе Чтобы с помощью [{{ k8s }}](https://kubernetes.io/ru/) создать [Ingress-контроллер NGINX](https://kubernetes.github.io/ingress-nginx/) и защитить его сертификатом: -1. [{#T}](#install-controller). -1. [{#T}](#connecting-certs-manager). -1. [{#T}](#install-certs-manager). -1. [{#T}](#create-issuer). -1. [{#T}](#install-objects). -1. [{#T}](#test-controller). +1. [Установите Ingress-контроллер NGINX](#install-controller). +1. [Настройте DNS-запись для Ingress-контроллера](#connecting-certs-manager). +1. [Установите менеджер сертификатов](#install-certs-manager). +1. [Создайте ClusterIssuer](#create-issuer). +1. [Создайте объекты для проверки работы cert-manager](#install-objects). +1. [Проверьте работоспособность TLS](#test-controller). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/k8s-cluster-with-no-internet.md b/ru/managed-kubernetes/tutorials/k8s-cluster-with-no-internet.md index b304f5fd9b0..47a46b5ad63 100644 --- a/ru/managed-kubernetes/tutorials/k8s-cluster-with-no-internet.md +++ b/ru/managed-kubernetes/tutorials/k8s-cluster-with-no-internet.md @@ -10,10 +10,10 @@ Чтобы создать кластер {{ managed-k8s-name }} без доступа в интернет: -1. [{#T}](#infra). -1. [{#T}](#vm). -1. [{#T}](#check). -1. [{#T}](#cert). +1. [Подготовьте инфраструктуру для {{ managed-k8s-name }}](#infra). +1. [Подготовьте виртуальную машину](#vm). +1. [Проверьте доступность кластера](#check). +1. (Опционально) [Подключите приватный реестр Docker-образов](#cert). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/marketplace/argo-cd.md b/ru/managed-kubernetes/tutorials/marketplace/argo-cd.md index c8b67756306..b9f4daed92c 100644 --- a/ru/managed-kubernetes/tutorials/marketplace/argo-cd.md +++ b/ru/managed-kubernetes/tutorials/marketplace/argo-cd.md @@ -6,11 +6,12 @@ В этом руководстве описана интеграция [инстанса {{ mgl-full-name }}](../../../managed-gitlab/concepts/index.md#instance), [кластера {{ managed-k8s-name }}](../../concepts/index.md#kubernetes-cluster) и установленных в кластере [Argo CD](/marketplace/products/yc/argo-cd) и [{{ GLR }}](/marketplace/products/yc/gitlab-runner), который выполняет сборку [Docker-контейнеров](/blog/posts/2022/03/docker-containers) с помощью инструмента [Kaniko](https://github.com/GoogleContainerTools/kaniko). Чтобы интегрировать Argo CD с {{ managed-k8s-name }} и {{ mgl-name }}: -1. [{#T}](#create-gitlab). -1. [{#T}](#configure-gitlab). -1. [{#T}](#runners). -1. [{#T}](#setup-repo). -1. [{#T}](#deploy-argo). + +1. [Создайте инстанс {{ GL }}](#create-gitlab). +1. [Настройте {{ GL }}](#configure-gitlab). +1. [Создайте {{ GLR }}](#runners). +1. [Подготовьте репозиторий приложения для развертывания](#setup-repo). +1. [Разверните приложение с помощью Argo CD](#deploy-argo). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/marketplace/crossplane.md b/ru/managed-kubernetes/tutorials/marketplace/crossplane.md index 2342949725f..8f5f58dcb31 100644 --- a/ru/managed-kubernetes/tutorials/marketplace/crossplane.md +++ b/ru/managed-kubernetes/tutorials/marketplace/crossplane.md @@ -3,8 +3,9 @@ [Crossplane](https://crossplane.io/) — надстройка для {{ k8s }} с открытым исходным кодом, которая позволяет собрать решения от разных поставщиков в единую инфраструктуру и предоставить разработчикам приложений доступ к ней через высокоуровневые [API](../../../glossary/rest-api.md). С помощью Crossplane пользователи могут управлять сторонними сервисами так же, как ресурсами {{ k8s }}. Чтобы создать [виртуальную машину](../../../compute/concepts/vm.md) {{ compute-full-name }} с помощью [приложения Crossplane](/marketplace/products/yc/crossplane), установленного в [кластере {{ k8s }}](../../concepts/index.md#kubernetes-cluster): -1. [{#T}](#k8s-create). -1. [{#T}](#create-crossplane-res). + +1. [Создайте ресурсы {{ managed-k8s-name }}](#k8s-create). +1. [Создайте ресурсы с помощью Crossplane](#create-crossplane-res). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/marketplace/istio.md b/ru/managed-kubernetes/tutorials/marketplace/istio.md index f413769dc98..89b96428e41 100644 --- a/ru/managed-kubernetes/tutorials/marketplace/istio.md +++ b/ru/managed-kubernetes/tutorials/marketplace/istio.md @@ -5,15 +5,15 @@ Чтобы посмотреть варианты использования Istio: -1. [{#T}](#istio-install). -1. [{#T}](#test-application). -1. [{#T}](#visualization-service-network). -1. [{#T}](#request-routing). -1. [{#T}](#injection-failures). -1. [{#T}](#traffic-redistribution). -1. [{#T}](#mutual-tls). -1. [{#T}](#viewing-metrics-prometheus). -1. [{#T}](#viewing-metrics-grafana). +1. [Установите Istio](#istio-install). +1. [Установите тестовое приложение](#test-application). +1. [Посмотрите схему сервисной сети на дашборде Kiali](#visualization-service-network). +1. [Маршрутизируйте запросы](#request-routing). +1. [Внедрите сбой в работу сервиса](#injection-failures). +1. [Перераспределите трафик](#traffic-redistribution). +1. [Установите режим аутентификации с помощью mutual TLS](#mutual-tls). +1. [Посмотрите метрики Istio на дашборде {{ prometheus-name }}](#viewing-metrics-prometheus). +1. [Посмотрите метрики Istio на дашборде {{ grafana-name }}](#viewing-metrics-grafana). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). @@ -92,7 +92,7 @@ 1. [Установите](../../operations/applications/istio.md#marketplace-install) продукт [Istio](/marketplace/products/yc/istio) из каталога приложений {{ marketplace-full-name }}. При установке приложения: 1. Создайте новое [пространство имен](../../concepts/index.md#namespace) `istio-system`. - 1. Установите дополнения для Istio (Kiali, Prometheus, Grafana, Loki, Jaeger). + 1. Установите дополнения для Istio (Kiali, {{ prometheus-name }}, {{ grafana-name }}, Loki, Jaeger). 1. Убедитесь, что все [поды](../../concepts/index.md#pod) Istio и его дополнений перешли в статус `Running`: @@ -467,7 +467,7 @@ virtualservice.networking.istio.io "recommender-vs" deleted ... ``` -## Посмотрите метрики Istio на дашборде Prometheus {#viewing-metrics-prometheus} +## Посмотрите метрики Istio на дашборде {{ prometheus-name }} {#viewing-metrics-prometheus} 1. Убедитесь, что сервис `prometheus` установлен и доступен в кластере {{ managed-k8s-name }}: @@ -488,7 +488,7 @@ virtualservice.networking.istio.io "recommender-vs" deleted kubectl port-forward service/prometheus 9090:9090 -n istio-system ``` -1. Чтобы открыть дашборд Prometheus, вставьте в адресную строку браузера `http://localhost:9090`. +1. Чтобы открыть дашборд {{ prometheus-name }}, вставьте в адресную строку браузера `http://localhost:9090`. 1. Введите в поле **Expression** запрос: @@ -498,7 +498,7 @@ virtualservice.networking.istio.io "recommender-vs" deleted 1. Перейдите на вкладку **Graph**. Она показывает метрики Istio. -## Посмотрите метрики Istio на дашборде Grafana {#viewing-metrics-grafana} +## Посмотрите метрики Istio на дашборде {{ grafana-name }} {#viewing-metrics-grafana} 1. Убедитесь, что сервис `grafana` установлен и доступен в кластере {{ managed-k8s-name }}: @@ -519,7 +519,7 @@ virtualservice.networking.istio.io "recommender-vs" deleted kubectl port-forward service/grafana 3000:3000 -n istio-system ``` -1. Чтобы открыть дашборд Grafana, вставьте в адресную строку браузера `http://localhost:3000`. +1. Чтобы открыть дашборд {{ grafana-name }}, вставьте в адресную строку браузера `http://localhost:3000`. 1. В списке дашбордов найдите и откройте **Istio Mesh Dashboard**. Он показывает метрики запросов к сервисам тестового приложения. diff --git a/ru/managed-kubernetes/tutorials/marketplace/kyverno.md b/ru/managed-kubernetes/tutorials/marketplace/kyverno.md index 0e76d415066..bc82eebad4e 100644 --- a/ru/managed-kubernetes/tutorials/marketplace/kyverno.md +++ b/ru/managed-kubernetes/tutorials/marketplace/kyverno.md @@ -4,9 +4,9 @@ Чтобы интегрировать [Kyverno & Kyverno Policies](/marketplace/products/yc/kyverno) в {{ managed-k8s-name }}: -1. [{#T}](#install-kyverno). -1. [{#T}](#check-baseline). -1. [{#T}](#create-check-policies). +1. [Установите приложение Kyverno & Kyverno Policies](#install-kyverno). +1. [Проверьте работу политики для профиля baseline](#check-baseline). +1. [Создайте собственную политику Kyverno policies и проверьте ее работу](#create-check-policies). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/marketplace/metrics-provider.md b/ru/managed-kubernetes/tutorials/marketplace/metrics-provider.md index a7ee72a23ed..ce3596b0e8b 100644 --- a/ru/managed-kubernetes/tutorials/marketplace/metrics-provider.md +++ b/ru/managed-kubernetes/tutorials/marketplace/metrics-provider.md @@ -5,10 +5,12 @@ Из этой статьи вы узнаете, как настроить передачу внешних метрик в {{ k8s-hpa }} с помощью {{ MP }}. Чтобы настроить передачу метрик: -1. [{#T}](#create-files). -1. [{#T}](#install). -1. [{#T}](#validate). -1. [{#T}](#clear-out). + +1. [Подготовьте рабочее окружение](#create-files). +1. [Установите {{ MP }} и рабочее окружение](#install). +1. [Проверьте работу {{ MP }}](#validate). + +Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). ## Перед началом работы {#before-you-begin} diff --git a/ru/managed-kubernetes/tutorials/metrics-server.md b/ru/managed-kubernetes/tutorials/metrics-server.md index 9b0beafa3e6..5bc6ff547fb 100644 --- a/ru/managed-kubernetes/tutorials/metrics-server.md +++ b/ru/managed-kubernetes/tutorials/metrics-server.md @@ -7,9 +7,9 @@ В некоторых случаях компонент `metrics-server-nanny` может работать некорректно. Например, если при малом количестве узлов в кластере {{ managed-k8s-name }} создано большое количество подов. В этом случае под сервера метрик превысит свои лимиты, что может вызвать снижение производительности сервера метрик. Чтобы избежать этого, измените параметры сервера метрик вручную: -1. [{#T}](#get-resources). -1. [{#T}](#update-parameters). -1. [{#T}](#check-result). +1. [Посмотрите количество ресурсов, выделенных для пода сервера метрик](#get-resources). +1. [Измените параметры сервера метрик](#update-parameters). +1. [Проверьте результат](#check-result). Чтобы вернуть параметры сервера метрик до значений по умолчанию, [сбросьте их](#reset). diff --git a/ru/managed-kubernetes/tutorials/new-kubernetes-project.md b/ru/managed-kubernetes/tutorials/new-kubernetes-project.md index 784dd389efe..c68064265c3 100644 --- a/ru/managed-kubernetes/tutorials/new-kubernetes-project.md +++ b/ru/managed-kubernetes/tutorials/new-kubernetes-project.md @@ -6,13 +6,14 @@ Если вам нужно создать кластер {{ managed-k8s-name }} без доступа в интернет, обратитесь к разделу [{#T}](k8s-cluster-with-no-internet.md). Чтобы запустить приложение: -1. [{#T}](#create-sa). -1. [{#T}](#create-sg). -1. [{#T}](#create-k8s-res). -1. [{#T}](#cluster-connect). -1. [{#T}](#create-cr-res). -1. [{#T}](#setup-alb). -1. [{#T}](#create-ingress). + +1. [Создайте сервисные аккаунты](#create-sa). +1. [Создайте группы безопасности](#create-sg). +1. [Подготовьте ресурсы {{ k8s }}](#create-k8s-res). +1. [Подключитесь к кластеру {{ managed-k8s-name }}](#cluster-connect). +1. [Подготовьте ресурсы {{ container-registry-name }}](#create-cr-res). +1. [Установите {{ alb-name }}](#setup-alb). +1. [Создайте балансировщик нагрузки](#create-ingress). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/node-local-dns.md b/ru/managed-kubernetes/tutorials/node-local-dns.md index c5008087cbc..aec73ac4b77 100644 --- a/ru/managed-kubernetes/tutorials/node-local-dns.md +++ b/ru/managed-kubernetes/tutorials/node-local-dns.md @@ -18,11 +18,13 @@ Чтобы настроить кеширование запросов DNS: -1. [{#T}](#install). -1. [{#T}](#configure). -1. [{#T}](#dns-queries). -1. [{#T}](#dns-traffic). -1. [{#T}](#check-logs). +1. [Установите NodeLocal DNS](#install). +1. [Измените конфигурацию NodeLocal DNS Cache](#configure). +1. [Выполните DNS-запросы](#dns-queries). +1. [Настройте трафик через NodeLocal DNS](#dns-traffic). +1. [Проверьте логи](#check-logs). + +Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). ## Перед началом работы {#before-you-begin} diff --git a/ru/managed-kubernetes/tutorials/prometheus-grafana-monitoring.md b/ru/managed-kubernetes/tutorials/prometheus-grafana-monitoring.md index 10f739d83cf..860529a1c7f 100644 --- a/ru/managed-kubernetes/tutorials/prometheus-grafana-monitoring.md +++ b/ru/managed-kubernetes/tutorials/prometheus-grafana-monitoring.md @@ -5,10 +5,13 @@ Из этой статьи вы узнаете, как настроить систему сбора метрик [{{ prometheus-name }}](https://prometheus.io/) и систему визуализации [{{ grafana-name }}](https://grafana.com/) в [кластере {{ managed-k8s-name }}](../concepts/index.md#kubernetes-cluster). Для ускорения передачи метрик будет установлен [кеширующий прокси trickster](https://github.com/trickstercache/trickster). Чтобы настроить систему мониторинга кластера {{ managed-k8s-name }}: -* [{#T}](#install-prometheus). -* [{#T}](#install-trickster). -* [{#T}](#install-grafana). -* [{#T}](#configure-grafana). + +* [Установите {{ prometheus-name }}](#install-prometheus). +* [Установите кеширующий прокси trickster](#install-trickster). +* [Установите {{ grafana-name }}](#install-grafana). +* [Настройте и проверьте работу {{ grafana-name }}](#configure-grafana). + +Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). ## Перед началом работы {#before-you-begin} diff --git a/ru/managed-kubernetes/tutorials/pvc-snapshot-restore.md b/ru/managed-kubernetes/tutorials/pvc-snapshot-restore.md index 33a1e6b143f..4d0377de02e 100644 --- a/ru/managed-kubernetes/tutorials/pvc-snapshot-restore.md +++ b/ru/managed-kubernetes/tutorials/pvc-snapshot-restore.md @@ -4,9 +4,10 @@ В {{ managed-k8s-name }} доступны [снапшоты](../../glossary/snapshot.md) — копии дисков [PersistentVolume](../concepts/volume.md#provisioning-volumes) на определенный момент времени. Подробнее о механизме снапшотов см. в [документации Kubernetes](https://kubernetes.io/docs/concepts/storage/volume-snapshots/). Чтобы создать снапшот, а потом восстановить его: -1. [{#T}](#create-pvc-pod). -1. [{#T}](#create-snapshot). -1. [{#T}](#restore-from-snapshot). + +1. [Подготовьте тестовое окружение](#create-pvc-pod). +1. [Создайте снапшот](#create-snapshot). +1. [Восстановите объекты из снапшота](#restore-from-snapshot). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/running-pod-gpu.md b/ru/managed-kubernetes/tutorials/running-pod-gpu.md index f9386ebd145..f8924380787 100644 --- a/ru/managed-kubernetes/tutorials/running-pod-gpu.md +++ b/ru/managed-kubernetes/tutorials/running-pod-gpu.md @@ -4,8 +4,9 @@ [Кластер {{ managed-k8s-name }}](../concepts/index.md#kubernetes-cluster) позволяет запускать рабочие нагрузки на [видеопроцессорах](../../compute/concepts/gpus.md) ([GPU](.././../glossary/gpu.md)), что может быть полезно для задач с особыми вычислительными требованиями. Чтобы запустить рабочие нагрузки с GPU на [подах](../concepts/index.md#pod) кластера {{ managed-k8s-name }}: -1. [{#T}](#create-pod-gpu). -1. [{#T}](#check-pod). + +1. [Создайте под с GPU](#create-pod-gpu). +1. [Проверьте работу пода](#check-pod). Если созданные ресурсы вам больше не нужны, [удалите их](#delete-resources). diff --git a/ru/managed-kubernetes/tutorials/time-slicing-gpu.md b/ru/managed-kubernetes/tutorials/time-slicing-gpu.md index 8c990940059..c9d0af85d22 100644 --- a/ru/managed-kubernetes/tutorials/time-slicing-gpu.md +++ b/ru/managed-kubernetes/tutorials/time-slicing-gpu.md @@ -4,8 +4,9 @@ Плагин [Time-Slicing GPUs в {{ k8s }}](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/gpu-sharing.html) используется для чередования рабочих нагрузок, которые выполняются на одном [GPU](../../compute/concepts/gpus.md) с избыточной подпиской. Чтобы установить плагин Time-Slicing GPUs в {{ managed-k8s-name }}: -1. [{#T}](#configure-time-slicing). -1. [{#T}](#check-time-slicing). + +1. [Настройте Time-Slicing GPUs](#configure-time-slicing). +1. [Проверьте работу Time-Slicing GPUs](#check-time-slicing). Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). diff --git a/ru/managed-kubernetes/tutorials/vpa-autoscaling.md b/ru/managed-kubernetes/tutorials/vpa-autoscaling.md index 9bf5d738879..b7230434d74 100644 --- a/ru/managed-kubernetes/tutorials/vpa-autoscaling.md +++ b/ru/managed-kubernetes/tutorials/vpa-autoscaling.md @@ -6,8 +6,11 @@ description: Следуя данному руководству, вы сможе # Вертикальное масштабирование приложения в кластере {{ managed-k8s-name }} поддерживает несколько видов автоматического масштабирования. Из этой статьи вы узнаете, как настроить автоматическое управление ресурсами [пода](../concepts/index.md#pod) с помощью [{{ k8s-vpa }}](../concepts/autoscale.md#vpa): -* [{#T}](#create-vpa-workload). -* [{#T}](#test-vpa). + +* [Создайте {{ k8s-vpa }} и тестовое приложение](#create-vpa-workload). +* [Проверьте работу {{ k8s-vpa }}](#test-vpa). + +Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out). ## Перед началом работы {#before-you-begin} diff --git a/ru/managed-mysql/pricing.md b/ru/managed-mysql/pricing.md index 8385b54f6aa..ce7a56d6f80 100644 --- a/ru/managed-mysql/pricing.md +++ b/ru/managed-mysql/pricing.md @@ -64,6 +64,49 @@ editable: false Цена указывается за 1 месяц использования и формируется из расчета 720 часов в месяц. Минимальная единица тарификации — 1 ГБ в минуту (например, стоимость хранения 1 ГБ в течение 1,5 минут равна стоимости хранения в течение 2 минут). +### Пример расчета стоимости кластера {#example} + +Стоимость использования кластера со следующими параметрами в течение 30 дней: + +* **Хосты {{ MY }}**: 3 хоста класса `s3-c2-m8`: Intel Ice Lake, 2 × 100% vCPU, 8 ГБ RAM. +* **{{ ui-key.yacloud.mdb.forms.section_storage }}**: 100 ГБ на сетевых HDD-дисках. + +Расчет стоимости для хостов {{ MY }}: + + +{% list tabs group=pricing %} + +- Расчет в рублях {#prices-rub} + + {% include [rub-mysql-host](../_pricing_examples/managed-mysql/rub-host.md) %} + +- Расчет в тенге {#prices-kzt} + + {% include [kzt-mysql-host](../_pricing_examples/managed-mysql/kzt-host.md) %} + +{% endlist %} + + + + +Расчет стоимости хранилища и итоговой стоимости: + + +{% list tabs group=pricing %} + +- Расчет в рублях {#prices-rub} + + {% include [rub-mysql-storage](../_pricing_examples/managed-mysql/rub-storage.md) %} + +- Расчет в тенге {#prices-kzt} + + {% include [kzt-mysql-storage](../_pricing_examples/managed-mysql/kzt-storage.md) %} + +{% endlist %} + + + + ## Скидка за резервируемый объем ресурсов (CVoS) {#cvos} diff --git a/ru/managed-opensearch/operations/saml-authentication.md b/ru/managed-opensearch/operations/saml-authentication.md index 6d9f3a0ca41..0f14a696e84 100644 --- a/ru/managed-opensearch/operations/saml-authentication.md +++ b/ru/managed-opensearch/operations/saml-authentication.md @@ -76,6 +76,10 @@ SAML (Security Assertion Markup Language) — это язык разметки * **{{ ui-key.yacloud.opensearch.auth.field_subject-key }}** — параметр в ответе SAML, в котором хранится тема. Если параметр не настроен, используется параметр `NameID`. + * **{{ ui-key.yacloud.opensearch.auth.field_jwt-default-expiration-timeout }}** — срок жизни сессии в минутах. Укажите его, если провайдер идентификации не установил свой таймаут. + + Если значение отсутствует или указан `0`, срок жизни сессии не ограничен (значение по умолчанию). + * **{{ ui-key.yacloud.opensearch.auth.field_enabled }}** — активировать ли источник аутентификации после создания. 1. Нажмите кнопку **{{ ui-key.yacloud.opensearch.auth.button_save }}**. @@ -96,6 +100,9 @@ SAML (Security Assertion Markup Language) — это язык разметки * URL хоста {{ OS }} с ролью `DASHBOARDS` в параметре `dashboardsUrl`. * (Опционально) Параметр в ответе SAML, в котором хранятся роли, в параметре `rolesKey`. * (Опционально) Параметр в ответе SAML, в котором хранится тема, в параметре `subjectKey`. + * (Опционально) Срок жизни сессии в минутах в параметре `jwtDefaultExpirationTimeout`. Укажите его, если провайдер идентификации не установил свой таймаут. + + Если значение отсутствует или указан `0`, срок жизни сессии не ограничен (значение по умолчанию). {% endlist %} diff --git a/ru/metadata-hub/release-notes/index.md b/ru/metadata-hub/release-notes/index.md index 3b8957e8deb..04cf6d8a1d7 100644 --- a/ru/metadata-hub/release-notes/index.md +++ b/ru/metadata-hub/release-notes/index.md @@ -5,6 +5,17 @@ description: В разделе представлена история изме # История изменений {{ metadata-hub-full-name }} в 2024 году +## Октябрь {#october} + +### Новые возможности {#new-features-october} + +* Добавлены новые возможности для интеграции {{ connection-manager-name }} с [{{ data-transfer-full-name }}](../../data-transfer/quickstart.md): выпадающий список доступных подключений при создании трансфера. +* В {{ schema-registry-name }} поддержан механизм аутентификации с помощью [API-ключей](../../iam/concepts/authorization/api-key.md), который избавляет от необходимости регулярно обновлять значение секрета для аутентификации. + +### Решенные проблемы {#problems-solved-october} + +* Улучшена стабильность при массовом создании подключений в {{ connection-manager-name }}. + ## Сентябрь {#september} ### Новые возможности {#new-features-september} diff --git a/ru/monitoring/toc.yaml b/ru/monitoring/toc.yaml index 46c33453741..c140d6ba2cd 100644 --- a/ru/monitoring/toc.yaml +++ b/ru/monitoring/toc.yaml @@ -117,6 +117,8 @@ items: href: tutorials/autoscale-monitoring.md - name: Мониторинг показаний датчиков и уведомления о событиях href: tutorials/monitoring.md + - name: Визуализация данных {{ monitoring-full-name }} + href: tutorials/data-from-monitoring-visualization.md - name: '{{ managed-prometheus-name }}' items: - name: Обзор diff --git a/ru/monitoring/tutorials/data-from-monitoring-visualization.md b/ru/monitoring/tutorials/data-from-monitoring-visualization.md new file mode 100644 index 00000000000..3bf3a1c8027 --- /dev/null +++ b/ru/monitoring/tutorials/data-from-monitoring-visualization.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-monitoring-visualization' +--- + +{% include [data-from-monitoring-visualization](../../_tutorials/datalens/data-from-monitoring-visualization.md) %} diff --git a/ru/network-load-balancer/release-notes.md b/ru/network-load-balancer/release-notes.md new file mode 100644 index 00000000000..e570923d838 --- /dev/null +++ b/ru/network-load-balancer/release-notes.md @@ -0,0 +1,10 @@ +--- +title: История изменений в {{ network-load-balancer-full-name }} +description: В разделе представлена история изменений сервиса {{ network-load-balancer-name }}. +--- + +# История изменений в {{ network-load-balancer-full-name }} + +## III квартал 2024 {#q3-2024} + +Оптимизирована работа проверок состояния — устранен троттлинг. diff --git a/ru/network-load-balancer/toc.yaml b/ru/network-load-balancer/toc.yaml index 07b1ee83369..df8cfafd19c 100644 --- a/ru/network-load-balancer/toc.yaml +++ b/ru/network-load-balancer/toc.yaml @@ -257,6 +257,8 @@ items: href: metrics.md - name: Аудитные логи {{ at-name }} href: at-ref.md + - name: История изменений + href: release-notes.md - name: Вопросы и ответы href: qa/index.md - name: Обучающие курсы diff --git a/ru/presets.yaml b/ru/presets.yaml index f0ad78e9fd4..4a7800066a8 100644 --- a/ru/presets.yaml +++ b/ru/presets.yaml @@ -664,6 +664,7 @@ default: s3-storage-host-doc-files: storage.yandexcloud.net/doc-files s3-storage-host-mch: storage.yandexcloud.net/managed-clickhouse s3-web-host: website.yandexcloud.net + sample-rfc3339-timestamp: '2006-01-02T15:04:05Z' schema-registry-name: Schema Registry sd-full-name: Yandex Security Deck sd-name: Security Deck @@ -1242,10 +1243,12 @@ default: v3: cpu: c100|month|string: "5\_436,00\_₸" + c100|number: 7.55 c100|string: "7,55\_₸" c50|month|string: "2\_448,00\_₸" c50|string: "3,40\_₸" ram|month|string: "1\_440,00\_₸" + ram|number: 2 ram|string: "2,00\_₸" local-nvme: ch|month|string: "65,05\_₸" @@ -1289,10 +1292,12 @@ default: v3: cpu: c100|month|string: "5\_760,00\_₸" + c100|number: 8 c100|string: "8,00\_₸" c50|month|string: "2\_700,00\_₸" c50|string: "3,75\_₸" ram|month|string: "3\_240,00\_₸" + ram|number: 4.5 ram|string: "4,50\_₸" mysql: v1: @@ -1328,20 +1333,24 @@ default: c100: dedicated|string: "2,50\_₸" c100|month|string: "6\_048,00\_₸" + c100|number: 8.4 c100|string: "8,40\_₸" c50|month|string: "2\_340,00\_₸" c50|string: "3,25\_₸" ram: dedicated|string: "0,75\_₸" ram|month|string: "1\_656,00\_₸" + ram|number: 2.3 ram|string: "2,30\_₸" network-hdd: ch|month|number: 16 ch|month|string: "16,00\_₸" elasticsearch|month|string: "16,00\_₸" greenplum|month|string: "16,00\_₸" + kafka|month|number: 16 kafka|month|string: "16,00\_₸" mongodb|month|string: "16,00\_₸" + mysql|month|number: 16 mysql|month|string: "16,00\_₸" opensearch|month|string: "16,00\_₸" pg|month|string: "16,00\_₸" @@ -1349,6 +1358,7 @@ default: ch|month|string: "65,05\_₸" elasticsearch|month|string: "65,05\_₸" greenplum|month|string: "65,05\_₸" + kafka|month|number: 65.05 kafka|month|string: "65,05\_₸" mongodb|month|string: "65,05\_₸" mysql|month|string: "65,05\_₸" @@ -1508,8 +1518,10 @@ default: c100|month|string: "3\_924,00\_₸" c100|string: "5,45\_₸" c50|month|string: "2\_520,00\_₸" + c50|number: 3.5 c50|string: "3,50\_₸" ram|month|string: "1\_008,00\_₸" + ram|number: 1.4 ram|string: "1,40\_₸" sku|KZT|mk8s: master: @@ -2394,10 +2406,12 @@ default: v3: cpu: c100|month|string: "1\_087,20\_₽" + c100|number: 1.51 c100|string: "1,51\_₽" c50|month|string: "489,60\_₽" c50|string: "0,68\_₽" ram|month|string: "288,00\_₽" + ram|number: 0.4 ram|string: "0,40\_₽" local-nvme: ch|month|string: "13,01\_₽" @@ -2441,10 +2455,12 @@ default: v3: cpu: c100|month|string: "1\_152,00\_₽" + c100|number: 1.6 c100|string: "1,60\_₽" c50|month|string: "540,00\_₽" c50|string: "0,75\_₽" ram|month|string: "648,00\_₽" + ram|number: 0.9 ram|string: "0,90\_₽" mysql: v1: @@ -2480,20 +2496,24 @@ default: c100: dedicated|string: "0,50\_₽" c100|month|string: "1\_209,60\_₽" + c100|number: 1.68 c100|string: "1,68\_₽" c50|month|string: "468,00\_₽" c50|string: "0,65\_₽" ram: dedicated|string: "0,15\_₽" ram|month|string: "331,20\_₽" + ram|number: 0.46 ram|string: "0,46\_₽" network-hdd: ch|month|number: 3.2 ch|month|string: "3,20\_₽" elasticsearch|month|string: "3,20\_₽" greenplum|month|string: "3,20\_₽" + kafka|month|number: 3.2 kafka|month|string: "3,20\_₽" mongodb|month|string: "3,20\_₽" + mysql|month|number: 3.2 mysql|month|string: "3,20\_₽" opensearch|month|string: "3,20\_₽" pg|month|string: "3,20\_₽" @@ -2501,6 +2521,7 @@ default: ch|month|string: "13,01\_₽" elasticsearch|month|string: "13,01\_₽" greenplum|month|string: "13,01\_₽" + kafka|month|number: 13.01 kafka|month|string: "13,01\_₽" mongodb|month|string: "13,01\_₽" mysql|month|string: "13,01\_₽" @@ -2660,8 +2681,10 @@ default: c100|month|string: "784,80\_₽" c100|string: "1,09\_₽" c50|month|string: "504,00\_₽" + c50|number: 0.7 c50|string: "0,70\_₽" ram|month|string: "201,60\_₽" + ram|number: 0.28 ram|string: "0,28\_₽" sku|RUB|mk8s: master: @@ -3536,10 +3559,12 @@ default: v3: cpu: c100|month|string: "8,697600\_$" + c100|number: 0.01208 c100|string: "0,012080\_$" c50|month|string: "3,916800\_$" c50|string: "0,005440\_$" ram|month|string: "2,304000\_$" + ram|number: 0.0032 ram|string: "0,003200\_$" local-nvme: ch|month|string: "0,104080\_$" @@ -3583,10 +3608,12 @@ default: v3: cpu: c100|month|string: "9,216000\_$" + c100|number: 0.0128 c100|string: "0,012800\_$" c50|month|string: "4,320000\_$" c50|string: "0,006000\_$" ram|month|string: "5,184000\_$" + ram|number: 0.0072 ram|string: "0,007200\_$" mysql: v1: @@ -3634,6 +3661,7 @@ default: ch|month|string: "0,025600\_$" elasticsearch|month|string: "0,025600\_$" greenplum|month|string: "0,025600\_$" + kafka|month|number: 0.0256 kafka|month|string: "0,025600\_$" mongodb|month|string: "0,025600\_$" mysql|month|string: "0,025600\_$" @@ -3643,6 +3671,7 @@ default: ch|month|string: "0,104080\_$" elasticsearch|month|string: "0,104080\_$" greenplum|month|string: "0,104080\_$" + kafka|month|number: 0.10408 kafka|month|string: "0,104080\_$" mongodb|month|string: "0,104080\_$" mysql|month|string: "0,104080\_$" @@ -3796,7 +3825,9 @@ default: v3: cpu: c100|string: "0,008720\_$" + c50|number: 0.0056 c50|string: "0,005600\_$" + ram|number: 0.00224 ram|string: "0,002240\_$" sku|USD|mk8s: master: @@ -6868,7 +6899,7 @@ default: label_cloud-desktop: Cloud Desktop label_compute: Compute Cloud label_container-registry: Container Registry - label_data-proc: Yandex Data Proc + label_data-proc: Yandex Data Processing label_data-streams: Data Streams label_data-transfer: Data Transfer label_data-transfer_ru: Data Transfer @@ -6915,7 +6946,7 @@ default: label_yq_ru: Yandex Query value_audit-trails: Audit trail value_compute: Виртуальная машина - value_data-proc: Кластер Yandex Data Proc + value_data-proc: Кластер Yandex Data Processing value_data-streams: Data Streams value_data-transfer: Data Transfer value_managed-mysql: Кластер MySQL @@ -7127,6 +7158,7 @@ default: field_connector-secret-access-key: Секретный ключ field_connector-security-protocol: Протокол безопасности field_connector-ssl-truststore-certificates: Сертификат в формате PEM + field_kraft-combined-mode: Комбинированный режим field_rest-api-config: Kafka Rest API field_schema-registry: Реестр схем данных label_brokers-per-az: Количество брокеров в зоне @@ -7301,6 +7333,7 @@ default: label_value: Значение title_auto-generation_params_section: Параметры автоматической генерации title_kms-key: Ключ KMS + title_secret-data-section: Данные секрета title_secret-type: Тип секрета title_secret-type-custom: Пользовательский title_secret-type-generated: Генерируемый @@ -7665,6 +7698,7 @@ default: field_dashboards-url: kibana_url field_enabled: Активировать field_idp-entity-id: idp_entity_id + field_jwt-default-expiration-timeout: Таймаут сессии field_roles-key: roles_key field_sp-entity-id: sp_entity_id field_subject-key: subject_key diff --git a/ru/search-api/concepts/html-response.md b/ru/search-api/concepts/html-response.md index d26caecda23..45f6cd3a715 100644 --- a/ru/search-api/concepts/html-response.md +++ b/ru/search-api/concepts/html-response.md @@ -5,11 +5,15 @@ description: В данной статье описан HTML-формат отв # HTML-формат ответа при текстовом поиске -В ответ на текстовый поисковый запрос {{ search-api-name }} может возвращать HTML-файл с результатами поиска, идентичный HTML-странице соответствующей поисковой выдачи на главной странице [Яндекс Поиска]({{ link-yandex }}). +В ответ на текстовый поисковый запрос {{ search-api-name }} может возвращать HTML-файл с результатами поиска. Возвращаемый HTML-файл идентичен HTML-странице соответствующей поисковой выдачи на главной странице [Яндекс Поиска]({{ link-yandex }}) в [режиме инкогнито](https://ru.wikipedia.org/wiki/Режим_инкогнито). В настоящий момент ответ в HTML-формате доступен только для запросов, выполненных через интерфейс [API v1](./index.md#api-v1). -{% note alert %} +Результат запроса в HTML-формате содержит больше данных, чем результат аналогичного запроса в [XML-формате](./response.md): результат в HTML-формате включает в себя рекламу, быстрые ответы, а также другие элементы, которые могут появиться в поисковой выдаче. HTML-формат ответа регулярно обновляется вместе с форматом поисковой выдачи Яндекса. + +См. [пример](https://{{ s3-storage-host-doc-files }}/search-api-html-result-example.html) поисковой выдачи в HTML-формате. + +{% note info %} По каждому поисковому запросу возвращается не более 1000 результатов. В зависимости от значения атрибута [docs-in-group](post-request.md#post-docs-in-group), каждый результат может содержать от одного до трех документов. Максимальное количество страниц с результатами поиска определяется количеством групп документов, возвращаемых на каждой странице (значение атрибута [groups-on-page](post-request.md#post-groups-on-page)). Например, если атрибут `groups-on-page` передан со значением `10`, может быть сформировано не более 100 страниц, содержащих результаты поиска. diff --git a/ru/storage/toc.yaml b/ru/storage/toc.yaml index e1126037a84..c63e34eba78 100644 --- a/ru/storage/toc.yaml +++ b/ru/storage/toc.yaml @@ -211,6 +211,8 @@ items: - name: Блокировка состояний {{ TF }} с помощью {{ ydb-name }} href: tutorials/terraform-state-lock.md - name: Статический веб-сайт в {{ objstorage-full-name }} + - name: Визуализация данных {{ yq-full-name }} + href: tutorials/data-from-yandex-query-visualization.md items: - name: Обзор href: tutorials/static/index.md @@ -238,6 +240,14 @@ items: Резервное копирование кластера {{ managed-k8s-name }} в {{ objstorage-name }} href: tutorials/kubernetes-backup.md + - name: Сокращатель ссылок + href: tutorials/serverless-url-shortener.md + - name: Хранение журналов работы приложения + href: tutorials/log-ingestion.md + - name: Развертывание веб-приложения с использованием Java Servlet API + href: tutorials/java-servlet-todo-list.md + - name: Разработка Telegram-бота + href: tutorials/telegram-bot-serverless.md - name: Концепции items: - name: Обзор diff --git a/ru/storage/tutorials/data-from-yandex-query-visualization.md b/ru/storage/tutorials/data-from-yandex-query-visualization.md new file mode 100644 index 00000000000..a978e38300e --- /dev/null +++ b/ru/storage/tutorials/data-from-yandex-query-visualization.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/datalens/data-from-yandex-query-visualization' +--- + +{% include [data-from-yandex-query-visualization](../../_tutorials/datalens/data-from-yandex-query-visualization.md) %} diff --git a/ru/storage/tutorials/index.md b/ru/storage/tutorials/index.md index 08dc92b1b59..b5a0d4fde7e 100644 --- a/ru/storage/tutorials/index.md +++ b/ru/storage/tutorials/index.md @@ -49,3 +49,8 @@ description: На странице представлен список прак * [{#T}](./static-key-in-lockbox.md) * [{#T}](./terraform-state-storage.md) * [{#T}](./terraform-state-lock.md) +* [{#T}](./serverless-url-shortener.md) +* [{#T}](./log-ingestion.md) +* [{#T}](./java-servlet-todo-list.md) +* [{#T}](./telegram-bot-serverless.md) +* [Визуализация данных {{ yq-full-name }}](data-from-yandex-query-visualization.md) diff --git a/ru/storage/tutorials/java-servlet-todo-list.md b/ru/storage/tutorials/java-servlet-todo-list.md new file mode 100644 index 00000000000..aab8bc2ec8e --- /dev/null +++ b/ru/storage/tutorials/java-servlet-todo-list.md @@ -0,0 +1,9 @@ +--- +title: Развертывание веб-приложения с использованием Java Servlet API +description: Узнайте, как с помощью serverless-технологий и Java Servlet API создать небольшое веб-приложение для управления списком задач. +canonical: '{{ link-docs }}/tutorials/serverless/java-servlet-todo-list' +--- + +# Развертывание веб-приложения с использованием Java Servlet API + +{% include [java-servlet-todo-list](../../_tutorials/serverless/java-servlet-todo-list.md) %} \ No newline at end of file diff --git a/ru/storage/tutorials/log-ingestion.md b/ru/storage/tutorials/log-ingestion.md new file mode 100644 index 00000000000..f0478d6a811 --- /dev/null +++ b/ru/storage/tutorials/log-ingestion.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/log-ingestion' +--- + +{% include [log-ingestion](../../_tutorials/serverless/log-ingestion.md) %} \ No newline at end of file diff --git a/ru/storage/tutorials/serverless-url-shortener.md b/ru/storage/tutorials/serverless-url-shortener.md new file mode 100644 index 00000000000..08459418247 --- /dev/null +++ b/ru/storage/tutorials/serverless-url-shortener.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/serverless-url-shortener' +--- + +{% include [serverless-url-shortener](../../_tutorials/serverless/serverless-url-shortener.md) %} \ No newline at end of file diff --git a/ru/storage/tutorials/telegram-bot-serverless.md b/ru/storage/tutorials/telegram-bot-serverless.md new file mode 100644 index 00000000000..37051b548c5 --- /dev/null +++ b/ru/storage/tutorials/telegram-bot-serverless.md @@ -0,0 +1,7 @@ +--- +title: Как создать бота в Телеграм (Telegram) с помощью Serverless +description: В этом сценарии вы узнаете, как с помощью serverless-технологий создать бота в Telegram, который будет отвечать на сообщения в чате. +canonical: '{{ link-docs }}/tutorials/serverless/telegram-bot-serverless' +--- + +{% include [telegram-bot-serverless](../../_tutorials/serverless/telegram-bot-serverless.md) %} \ No newline at end of file diff --git a/ru/video/iframe-sdk.md b/ru/video/iframe-sdk.md index 076da32fe9e..e442681bef1 100644 --- a/ru/video/iframe-sdk.md +++ b/ru/video/iframe-sdk.md @@ -1,4 +1,4 @@ -# Справочник SDK видеоплеера для IFrame +# SDK видеоплеера для IFrame Вы можете разместить [видеоплеер](./concepts/player.md) с контентом из {{ video-name }} на HTML-странице с помощью SDK видеоплеера для IFrame. diff --git a/ru/video/release-notes.md b/ru/video/release-notes.md index f41c0ba357d..b3ca9394ecb 100644 --- a/ru/video/release-notes.md +++ b/ru/video/release-notes.md @@ -5,10 +5,14 @@ description: В разделе представлена история изме # История изменений в {{ video-full-name }} +## Октябрь 2024 {#oct-2024} + +* Опубликованы SDK видеоплеера для [iOS](./sdk/ios-sdk.md). + ## Сентябрь 2024 {#sep-2024} * Поддержана загрузка [субтитров](./concepts/videos.md#subtitles) для [видео](./concepts/videos.md). -* Опубликован [SDK видеоплеера для JavaScript](./sdk/javascript/index.md). +* Опубликованы SDK видеоплеера для [JavaScript](./sdk/javascript/index.md). * Реализована поддержка [методов REST API](https://github.com/yandex-cloud/cloudapi/tree/master/yandex/cloud/video) для взаимодействия с сервисом, опубликован [справочник](./api-ref/). ## Август 2024 {#aug-2024} @@ -27,7 +31,7 @@ description: В разделе представлена история изме ## Март 2024 {#mar-2024} * Добавлена возможность получения [статистики просмотров](./operations/video/get-statistics.md) видео. -* Опубликован [справочник Cloud Video Player SDK для IFrame](iframe-sdk.md). +* Опубликован [справочник Cloud Video Player SDK для IFrame](./iframe-sdk.md). * Добавлена возможность [настройки публичного доступа](./operations/video/publish.md) к видео. ## Ноябрь 2023 {#nov-2023} diff --git a/ru/video/sdk/index.md b/ru/video/sdk/index.md index cd3a33d4b7f..0d1e8aeb1bd 100644 --- a/ru/video/sdk/index.md +++ b/ru/video/sdk/index.md @@ -2,9 +2,10 @@ Для встраивания [видеоплеера](../concepts/player.md) с контентом из {{ video-name }} на сайт или в приложение предусмотрены следующие SDK: * [SDK видеоплеера для IFrame](../iframe-sdk.md) +* [SDK видеоплеера для iOS](./ios-sdk.md) * [SDK видеоплеера для JavaScript](./javascript/index.md) -В будущем также будут добавлены SDK для iOS и Android. +В будущем также будут добавлен SDK для Android. См. также: * [Справочник API {{ video-name }}](../api-ref/authentication.md) \ No newline at end of file diff --git a/ru/video/sdk/ios-sdk.md b/ru/video/sdk/ios-sdk.md new file mode 100644 index 00000000000..b51dbecd643 --- /dev/null +++ b/ru/video/sdk/ios-sdk.md @@ -0,0 +1,196 @@ +--- +title: Как добавить Cloud Video Player в приложение iOS +description: Следуя данной инструкции, вы сможете интегрировать Cloud Video Player в ваше мобильное приложение для iOS. +--- + +# SDK видеоплеера для iOS + +Вы можете добавить [видеоплеер](../concepts/player.md) с контентом из {{ video-name }} в ваше мобильное приложение для iOS. Для этого воспользуйтесь SDK видеоплеера для iOS. + +Чтобы использовать SDK, вам понадобится установленная и настроенная среда разработки [Xcode](https://developer.apple.com/xcode/) версии 15.3 или выше с языком программирования [Swift](https://www.swift.org/install/macos/) версии 5.8 или выше. + +## Подключение библиотеки SDK видеоплеера {#add-library} + +{% list tabs group=programming_language %} + +- Xcode SPM {#xcode-spm} + + 1. В окне Xcode навигатора проектов (**Project Navigator**) выберите свой проект. + 1. На верхней панели нажмите **File** и выберите **Add Package Dependencies...** + 1. В строке поиска ![image](../../_assets/console-icons/magnifier.svg) введите `https://github.com/yandex-cloud/cloud-video-player-ios-sdk/` и выберите пакет `cloud-video-player-ios-sdk`. + 1. В поле **Dependency Rule** выберите **Up to Next Major Version** и укажите версию `0.1.0-beta`. + 1. В поле **Add to Project** выберите проект, к которому вы хотите подключить библиотеки, и нажмите **Add Package**. + 1. Во всплывающем окне укажите, к какому таргету в проекте подключить библиотеки, и нажмите **Add Package**. + + Пакет содержит следующие библиотеки: + * `CloudVideoPlayer` — основная библиотека SDK видеоплеера для iOS. + * `CloudVideoPlayerUI` — дополнительная библиотека с набором интерфейсных элементов (оболочка видеоплеера). + +- Package.swift {#package-swift} + + 1. В окне Xcode навигатора проектов (**Project Navigator**) выберите свой проект. + 1. Откройте `Package.swift`. + 1. Добавьте в массив `dependencies` следующую зависимость: + + ```swift + dependencies: [ + .package( + url: "https://github.com/yandex-cloud/cloud-video-player-ios-sdk/", + from: "0.1.0-beta" + ) + ], + ``` + + 1. Добавьте библиотеки в массив `dependencies` конкретного таргета: + + ```swift + .target( + name: "MyTargetName", + dependencies: [ + .product(name: "CloudVideoPlayer", package: "cloud-video-player-ios-sdk"), + .product(name: "CloudVideoPlayerUI", package: "cloud-video-player-ios-sdk") + ] + ), + ``` + + Где: + * `CloudVideoPlayer` — основная библиотека SDK видеоплеера для iOS. + * `CloudVideoPlayerUI` — дополнительная библиотека с набором интерфейсных элементов (оболочка видеоплеера). + + 1. Сохраните изменения. + +{% endlist %} + + +## Импорт библиотек {#import-library} + +Чтобы импортировать библиотеки, добавьте в файл с кодом следующие строки: + +```swift +import CloudVideoPlayer +import CloudVideoPlayerUI +``` + +## Использование SDK {#usage} + +### Настройте запуск воспроизведения {#player-setup} + +1. Импортируйте библиотеку в файле: + + ```swift + import CloudVideoPlayer + ``` + +1. Создайте объекты `Environment` и `YaPlayer`: + + ```swift + let environment = Environment(from: From(raw: "you-app-bundle")) + + class ViewController: UIViewController { + let player = environment.player() + } + ``` + +1. Создайте UIView-компонент `VideoSurface`, добавьте его в иерархию и подключите к экземпляру плеера: + + ```swift + let surface = VideoSurface() + + override func loadView() { + super.loadView() + self.view.addSubview(surface) + surface.frame = UIScreen.main.bounds + } + + override func viewDidLoad() { + super.viewDidLoad() + surface.attach(player: player) + } + ``` + +1. Запустите воспроизведение: + + ```swift + player.set(source: ContentId(rawValue: "https://runtime.video.cloud.yandex.net/player/...")) + player.play() + ``` + +{% include [video-content-id-desc](../../_includes/video/video-content-id-desc.md) %} + +{% cut "Полный код настройки запуска воспроизведения" %} + +```swift +import CloudVideoPlayer + +let environment = Environment(from: From(raw: "you-app-bundle")) + +class ViewController: UIViewController { + + let player = environment.player() + let surface = VideoSurface() + + override func loadView() { + super.loadView() + self.view.addSubview(surface) + surface.frame = UIScreen.main.bounds + } + + override func viewDidLoad() { + super.viewDidLoad() + surface.attach(player: player) + + player.set(source: ContentId(rawValue: "https://runtime.video.cloud.yandex.net/player/...")) + player.play() + } +} +``` + +{% include [video-content-id-desc](../../_includes/video/video-content-id-desc.md) %} + +{% endcut %} + +### Подключение оболочки видеоплеера {#use-skin} + +1. Импортируйте библиотеку в файле: + + ```swift + import CloudVideoPlayerUI + ``` + +1. Создайте UIView-компонент `VideoView`, добавьте его в иерархию и подключите к экземпляру плеера: + + ```swift + let videoView = VideoView() + + override func loadView() { + super.loadView() + self.view.addSubview(surface) + videoView.frame = UIScreen.main.bounds + } + + override func viewDidLoad() { + super.viewDidLoad() + videoView.attach(player: player) + } + ``` + +{% cut "Полный код подключения оболочки видеоплеера" %} + +```swift +import CloudVideoPlayerUI + +let videoView = VideoView() + +override func loadView() { + super.loadView() + self.view.addSubview(surface) + videoView.frame = UIScreen.main.bounds +} + +override func viewDidLoad() { + super.viewDidLoad() + videoView.attach(player: player) +} +``` + +{% endcut %} \ No newline at end of file diff --git a/ru/video/toc.yaml b/ru/video/toc.yaml index d91e49a2798..181ba9d2698 100644 --- a/ru/video/toc.yaml +++ b/ru/video/toc.yaml @@ -107,6 +107,8 @@ items: href: sdk/index.md - name: IFrame href: iframe-sdk.md + - name: iOS + href: sdk/ios-sdk.md - name: JavaScript items: - name: Начало работы diff --git a/ru/vpc/release-notes.md b/ru/vpc/release-notes.md index 4c3fb9fc60c..b4cb809b249 100644 --- a/ru/vpc/release-notes.md +++ b/ru/vpc/release-notes.md @@ -5,6 +5,11 @@ description: В разделе представлена история изме # История изменений в {{ vpc-full-name }} +## III квартал 2024 {#q3-2024} + +* Добавлена возможность создавать [сервисные подключения](./concepts/private-endpoint.md). Возможность на стадии Preview, чтобы запросить доступ, [обратитесь в поддержку](../support/overview.md). +* Реализована интеграция с {{ dns-name }} для указания DNS-записей в спецификациях публичных адресов. + ## II квартал 2024 {#q2-2024} * Увеличены [лимиты](../compute/concepts/limits.md) сетевых соединений. diff --git a/ru/websql/release-notes/index.md b/ru/websql/release-notes/index.md index e8fc83b529a..03861e4e1ff 100644 --- a/ru/websql/release-notes/index.md +++ b/ru/websql/release-notes/index.md @@ -5,6 +5,12 @@ description: В разделе представлена история изме # История изменений {{ websql-full-name }} в 2024 году +## Октябрь {#october} + +1. Добавлена возможность делиться результатом запроса сразу после его выполнения. + +1. Уменьшено время обработки быстрых запросов. + ## Сентябрь {#september} ### Новые возможности {#new-features-september} diff --git a/ru/ydb/toc.yaml b/ru/ydb/toc.yaml index e42f9bf31bc..a26a4e1b8b3 100644 --- a/ru/ydb/toc.yaml +++ b/ru/ydb/toc.yaml @@ -89,6 +89,8 @@ items: href: tutorials/mkf-ydb-stream.md - name: Блокировка состояний {{ TF }} с помощью {{ ydb-name }} href: tutorials/terraform-state-lock.md + - name: Сокращатель ссылок + href: tutorials/serverless-url-shortener.md - name: Концепции items: - name: Обзор diff --git a/ru/ydb/tutorials/index.md b/ru/ydb/tutorials/index.md index f81b1802e06..59ea026592a 100644 --- a/ru/ydb/tutorials/index.md +++ b/ru/ydb/tutorials/index.md @@ -24,3 +24,4 @@ description: Различные сценарии использования {{ y * [{#T}](mkf-yds-stream.md) * [{#T}](mkf-ydb-stream.md) * [{#T}](terraform-state-lock.md) +* [{#T}](serverless-url-shortener.md) diff --git a/ru/ydb/tutorials/java-servlet-todo-list.md b/ru/ydb/tutorials/java-servlet-todo-list.md index 949ac946063..464da2422b5 100644 --- a/ru/ydb/tutorials/java-servlet-todo-list.md +++ b/ru/ydb/tutorials/java-servlet-todo-list.md @@ -1,7 +1,7 @@ --- title: Java Servlet API. Развертывание веб-приложения description: В этом сценарии вы узнаете, как с помощью Java Servlet API и serverless-технологий создать небольшое веб-приложение для управления списком задач. -sourcePath: overlay/tutorials/java-servlet-todo-list.md +canonical: '{{ link-docs }}/tutorials/serverless/java-servlet-todo-list' --- # Развертывание веб-приложения с использованием Java Servlet API и {{ ydb-short-name }} diff --git a/ru/ydb/tutorials/serverless-url-shortener.md b/ru/ydb/tutorials/serverless-url-shortener.md new file mode 100644 index 00000000000..08459418247 --- /dev/null +++ b/ru/ydb/tutorials/serverless-url-shortener.md @@ -0,0 +1,5 @@ +--- +canonical: '{{ link-docs }}/tutorials/serverless/serverless-url-shortener' +--- + +{% include [serverless-url-shortener](../../_tutorials/serverless/serverless-url-shortener.md) %} \ No newline at end of file