Релиз библиотеки 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(())
}