Перейти к основному содержимому

Релиз библиотеки ydb-rs-sdk 0.8.3

· 1 мин. чтения
Михаил Назаров
разработчик

Состоялся релиз библиотеки ydb-rs-sdk с возможностью получения данных для авторизации из переменных среды окружения по следующему алгоритму:

  • Если задано значение переменной окружения YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS, то используется режим аутентификации System Account Key, а ключ загружается из файла, имя которого указано в данной переменной
  • Иначе, если задано значение переменной окружения YDB_ANONYMOUS_CREDENTIALS, равное 1, то используется анонимный режим аутентификации
  • Иначе, если задано значение переменной окружения YDB_METADATA_CREDENTIALS, равное 1, то используется режим аутентификации Metadata
  • Иначе, если задано значение переменной окружения YDB_ACCESS_TOKEN_CREDENTIALS, то используется режим аутентификации Access token, в который передается значение данной переменной
  • Иначе используется режим аутентификации Metadata

Наличие последним пунктом алгоритма выбора режима Metadata позволяет развернуть рабочее приложение на виртуальных машинах и в Cloud Functions Yandex.Cloud без задания каких-либо переменных окружения.

Пример кода:

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {

let connection_string = env::var("YDB_CONNECTION_STRING")?;

let client = ClientBuilder::new_from_connection_string(connection_string)?
.with_credentials(FromEnvCredentials::new()?)
.client()?;

info!("Waiting for client");
client.wait().await?;

let sum: i32 = client
.table_client()
.retry_transaction(|mut t| async move {
let res = t.query(Query::from("SELECT 1 + 1 as sum")).await?;
Ok(res.into_only_row()?.remove_field_by_name("sum")?)
})
.await?
.try_into()
.unwrap();
info!("sum: {}", sum);
Ok(())
}