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

Состоялся релиз библиотеки 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 без задания каких-либо переменных окружения.

Пример кода:

rust
#[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(())
}