Как начать работать с Marketplace Cloud Apps Workload API
В данном разделе приведены примеры использования Marketplace Cloud Apps Workload REST API и gRPC API для получения информации о приложении Cloud Apps, а также о привязке приложения и виртуальной машины, на которой оно запущено, к сервису Yandex Cloud Apps.
Все приведенные запросы вы также можете выполнять с помощью SDK для Node.js
Перед началом работы
Чтобы начать работать c Marketplace Cloud Apps Workload API:
- Получите IAM-токен для сервисного аккаунта, автоматически созданного во время установки приложения и привязанного к виртуальной машине, на которой оно зупущено.
- Получите идентификатор виртуальной машины, на которой запущено приложение.
Чтобы воспользоваться примерами, установите утилиты:
Получите информацию о приложении Yandex Cloud Apps
Чтобы получить информацию о приложении Cloud Apps, используйте сервисный аккаунт, автоматически созданный во время установки приложения и привязанный к виртуальной машине, на которой оно запущено. Выполните команду:
curl \
--request GET \
--header "Authorization: Bearer <IAM-токен>" \
https://cloudapps.api.cloud.yandex.net/cloudapps/workload/v1/cloud-applications
Где <IAM-токен>
— IAM-токен сервисного аккаунта, полученный ранее.
Результат:
{
"id": "d7fsg12ho5h6********",
"status": "DEPLOYED",
"billing": {
"type": "PAY_AS_YOU_GO"
}
}
В запросе используется метод REST API get для ресурса CloudApplication.
grpcurl \
-H "Authorization: Bearer <IAM-токен>" \
cloudapps.api.cloud.yandex.net:443 yandex.cloud.cloudapps.workload.v1.CloudApplicationService/Get
Где <IAM-токен>
— IAM-токен сервисного аккаунта, полученный ранее.
Результат:
{
"id": "d7fsg12ho5h6********",
"status": "DEPLOYED",
"billing": {
"type": "PAY_AS_YOU_GO"
}
}
В запросе используется вызов gRPC API CloudApplicationService/Get.
Данный ответ означает, что сервисный аккаунт был автоматически создан во время установки приложения Cloud Apps с идентификатором d7fsg12ho5h6********
. Текущий статус приложения — DEPLOYED
, а текущий тип тарифа — PAY_AS_YOU_GO
.
Убедитесь, что приложение запущено сервисом Cloud Apps
Чтобы убедиться, что приложение запущено сервисом Cloud Apps, проверьте, что ВМ привязана к приложению. Для этого используйте сервисный аккаунт, который был автоматически создан во время установки приложения и привязан к ВМ, на которой оно запущено. Выполните команду:
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <IAM-токен>" \
--data '{"workload_type": "COMPUTE_INSTANCE", "workload_id": "<идентификатор_ВМ>"}' \
https://cloudapps.api.cloud.yandex.net/cloudapps/workload/v1/cloud-applications:resolve-by-workload
Где:
<IAM-токен>
— IAM-токен сервисного аккаунта, полученный ранее.<идентификатор_ВМ>
— идентификатор виртуальной машины, полученный ранее.
Результат:
ВМ привязана к приложению Cloud Apps
{
"cloudApplication": {
"id": "d7fsg12ho5h6********",
"status": "DEPLOYED",
"billing": {
"type": "PAY_AS_YOU_GO"
}
}
}
Данный ответ означает, что виртуальная машина и сервисный аккаунт, привязанный к ней, были автоматически созданы во время установки приложения Cloud Apps с идентификатором d7fsg12ho5h6********
. Текущий статус приложения — DEPLOYED
, а текущий тип тарифа — PAY_AS_YOU_GO
.
ВМ не привязана к приложению Cloud Apps
{
"code": 5,
"message": "Workload not found",
"details": [
{
"@type": "type.googleapis.com/google.rpc.RequestInfo",
"requestId": "5899fc83-b123-47b8-94c3-1ad1********"
}
]
}
Если запрос возвращает такую ошибку, это означает, что виртуальная машина была создана пользователем вручную. При этом стоимость программного продукта по тарифу на зачисляется на счет пользователя, а приложение может ограничить свою работу на данной ВМ.
В запросе используется метод REST API resolveByWorkload для ресурса CloudApplication.
grpcurl \
-H "Authorization: Bearer <IAM-токен>" \
-d '{"workload_type": "COMPUTE_INSTANCE", "workload_id": "<идентификатор_ВМ>"}' \
cloudapps.api.cloud.yandex.net:443 yandex.cloud.cloudapps.workload.v1.CloudApplicationService/ResolveByWorkload
Где:
<IAM-токен>
— IAM-токен сервисного аккаунта, полученный ранее.<идентификатор_ВМ>
— идентификатор виртуальной машины, полученный ранее.
Результат:
ВМ привязана к приложению Cloud Apps
{
"cloudApplication": {
"id": "d7fsg12ho5h6********",
"status": "DEPLOYED",
"billing": {
"type": "PAY_AS_YOU_GO"
}
}
}
Данный ответ означает, что виртуальная машина и сервисный аккаунт, привязанный к ней, были автоматически созданы во время установки приложения Cloud Apps с идентификатором d7fsg12ho5h6********
. Текущий статус приложения — DEPLOYED
, а текущий тип тарифа — PAY_AS_YOU_GO
.
ВМ не привязана к приложению Cloud Apps
ERROR:
Code: NotFound
Message: Workload not found
Details:
1) {
"@type": "type.googleapis.com/google.rpc.RequestInfo",
"requestId": "5899fc83-b123-47b8-94c3-1ad1********"
}
Если запрос возвращает такую ошибку, это означает, что виртуальная машина была создана пользователем вручную. При этом стоимость программного продукта по тарифу на зачисляется на счет пользователя, а приложение может ограничить свою работу на данной ВМ.
В запросе используется вызов gRPC API CloudApplicationService/ResolveByWorkload.